Mai 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | Calendrier |
|
| | number_child(N) | |
| | Auteur | Message |
---|
jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: number_child(N) Dim 1 Avr 2018 - 16:12 | |
| Je crois que ça n'existe pas et ce serait bien utile. (Du moins, je viens de tomber sur ce problème en codant mon futur nouveau jeu). Oh, je vais trouver un moyen de résoudre le problème sans ça, mais ce serait plus rapide et élégant d'avoir un : NUMBER_CHILD(N) qui permettrait de savoir de combien d'objets-système l'objet_système N est le parent. (Histoire d'en rajouter un peu plus à la to-do-list ) Qu'en pense le forum ?
Dernière édition par jjn4 le Lun 2 Avr 2018 - 14:30, édité 2 fois | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: number_child(N) Dim 1 Avr 2018 - 21:30 | |
| Ca existe, sauf que la fonction s'appelle PARENT(N): - Code:
-
panel 1 button 2 : parent 2,1 message str$(parent(2)) end
| |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: number_child(N) Dim 1 Avr 2018 - 21:50 | |
| Désolé Klaus mais non ! Moi aussi j'ai failli faire comme toi ! Ce que tu propose c'est la façon de connaître le PARENT N d'un objet. Alors que JJN4, lui, cherche a savoir combien il y a d'éléments attachés à l'objet N. Ce qui est différent ! C'est vrai que cette fonction a existé et à été remplacé par PARENT() Mais elle retourne le numéro du PARENT d'un objet et non le nombre d'objets rattachés ! Sans rancune... | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: number_child(N) Dim 1 Avr 2018 - 21:58 | |
| Oups... tu as raison, Minibug ! Ca m'apprendra à vouloir distiller des "informations", juste en sortant d'un grand repas de famille ! | |
| | | papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: number_child(N) Dim 1 Avr 2018 - 22:00 | |
| Si ça peut servir à quelqu'un (pas forcement à un Martien ! ) - 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 ============================================================================
EDIT : Bon appétit Klaus! On vient de se croiser. | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: number_child(N) Dim 1 Avr 2018 - 22:16 | |
| Bon, alors je vais tenter de répondre avec plus de sérieux, cette fois.
Actuellement, en Panoramic pur, on ne peut pas savoir combien d'enfants a un objet Panoramic.
Je pourrais faire une fonction dans KGF.dll retournant le nombre de fenêtres enfant d'un objet Panoramic. Ce n'est pas bien compliqué. Je pourrais même retourner le handle d'une fenêtre enfant dont le numéro est passé en paramètre.
Mais il y a un problème. Ceci ne marche que pour les objets "fenêtrées" de Panoramic. Ce sont ceux qui ont un handle. Mais des objets comme ALPHA ou PICTURE n'ont pas de handle, et je n'ai aucun moyen de détecter s'ils sont enfant d'un certain objet Panoramic ou non.
Conclusion: Seul Jack pourrait fournir une solution à ce problème. C'est un des cas où je ne peux rien faire de valable dans KGF.dll. | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: number_child(N) Dim 1 Avr 2018 - 23:01 | |
| Voila un petit code qui pourrait répondre à la demande de JJN4. Mais il y a plusieurs restrictions. - La première c'est de connaître le numéro le plus grand des objets créés pour pouvoir faire le test de vérification. - La seconde c'est qu'on ne peut retenir que les objets en parent direct. pas les parents des parents et etc... voilà les quelques lignes : - Code:
-
' Test pour connaitre le nombre d'objet rattaché à un PARENT n%
DIM n% , p% , nb%
BUTTON 1 : PARENT 1,0 : LEFT 1,5 : TOP 1,5 PANEL 4 : PARENT 4,0 : LEFT 4,5 : TOP 4,50 BUTTON 5 : PARENT 5,4 : LEFT 5,5 : TOP 5,5 BUTTON 8 : PARENT 8,4 : LEFT 8,100 : TOP 8,5 ALPHA 10 : PARENT 10,0 : LEFT 10,100 : TOP 10,5 : CAPTION 10,"test"
' Test sur les objets jusqu'a 10 àpour trouvé les objets rattachés au parent p% p%=4 FOR n%=0 TO 10 IF n%<>p% : ' si l'objet n'est pas le parent recherché en continue IF OBJECT_EXISTS(n%)=1 AND PARENT(n%)=p% THEN nb%=nb%+1 : ' si l'objet existe et et bien rattaché au parent p% END_IF NEXT n%
MESSAGE "Il y a "+STR$(nb%)+" objet(s) rattaché(s) au parent numéro "+STR$(p%)
END | |
| | | silverman
Nombre de messages : 968 Age : 51 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: number_child(N) Lun 2 Avr 2018 - 6:54 | |
| @jjn4 Si tu veux connaitre le nombre de descendants, c'est plutot NUMBER_CHILD() qu'il faut nommer ta fonction @klaus Tu as un peu changé... @minibug Il y a la possibilité de se passer de la premiere restriction en utilisant la variable number_object. L'exemple de minibug avec la variable number_object, dans une fnc: - Code:
-
' Test pour connaitre le nombre d'objet rattaché à un PARENT n%
DIM n% , p% , nb%
BUTTON 1 : PARENT 1,0 : LEFT 1,15 : TOP 1,5 PANEL 4 : PARENT 4,0 : LEFT 4,5 : TOP 4,50 BUTTON 5 : PARENT 5,4 : LEFT 5,5 : TOP 5,5 BUTTON 8 : PARENT 8,4 : LEFT 8,100 : TOP 8,5 ALPHA 10 : PARENT 10,0 : LEFT 10,100 : TOP 10,5 : CAPTION 10,"test"
' Test pour trouver les objets rattachés au parent p% p%=4 MESSAGE "Il y a "+STR$(NUMBER_CHILD(p%))+" objet(s) rattaché(s) au parent numéro "+STR$(p%)
END fnc NUMBER_CHILD(obj%) dim_local i%,o%,child% repeat i%=i%+1 if object_exists(i%)=1 o%=o%+1 if parent(i%)=obj% then child%=child%+1 end_if until o%=number_objects result child% end_fnc | |
| | | Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| | | | jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 2 Avr 2018 - 14:24 | |
| Merci pour tous ces conseils ! - Silverman a écrit:
- Si tu veux connaitre le nombre de descendants, c'est plutot NUMBER_CHILD() qu'il faut nommer ta fonction
Très juste, plutôt NUMBER_CHILD ! (je vais d'ailleurs corriger le post plus haut) J'ai finalement trouvé une solution simple puisqu'il n'y a finalement que 4 objects dont il peut être le parent - Code:
-
dim_local v1cm% NPP%=0 for v1cm% = 1 to 4 if parent(v1cm%*10+1490)=1410 NPP%=NPP%+1 end_if next v1cm% 1410, c'est le parent 1500,1510,1520,1530=ce sont les childs possibles Bon, j'aurais pu le faire avec une fonction, je n'ai pas encore l'habitude. Mais ça n'empêche qu'il pourrait y avoir un NUMBER_CHILD pour le cas où il y aurait un grand nombre de childs possible (une famille nombreuse, quoi ) | |
| | | Klaus
Nombre de messages : 12301 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: number_child(N) Lun 2 Avr 2018 - 14:36 | |
| | |
| | | jjn4
Nombre de messages : 2709 Date d'inscription : 13/09/2009
| Sujet: +++ Lun 2 Avr 2018 - 19:33 | |
| Oh, oh, intéressant ! | |
| | | Contenu sponsorisé
| Sujet: Re: number_child(N) | |
| |
| | | | number_child(N) | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |