papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Détermine si oui ou non un objet est PARENT d'un autre objet Dim 16 Juil 2017 - 5:30 | |
| Dans un autre post, Klaus a écrit : - Citation :
- 0n a la commande PARENT qui attache un objet à un autre (si c'est possible), et on a la fonction PARENT(N) qui retourne le numéro d'objet parent de l'objet N. C'est parfait. Mais est-ce qu'on pourrait avoir la même chose côté "enfant" ?
Voici une fonction IsChild de la USER32.DLL qui teste si un objet est parent ou descendant d’un autre objet. Ça ne répond pas à l’attente de Klaus, mais qui sait ? Peut-être que Klaus ou d’autres panoramiciens trouveront-ils une certaine utilité. - Code:
-
rem ============================================================================ rem IsChild(pere,fils) rem ============================================================================ rem Détermine si oui ou non l’objet pere est parent de l’objet fils rem ============================================================================ rem _________________________________________________ rem | | rem | dll_call2("IsChild",handle(pere),handle(fils)) | rem |_________________________________________________| rem rem Si le résultat vaut 1, FILS est enfant de PERE rem Autrement dit : PERE est PARENT de FILS rem ============================================================================ ' Exemple d'utilisation dim i caption 0,"FORM 0" panel 5 : caption 5,"PANEL 5" combo 8 : left 8,200 : top 8,20 : text 8,"COMBO 8" form 10 : top 10,150 : left 10,100 : caption 10,"FORM 10" for i = 11 to 13 button i : parent i,10 : top i,50 : left i,10+ (i-11)*100 : caption i,"Bouton "+ str$(i) next i ' Appels IsChild(10,12) : ' <--- 12 est fils de 10 IsChild(0,13) : ' <--- 13 n'est pas fils de 0 IsChild(0,10) : ' <--- 10 n'est pas fils de 0 IsChild(10,11) : ' <--- 11 est fils de 10 IsChild(0,5) : ' <--- 5 est fils de 0 IsChild(0,8) : ' <--- 8 est fils de 0 IsChild(100,30) : ' <--- Ces objets n'existent pas ! end rem ============================================================================ SUB IsChild(pere,fils) if object_exists(pere) <> 1 or object_exists(fils) <> 1 message "Les objets " + str$(pere) + " et/ou " + str$(fils) + " n'existent pas !!!" : exit_sub end_if dll_on "user32" if dll_call2("IsChild",handle(pere),handle(fils)) = 1 message "L'objet : " + str$(fils) + " est un enfant de l'objet : " + str$(pere) else message "L'objet : " + str$(fils) + " n'est pas un enfant de l'objet : " + str$(pere) end_if dll_off END_SUB rem ============================================================================
| |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Détermine si oui ou non un objet est PARENT d'un autre objet Dim 16 Juil 2017 - 10:58 | |
| C'est intéressant, Papydall. Mais ce que je souhaitais pouvoir faire, c'est de déterminer a liste des enfants d'un objet (form, panel, ...). Car, pour savois si un objet est l'enfant d'un autre, on pourrait aussi faire: - Code:
-
panel 10 button 20 : parent 20,10 ... if parent(20)=10 then message "L'objet 20 esr enfant de l'objet 10" | |
|