Hallo,
Bei meinen Vorschlag ist es nicht erforderlich (siehe Beitrag #1) im PanelEnter/Mouseenter die entsprechenden Komponentennamen zu speichern und die Labels dann per FindComponent(AltKompName) jedesmal wieder neu zu suchen.
Warum erst das ActiveControl in PanelEnter merken, wenn man es direkt in FormKeyDown ermitteln kann?
Wobei es schon umständlich ist, das über den Namen zu realisieren, da würde ein Zeiger auf das jeweilige Label ausreichen.
Der gesamte benötigte Code, auf das wesentliche reduziert. Bei den Panels die berücksichtigt werden sollen wird die Tag-Eigenschaft auf 1 gesetzt:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
if assigned(ActiveControl) then
with ActiveControl do
if ClassType = TPanel then
if Tag = 1 then
TLabel(Controls[0]).OnClick(Controls[0]);
end;
Also kein LabelEnter-, LabelLeave-Eventhandler keine zusätzliche Variable, alles in einer Prozedur.
Finde nicht, das es umständlich ist.