Extended Textfield
Übersicht

klepto2Betreff: Extended Textfield |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dies ist ein kleines Stück Code, welches entstanden ist, um jemandem im englischen Forum zu helfen. Vielleicht nutzt er hier ja auch jemanden.
Es handelt sich hierbei um ein TextField (eher eine modifizierte TextArea) welches sowohl Enter registriert und ein Event mit dem eingegebenen Text sendet als auch ein Event sendet, wenn man auf Tab drückt. Dabei wechselt der Cursor automatisch zum nächsten TextField. Leider ist der Code nicht kommentiert und etwas schnell zusammengeschustert. Code: [AUSKLAPPEN] SuperStrict Type TExtTextField Global Group:TList = New TList Field Gadget:TGadget Field ChangeonEnter:Int = False Function Create:TExtTextField(X:Int , Y:Int , Width:Int , Parent:TGadget, COE:Int = True) Local TF:TExtTextField = New TExtTextField TF.Gadget = CreateTextArea(X , Y , Width , 20 , Parent) SetGadgetFilter(TF.Gadget , TExtTextField.Filter) TF.ChangeonEnter = COE TF.Gadget.context = TF TExtTextField.Group.Addlast(TF.Gadget) Return TF End Function Function filter:Int(event:TEvent,context:Object) Select event.id Case EVENT_KEYDOWN If event.data=9 Then Return 0 If event.data=13 Return 0 Case EVENT_KEYCHAR If event.data = KEY_ENTER Then If TExtTextField(TGadget(Event.source).context).ChangeonEnter = True Then Local SLink:TLink = TExtTextField.Group.FindLink(event.source) If SLink.NextLink() <> Null Then Local TField:TGadget = TGadget(SLink.NextLink().Value() ) ActivateGadget(TField) Else Local TField:TGadget = TGadget(TExtTextField.Group.FirstLink().Value() ) ActivateGadget(TField) EndIf EndIf Local MyEVent:TEvent = CreateEvent(EVENT_GADGETDONE , event.source , 13 , 0 , 0 , 0 , TextAreaText(TGadget(event.source) ) ) EmitEvent MyEvent Return 0 EndIf If event.data = KEY_TAB Then Local SLink:TLink = TExtTextField.Group.FindLink(event.source) If SLink.NextLink() <> Null Then Local TField:TGadget = TGadget(SLink.NextLink().Value() ) ActivateGadget(TField) Else Local TField:TGadget = TGadget(TExtTextField.Group.FirstLink().Value() ) ActivateGadget(TField) EndIf Local MyEVent:TEvent = CreateEvent(EVENT_GADGETLOSTFOCUS , event.source , 9 , 0 , 0 , 0 , "Tabbed") EmitEvent MyEvent Return 0 EndIf End Select Return 1 End Function End Type Local Main:TGadget = CreateWindow("Test" , 0 , 0 , 400 , 400) Local TF:TExtTextField = TExtTextField.Create(40 , 40 , 200 , Main) Local TF2:TExtTextField = TExtTextField.Create(40 , 80 , 200 , Main) While True WaitEvent Print CurrentEvent.ToString() Select EventID() Case EVENT_WINDOWCLOSE End End Select Wend PS.: mit dem letzten Parameter kann man einstellen ob auch bei einem Enter der Focus zum nächsten TextField gewechselt werden soll. |
||
Matrix Screensaver
Console Modul für BlitzMax KLPacker Modul für BlitzMax HomePage : http://www.brsoftware.de.vu |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group