Hai silentAMD,
bist Du sicher das es mit Panels gemacht wurde? Das ich recht ungewöhnlich. Buttons wären doch viel besser.
Aber egal. Das "Problem" ist das ein Panel kein OnKeypress oder ähnliches kennt und das OnClick nur beim klicken mit der Maus reagiert.
Du musst also im OnKeyDown der Mainform auf die Tastendrücke reagieren (KeyPreview := True).
Das ganze könnte zum Beispiel so aussehen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview := True;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_RETURN) or (Key = VK_SPACE) then
begin
if (ActiveControl is TPanel) then
begin
(ActiveControl as TPanel).OnClick (ActiveControl);
end;
end;
end;
procedure TForm1.AllePannelEnter(Sender: TObject);
begin
(Sender as TPanel).BorderStyle := bsSingle;
end;
procedure TForm1.AllePannelExit(Sender: TObject);
begin
(Sender as TPanel).BorderStyle := bsNone;
end;
procedure TForm1.AllePannelClick(Sender: TObject);
begin
(Sender as TPanel).SetFocus; // Focus bei Mausklick
ShowMessage ((Sender as TPanel).Name);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"