Button mit [Ctrl] gedrückt

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 6193
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Button mit [Ctrl] gedrückt

Beitrag von Mathias »

ich habe ein Ergeigniss, welches auf ein OnClick eines Button reagiert.

Code: Alles auswählen

procedure TForm1.FuseTabBurnButtonClick(Sender: TObject);
begin
  if Sender is TButton then begin
    ShowMessage('Button ' + TButton(Sender).Tag.ToString + ' gedrückt');
  end;
end;     
Kann ich abfragen, ob gleichzeitig auch [Ctrl] gedrückt wird ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4888
Registriert: Fr 8. Apr 2011, 09:01

Re: Button mit [Ctrl] gedrückt

Beitrag von wp_xyz »

Nicht direkt, weil OnClick außer Sender keine Parameter bekommt. Aber kurz vorher wurde OnMouseDown aufgerufen, und da hast du den Shift-Parameter, in dem das Element ssCtrl gesetzt ist, wenn CTRL gedrückt ist. Das musst du dir dann zwischenspeichern und kannst es dann im OnClick verwenden.

Alternativ kannst du aber auch direkt in OnClock per GetKeyShiftState() aus Unit Controls den Status der Sondertasten nochmals abfragen.

Mathias
Beiträge: 6193
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Button mit [Ctrl] gedrückt

Beitrag von Mathias »

Danke

So geht's:

Code: Alles auswählen

procedure TForm_AVR_Fuse_Burn.Button_BurnClick(Sender: TObject);
begin
  if ssCtrl in GetKeyShiftState then begin
    ShowMessage('brennen');
  end;
end; 
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten