Moin Blackvisions,
hier mal ein grobes Beispiel:
Delphi-Quellcode:
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
// Eigene OnKeyDown Methoden
procedure ButtonLeft(Sender: TObject; var Key: Word;Shift: TShiftState);
procedure ButtonRight(Sender: TObject; var Key: Word;Shift: TShiftState);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
// Button, ergänzt um die Abfrage der Pfeiltasten
type
TMyButton = class(TButton)
private
procedure WMGETDLGCODE(var msg : TWMGetDlgCode); message WM_GETDLGCODE;
end;
implementation
{$R *.DFM}
procedure TMyButton.WMGETDLGCODE(var msg: TWMGetDlgCode);
begin
inherited;
// Auch die Pfeiltasten weitergeleitet bekommen.
msg.Result := msg.Result or DLGC_WANTARROWS;
end;
procedure TForm1.ButtonLeft(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
if Key = VK_LEFT then begin
self.Caption := 'LINKS';
end else begin
self.Caption := '';
end;
end;
procedure TForm1.ButtonRight(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
if Key = VK_RIGHT then begin
self.Caption := 'RECHTS';
end else begin
self.Caption := '';
end;
end;
Da ein Button standardmässig die Pfeiltasten nicht weitergeleitet bekommt, muss man sich selber einen deklarieren der dem System "mitteilt", dass er die doch haben möchte.
Es fehlt, z.B. noch, was bei den anderen Pfeiltasten passieren soll, denn dieser Automatismus (z.B. nächstes Control ansteuern) fehlt jetzt, und die Funktionalität müsste selber implementiert werden.