Bonjour à tous(tes)
Comme je n'avais pas vu la fonction FMX.Types.TFmxObject.IsChild j'ai codé une fonction pour savoir si un composant fait partie d'un autre, quel que soit son niveau d'imbrication :
Dans mes cas d'utilisation, ça fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 function IsIN(Ctrl: TFmxObject; CtrlParent: TFmxObject): Boolean; var CParent: TFmxObject; begin // Si l'objet n'a pas de parent, on renvoie forcément False if Ctrl.HasParent = False then Exit(False); CParent := Ctrl.Parent; Result := CParent.Equals(CtrlParent); while not Result and CParent.HasParent do begin CParent := CParent.Parent; Result := CParent.Equals(CtrlParent); end; end;
Et puis je "tombe" (aïe) sur la fonction citée plus haut et je la teste.
Bien qu'elle semble identique dans son fonctionnement à ce que j'ai écrit, elle ne donne pas le résultat escompté.
Par exemple, un composant à l'intérieur d'un TExpander n'est pas détecté comme faisant partie du TExpander.
Il y a forcément une raison pour que la fonction Delphi ne donne pas le résultat attendu mais je n'arrive pas à voir pourquoi.
ok .... Boulet je suis, je l'utilisais à l'envers.
Pour moi, c'était monObjetEstEnfantDe(objet censé contenir mon objet)
alors que c'est le contraire.
Partager