Seite 2 von 2

Re: Grafikproblem PB

Verfasst: 24.08.2014 23:41
von schleicher
Punkt 1. trifft dann wohl den Nagel auf den Kopf. Ich das mal versuchen morgen umzusetzen. Danke
Für heute ist Feierabend.

Verfasst: 24.08.2014 23:46
von CodeCommander
schleicher hat geschrieben:Feierabend
...wie das duftet. Kräftig, deftig, würzig, gut. :D
Wenn beim ersten Punkt wohl doch nicht den Nagel auf den Kopf trifft dann poste dein Code. Dann sehen wir wenigstens was falsch gemacht wurde und was du besser machen kannst. :)

Re: Grafikproblem PB

Verfasst: 27.08.2014 21:43
von schleicher
ts-soft hat geschrieben:Am besten Du nutzt nur einen EventLoop für alle Fenster!
Muss ich denn die Buttongadgeds von den Sub-Windows dann auch alle ins Mainwindow übernehmem, oder bekomme ich
die irgendwie in der Procedur fürs Sub-Window gestartet ohne einen neuen Eventloop zu starten?

Re: Grafikproblem PB

Verfasst: 27.08.2014 21:50
von RSBasic
Die Gadgets erstellst du ganz normal in den jeweiligen Fenstern und die Events kannst du in deiner Haupt-Eventschleife abfragen, beispielsweise ob auf einen Button gedrückt wurde.

Re: Grafikproblem PB

Verfasst: 27.08.2014 22:08
von ts-soft
Du sollst alle Ereignisse in einem EventLoop abfragen. Die Buttons können sich selbstverständlich in irgend-
einem Fenster befinden. Am einfachsten ist es alle Fenster am Anfang zu öffnen, aber nur das Hauptfenster
anzuzeigen, d. h. die anderen werden versteckt.

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "Haupt")
  ButtonGadget(0, 10, 10, 100, 30, "Anderes Fenster")
  ; ....
EndIf

If OpenWindow(1, #PB_Ignore, #PB_Ignore, 600, 300, "Anderes Fenster", #PB_Window_SystemMenu | #PB_Window_Invisible)
  ;.....
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case 0
          Break
        Case 1
          HideWindow(1, #True)
      EndSelect
    
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          HideWindow(1, #False)
          SetActiveWindow(1)
      EndSelect
  EndSelect
ForEver
So in etwa. Es werden alle Ereignisse abgearbeitet und das in einem EventLoop.

Re: Grafikproblem PB

Verfasst: 28.08.2014 06:39
von Danilo
Mit Ereignisprozeduren spart man sich diese verschachtelte Ereignisabfrage:

Code: Alles auswählen

Procedure OnClick_Btn0()
    HideWindow(1, #False)
    SetActiveWindow(1)
EndProcedure

Procedure OnCloseWindow_0()
    End
EndProcedure

Procedure OnCloseWindow_1()
    HideWindow(1, #True)
    SetActiveWindow(0)
EndProcedure

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "Haupt")
    BindEvent(#PB_Event_CloseWindow, @OnCloseWindow_0(), 0)
    ButtonGadget(0, 10, 10, 100, 30, "Anderes Fenster")
    BindGadgetEvent(0, @OnClick_Btn0())
    ; ....
EndIf

If OpenWindow(1, #PB_Ignore, #PB_Ignore, 600, 300, "Anderes Fenster", #PB_Window_SystemMenu | #PB_Window_Invisible)
    BindEvent(#PB_Event_CloseWindow, @OnCloseWindow_1(), 1)
    ;.....
EndIf

Repeat : WaitWindowEvent() : ForEver

Re: Grafikproblem PB

Verfasst: 29.08.2014 13:40
von schleicher
Ich hatte meine Frage nur falsch formuliert. Meine Frage sollte heißen, ob die Events des 2. Windows ins 1. Window müssen
Also

Case #Button_2.Window muss in die Eventschleife des 1.Window ? Und diese Frage wurde von euch beantwortet.
Danke.

Re: Grafikproblem PB

Verfasst: 29.08.2014 17:44
von schleicher
Könnte man wegen der Übersichtlichkeit die Events der Unterfenster in der jeweiligen Unterfenster-Procedur belassen und diese trotzdem von der Eventschleife im Hauptfenster ausführbar machen ?

Re: Grafikproblem PB

Verfasst: 29.08.2014 18:06
von ts-soft
Nutze doch einfach BindEvent, BindGadgetEvent und BindMenuEvent, dann ergibt sich das doch.