1 Programm mit 2 Fenstern bauen

Anfängerfragen zum Programmieren mit PureBasic.
PureNoob
Beiträge: 33
Registriert: 25.09.2007 15:30

1 Programm mit 2 Fenstern bauen

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
PureNoob
Beiträge: 33
Registriert: 25.09.2007 15:30

Es geht!

Beitrag von PureNoob »

Juhuu Super Danke

Problem gelöst!

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

Gruss PureNoob
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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
(\/) (°,,,°) (\/)
Antworten