Seite 1 von 1

1 Programm mit 2 Fenstern bauen

Verfasst: 28.02.2008 13:03
von PureNoob
Hallo zusammen,

nachdem ich jetzt mein erstes Programm fertig habe, versuche ich dieses zu verbessern. Dazu gehört auch, das ich die Einstellungen für die Verzeichnisauswahl nicht mehr im Hauptfenster haben möchte.

Ich möchte im Window_0 einen Button haben, worauf steht "Einstellungen" und wenn man darauf klickt, wechselt man auf Window_1 wo dann die Verzeichnisauswahl erfolgt und wenn man dort dann auf den Button "Hauptfenster" klickt, dann soll wieder das Window_0 erscheinen. Nur irgendwie kriege ich das nicht so ganz hin.

Wie mache ich das denn am besten? Habt ihr da den ein oder anderen Codeschnipsel für mich?

Danke PureNoob

Verfasst: 28.02.2008 13:15
von Kaeru Gaman
http://www.purebasic.fr/english/viewtop ... 031#175031

da ist das posting mit meinem codeschnipsel, weiter oben und weiter unten sind noch vorschläge von anderen kollegen.

falls dein englisch nicht so toll ist, lass dich nicht abschrecken, der code ist schließlich in PB.

Verfasst: 28.02.2008 13:23
von Kiffi
mist, Kaeru, was mache ich nun mit meinem Code?
Ich poste ihn einfach trotzdem :mrgreen:

Code: Alles auswählen

Enumeration ; Windows
  #Window_1
  #Window_2
EndEnumeration
Enumeration ; Gadgets
  #Window_1_Button_1
EndEnumeration

Procedure Window_1_Open()
  
  OpenWindow(#Window_1, #PB_Ignore, #PB_Ignore, 300, 300, "Fenster1")
  CreateGadgetList(WindowID(#Window_1))
  ButtonGadget(#Window_1_Button_1, 5, 5, 100, 20, "Fenster 2 öffnen")
  
EndProcedure

Procedure Window_2_Open()
  
  OpenWindow(#Window_2, #PB_Ignore, #PB_Ignore, 100, 100, "Fenster2")
  CreateGadgetList(WindowID(#Window_2))
  
EndProcedure

Window_1_Open()

Repeat
  
  WWE = WaitWindowEvent()
  
  Select WWE
    
    Case #PB_Event_CloseWindow ; Schliessen-Kreuz angeklickt?
      
      Select EventWindow()     ; in welchem Fenster?
        
        Case #Window_1 ; in Fenster1 -> Programmende
          Quit = #True
          
        Case #Window_2 ; in Fenster2 -> Fenster2 wird geschlossen
          CloseWindow(#Window_2)
          
      EndSelect
      
    Case #PB_Event_Gadget
      
      Select EventGadget() ; Welches Gadget hat das Ereignis ausgelöst?
        
        Case #Window_1_Button_1
          Window_2_Open()
        
      EndSelect
    
  EndSelect
  
Until Quit = #True
Grüße ... Kiffi

Es geht!

Verfasst: 28.02.2008 13:28
von PureNoob
Juhuu Super Danke

Problem gelöst!

Wenn mein Programm endgültig fertig ist, präsentiere ich es hier mal.

Gruss PureNoob

Verfasst: 28.02.2008 13:28
von Kaeru Gaman
:lol: so ging mir das damals auch....
ich setz mich hin und schreib ausführlich kommentiert und übersichtlich gegliedert,
und als ich fertig bin haben Tranquil, Noah und Netmaestro schon codes gepostet....

tel aviv, mondamin

Verfasst: 28.02.2008 14:22
von KeyKon
Noch geschickter wäre es natürlich wenn man das zweite Fenster gleich am anfang erstellt und dann nur mittels HideWindow erscheinen und verschwinden lässt...

Das kann man ganz leicht in Kiffis Code abändern...

Code: Alles auswählen

Enumeration ; Windows 
  #Window_1 
  #Window_2 
EndEnumeration 
Enumeration ; Gadgets 
  #Window_1_Button_1 
EndEnumeration 

Procedure Window_1_Open() 
  
  OpenWindow(#Window_1, #PB_Ignore, #PB_Ignore, 300, 300, "Fenster1") 
  CreateGadgetList(WindowID(#Window_1)) 
  ButtonGadget(#Window_1_Button_1, 5, 5, 100, 20, "Fenster 2 öffnen") 
  
EndProcedure 

Procedure Window_2_Open() 
  
  OpenWindow(#Window_2, #PB_Ignore, #PB_Ignore, 100, 100, "Fenster2") 
  HideWindow(#Window_2,1)   ; Sofort verstecken
  
  CreateGadgetList(WindowID(#Window_2)) 
  
EndProcedure 

Window_1_Open() 
Window_2_Open()


Repeat 
  
  WWE = WaitWindowEvent() 
  
  Select WWE 
    
    Case #PB_Event_CloseWindow ; Schliessen-Kreuz angeklickt? 
      
      Select EventWindow()     ; in welchem Fenster? 
        
        Case #Window_1 ; in Fenster1 -> Programmende 
          Quit = #True 
          
        Case #Window_2 ; in Fenster2 -> Fenster2 wird geschlossen 
          HideWindow(#Window_2,1) ; Wieder verstecken
          
      EndSelect 
      
    Case #PB_Event_Gadget 
      
      Select EventGadget() ; Welches Gadget hat das Ereignis ausgelöst? 
        
        Case #Window_1_Button_1 
          HideWindow(#Window_2,0) ; Erscheinen lassen
        
      EndSelect 
    
  EndSelect 
  
Until Quit = #True