OnActivate ist, wenn das Fenster den Fokus bekommen hat,
Ich meinte im Prozess des Anzeigens, denn OnActivate wird ansonsten ja auch noch viel öfter beim Fokuswechsel aufgerufen.
Das Problem tritt bei mir auch auf, wenn ich das zweite Fenster direkt im OnActivate anzeige. Das ist aber ja auch logisch, dass man während des Wechsels des Fokus nicht sinnvoll weitere Fokuswechsel in den Griff bekommt...
Wenn ich das Fenster stattdessen wie vorgeschlagen einfach nach der kompletten Anzeige in einer eigenen Message anzeige, klappt es auch mit dem Fokus:
Delphi-Quellcode:
const
WM_TEST = WM_APP + 100;
type
TForm235 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
protected
procedure WmTest(
var Msg: TMsg);
message WM_TEST;
public
{ Public-Deklarationen }
end;
var
Form235: TForm235;
implementation
{$R *.dfm}
procedure TForm235.FormCreate(Sender: TObject);
begin
PostMessage(
Handle, WM_TEST, 0, 0);
end;
procedure TForm235.WmTest(
var Msg: TMsg);
begin
Form236.Show;
SetFocus;
end;