Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   OnKeyDown TShiftState und Key (https://www.delphipraxis.net/156184-onkeydown-tshiftstate-und-key.html)

rokli 23. Nov 2010 09:22

OnKeyDown TShiftState und Key
 
Moin zusammen!

Habe gerade die schwarze 8-) Brille auf:

Delphi-Quellcode:
  // Stg-S = speichern
  if (ssShift in Shift) and
     ((Key = 115) or (Key = 83)) then begin    // <--- das krieg ich nicht mit
      if savSQL.Execute then begin
         rieSQL.Lines.SaveToFile(savSQL.FileName);
      end;
  end;
führt nicht zum Ziel

Delphi-Quellcode:
  // Stg-S = speichern
  if (ssShift in Shift) tehn begin
    if ((Key = 115) or (Key = 83)) then begin      // < --- hier liegt mein Prob
      if savSQL.Execute then begin
         rieSQL.Lines.SaveToFile(savSQL.FileName);
      end;
      end;
  end;
geht leider genauso wenig

Mein Problem: ich bekomme die Abfrage vom Buchstaben 'S' nicht hin. Wenn ich das Tasstaturergebnis mit

Delphi-Quellcode:
  stbMain.Panels[5].Text   := ShortCutToText(ShortCut(Key, Shift));
auslese ist alles klar ...

Kann mir jemand helfen, das ich Strg-S korrekt ansteuere??

Vielen Dank
Rolf

mleyen 23. Nov 2010 09:27

AW: OnKeyDown TShiftState und Key
 
Delphi-Quellcode:
  if (ssCtrl in Shift) and (Key = 83) then
    MessageDlg('didumm', mtInformation, [mbOK], 0);
ssCtrl <-> ssShift :gruebel: :?:

rokli 23. Nov 2010 09:39

AW: OnKeyDown TShiftState und Key
 
@meylen

ok - die Brille war TIEF-SCHWARZ ... da kann ich lange auf CTRL drücken, wenn ich SHIFT abfrage!

:oops: :oops: :oops:

Vielen DANK!
Rolf

rokli 23. Nov 2010 09:40

AW: OnKeyDown TShiftState und Key
 
und jetzt auch noch den Namen falsch geschrieben

SORRY Marcel

mleyen 23. Nov 2010 09:49

AW: OnKeyDown TShiftState und Key
 
Kein Problem :wink:

2 Kleinigkeiten noch:
1. 115 ist VK_F4 und nicht das 'kleine s'.
2. Die 'saubere' Methode Buchstaben abzufragen wäre über Delphi-Referenz durchsuchenVkKeyScan
So muss man auch nicht immer die ASCII-Codes überprüfen und verhindert Fehler wie in 1. :-D
Delphi-Quellcode:
if (ssCtrl in Shift) and (Key = VkKeyScan('s')) then

rokli 25. Nov 2010 10:20

AW: OnKeyDown TShiftState und Key
 
bin nochmal wieder mit einer Frage zum OnKeyDown da:

Delphi-Quellcode:
procedure TfraSQL.rieSQLKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   tag := 5;
   if Key = Vk_F5 then begin
      rieSQL.SelectAll;      // <--- das geht!
   end;
   if (ssCtrl in Shift) and (Key = VkKeyScan('a')) then begin
   tag := 5;
      rieSQL.SelectAll;      // <--- das geht NICHT ?!?
   end;
end;
Dieses OnKeyDown befindet sich in einem :!: FRAME!!

Warum kann ich mit 'F5' alles wie gewünscht markieren, aber mit CTRL-a nicht???

Hat da jemand ne Idee?

Tks Rolf


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz