Hi,
du musst verhindern, dass der Focus zum Button kommt bzw. bleibt. Ich habe das mal irgendwo gebraucht und dann über ein unsichtbares Edit gelöst:
Delphi-Quellcode:
type
TfrmMain = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormShow(Sender: TObject);
private
FEdit: TEdit;
procedure LockFocus;
procedure CreateFocusEdit;
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
CreateFocusEdit;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
begin
MessageDlg('Button 1', mtWarning, [mbOK], 0);
LockFocus;
end;
procedure TfrmMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
MessageDlg('KeyUp', mtInformation, [mbOK], 0);
Key := 0;
end;
procedure TfrmMain.LockFocus;
begin
if FEdit.CanFocus then
FEdit.SetFocus;
end;
procedure TfrmMain.CreateFocusEdit;
begin
FEdit := TEdit.Create(Self);
FEdit.Width := 0;
FEdit.Height := 0;
FEdit.Left := 0;
FEdit.Top := 0;
FEdit.Parent := Self;
end;
procedure TfrmMain.FormShow(Sender: TObject);
begin
LockFocus;
end;
...
[EDIT]Alternative wäre TSpeedButton anstatt TButton...[/EDIT]
Frank