Hello !
J'ai créer un composant et j'ai une propriété boolean que j'aimerais modifier automatiquement en fonction d'une variable boolean aussi ! Comment puis-je faire ?
![]()
Nouni
Hello !
J'ai créer un composant et j'ai une propriété boolean que j'aimerais modifier automatiquement en fonction d'une variable boolean aussi ! Comment puis-je faire ?
![]()
Nouni
Bonjour,
Peux tu préciser ta question ?
Est-ce que tu veux dire que dans ton programme, tu utilises un composant avec une propriété boolean ainsi qu'une variable de type boolean, et que tu désires mettre à jour la propriété et la variable (à chaque fois que l'un des deux est modifié) ou juste dans un sens (modification variable -> mise à jour propriété) ?
Cordialement
Eric
Hello !
Voilà j'ai créer un composant de type TGraphicControl avec une propriété de type boolean nommer "Open", ensuite j'ai créer un programme avec une variable boolean nommer "State", maintenant j'aimerais que lorsque la variable State est modifié à n'importe quel endroit cela modifie aussi la propriété Open de mon composant !
Merci
Nouni
Bonjour,
pourquoi ne pas passer directement par ta propriété sans introduire cette variable intermédiaire (j'ai l'impression que tu ne fais que dupliquer l'information) ?
Sinon, si tu ne veux pas accèder directement à cette propriété à chaque fois, tu pourrais par exemple écrire des getter/setter (au niveau de ton programme) GetState et SetState qui iraient interagir avec ton composant pour lire ou écrire la propriété. Dans ce cas, au lieu de modifier une variable, tu appelles SetState, et pour connaître l'état tu appelles GetState.
En espérant que ma réponse te fasse avancer
Eric
Merci pour ta réponse mais cela ne suffit malheureusement pas car en réalité nous sommes 2 a travailler sur ce projet et chacun à son unité.
Pour communiquer nous passons par des variables globals, déclarée dans une classe mère à nos 2 unités, dont la variable State. Mon collegue ne connait mahleureusement pas mes composants.
Le problème avec le GetState c'est que je dois sans arrêt aller contrôler l'état de la variable State et c'est justement ce que j'aimerais éviter. Le SetState ne connait pas mon composant car cette procédure est déclarée dans la classe mère et par conséquent elle ne peut pas aller modifier mon composant.
Il faudrait que mon composant connaisse la variable ainsi je pourrais directement faire le traitement dans mon composant mais dynamiquement car il y aura une variable différente pour chaque nouveau composant !
J'espère être assez clair car c'est assez difficile d'expliquer mon problème !
Merci quand même
![]()
Nouni
Bonjour,
Pourquoi ne pas passer par une classe pour passer vos valeurs, et, dans le Set de cette variable, positionner également les propriétés des classes sur lesquelles vous travaillez chacun dans votre coin ?
Cordialement,
Arnaud
Salut
Qu'est-ce que tu entends par positionner également les propriétés des classes sur lesquelles on travaille ?
Bonjour,
Avant d'aller plus loin, j'aimerais comprendre ce que tu entends par classe mère. S'agit-il d'un héritage ? Ou est-ce juste une façon de parler ?
Cordialement,
Arnaud
Il s'agit d'un héritage
Bonjour,
Et les variables sont passées à une instance de la classe mère, c'est cela ?
Dans ce cas, il y a un problème, car tu vas dupliquer l'information entre les propriétés de la classe mère et de la classe fille.... Je pense qu'il y a un problème de conception...
Sinon je verrais une solution, a priori.
Ce serait de rajouter une propriété à la classe mère correspondant à une liste de pointeurs. Ensuite une méthode Register par exemple, qui ajouterait un composant à cette liste de pointeurs. Enfin, quand la classe mère verrai sa propriété State modifiée par un SetState, notifier à l'ensemble des instances pointées dans la liste de pointeurs le changement d'état.
Je n'ai pas testé, mais je pense que ça doit pouvoir marcher. Ceci dit, je pense vraiment qu'il serait plus profitable de se pencher sur la conception, car il me semble qu'il y a un gros problème.
Cordialement,
Arnaud
Hello
Je crois que je vais revoir la conception avec mon collegue car je pense aussi qu'il y a un problème. On devrait pouvoir trouvé une solution beaucoup plus simple.
Merci pour ton aide
A+
Véronique
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager