Child-Fenster schließen ohne Parent

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

Sereyanne

Betreff: Child-Fenster schließen ohne Parent

BeitragFr, Jan 27, 2012 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
befasse mich gerade mit der Frage, wie ich ein Child-Fenster schließe, ohne das Parent-Fenster ebenfalls zu schließen. Wobei ich bereits festgestellt habe, dass sich das Hauptfenster auch dann schließt, wenn das andere überhaupt kein child ist.
Also im Klartext:
Code: [AUSKLAPPEN]
Global win=CreateWindow("AC",aufloesung_breite-alarmfenster_breite/2,aufloesung_hoehe-alarmfenster_hoehe/2,alarmfenster_breite,alarmfenster_hoehe,Desktop(),7)
Global fenster_einstellung=CreateWindow("Einstellungen",0,0,200,100,win,3)

(stört euch hier nicht an den Werten für die Breite usw.)
Es ist anscheinend egal, ob ich hier bei der Gruppe "win" oder Desktop() angebe. Sobald ich das Einstellungs-Fenster (was als "Optionen" gedacht ist, vielleicht mach ich ja auch grundsätzlich hier was falsch) schließe, schließt sich das Hauptfenster gleich mit. Ich denke mal, das liegt daran:
Code: [AUSKLAPPEN]
Case $803 ;WindowClose
End

Jetzt bin ich in meiner Suche auf den Befehl Eventsource gestoßen. Aber wie genau verwende ich den jetzt?
Oder ist schon mein Ansatz komplett verkehrt?
Freue mich über Hilfe!
LG
Sereyanne

Thunder

BeitragFr, Jan 27, 2012 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz logisch. Du beendest ja, wenn bei irgendeinem Fenster X gedrückt wird, sofort das ganze Programm.
Im Prinzip kannst du - das habe ich bisher oft so gemacht - wenn ein Dialogfenster, so wie es ist, nicht in mehreren Instanzen auftauchen können soll, es verstecken, wenn es nicht da sein soll und es hervorholen, wenn es wieder da sein soll. HideGadget und ShowGadget - Diese Methode hat den Vorteil, dass du alle GUI-Elemente am Anfang festlegst und sie nicht immer neu erstellt werden müssen.

Wenn du ein Fenster wirklich schließen willst, brauchst du FreeGadget

Hier ein kurzes Beispiel ( + Zusammenhang mit EventSource)
BlitzBasic: [AUSKLAPPEN]
Global win=CreateWindow("AC",20,20,400,300,Desktop(),7) 
Global fenster_einstellung=CreateWindow("Einstellungen",50,50,200,100,win,3)
Global button=CreateButton("Fenster öffnen",10,10,100,24,win)
HideGadget fenster_einstellung

While WaitEvent()

Select EventID()

Case $803
If EventSource()=win Then End
;Wenn das Hauptfenster geschlossen wird,
;beende das Programm

HideGadget EventSource()
;Ansonsten, verstecke das Fenster, auf dem
;das X gedrückt wurde.

Case $401
If EventSource()=button Then ShowGadget fenster_einstellung
;Öffne das Fenster, sobald der Benutzer den Knopf drückt

End Select

Wend


Denn EventSource gibt dir bei einem $803 den Handle jenes Fensters zurück, bei dem auf das X gedrückt wurde.

mfg Thunder

Edit PS: Immer toll, wenn man jemanden auf den richtigen Trichter bringen kann Very Happy
  • Zuletzt bearbeitet von Thunder am Sa, Jan 28, 2012 22:28, insgesamt einmal bearbeitet

Sereyanne

BeitragFr, Jan 27, 2012 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja herrlich. Und das um diese späte Zeit. Na gut, ist ja Wochenende Cool

Danke, so eine Erklärung hab ich gebraucht.

Arbeite ja sowieso mit hide und show, aber du hast mich jetzt auf den richtigen Trichter gebracht.

Danke & gute Nacht!

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group