Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Str gedrückt? (https://www.delphipraxis.net/122318-str-gedrueckt.html)

EineFrage9922 13. Okt 2008 21:23


Str gedrückt?
 
Hallo
Wie frage ich ab, ob die Steuerung Taste gerade gedrückt ist?
Also ein Button soll bei gedrücktem Str eine andere Funktion bekommen!

turboPASCAL 13. Okt 2008 21:31

Re: Str gedrückt?
 
Delphi-Quellcode:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Shift = [ssCtrl]
    then mach_was_anderes := TRUE
    else mach_was_anderes := FALSE;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if mach_was_anderes then NoCtrlKey
    else JuppCtrlKey;
end;
So was ?

toms 13. Okt 2008 21:31

Re: Str gedrückt?
 
Hallo :hi:

Das kannst du allgemein mit GetKeyboardState abfragen (Edit: oder in diesem Fall so wie Matti)

Delphi-Quellcode:
function CtrlPressed : Boolean;
var
  KeybdState: TKeyboardState;
begin
  GetKeyboardState(KeybdState);
  Result := ((KeybdState[VK_CONTROL] and 128) <> 0);
end;

inherited 13. Okt 2008 23:22

Re: Str gedrückt?
 
Zitat:

Zitat von turboPASCAL
Delphi-Quellcode:
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Shift = [ssCtrl]
    then mach_was_anderes := TRUE
    else mach_was_anderes := FALSE;
end;

Oder einfacher
Delphi-Quellcode:
  mach_was_anderes := Shift = [ssCtrl];

Namenloser 14. Okt 2008 03:14

Re: Str gedrückt?
 
Wobei das nur funktioniert, wenn NUR Strg gedrückt ist, aber nicht noch zusätzlich Alt oder Shift.

das hier funktioniert auch, wenn noch andere tasten gedrückt sind:
Delphi-Quellcode:
mach_was_anderes := ssCtrl in Shift;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 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