Holzchopf.MaxGuiTabTweak

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Holzchopf

Meisterpacker

Betreff: Holzchopf.MaxGuiTabTweak

BeitragSa, Jun 18, 2011 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil ich es bei der MaxGUI irgendwie nie anständig hingekriegt habe, die Tabindizes zu setzen (also, um mit der Tabulator-Taste durch die Gadgets zu browsen), habe ich mir kurzerhand ein Modul geschrieben, das mir da aushilft:

Holzchopf.MaxGuiTabTweak

Damit kann man die Tabulator-Reihenfolge setzen und auch HotKeys für OK (submit) und Abbrechen (abort) setzen.

Kleines Beispiel:
BlitzMax: [AUSKLAPPEN]
SuperStrict

Framework MaxGUI.Drivers
Import BRL.EventQueue
Import Holzchopf.MaxGuiTabTweak

' OO-Style, yeahhh
Type TDialog
Const WIDTH:Int = 250
Const HEIGHT:Int = 285

Field window:TGadget
Field pnTitle:TGadget
Field tfName:TGadget
Field pnDescr:TGadget
Field taDescription:TGadget
Field pnOptions:TGadget
Field cbOpt1:TGadget
Field cbOpt2:TGadget
Field cbOpt3:TGadget
Field btnOK:TGadget
Field btnCancel:TGadget
Field tabTweak:TMaxGuiTabTweak

Method New()
window = CreateWindow("Beispiel 1", 0,0, WIDTH,HEIGHT, , WINDOW_TITLEBAR | WINDOW_CLIENTCOORDS | WINDOW_CENTER)
' Titel
pnTitle = CreatePanel(5,5, WIDTH-10,50, window, PANEL_GROUP, "Title")
tfName = CreateTextField(5,5, ClientWidth(pnTitle)-10,20, pnTitle)
' Beschreibung
pnDescr = CreatePanel(5,60, WIDTH-10,90, window, PANEL_GROUP, "Description")
taDescription = CreateTextArea(5,5, ClientWidth(pnDescr)-10,60, pnDescr, TEXTAREA_WORDWRAP)
' Optionen
pnOptions = CreatePanel(5,155, WIDTH-10,95, window, PANEL_GROUP, "Options")
cbOpt1 = CreateButton("Mark only valid checkboxes", 5,5, ClientWidth(pnOptions)-10,20, pnOptions, BUTTON_CHECKBOX)
cbOpt2 = CreateButton("Mark no checkboxes at all", 5,30, ClientWidth(pnOptions)-10,20, pnOptions, BUTTON_CHECKBOX)
cbOpt3 = CreateButton("Someone likes you", 5,55, ClientWidth(pnOptions)-10,20, pnOptions, BUTTON_CHECKBOX)
' Allgemeines Zeugs (also Druckknöpfe)
btnOK = CreateButton("OK", 5,255, (WIDTH-20)/2,25, window)
btnCancel = CreateButton("Cancel", (WIDTH-20)/2+15,255, (WIDTH-20)/2,25, window)

' Die Bastelei starten ;)
tabTweak = TMaxGuiTabTweak.AddWindow(window)
' Tabulator-Reihenfolge setzen
tabTweak.TabbingOrder([tfName, taDescription, cbOpt1, cbOpt2, cbOpt3, btnOK, btnCancel])
' Tabs aus der TextArea rausfiltern
tabTweak.Filter(taDescription)
' btnOK mit KEY_ENTER verknüpfen (ausser wenn taDescription aktiv ist)
tabTweak.Submit(btnOK,[taDescription])
' btnCancel mit KEY_ESCAPE verknüpfen
tabTweak.Abort(btnCancel)
' "tweaks" aktivieren
tabTweak.Activate()

' 0815-Hauptschleife
Repeat
WaitEvent()
' "Tweaks" ausführen (kann leider nicht per Hook gemacht werden =( )
TMaxGuiTabTweak.Update()
Print CurrentEvent.ToString()
Update()
Forever
End
End Method

' Fenster aktualisieren
Method Update()
Select EventID()
Case EVENT_GADGETACTION
Select EventSource()
Case btnOK
Print "OK"
Case btnCancel
Print "Cancel"
End Select
Case EVENT_WINDOWCLOSE
If EventSource()=window
End
EndIf
End Select
End Method
End Type

New TDialog


Viel Spass!

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

jsp

BeitragMi, Jun 29, 2011 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Die TabIndizes sind eigentlich gar nicht sooo schwierig, in MaxGui.
MaxGui geht einfach stur nach der Reihenfolge in der die Gadgets erstellt worden. Natürlich gelten die normalen Grenzen, wie z.B. tabben nur innerhalb eines Containers, wenn man da raus möchte könnte dein Programm vielleicht helfen.
Also alle Gadgets genau in der Reihenfolge erstellen, wie sie später auch per Tab weitergeschaltet werden sollen und fertig.
Problem sind evtl. Gadgets die das tab selber brauchen, wie eine TextArea, aber da versteht glaub ich jeder das er da nicht einfach raus-tabben kann.
Logic Gui Professional a Gui Designer for MaxGui

Holzchopf

Meisterpacker

BeitragDo, Jun 30, 2011 7:56
Antworten mit Zitat
Benutzer-Profile anzeigen
jsp hat Folgendes geschrieben:
Also alle Gadgets genau in der Reihenfolge erstellen, wie sie später auch per Tab weitergeschaltet werden sollen und fertig.

Und dabei auf sämtliche Container verzichten? Wink Du hast schon recht, für genau diesen Fall ist das Modul gedacht - und weil ich auf genau diesen Fall nicht verzichten kann, ist das Modul entstanden Smile

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group