Hi!
Ich habe zu folgendem Problem bisher weder in den Codes auf purearea.net noch im Forum eine Lösung gefunden:
Ich habe ein Dialogfeld programiert, indem sich ein Textfeld sowie ein OK-Schalter und ein Abbrechen-Schalter befinden. Ich möchte den OK - und den Abbrechenschalter auch mit der Return-Taste aktivieren können. Im Gegensatz zu normalen Windowsbuttons ist dies beim Buttongadget nicht möglich. Im Codearchiv fand ich nur Beispiele, die dieses Problem mit dem Befehl "AddKkeyboardShortcut" umgingen. Dies läst sich jedoch nur für einen einzigen Schalter einsetzen und nicht für zwei, welche zu dem noch unterschiedliche funktionen besitzen! Ich würde mich sehr über Antworten freuen!
MfG
Hypersoft
Return-Taste und ButtonGadgets
Hi Hypersoft,
hm, du könntest doch einfach einenbenutzen, das funzt bei mir mit Enter... Und willst du jetzt das mit Enter der OK-Button und der Cancel-Button aktiviert wird?!? Das muss ich falsch verstanden haben, weil das geht schlecht.
mfG
Basti
hm, du könntest doch einfach einen
Code: Alles auswählen
MessageRequester("","")mfG
Basti
enjoy life... while you can!
Re: Return-Taste und ButtonGadgets
@Hypersoft:
> .. Dies läst sich jedoch nur für einen einzigen Schalter einsetzen und nicht
> für zwei, welche zu dem noch unterschiedliche funktionen besitzen!
Da der Fokus vor dem Drücken der Enter-Taste vom User gesetzt wird (z.B. per TAB-Taste), musst du den aktuellen Fokus abfragen, also unter Windows:
Ein anderes Problem ist die Markierung als Default Button (dunkle Umrandung außer der gepunkteten Fokus-Umrandung). Diese sollte möglichst mit dem Fokus mitwandern, da hiermit dem User die Möglichkeit der Enter-Tasten-Benutzung signalisiert wird. Das geht auch per API, aber etwas komplizierter. Bei Interesse frag halt.
> .. Dies läst sich jedoch nur für einen einzigen Schalter einsetzen und nicht
> für zwei, welche zu dem noch unterschiedliche funktionen besitzen!
Da der Fokus vor dem Drücken der Enter-Taste vom User gesetzt wird (z.B. per TAB-Taste), musst du den aktuellen Fokus abfragen, also unter Windows:
Code: Alles auswählen
if GetFocus_() = GadgetID(#OkButton) : ....
horst
Vielleicht etwas in der Art ?
Code: Alles auswählen
Procedure BCB(wnd,msg,wparam,lparam)
If msg = #WM_CLOSE
RemoveProp_(wnd,"Prop")
EndIf
If msg = #WM_KEYDOWN
If wparam = #VK_RETURN;wenn Return dann
wParam = #VK_SPACE;Return = Space
EndIf
EndIf
ProcedureReturn CallWindowProc_(GetProp_(wnd,"Prop"),wnd,msg,wparam,lparam)
EndProcedure
If OpenWindow(0,0,0,222,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ButtonGadgets") And CreateGadgetList(WindowID(0))
ButtonGadget(0, 10, 10, 200, 24, "ENTER Button")
SetProp_(GadgetID(0),"Prop",SetWindowLong_(GadgetID(0),#GWL_WNDPROC,@BCB()))
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Gruss Andreas