Seite 1 von 1

Eventhandling sauber?

Verfasst: 25.02.2023 13:43
von losgehts
Ich möchte ein eigenes Steuerelement (im Beispiel unten "ProtBox") als Modul implementieren.
Es enthält ein Canvas und eine vertikale Scrollbar.

Die ID der Scrollbar ist global im Declare des Moduls, ist also von außen erreichbar.
Die Events kommen auch in der Eventschleife an, kein Problem.

Frage:
Ist es sauber, innerhalb des Moduls eine (z.B.) "HandleEvents"-Procedure zu erstellen und per Declare zu veröffentlichen, die dann aus der Hauptprogramm-Eventschleife aufgerufen wird?

Zur Veranschaulichung :

Code: Alles auswählen

     Repeat
        Event=WaitWindowEvent()
        Select Event
          Case #PB_Event_CloseWindow
            Break
          Case #PB_Event_Gadget
            Select EventGadget()
              Case #MyButton
                ProtBox::Add(#MyProtBox,Str(zaehler)+" : "+"1234567890 ABCabcWQq")
                zaehler+1
              Case ProtBox::gadScrollV
                ProtBox::HandleEvents(Event)  ; <---- ist das sauber?
            EndSelect
         EndSelect
      ForEver
      

Re: Eventhandling sauber?

Verfasst: 25.02.2023 14:25
von STARGÅTE
Eigentlich brauchst du diesen Umweg über die Haupt.Event-Schleife nicht gehen.
Du kannst deinem Gadget ProtBox::gadScrollV einfach ein Event im Modul binden und auf die entsprechende Procedure verweisen, ohne das der nutzer was davon sieht:

Code: Alles auswählen

BindGadgetEvent(ProtBox::gadScrollV, @ProtBox::HandleEvents())
An dieser stelle erwartet HandleEvents() aber kein argument, da Event ja eh immer #PB_Event_Gadget sein wird.

Es gibt auch BindEvent() um verschiedene Events zu verwarbeiten. Aber auch da bindest du immer genau ein Event.

Re: Eventhandling sauber?

Verfasst: 25.02.2023 17:43
von losgehts
Danke, funktioniert sehr gut!