Cursor in nächstes Feld setzen
Übersicht

![]() |
SereyanneBetreff: Cursor in nächstes Feld setzen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und gleich noch eine Frage ![]() Wenn ich ein Fenster hab mit mehreren TextFields, dann kann ich ja ganz normal mit der Tab-Taste immer eins weiter schalten. Wenn ich nun aber auch mit Enter eins weiter springen möchte oder mit den Pfeiltasten hoch und runter schalten möchte, wie krieg ich das integriert? Gibt es da einen BB-Befehl, den ich noch nicht kenne, oder muss ich basteln? Danke im Voraus Sereyanne |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Eingaben abfangen, und mittels ActiveGadget![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ahja, danke, den kannte ich wirklich noch nicht.
Aber warum funktioniert der nicht, wenn ich schon im TextField bin? schnelles Beispiel: Code: [AUSKLAPPEN] f EventSource()=betragwert1 Then
If KeyHit(156) Then ;Return-Taste vom Ziffernblock ActivateGadget abzug1 EndIf EndIf Setze ich den Code woanders hin in die Main, läufts. Aber ich will ja von Feld zu Feld springen.... |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puh, das ist ein gehacke geworden...
Funktioniert momentan "bloss" mit der Enter Taste, ein Fakebutton ist die einzige möglichkeit ein Enter abzufangen in einem Textfield. Man könnte die Keyhits auch via user32 (?) abfangen und dann zB Pfeiltasten verwenden. Code: [AUSKLAPPEN] ;ozzi789
;11/05/2012 ;move from textfield to textfield with enter key ;.lib "user32.dll" ;GetFocus%():"GetFocus" Global window,textfield_counter=-1,textfield_current,enter_button Type textfield Field id Field tfhandle End Type window = CreateWindow("Window", 0, 0, 300, 300, 0, 1) enter_button = CreateButton ("",3000,3000,0,0,window,4) tf1=create_textfield(10,10,100,18,window) tf2=create_textfield(10,30,100,18,window) tf3=create_textfield(10,50,100,18,window) tf4=create_textfield(10,70,100,18,window) Repeat If WaitEvent(1)=$803 Then End do_the_magic() Forever Function do_the_magic() Local current_marked If WaitEvent(1)=$401 Then If EventSource()=enter_button current_marked=0 ;get active one For t.textfield=Each textfield If getfocus()= QueryObject(t\tfhandle, 1) current_marked=t\id EndIf Next ;if its the last one, go for the first one If current_marked+1>textfield_counter Then current_marked=-1 ;get the handle For t.textfield=Each textfield If t\id=current_marked+1 textfield_current_handle=t\tfhandle EndIf Next ;active it ActivateGadget(textfield_current_handle) End If EndIf End Function Function create_textfield(x,y,w,h,win) tf_handle=CreateTextField(x,y,w,h,win) t.textfield = New textfield t\tfhandle=tf_handle textfield_counter=textfield_counter+1 t\id=textfield_counter Return tf_handle End Function |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wow, hätte nicht gedacht, dass das doch so ein Aufwand ist. ![]() Eigentlich war das mit der Enter-Taste ja auch nur ein Test. Jetzt muss ich mich mal durch deinen Code wurschteln und schauen, wie ich die hoch- und runter-Pfeiltasten da eingebaut bekomme..... ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie schon erwähnt, klappt nur mittels einem versteckten Button mit dem Flag 4.
Mit den Pfeiltasten kriegst du das wie folgend hin: -Fange alle Keyhits ab (mittels WinAPI , findest du hier im Forum) -Falls nun eine Pfeiltaste war, prüfe ob dein Fenster aktiv ist (ActiveWindow ![]() -All diese Abfragen kannst du bei "If EventSource()=enter_button " einbauen Falls du nicht klarkommst, frag ruhig, aber probier es zuerst selbst ![]() Grüsse |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also unter BMax gibt es da ja noch die Funktion TextFilter(), die direkt in Textfields eingehängt werden kann. Damit werden alle Tastendrücke die an das Textfield gehen auch durch diese Funktion gesendet, wo man sie dann abfangen oder ändern kann.
Vielleicht wäre das ja auch eine Möglichkeit auf BlitzPlus? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group