Hilfe bei mehreren Fenstern benötigt ...

Anfängerfragen zum Programmieren mit PureBasic.
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Hilfe bei mehreren Fenstern benötigt ...

Beitrag von hiltwin »

Hallo,

ich habe mit dem Visual Designer zwei Fenster gestaltet, mit denen das Programm mit dem Benutzer kommunizieren soll.
Dabei soll sich Fenster 2 erst öffnen, wenn im Fenster 1 ein Button geklickt wird.

Das bekomme ich soweit auch noch hin. Allerdings weiss ich nicht, wie ich das zweite Fenster wieder ordnungsgemäß schliesse. Klicke ich nämlich auf den Systemschliessen-Button des zweiten Fensters, werden beide Fenster - sprich die gesamte Anwendung geschlossen.

Ich öffne das zweite Fenster über den Befehl:

und habe dann über einen Gosub folgenden Code:

Fensterzweioeffnen:

Code: Alles auswählen

Open_Window_1()

Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
  ;Debug "WindowID: " + Str(EventWindowID())
  GadgetID = EventGadgetID()
  If GadgetID = #Radio_Window1_Button1
  Debug "GadgetID: #Radio_Window1_Button1"
  ElseIf GadgetID = #Radio_Window1_Button2
  Debug "GadgetID: #Radio_Window1_Button2"
  ElseIf GadgetID = #String_Window1
  Debug "GadgetID: #String_Window1"
  ElseIf GadgetID = #Button_Window1_Button1
  Debug "GadgetID: #Button_Window1_Button1"
  ElseIf GadgetID = #Button_Button_Window1_Exit
  Debug "GadgetID: #Button_Window1_Exit"
  EndIf
  EndIf
Until Event = #PB_EventCloseWindow
Return
Wie kann ich es einrichten, dass beim Klicken des Systemschliessen-Button nur das 2. Fenster schliesst und bei Klicken von Button1 erst eine Aktion (Schreiben von Werten in ein ListGadget) ausgeführt wird und dann das zweite Fenster geschlossen wird und bei Klicken von Button Exit das zweite Fenster ohne weitere Aktion geschlossen wird?

Danke schon im voraus ...
Hiltwin

Edit by Kiffi: Code-Tags gesetzt
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@hiltwin:

nicht, dass Du meinst, es würde mir unheimlich viel Spass machen, Deine
Postings immer wieder zu korrigieren.

Wenn Du Source-Code hier postest, dann verwende bitte den dafür
gedachten Code-Button im entsprechenden Editor-Fenster!

Grüße ... Kiffi
a²+b²=mc²
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

...

Beitrag von hiltwin »

Code: Alles auswählen

ahja - button code gefunden
mal sehen, ob smilies auch funktionieren ;o)
:freak:[/c]
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Code: Alles auswählen

Enumeration
  #Window_0
  #Window_1
  #Button_0
  #Button_1
  #Button_2
  #Button_3
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      ButtonGadget(#Button_0, 120, 70, 85, 35, "pseudo")
      ButtonGadget(#Button_1, 260, 100, 95, 40, "2. Fenster auf")
      
    EndIf
  EndIf
EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1, 371, 266, 600, 300,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "New window ( 1 )",WindowID(#Window_0))
    If CreateGadgetList(WindowID())
      ButtonGadget(#Button_2, WindowWidth()-130, 0, 130, 130, "Fenster schliessen")
      ButtonGadget(#Button_3, 400, 110, 50, 45, "F2 B2")
    EndIf
  EndIf
EndProcedure

Open_Window_0()
Open_Window_1()

Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
  If WindowID=#Window_1 And event= #PB_Event_CloseWindow
    CloseWindow(#window_1)
  EndIf
  
  If WindowID=#Window_0 And event= #PB_Event_CloseWindow
    CloseWindow(#window_0)
    quit=1
  EndIf
  
  GadgetID = EventGadgetID() ; Is it a gadget event?
  EventType = EventType() ; The event type
  
  If Event = #PB_EventGadget
    If GadgetID = #Button_0
    ElseIf GadgetID = #Button_1
      Open_Window_1()
    ElseIf GadgetID = #Button_2
      CloseWindow(#window_1)
    ElseIf GadgetID = #Button_3
    EndIf
  EndIf
Until quit=1
End
;
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
spacewalker
Beiträge: 48
Registriert: 15.07.2005 15:22
Wohnort: Stuttgart

Beitrag von spacewalker »

Also wenn du mehrere fenster separat behandeln willst, musst du unbedingt das fenster rausfinden, in dem das ereigniss ausgeloest wurde

Code: Alles auswählen

; 3 Fenster oeffnen:
For nummer = 0 To 2
  OpenWindow(nummer,nummer*10,nummer*10,100,100,#PB_Window_SystemMenu,"Fenster"+Str(nummer))
Next nummer


Repeat
  If WaitWindowEvent() = #PB_Event_CloseWindow ; wenn schliessereigniss ausgeloest wurde...
    CloseWindow(EventWindowID()) ; Nur das verantwortliche Fenster schliessen!
  EndIf
  exit = 0 
  For nummer = 0 To 2
    If IsWindow(nummer) = 0
      exit = exit + 1
    EndIf
  Next nummer 
Until exit = 3
Debug "Alle geschlossen, ende"
End 
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

vielen dank ...

Beitrag von hiltwin »

... für eure hilfe,

besonders, weil ich dazu die anregungen bekam, um mich weiter in die thematik einzuarbeiten.

man sollte dann bei window_0 auch mal die schliess-option so verändern, dass dort

Code: Alles auswählen

WindowID=#Window_0 And event= #PB_Event_CloseWindow
steht - dann bleibt das erste fenster auch so lange offen. weiterhin hab ich dann da selber noch nen requester hintergesetzt, ob das programm wirklich beendet werden soll ;o)

also, wärs hier wer-weiss-was, gäbs zwei bewertungspunkte
:allright:

ciao - bis zur nächsten frage
8)
Benutzeravatar
PAMKKKKK
Beiträge: 321
Registriert: 21.04.2005 22:08
Wohnort: Braunschweig
Kontaktdaten:

Beitrag von PAMKKKKK »

Vielleicht hilft dir mein Beispiel:
http://forums.purebasic.com/german/view ... 4898#54898
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Beitrag von hiltwin »

nettes, kurzes und knackiges beispiel - so in der art hab ich es jetzt umgesetzt ...

frdl. gruss
hiltwin
Antworten