Stringeingabe mit RETURN beenden [gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Sebastian hat geschrieben:Ich wusste nicht, dass man auf ein Menu zugreifen darf (mit EventMenu()), das gar nicht existiert!
öfters mal in die Hilfe schauen:
PB-Hilfe hat geschrieben:AddKeyboardShortcut()

Syntax

AddKeyboardShortcut(#Window, Shortcut, Event)
Beschreibung

Fügt einen Tastatur-Shortcut ("Tastenkürzel") zum angegebenen Fenster
'#Window' hinzu. Ein Shortcut generiert ein Menü-Ereignis (wie ein
Menü-Eintrag), da sie meistens im Zusammenhang mit Menüs benutzt
werden.
;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

:roll:
OOOOHHH. Läuft doch nicht. Hier mein Code

Code: Alles auswählen

Repeat 
EventID=WaitWindowEvent()
If (EventID=#PB_Event_Gadget And EventGadget()=#LayerWindow_Window_LayerName_Gadget_Button_OK) Or (EventID=#PB_Event_Menu And EventMenu()=0)
 LayerName$=GetGadgetText(#LayerWindow_Window_LayerName_Gadget_String_LayerName)
 CloseWindow(#LayerWindow_Window_LayerName)
EndIf
Until EventGadget() = #LayerWindow_Window_LayerName_Gadget_Button_OK Or EventMenu() = 0
Ich komme nicht aus der Schleife raus... warum?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

@ Kiffi: Ja, Du hast Recht. Ich hatte diesen Hinweis auch gelesen, aber nicht verstanden. Jetzt wird mir im nachhinein aber klar, was gemeint ist. Danke für den Tipp! :oops:
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

AAAAH! Moment. Gilt CloseWindow() auch als Event? Also wird dadurch die Eventliste verändert? Dann wäre der Fall klar!
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Alles klar. Das war es also. Ich bin eben noch eine Anfänger... :oops:
Nun ist das Problem also wirklich gelöst! VIELEN DANK!!!
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Jetzt müssen wir nur noch das Problem des verschwundenen Edit-Buttons lösen... :twisted:
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Is ja jut. Hab nicht dran gedacht. Kann ja mal vorkommen... :evil:
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Sebastian hat geschrieben: Wie kann ich die Eingabebestätigung mit RETURN zulassen? Muss ich dabei auf AddKeyboardShortcut zurückgreifen oder gibt es noch eine andere Möglichkeit?
Dies ist bei String-Gadgets ein schon lange bekanntes Problem. Denn ein normales einzeiliges StringGadget akzeptiert die Return-Taste nicht und gibt als Fehlersignal ein Tonsignal aus, weil die Return-Taste standardmäßig nicht zugelassen ist. Dies kann man umgehen, indem man das StringGadget mit den Flags #PB_String_Multiline|#ES_AUTOVSCROLL definiert. Bei jedem Return-Tastendruck muß dann jeweils die CRLF-Zeichenfolge aus dem Gadget entfernt werden, um den Fehlerton zu vermeiden. Im englischen Forum haben PB und freak bereits 2002 diese Lösungsmöglichkeit aufgezeigt:
http://www.purebasic.fr/english/viewtop ... 02&start=1

Eine mögliche Alternative stellt zwar die Verwendung von AddKeyboardShortcut() dar, wie in einigen Postings in diesem Thread. Der Nachteil ist allerdings, daß dann die Return-Taste z.B. in einem zusätzlichen EditorGadget nicht mehr funktioniert... netmaestro hat allerdings in einem weiteren Beitrag im englischen Forum gezeigt, daß man über das Ereignis #PB_EventType_Focus und #PB_EventType_LostFocus feststellen kann, wann das StringGadget den Fokus erhält oder verliert, um dann mit AddKeyboardShortcut() und RemoveKeyboardShortcut() die Return-Taste nur im StringGadget entsprechend handhaben zu können (und ohne andere Gadgets dabei zu beeinflussen):
http://www.purebasic.fr/english/viewtop ... 50&start=1

Eine weiteren neuen Ansatz ohne AddKeyboardShortcut() hat erst kürzlich Sparkie im englischen Forum vorgestellt:
http://www.purebasic.fr/english/viewtop ... 60&start=4
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

#PB_String_Multiline? Das war doch PB 3.9x oder?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

Fluid Byte hat geschrieben: #PB_String_Multiline? Das war doch PB 3.9x oder?
Danke für den Hinweis! Es stimmt: seit dem Wechsel von PB 3.94 nach PB 4.00 gibt es die PureBASIC-Konstante #PB_String_Multiline nicht mehr. Sie muß durch die WinAPI-Konstante #ES_MULTILINE ersetzt werden. Der Grund liegt wohl darin, daß die Multiline-Eigenschaft auf Nicht-Windows Plattformen von PB nicht unterstützt wird oder nicht unterstützt werden kann. Von Delle wurde dieses Thema schon einmal im deutschen Forum angesprochen:
http://www.purebasic.fr/german/viewtopic.php?t=9388
Antworten