Growbook, Cannabis, Notizbuch, Growbuch, Pflanzenzucht, Samenbank, Seedbank, Software, Stammbaum, Kreuzen, züchten,growen,anbauen,News,GIB,Lux,Omega,Mars, Dünger,BioBizz,Hesi,Athena,
die Software für deinen Anbau

Willkommen

Tutorial 17: Toolbars und ProgressBar

The MaxGUI Beginner Tutorial Series - Tutorial 17:  Toolbars und ProgressBars
(c) Assari Feb 14 2006
Ins Deutsche übersetzt von simi

Dies wir ein relativ kurzes Tutorial werden, weil die Gadgets die wir behandeln werden einen sehr spezifischen Nutzen haben.

Eine Toolbar in einem Fenster mithilfe von CreateToolBar anzeigen

Wir können die Toolbar, die wir von der MaxIDE kennen, anzeigen, indem wir folgendes Programm ausführen.

    SuperStrict
Import MaxGui.Driver
Local MyWindow:TGadget=CreateWindow("Toolbar-Beispiel", 40,40,400,400)
Local MyToolBar:TGadget=CreateToolBar(BlitzMaxpath()+"/src/maxide/toolbar.PNG", ..
       0,0,400,20,MyWindow)

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End
  End Select
Forever
End


Beachte, dass wir die vertraute Toolbar der MaxIDE sehen können. Beachte weiter, dass die Toolbar kürzer ist, da unser Fenster nicht gleich lang ist. Aber die Toolbar funktioniert, wie sie sollte. Du kannst über einen Button fahren und die Reaktion sehen. Du kannst auch auf einen Button klicken, und er verhält sich wie erwartet, ausser dass nichts passiert.

    Tut17 1


Die Syntax für die CreateToolBar-Funktion ist folgende:

Function CreateToolBar:TGadget(source:Object,x,y,w,h,group:TGadget,style=0)


Das Bild, das als Toolbar benutzt wird, kann irgendein Format sein, das von BlitzMax erkannt wird. Wenn man PNG (mit Transparenz) benutzt, werden die Buttons mit der GUI-Hintergrundfarbe überblendet, wie in diesem Beispiel

Auf Klicks auf die Toolbar reagieren

Wenn wir auf einen Button der Toolbar klicken, wird ein GadgetAction-Event erzeugt. Beachte den Code den wir unten hinzugefügt haben, um dies zu verarbeiten. EventData() gibt den Index des angeklickten Buttons zurück.

    SuperStrict
Import MaxGui.Driver
Local MyWindow:TGadget=CreateWindow("
Toolbar-Beispiel", 40,40,400,400)
Local MyToolBar:TGadget=CreateToolBar(BlitzMaxpath()+"/src/maxide/toolbar.PNG", ..
       0,0,400,20,MyWindow)

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End

  Case EVENT_GADGETACTION
    Select EventSource()
    Case MyToolBar
        SetStatusText MyWindow, "Du hast Button Nr."+EventData()+" angeklickt"
    End Select   

  End Select

Forever
End


Wenn wir auf den 2. Button klicken, wird die Nummer 1 in der Statusbar angezeigt. Beachte, dass der Toolbarindex bei 0 startet.

    Tut17 2


Lass uns nun mit unserer Toolbar etwas nützliches machen. Der Öffnen-Button wird jetzt nach einer Datei fragen, und der Schliessen-Button wird das Programm beenden. Wir können das wie folgt umsetzten:

    SuperStrict
Import MaxGui.Driver
Local MyWindow:TGadget=CreateWindow("
Toolbar-Beispiel", 40,40,400,400)
Local MyToolBar:TGadget=CreateToolBar(BlitzMaxpath()+"/src/maxide/toolbar.PNG", ..
       0,0,400,20,MyWindow)

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End

  Case EVENT_GADGETACTION
    Select EventSource()
    Case MyToolBar
          Select EventData()
            Case 1
                Local file:String=RequestFile("Öffnen...")
            Case 2
                Local result:Int=Confirm("Willst du wirklich beenden?")
                If result=1 Then End
            Default
               SetStatusText MyWindow,
"Du hast Button Nr."+EventData()+" angeklickt"
       End Select   
    End Select
  End Select

Forever
End

Trennzeichen in einer Toolbar anzeigen

Beachte die Trennzeichen in der Toolbar (siehe Bild unten).

    Tut17 4


Wenn du dir das Originalbild anschaust, siehst du leere Bilder (gefüllt mit der Transparenzfarbe), diese leeren Bilder werden von MaxGUI in Trennzeichen umgewandelt. Wie du vielleicht schon früher bemerkt hast, beinhaltet der Index von EventData() diese Trennzeichen auch.

    Tut17 5

Aktivieren und Deaktivieren von Toolbarbuttons

Die Buttons auf der Toolbar können aktiviert und deaktiviert werden. Dazu benutzen wir die schon bekannten Funktionen DisableGadgetItem und EnableGadgetItem.

    SuperStrict
Import MaxGui.Driver
Local MyWindow:TGadget=CreateWindow("Toolbar-Beispiel", 40,40,400,400)
Local MyToolBar:TGadget=CreateToolBar(BlitzMaxpath()+"/src/maxide/toolbar.PNG", ..
       0,0,400,20,MyWindow)
Local state:int=1

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End

  Case EVENT_GADGETACTION
    Select EventSource()
    Case MyToolBar
          Select EventData()
            Case 1
                Local file:String=RequestFile("Öffnen...")
            Case 2
                Local result:Int=Confirm("Willst du wirklich beenden?")
                If result=1 Then End
            Case 5
                If state=1 Then
                    DisableGadgetItem MyToolbar,1
                    state=0
                Else
                    EnableGadgetItem MyToolbar,1
                    state=1
                EndIf

            Default
               SetStatusText MyWindow,
"Du hast Button Nr."+EventData()+" angeklickt"
            End Select
    End Select   

  End Select

Forever
End


Wenn wir jetzt auf die Schere klicken (Buttonindex 5) wird der Öffnen-Button deaktiviert. Nach nochmaligem klicken wird er wieder aktiviert.

    Tut17 6
Tut17 7

Tooltips zu einer Toolbar hinzufügen

Die letzte Funktion, die wir anschauen wollen, ist SetToolBarTips.

    SuperStrict
Import MaxGui.Driver
Local MyWindow:TGadget=CreateWindow("Toolbar-Beispiel", 40,40,400,400)
Local MyToolBar:TGadget=CreateToolBar(BlitzMaxpath()+"/src/maxide/toolbar.PNG", ..
       0,0,400,20,MyWindow)
SetToolBarTips MyToolBar,["Neu","Datei~nöffnen","Schliessen","Speichern","","Ausschneiden","Kopieren","Einfügen","Suchen"]

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End
  End Select
Forever
End


Wenn wir jetzt mit der Maus über einem Button sind, erscheint der Tooltip. Beachte dass wir leere Strings ("") für die die Trenner angeben müssen; schau dir die obige Linie an (zwischen "Speichern" und "Ausschneiden" zum Beispiel). Beachte auch, dass wir ~n benutzen können, um zwei- oder mehrzeilige Tooltipps zu erstellen.

    Tut17 8

ProgressBars benutzen

Dies ist ein sehr einfacher Gadget und auch einfach zum Benutzen. Du musst grundsätzlich 3 Sachen machen.

  • Zuerst die ProgressBar mit CreateProgBar erstellen.
  • Einen Timer mit CreateTimer erstellen. Wir benutzen ihn um die ProgressBar zu aktualisieren.
  • Aktualisiere die ProgressBar mit UpdateProgBar.
    SuperStrict
Import MaxGui.Driver
Local MyWindow:TGadget=CreateWindow("ProgressBar-Beispiel", 40,40,400,400)
Local MyProgBar:TGadget=CreateProgBar(10,20,370,20,MyWindow)

CreateTimer 10

Repeat
  WaitEvent()
  Select EventID()
  Case EVENT_WINDOWCLOSE
     End
  Case EVENT_TIMERTICK
    Local t:Int=EventData()
    If t=50 End
    UpdateProgBar Myprogbar,t/50.0

  End Select
Forever
End


Unsere ProgressBar sollte den Fortschritt wie folgt zeigen:

    Tut17 9


Zum Schluss...

Toolbars werden mit Bilderreihenfolgen erstellt und generieren GadgetEvents, wenn sie angeklickt werden. Das Reagieren auf diese Events, erlaubt dem Benutzer das Programm über die Toolbarbuttons zu bedienen. Du kannst zu den Buttons auch ToolTips hinzufügen oder die Buttons aktivieren oder deaktivieren.

ProgressBars erlauben dir, den Fortschritt von irgendwas anzuzeigen.