[BlitzPlus] Enter und Esc innerhalb eines TextFields

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

D2006

Administrator

Betreff: [BlitzPlus] Enter und Esc innerhalb eines TextFields

BeitragDi, Jun 12, 2007 1:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

der ein oder andere kennt das Problem sicher. Sobald ein TextField aktiviert ist, empfängt man keine Events mehr, ob ENTER oder ESC gedrückt wurde. Aber nicht nur, dass die Key-Events nicht auftauchen, dass viel naheliegendere passiert auch nicht: Einfach verkleidet als ASCII Code mitsenden, wenn eine Eingabe erfolgt. Das ging bis Version 1.40, seit dem aber kurioserweise nicht mehr.

Hier nun der Workaround:
Wir brauchen Buttons. Und zwar solche, die die deutsche Onlinehilfe nichtmal kennt. Es gibt nämlich zwei weitere Styles: 4 und 5. 4 bedeutet, dass der Button ein Action Event sendet, sobald Enter gedrückt wurde. Analog Style 5 für Esc. Das funktioniert allerdings nur, wenn ein Gadget innerhalb der GADGET_GROUP, in der auch der Button ist, aktiv ist. Damit können zB bei mehreren TextFields prima unterscheiden, in welchem Enter gedrückt wurde.

Hier nun einfach mal ein Code, der das verdeutlicht:
Code: [AUSKLAPPEN]
window = CreateWindow("www.chaos-interactive.de",400,400,230,100,0,1)

panel_1    = CreatePanel(10,10,200,20,window)
textfield_1 = CreateTextField(0,0,200,20,panel_1)
enter_1      = CreateButton("",0,0,0,0,panel_1,4)
esc_1      = CreateButton("",0,0,0,0,panel_1,5)

panel_2    = CreatePanel(10,40,200,20,window)
textfield_2 = CreateTextField(0,0,200,20,panel_2)
enter_2      = CreateButton("",0,0,0,0,panel_2,4)
esc_2      = CreateButton("",0,0,0,0,panel_2,5)


Repeat

   WaitEvent()
   
   Select EventID()
      
      Case $803   ;Fenster wurde geschlossen
         End
         
      Case $401   ;Gadget Action
      
         Select EventSource()
            
            Case textfield_1
               Notify "1. Textfeld. Eingabe: "+EventData()
            Case enter_1
               Notify "1. Textfeld. ENTER!"
            Case esc_1
               Notify "1. Textfeld. ESC!"

            Case textfield_2
               Notify "2. Textfeld. Eingabe: "+EventData()
            Case enter_2
               Notify "2. Textfeld. ENTER!"
            Case esc_2
               Notify "2. Textfeld. ESC!"

         End Select
         

   
   End Select
   

Forever


Grüße
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group