Seite 2 von 2
Verfasst: 17.12.2007 19:57
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
Verfasst: 17.12.2007 20:04
von Sebastian
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?
Verfasst: 17.12.2007 20:11
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!

Verfasst: 17.12.2007 20:13
von Sebastian
AAAAH! Moment. Gilt CloseWindow() auch als Event? Also wird dadurch die Eventliste verändert? Dann wäre der Fall klar!
Verfasst: 17.12.2007 20:14
von Sebastian
Alles klar. Das war es also. Ich bin eben noch eine Anfänger...
Nun ist das Problem also wirklich gelöst! VIELEN DANK!!!
Verfasst: 18.12.2007 00:02
von HeX0R
Jetzt müssen wir nur noch das Problem des verschwundenen Edit-Buttons lösen...

Verfasst: 18.12.2007 00:32
von Sebastian
Is ja jut. Hab nicht dran gedacht. Kann ja mal vorkommen...

Verfasst: 18.12.2007 11:37
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
Verfasst: 18.12.2007 14:13
von Fluid Byte
#PB_String_Multiline? Das war doch PB 3.9x oder?
Verfasst: 18.12.2007 16:40
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