Das ist vielleicht etwas weit über das Ziel hinaus geschossen. Es genügt, die folgenden beiden Message-Handler zu überschreiben um ein Neuzeichnen bei einem Focuswechsel auszulösen.
Delphi-Quellcode:
procedure TBorderIcon2.WMKillFocus(var Message: TWMKillFocus);
begin
inherited;
Invalidate;
end;
procedure TBorderIcon2.WMSetFocus(var Message: TWMSetFocus);
begin
inherited;
Invalidate;
end;
(Nebenbei bemerkt, sollte in Message-Handlern in der Regel das
inherited aufgerufen werden, da sonst das Standardverhalten unterdrückt wird)
Das Setzen von
TabOrder im
FormCreate wirkt sich immer auf den aktuellen
Parent aus. Da dieser für
BorderIcon2 erst nach der
TabOrder gesetzt wird, bekommt das
BorderIcon2 nach dem Setzen von
Parent die
TabOrder 1, denn
Button1 hat bereits die
TabOrder 0 innerhalb
Panel2.