Sie befinden sich auf der NewGUI Tutorialpage

Start
Über NewGui
Featureübersicht
Changesübersicht
Installation
Download
Demos
Anwendungen
Tutorials
-Windows
-Hintergrundbild
-Gadgets & GuiLoop
-1 Gadget 2 Gui's
-Transparenz
Sourcecodes
Links
Kontakt

Unser Hostingpartner

Alle Tutorials sind in PreASS kompiliert. Aufgrund der starken Ähnlichkeit zu C hier eine kleine Übersicht der Unterschiede.

How to set a gadget & react on events

Wie man Gadgets & Events nutzt



Fenster und Hintergrundbild sollen mal gesetzt sein.

Zunächst genieren wir die Gadgets: ein Button- und ein Text-Gadget . Das Textgadget hat Check als Initialtext und hört auf Tastaturevents ( NG_NB_LISTEN=1 ) . Damit können lange Texte Gadgets gescrollt werden. Man kann das Textgadget natürlich auch einfach in MultiLineMode umschalten und runterscrollen ... :) ( über dem gadget Rechte Maustaste klicken! )

       CreateGadgetGeneric(Gui,265,140,070,050,"Button",0,0,0,
                           "generic/button.library",0)
       CreateGadgetGeneric(Gui,100,060,400,015,"Textgadget",0,0,0,
                           "generic/text.library",
                           >TextGadget10:NG_TEXT_POS,NG_RIGHT|
                                         NG_VALUE,TEST_TEXT="check"|
                                         NG_NB_LISTEN,1|
                                         NG_NB_STEP,1|
                                         NG_INVERSE,0|
                                         NG_BORDER,1|
                                         tag_done,null)

Das Buttongadget ist jetzt Gadget 1 und das Textgadget ist Gadget 2. Natürlich nur, wenn es auch wirklich angelegt wurde.
Abfragen kann man das :
 if (Result = CreateGadgetGeneric(Gui,...))#0
  {
    ;ok
  }
Gadgets werden übrigens automatisch von Close_window() zerstört, da muß man sich nicht drum kümmern.

Es folgt der GuiLoop.

Solange die Klasse class ungleich IDCMP_Closewindow ist, warte auf einen GuiEvent.

Wenn WaitGuiLoop() nicht im NONEBLOCKING Modus aufgerufen wird, wartet es bis was in der Gui passiert. Refreshs werden teils intern, teils extern bearbeitet, wie es am besten paßt.

GetGadgetStatus() liefert den Zustand des Gadgets zurück.
  • 0 = nicht gedrückt
  • 1 = gedrückt
  • 2 = mouseover
  • 4 = Horchmodus
Horchmodus meint dabei, daß das Gadget auf alle INTUITIONEvents lauscht und bei Bedarf selbsttätig aktiv wird. Das wird z.b. ausgenutzt um den Text des Textgadgets zu scrollen.

UpdateGadgetValue() Setzt einem Gadget einen neuen Wert. Wenn man einem TextGadget einen String übergibt, dann zeigt es den sofort an. Übergibt man aber einem Integer Gadget einen String, zeigt das Integergadget die Adresse des String im Speicher an.

       gadget==0
        class==0
       while class##IDCMP_Closewindow 
        {
          (Gadget,Class)=WaitGuiEvent(Gui,0)

Nur Events von Gadget 1 benutzen, andere sind uninteressant, auch solche die von keinem Gadget generiert wurden. Hol den Status von dem Buttongadget.

          if gadget=1
           {
             status=getGadgetStatus(Gui,Gadget)

Frage ab , ob Eventklasse ein Mausklick war..

             if class=#idcmp_mousebuttons
              {

Wenn gedrückt, setze neuen Text in das Textgadget.

                 if status=1
                  {
                    UpdateGadgetValue(Gui,2,"Gadget 1 gedrueckt")
                  }
                 if status=0
                  {
                    UpdateGadgetValue(Gui,2,"Gadget 1 losgelassen")
                  }
              }
             if class=#idcmp_mousemove
              {
                 if status=2
                  {
                    UpdateGadgetValue(Gui,2,"Mouseover: Gadget 1")
                  }
              }
           }
        }
       Close_Window(Gui)
     }

Das wars ...