Page 1 sur 1
je me rappelle plus comment ouvrir une deuxieme fenetre
Publié : lun. 06/nov./2006 17:08
par bernard13
bonjour
voila je me rappelle plus comment ouvrir une deuxieme fenetre
quand on la fenetre principale qui ouverte et quand on clique sur un bouton , on ouvre une deuxieme fenetre
c'est la boucle de la deuxieme fenetre que je me rappelle plus ...
qui m'aider svp
merci
Publié : lun. 06/nov./2006 17:12
par Dorian
Normalement, tu peux gérer les évenements de toutes tes fenêtres dans la même boucle

.
Publié : lun. 06/nov./2006 17:27
par Flype
@bernard13: sacré toi - je croyais que tu développais maintenant uniquement en Visual...
Code : Tout sélectionner
Enumeration 0 ; Id. Fenêtres
#FENETRE1
#FENETRE2
EndEnumeration
Enumeration 0 ; Id. Gadgets
#FEN1_BOUTON
#FEN1_FERMER
#FEN2_FERMER
EndEnumeration
If OpenWindow(#FENETRE1, 0, 0, 640, 480, "Fenêtre 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#FENETRE1))
ButtonGadget(#FEN1_BOUTON, 5, 5, 100, 22, "Ouvrir Fenêtre 2")
ButtonGadget(#FEN1_FERMER, 5, 45, 100, 22, "Quitter")
EndIf
Repeat
Evenement.l = WaitWindowEvent()
Select EventWindow()
;=====================================================
;== EVENEMENTS DE LA FENETRE PRINCIPALE
;=====================================================
Case #FENETRE1
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #FEN1_BOUTON
If OpenWindow(#FENETRE2, 0, 0, 320, 240, "Fenêtre 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#FENETRE2))
ButtonGadget(#FEN2_FERMER, 5, 5, 100, 22, "Fermer")
EndIf
EndIf
Case #FEN1_FERMER
Break
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
;=====================================================
;== EVENEMENTS DE LA FENETRE SECONDAIRE
;=====================================================
Case #FENETRE2
Select Evenement
Case #PB_Event_Gadget
If EventGadget() = #FEN2_FERMER
CloseWindow(#FENETRE2)
EndIf
Case #PB_Event_CloseWindow
CloseWindow(#FENETRE2)
EndSelect
EndSelect
ForEver
EndIf
à savoir tout de même. veux tu que la fenetre principale se bloque tant que la fenetre secondaire est ouverte - OU alors tu veux pouvoir gérer les 2 en MEME temps ?
tu peux utiliser DisableWindow() ET l'argument ParentWindow de Openwindow() pour bloquer la fenetre 'appelante'.
Publié : lun. 06/nov./2006 17:38
par bernard13
reponse à flype
je me suis remis a PB car il est plus simple
vb est complexe quand meme
Publié : lun. 06/nov./2006 17:51
par bernard13
tu tu mets Forever alors ...
Publié : lun. 06/nov./2006 17:59
par Flype
oui enfin c'est une méthode parmis d'autre.
Repeat
[...]
Until Quitter = #True
est bien aussi.
Publié : lun. 06/nov./2006 18:07
par bernard13
et quand tu crée une procedure pour la premiere fenetre ( ça je sais le faire )
une deuxieme procedure pour la fenetre 2 comment tu ecris la boucle pour la deuxieme fenetre
Publié : lun. 06/nov./2006 19:22
par Flype
je te laisse chercher encore un peu

Publié : lun. 06/nov./2006 20:21
par Flype
et puis tu as toujours pas répondu à ma question bernard !
à savoir tout de même. veux tu que la fenetre principale se bloque tant que la fenetre secondaire est ouverte - OU alors tu veux pouvoir gérer les 2 en MEME temps ?
ce qui ne se gère pas pareil !
Publié : lun. 06/nov./2006 21:06
par Flype
alors ?
bon voici une trame de codes pour une fenêtre principale + fenêtre secondaire agissant comme une boite de dialogue.
contrairement à l'exemple précédent, de cette façon l'utilisateur ne peut plus interagir avec la fenêtre principale lorsque la fenêtre secondaire est ouverte. c'est le cas le plus fréquent et le plus simple à gérer dans un premier temps.
Code : Tout sélectionner
Enumeration 0 ; Id. Fenêtres
#FENETRE1
#FENETRE2
EndEnumeration
Enumeration 0 ; Id. Gadgets
#FEN1_BOUTON
#FEN1_FERMER
#FEN2_BOUTON
#FEN2_VALIDER
#FEN2_ANNULER
EndEnumeration
Procedure FenetreSecondaire()
Protected Resultat.l = #False
; Création de la fenêtre secondaire - à noter : #PB_Window_WindowCentered et WindowID(#FENETRE1)
If OpenWindow(#FENETRE2, 0, 0, 320, 90, "Fenêtre Secondaire", #PB_Window_SystemMenu|#PB_Window_WindowCentered, WindowID(#FENETRE1))
DisableWindow(#FENETRE1, #True)
If CreateGadgetList(WindowID(#FENETRE2))
ButtonGadget(#FEN2_BOUTON, 5, 5, 310, 50, "Cliquez-moi !", #PB_Button_Toggle)
ButtonGadget(#FEN2_VALIDER, 5, 60, 150, 25, "Valider")
ButtonGadget(#FEN2_ANNULER, 165, 60, 150, 25, "Annuler")
EndIf
; Boucle de gestion des évênements de la fenêtre secondaire
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #FEN2_VALIDER
Resultat = GetGadgetState(#FEN2_BOUTON)
Break
Case #FEN2_ANNULER
Resultat = -1
Break
EndSelect
Case #PB_Event_CloseWindow
Resultat = -1
Break
EndSelect
ForEver
; Ferme la fenêtre secondaire, puis réactive la fenêtre principale
CloseWindow(#FENETRE2)
DisableWindow(#FENETRE1, #False)
EndIf
; Retourne le résultat de la boite de dialogue : #True (1), #False (0) ou Annulé (-1).
ProcedureReturn Resultat
EndProcedure
Procedure FenetrePrincipale()
; Création de la fenêtre principale - à noter : #PB_Window_ScreenCentered
If OpenWindow(#FENETRE1, 0, 0, 640, 480, "Fenêtre Principale", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#FENETRE1))
ButtonGadget(#FEN1_BOUTON, 5, 5, 140, 30, "Fenêtre Secondaire")
ButtonGadget(#FEN1_FERMER, 5, 45, 140, 30, "Quitter")
EndIf
; Boucle de gestion des évênements de la fenêtre principale
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #FEN1_BOUTON
; Ouvre la fenêtre secondaire et affiche le résultat de la saisie-utilisateur
Select FenetreSecondaire()
Case -1
MessageRequester("Message", "Opération annulée !", #MB_ICONEXCLAMATION)
Case #True
MessageRequester("Message", "Le bouton a été coché !", #MB_ICONINFORMATION)
Case #False
MessageRequester("Message", "Le bouton n'a pas été coché !", #MB_ICONERROR)
EndSelect
Case #FEN1_FERMER
Break
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndProcedure
; Démarrage du programme
FenetrePrincipale()
; Fin du programme
End
Publié : lun. 06/nov./2006 23:27
par bernard13
merci flype
j'ai trouver ceci dis ce que tu en pense et ce qu'il ne va pas
Code : Tout sélectionner
Enumeration
#main_0
#fenetre_1
EndEnumeration
Enumeration
#Bouton
EndEnumeration
Procedure main()
If OpenWindow(#main_0,0,0,400,400,"Fenetre1 ",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ButtonGadget(#bouton,200,200,120,30,"Cliquer")
EndIf
EndIf
EndProcedure
Procedure Fenetre1()
If OpenWindow(#fenetre_1,0,0,240,300,"Fenetre1",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
fermer_window0=1
EndSelect
Until fermer_window0=1
CloseWindow(#fenetre_1)
While WindowEvent():Wend
EndIf
EndProcedure
Main()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #bouton: fenetre1()
EndSelect
Case #PB_Event_CloseWindow
fermer_window0=1
EndSelect
Until fermer_window0=1
End
Publié : mar. 07/nov./2006 8:51
par bernard13
coucou Flype
explique moi dans ton code
tu mets Enumeration 0 ?
cela veux dire quoi ?
je sais sans mettre le 0
que la premiere constante prend 0 , ensuite la deuxieme prend 1.....
mais là je sais pas
Publié : mar. 07/nov./2006 9:04
par Flype
'Enumeration' ou 'Enumeration 0' c'est pareil en fait.
'Enumeration 1' fait commencé la liste à 1 tout simplement.
mais tout çà c'est dans la doc bernard !!!
lis la doc - c'est important et ca fait gagner du temps et des connaissances.
F1 quand ton curseur est sur le mot clef 'Enumeration' et tout y est dit.
Publié : mar. 07/nov./2006 10:10
par bernard13
merci flype j'ai lu la doc
que pense tu de mon code pour ouvrir une autre fenetre
j'ai besoin de ton avis svp