[Résolu] Je tourne en rond - Fenetres et Repeat Untill
[Résolu] Je tourne en rond - Fenetres et Repeat Untill
Bon, j'ai quelques soucis et j'ai besoin d'un cours, et d'un coup de main.
J'ai plusieurs fenêtres qui vont s'ouvrir en séquence, selon les choix faits dans les fenêtres précédentes.
Est-ce que je dois :
- ouvrir toutes mes fenêtres avant Repeat et les cacher jusqu'à ce qu'elles soient appelées, et donc n'avoir qu'une seule boucle Untill ?
- faire une boucle Repeat Untill dans chaque fenêtre et y tester tous les gadgets qu'elle contient ?
- appeler mes fenêtres dans des procédures et faire du Repeat Untill dans les procédures ?
J'ai l'impression que les multiples Repeat Untill de diverses fenêtres se chevauchent si je ne fais que cacher les fenêtres au lieu de les fermer.
Je comptais réutiliser les constantes énumérées de certains gadgets d'une fenêtre sur l'autre, mais ça pose des soucis au débogueur qui me dit que certains gadgets ne sont pas initialisés, alors que je sais qu'ils le sont. Qui a raison ? Moi ou le débogueur ?
Un p'tit cours sur les Boucles et le Fenêtres ? M'ci
J'ai plusieurs fenêtres qui vont s'ouvrir en séquence, selon les choix faits dans les fenêtres précédentes.
Est-ce que je dois :
- ouvrir toutes mes fenêtres avant Repeat et les cacher jusqu'à ce qu'elles soient appelées, et donc n'avoir qu'une seule boucle Untill ?
- faire une boucle Repeat Untill dans chaque fenêtre et y tester tous les gadgets qu'elle contient ?
- appeler mes fenêtres dans des procédures et faire du Repeat Untill dans les procédures ?
J'ai l'impression que les multiples Repeat Untill de diverses fenêtres se chevauchent si je ne fais que cacher les fenêtres au lieu de les fermer.
Je comptais réutiliser les constantes énumérées de certains gadgets d'une fenêtre sur l'autre, mais ça pose des soucis au débogueur qui me dit que certains gadgets ne sont pas initialisés, alors que je sais qu'ils le sont. Qui a raison ? Moi ou le débogueur ?
Un p'tit cours sur les Boucles et le Fenêtres ? M'ci
Dernière modification par kerkael le ven. 03/oct./2008 11:22, modifié 1 fois.
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
salut kerkael
regarde ce code :
regarde ce code :
Code : Tout sélectionner
Enumeration
#Main
#Fenetre1
#Fenetre2
#Fenetre3
#Fenetre4
#Fenetre5
EndEnumeration
Enumeration
#Bouton1
#Bouton2
#Bouton3
#Bouton4
#Bouton5
#BoutonFenetre1
#BoutonFenetre2
#BoutonFenetre3
#BoutonFenetre4
#BoutonFenetre5
#Text
EndEnumeration
Procedure OpenWin_Main()
If OpenWindow(#Main, 0, 0, 220, 200, "Fenetres", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ButtonGadget(#Bouton1, 10, 10, 200, 20, "Ouvrir fenêtre 1")
ButtonGadget(#Bouton2, 10, 40, 200, 20, "Ouvrir fenêtre 2")
ButtonGadget(#Bouton3, 10, 70, 200, 20, "Ouvrir fenêtre 3")
ButtonGadget(#Bouton4, 10, 100, 200, 20, "Ouvrir fenêtre 4")
ButtonGadget(#Bouton5, 10, 130, 200, 20, "Ouvrir fenêtre 5")
TextGadget(#Text, 10, 180, 200, 20, "Pas de fenêtre ouverte", #PB_Text_Center)
EndIf
EndIf
EndProcedure
Procedure OpenWin_1()
If OpenWindow(#Fenetre1, 0, 0, 220, 40, "Fenetre 1", #PB_Window_SystemMenu, WindowID(#Main))
If CreateGadgetList(WindowID(#Fenetre1))
ButtonGadget(#BoutonFenetre1, 10, 10, 200, 20, "Fermer fenêtre 1")
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Procedure OpenWin_2()
If OpenWindow(#Fenetre2, 0, 70, 220, 40, "Fenetre 2", #PB_Window_SystemMenu, WindowID(#Main))
If CreateGadgetList(WindowID(#Fenetre2))
ButtonGadget(#BoutonFenetre2, 10, 10, 200, 20, "Fermer fenêtre 2")
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Procedure OpenWin_3()
If OpenWindow(#Fenetre3, 0, 140, 220, 40, "Fenetre 3", #PB_Window_SystemMenu, WindowID(#Main))
If CreateGadgetList(WindowID(#Fenetre3))
ButtonGadget(#BoutonFenetre3, 10, 10, 200, 20, "Fermer fenêtre 3")
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Procedure OpenWin_4()
If OpenWindow(#Fenetre4, 0, 210, 220, 40, "Fenetre 4", #PB_Window_SystemMenu, WindowID(#Main))
If CreateGadgetList(WindowID(#Fenetre4))
ButtonGadget(#BoutonFenetre4, 10, 10, 200, 20, "Fermer fenêtre 4")
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Procedure OpenWin_5()
If OpenWindow(#Fenetre5, 0, 280, 220, 40, "Fenetre 5", #PB_Window_SystemMenu, WindowID(#Main))
If CreateGadgetList(WindowID(#Fenetre5))
ButtonGadget(#BoutonFenetre5, 10, 10, 200, 20, "Fermer fenêtre 5")
ProcedureReturn #True
EndIf
EndIf
EndProcedure
OpenWin_Main()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
;/ Ouverture des fenêtres "fille"
Case #Bouton1
If OpenWin_1()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 1")
EndIf
Case #Bouton2
If OpenWin_2()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 2")
EndIf
Case #Bouton3
If OpenWin_3()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 3")
EndIf
Case #Bouton4
If OpenWin_4()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 4")
EndIf
Case #Bouton5
If OpenWin_5()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 5")
EndIf
;/ Femeture des fenêtres "fille" par le bouton
Case #BoutonFenetre1
SetGadgetText(#Text, "Vous avez fermé la fenêtre 1")
CloseWindow(#Fenetre1)
Case #BoutonFenetre2
SetGadgetText(#Text, "Vous avez fermé la fenêtre 2")
CloseWindow(#Fenetre2)
Case #BoutonFenetre3
SetGadgetText(#Text, "Vous avez fermé la fenêtre 3")
CloseWindow(#Fenetre3)
Case #BoutonFenetre4
SetGadgetText(#Text, "Vous avez fermé la fenêtre 4")
CloseWindow(#Fenetre4)
Case #BoutonFenetre5
SetGadgetText(#Text, "Vous avez fermé la fenêtre 5")
CloseWindow(#Fenetre5)
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
;/ Fermeture des fenêtres "fille" par l'icône [X]
Case #Fenetre1
SetGadgetText(#Text, "Vous avez fermé la fenêtre 1")
CloseWindow(#Fenetre1)
Case #Fenetre2
SetGadgetText(#Text, "Vous avez fermé la fenêtre 2")
CloseWindow(#Fenetre2)
Case #Fenetre3
SetGadgetText(#Text, "Vous avez fermé la fenêtre 3")
CloseWindow(#Fenetre3)
Case #Fenetre4
SetGadgetText(#Text, "Vous avez fermé la fenêtre 4")
CloseWindow(#Fenetre4)
Case #Fenetre5
SetGadgetText(#Text, "Vous avez fermé la fenêtre 5")
CloseWindow(#Fenetre5)
;/ Fermeture de la fenêtre principale (et fin du programme)
Case #Main
Quit = #True
EndSelect
EndSelect
Until Quit
End
Re: [HelpMe] Je tourne en rond - Fenetres et Repeat Untill
kerkael a écrit :Bon, j'ai quelques soucis et j'ai besoin d'un cours, et d'un coup de main.
J'ai plusieurs fenêtres qui vont s'ouvrir en séquence, selon les choix faits dans les fenêtres précédentes.
sans vouloir etre mechant
je commence a en avoir marre des questions a la cons comme la tienne
alors que la réponse se trouve MULTIPLE dans le forum !!!!
j'ai perdu quelques minutes a te trouver une réponse
celle-ci entre autre :
http://www.purebasic.fr/french/viewtopi ... ht=fenetre
alors si moi j'ai perdu du temps a chercher, pourquoi pas toi !!???

faut pas déconner !!
IL Y A UN BOUTON RECHERCHER
en haut du forum, faudrai voir a l'utiliser !!
ce forum a suffisamment d'existence, pour combler la majorité des réponses...
alors nom de Diou! de nom de diou !
CHERCHEZ UN PEU !!!

- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
tttt ....
Je reconnais que ma question peut avoir déjà été traitée, mais est-ce que ça signifie que je dois lire tout le forum pour tomber sur le contenu d'un message qui va me donner la réponse, alors que l'intitulé des sujets est la plupart du temps sinon non-explicite carrément hors-sujet ?
Pour être un utilisateur de nombreux forums, et recevoir chaque jour entre 300 et 1000 mails au bureau, j'insiste systématiquement pour que les sujets de ces messages soient explicites. Et comme d'habitude, on me fait valoir que c'est moi qui ne sait pas lire, chercher, trouver les infos ... Désolé si elles ne sont pas à leur place.
Si je m'en tiens au lien que tu m'as donné, le titre du message :
je me rappelle plus comment ouvrir une deuxième fenêtre ne me donne pas envie de le lire pour obtenir la réponse à ma question, alors que la réponse s'y trouve.
Je reconnais que ma question peut avoir déjà été traitée, mais est-ce que ça signifie que je dois lire tout le forum pour tomber sur le contenu d'un message qui va me donner la réponse, alors que l'intitulé des sujets est la plupart du temps sinon non-explicite carrément hors-sujet ?
Pour être un utilisateur de nombreux forums, et recevoir chaque jour entre 300 et 1000 mails au bureau, j'insiste systématiquement pour que les sujets de ces messages soient explicites. Et comme d'habitude, on me fait valoir que c'est moi qui ne sait pas lire, chercher, trouver les infos ... Désolé si elles ne sont pas à leur place.
Si je m'en tiens au lien que tu m'as donné, le titre du message :
je me rappelle plus comment ouvrir une deuxième fenêtre ne me donne pas envie de le lire pour obtenir la réponse à ma question, alors que la réponse s'y trouve.
Ah, et encore merci pour ces formidables exemples ... que je n'ai pas su repérer en faisant une recherche.
N'empêche que j'aurais bien aimé avoir des explications sur les implications de multiples boucles Repeat Untill si je n'ai pas fermé les autres fenêtres. En regardant Mon gestionnaire des Tâches de windows, il m'arrive de voir des PureBasic(1), PureBasic(2)... alors que je croyais être sorti de mon programme.
N'empêche que j'aurais bien aimé avoir des explications sur les implications de multiples boucles Repeat Untill si je n'ai pas fermé les autres fenêtres. En regardant Mon gestionnaire des Tâches de windows, il m'arrive de voir des PureBasic(1), PureBasic(2)... alors que je croyais être sorti de mon programme.
ben oui tu aurai bien aimé !!kerkael a écrit :Ah, et encore merci pour ces formidables exemples ... que je n'ai pas su repérer en faisant une recherche.
N'empêche que j'aurais bien aimé avoir des explications sur les implications de multiples boucles Repeat Untill si je n'ai pas fermé les autres fenêtres. En regardant Mon gestionnaire des Tâches de windows, il m'arrive de voir des PureBasic(1), PureBasic(2)... alors que je croyais être sorti de mon programme.

mais voila , moi je suis pas payé pour te donner tes réponses, personne ici ne l'est d'ailleurs !!
on est tous des benevoles, qui passons du temps et du bon vouloir a aider les autres, mais rien nous y oblige !!!
et pourtant (malgres le ton de ton message) je vais quand meme te repondre.....
si ton gestionnaire de taches t'indique plusieurs instances de purebasic ce n'est pas due aux boucles d'event !!
mais tous simplement au fait que des sessions de prg n'ont pas ete fermé, ou ne sont pas close !!
les boucles d'evant n'ont rien a voir la dedans !!
un seul prg peut faire apparaitre plusieurs instance dans le gestionnaire des taches, seulement, et seulement si, s'il utilise les Threads !!
ou lance un autre prg....
pour répondre a ta question première
tout dépends ce que tu veux faire
1- tu peux avoir une fenêtre "mère"
et des fenêtres "filles" qui dépendent de la fenêtre "mère"
(modal, ou MDI)
2- tu peux avoir différente fenetre "mere" indépendante
le tout pouvant etre geré avec une seule boucle d'évent, ou
alors plusieurs boucle d'évent (1 par fenetre)...
il n'y as pas de "meilleur" ou "moins bonne" façon de faire, c'est aux choix , c'est tout.....

ps :
justement c'est comme ça qu'on tombe sur des sujets qui apportent leur lot d'interetJe reconnais que ma question peut avoir déjà été traitée, mais est-ce que ça signifie que je dois lire tout le forum pour tomber sur le contenu d'un message qui va me donner la réponse, alors que l'intitulé des sujets est la plupart du temps sinon non-explicite carrément hors-sujet ?
en lisant le forum, tu vas tomber sur des perles !!
la curiosité est un atout en programmation

ton propre titre de sujet n'est pas plus explicite pour autant !!
plus tard , il y aura quelqu'un comme toi, qui vas me faire la même réflexion, lorsque je lui parlerai de ton topic !!Je tourne en rond - Fenetres et Repeat Untill
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
Pas vraiment une histoire de boucle Jb13, c'est que la fenêtre du prog a peut-être disparu, mais que le prog n'a pas été terminé. (rien de tel qu'un petit End après un closewindow(*) par exemple).
Sinon pour revenir à ces questions récurrentes de "recherche", il est vrai que les sujets sont parfois peu explicites. Et c'est parfois pénible de trouver une solution malgrés une recherche approfondie. Cela vient de phpbb qui n'est pas au top coté recherche mais aussi des posteur qui sont parfois vagues.
Maintenant je comprends aussi comprendre ces petits coups de gueules qui viennent de gens plus habitués à ce fofo qui se retrouvent souvent à répéter 15 fois les mêmes choses.
Le tout c'est de pas se pendre la tête pour ce genre de choses.
Si ce j'espère que tu as trouvé ta méthose pour ton histoire de fenêtres multiples.
Perso si j'ouvre la fenêtre 2, je cache la 1ere, et si je quitte ma fenetre 2 la fenetre 1 reapparait.. En quittant la fenetre 1 alors je place un END
Sinon pour revenir à ces questions récurrentes de "recherche", il est vrai que les sujets sont parfois peu explicites. Et c'est parfois pénible de trouver une solution malgrés une recherche approfondie. Cela vient de phpbb qui n'est pas au top coté recherche mais aussi des posteur qui sont parfois vagues.
Maintenant je comprends aussi comprendre ces petits coups de gueules qui viennent de gens plus habitués à ce fofo qui se retrouvent souvent à répéter 15 fois les mêmes choses.
Le tout c'est de pas se pendre la tête pour ce genre de choses.
Si ce j'espère que tu as trouvé ta méthose pour ton histoire de fenêtres multiples.

Perso si j'ouvre la fenêtre 2, je cache la 1ere, et si je quitte ma fenetre 2 la fenetre 1 reapparait.. En quittant la fenetre 1 alors je place un END
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels