Stringeingabe mit RETURN beenden [gelöst]
Stringeingabe mit RETURN beenden [gelöst]
Gerade ärgere ich mich darüber, dass ich ein Fenster generiert habe, in welchem ein Stringgadget (und nur dies) vorhanden ist. Wenn ich diese Eingabe mit RETURN bestätige, dann passiert leider nichts, ich muss erst auf OK klicken. Wie kann ich die Eingabebestätigung mit RETURN zulassen? Muss ich dabei auf AddKeyboardShortcut zurückgreifen oder gibt es noch eine andere Möglichkeit?
Zuletzt geändert von Sebastian am 17.12.2007 20:15, insgesamt 1-mal geändert.
(Win 11 64-bit, PB 6.04 und 6.10)
wenn du
anfragst
kannst du mit:
Die Eingabe von 'Return' in einem StringGadget() abfragen
Code: Alles auswählen
Event = EventType()
kannst du mit:
Code: Alles auswählen
#PB_EventType_ReturnKey
Code: Alles auswählen
If EventType() = #PB_EventType_ReturnKey
; Mache was nach RETRUN
EndIf
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr

Leider funktioniert es irgendwie nicht:
Code: Alles auswählen
Repeat
EventID=WaitWindowEvent()
If (EventID=#PB_Event_Gadget And EventGadget()=#LayerWindow_Window_LayerName_Gadget_Button_OK) Or EventType()=#PB_EventType_ReturnKey
LayerName$=GetGadgetText(#LayerWindow_Window_LayerName_Gadget_String_LayerName)
CloseWindow(#LayerWindow_Window_LayerName)
EndIf
Until EventGadget()=#LayerWindow_Window_LayerName_Gadget_Button_OK Or EventType()=#PB_EventType_ReturnKey
(Win 11 64-bit, PB 6.04 und 6.10)
ah mist, ich glaube das es das in PB 4.x garnicht mehr gibt oder ?
...
dann wäre wohl ein AddKeyboardShortcut die einfachste lösung, da kannst du ja einfach mit abfragen ob RETURN zusätzlich noch im richtigen Gadget gedrückt wurde
...
dann wäre wohl ein AddKeyboardShortcut die einfachste lösung, da kannst du ja einfach mit abfragen ob RETURN zusätzlich noch im richtigen Gadget gedrückt wurde
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Code: Alles auswählen
Procedure SelectAll(StringGadget.l)
SendMessage_(GadgetID(StringGadget), #EM_SETSEL, Len(GetGadgetText(StringGadget)), 0)
EndProcedure
If OpenWindow(0, 0, 0, 322, 55, "StringGadget Flags", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
StringGadget(1, 8, 10, 306, 20, "Normal StringGadget...")
AddKeyboardShortcut(0, #PB_Shortcut_Return, 4711)
EndIf
SelectAll(1)
SetActiveGadget(1)
Debug "start"
Debug GetGadgetText(1)
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Menu
If EventMenu() = 4711
Debug "RETURN im StringGadget"
Debug GetGadgetText(1)
End
EndIf
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Vielen Dank für Eure vorschläge! Ich habe das aktuelle Beispiel getestet. Es funktioniert (komisch) nicht immer. Ich muss ja keinen anderen String eingeben, ich kann ja den bestehenden stehen lassen und einfach Return drücken. Jedoch nimmt er ab und zu die Eingabe nicht... Warum?
(Win 11 64-bit, PB 6.04 und 6.10)
hm... tut bei mir immer - solange das "End" drin is 
keine Ahnung woher die Aussetzer kommen...
Mit ner while-wend schleife scheints aber keine Aussetzer zu geben:
hdh... scholly

keine Ahnung woher die Aussetzer kommen...
Mit ner while-wend schleife scheints aber keine Aussetzer zu geben:
Code: Alles auswählen
EventID = WaitWindowEvent()
While EventID <> #PB_Event_CloseWindow
If (EventID = #PB_Event_Menu)
If EventMenu() = 4711
Debug "RETURN im StringGadget"
Debug GetGadgetText(1)
EndIf
EndIf
EventID = WaitWindowEvent()
Wend
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Hallo Sebastian,
das Thema hat mich auch interessiert, bis ich auf Thomas Beispiel kam: http://www.purebasic.fr/german/viewtopi ... 924#121924
Für Dich hier leicht geändert, funktioniert der Code immer und sofort, zumindest bei mir
:
Häns
das Thema hat mich auch interessiert, bis ich auf Thomas Beispiel kam: http://www.purebasic.fr/german/viewtopi ... 924#121924
Für Dich hier leicht geändert, funktioniert der Code immer und sofort, zumindest bei mir

Code: Alles auswählen
Procedure SelectAll(StringGadget.l)
SendMessage_(GadgetID(StringGadget), #EM_SETSEL, Len(GetGadgetText(StringGadget)), 0)
EndProcedure
If OpenWindow(0, #PB_Ignore, 0, 640, 480, "")
AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)
If CreateGadgetList(WindowID(0))
StringGadget(0, 10, 10, 620, 30, "Hallejuja, bald ist Weihnachten!")
SelectAll(0)
Repeat
SetActiveGadget(0)
Select WaitWindowEvent()
Case #PB_Event_Menu
If EventMenu() = 0 ;Return
If GetActiveGadget() = 0 ; Stringgadget
MessageRequester("",GetGadgetText(0))
EndIf
EndIf
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
EndIf
Häns
PB 5.6
Windows 7 Professional
Windows 7 Professional