Hallo,
du hast Recht. Es gibt Probleme, wenn man einfach nur die Fokusierung auf Windows-Ebene durchführt. Da kein Ereignis nach dem Seitenwechsel ausgelöst wird, führe ich eine Custom Message ein:
Delphi-Quellcode:
const
UM_SETFOCUS = WM_USER;
type
TDemoForm =
class(TForm)
TabbedNotebook: TTabbedNotebook;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure TabbedNotebookChange(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
private
procedure UMSetFocus(
var Msg: TMessage);
message UM_SETFOCUS;
end;
var
DemoForm: TDemoForm;
implementation
{$R *.dfm}
procedure TDemoForm.UMSetFocus(
var Msg: TMessage);
begin
TWinControl(Msg.LParam).SetFocus;
end;
procedure TDemoForm.TabbedNotebookChange(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
begin
case NewTab
of
0: PostMessage(
Handle, UM_SETFOCUS, 0, Integer(Edit1));
1: PostMessage(
Handle, UM_SETFOCUS, 0, Integer(Edit3));
end;
end;
Freundliche Grüße