Hallo Armageddon,
Du könntest die WindowProc des Buttons ersetzen:
Delphi-Quellcode:
type
TForm1 = class (TForm)
Button1: TButton;
procedure FormCreate (Sender: TObject);
procedure FormDestroy (Sender: TObject);
private
svWndProc : TWndMethod;
procedure NewWndProc (var aMessage: TMessage);
end;
procedure TForm1.FormCreate (Sender: TObject);
begin
svWndProc := Button1.WindowProc;
Button1.WindowProc := NewWndProc;
end;
procedure TForm1.FormDestroy (Sender: TObject);
begin
Button1.WindowProc := svWndProc;
end;
procedure TForm1.NewWndProc (var aMessage: TMessage);
begin
if ((aMessage.Msg = CN_KEYDOWN) and (aMessage.WParam = 13)) then
aMessage.WParam := 9;
svWndProc (aMessage);
end;
In der neuen WindowProc wird die CN_KEYDOWN-Nachricht für den Button abgefangen und die Taste RETURN (Code 13) durch TAB (Code 9) ersetzt. Ein Drücken von RETURN führt beim Button nun zum Fokussieren des nächsten Dialogelements.
Gruß Hawkeye