![]() |
Key Preview / Ctrl+Q abfragen
Moin zusammen!
Ich habe auf meiner Form 4 Panels positioniert und auf den Panels DBGrids, die in Abhängigkeit diverser Parameter gefüllt werden. Desweiteren schreibe ich mir in eine Variable (sLastQry) den Namen der letzen Query und in sLastSQL mein letztes ausgeführtes SQL Statement. Mit der Tastenkombination Ctrl+Q wollte ich mir nun mit einem ShowMessage AN BELIEBIGER STELLE anzeigen lassen, was in den beiden Variablen drin steht:
Delphi-Quellcode:
Das Problem: Leider funktioniert die Abfrage auf die Tastenkombination nicht stabil. Mal geht, mal geht nicht....
procedure TfrmReklaGr.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if ssCtrl IN Shift then begin if Key = ORD('Q') then begin ShowMessage('SQL ' + sLastQry + #13 + #13 + 'Statement ' + #13 + #13 + sLastSQL); end; end; end; Liegt das am "Q"? Hat Ctrl+Q Besonderheiten, wir z. B. in einer DOS-Box? Aber ein Test mit beispielsweise Ctrl+R wird auch nicht wirklich regelmäßig erkannt. Oder liegt das an der Reihenfolge <FORM><PANEL><GRID>? Aber das ist ja eigentlich normal. Hat das schon mal jemand so gemacht und habt Ihr die Probleme auch gehabt? Danke für Eure Kommentare. Nachtrag:
Delphi-Quellcode:
scheint viel besser zu funktionieren!
if ssCtrl IN Shift then begin
if Key = VK_F3 then begin |
AW: Key Preview / Ctrl+Q abfragen
Für sowas nehme ich 'ne TActionList.
Der 'ne Action zuweisen. Die hat ein Attribut ShortCut. Dort Strg+Q eingeben und den Quelltext ShowMessage(...) dort eingeben. Der von Dir zu erstellende Quelltext reduziert sich dann auf
Delphi-Quellcode:
Funktioniert eigentlich immer stabil und ist im Quelltext deutlich übersichtlicher, wenn man mal mehrere ShortCuts für diverse Aktionen hat. Das wird im FormKeyUp schnell ziemlich unübersichtlich durch seine (meist) geschachtelten If-Kaskaden durch diverse if ssCtrl IN then if Key then.
ShowMessage('SQL ' + sLastQry + #13 + #13 +
'Statement ' + #13 + #13 + sLastSQL); Außerdem kann man die Actions auch noch Buttons und/oder Menüs zuordnen, so dass man damit schnell und flexibel viele Funktionalitäten programmieren kann und es im Quelltext trotzdem sehr übersichtlich bleibt. |
AW: Key Preview / Ctrl+Q abfragen
Ich habe es nicht getestet, aber vmtl. funktioniert deine Abfrage nur deshalb nicht, weil du auf Q und nicht auf q prüfst. In dem Moment in dem du die Q-Taste auf der Tastatur drückst, hast du ja SHIFT nicht auch noch gedrückt.
Kannst es ja mal testen sofern dir die Lösung mit der ActionList nicht gefallen sollte. Aber zur Verwaltung ist die eigentlich schon besser. |
AW: Key Preview / Ctrl+Q abfragen
Zitat:
Aber das mit der ActionList muss ich mal probieren.... vielen Dank für die Infos! |
AW: Key Preview / Ctrl+Q abfragen
Ja, aber dur drückst das kleine q und fragst mit Ord das große Q ab. Wird's mit
Delphi-Quellcode:
bzw.
procedure TfrmReklaGr.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if ssCtrl IN Shift then begin if Key = 113 then begin // 113 = Ascii für q ShowMessage('SQL ' + sLastQry + #13 + #13 + 'Statement ' + #13 + #13 + sLastSQL); end; end; end;
Delphi-Quellcode:
besser?
procedure TfrmReklaGr.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if ssCtrl IN Shift then begin if Key = Ord('q') then begin ShowMessage('SQL ' + sLastQry + #13 + #13 + 'Statement ' + #13 + #13 + sLastSQL); end; end; end; |
AW: Key Preview / Ctrl+Q abfragen
das testen auf "q" oder "Q" halte ich nicht für sinnvoll. VKQ sollte die Taste besser repräsentieren.
Wenn es mal funktioniert und mal nicht, was ist mit Keypressed oder KeyDown ?? Gruß K-H |
AW: Key Preview / Ctrl+Q abfragen
Stimmt auch wieder, wenn einmal VK_F3 für die Taste F3 genutzt wird und funktioniert, warum eigentlich nicht für die Taste q analog VK_Q nutzen. Ist doch eigentlich so naheliegend.
|
AW: Key Preview / Ctrl+Q abfragen
Tja...
Zitat:
Nun frag ich mit ORD('q') und ORD('Q') beide Werte ab. Im Moment hab ich das Gefühl, als wenn die Abfrage erst beim 2. mal, wenn die Tastenkombination kommt, funktioniert. Aber ich will ja noch das mit der ActionList testen. |
AW: Key Preview / Ctrl+Q abfragen
Zitat:
|
AW: Key Preview / Ctrl+Q abfragen
Stimmt auch wieder, das Zeichen der Taste bekommt man hier ja garnicht.
Das q müsste hier als 81 erscheinen demnach sollte nun aber dashier funktionieren:
Delphi-Quellcode:
Um zu sehen, was in FormKeyUp abgefragt werden muss hilft eventuell sowas:
procedure TfrmReklaGr.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if ssCtrl IN Shift then begin if Key = 81 then begin ShowMessage('SQL ' + sLastQry + #13 + #13 + 'Statement ' + #13 + #13 + sLastSQL); end; end; end;
Delphi-Quellcode:
procedure TfrmReklaGr.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin ShowMessage(Format('Abfragewert für die gerade gedrückte Taste: Key = %d',[key])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz