je me rappelle plus comment ouvrir une deuxieme fenetre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

je me rappelle plus comment ouvrir une deuxieme fenetre

Message 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
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Normalement, tu peux gérer les évenements de toutes tes fenêtres dans la même boucle ;).
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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'.
Image
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

reponse à flype
je me suis remis a PB car il est plus simple
vb est complexe quand meme
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

tu tu mets Forever alors ...
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

oui enfin c'est une méthode parmis d'autre.

Repeat
[...]
Until Quitter = #True

est bien aussi.
Image
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

je te laisse chercher encore un peu :)
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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 !
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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   

bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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.
Image
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message 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
Répondre