Habe nun eine Lösung gefunden, ist zwar sicher nicht die schönste und eleganteste aber es klappt.
Man sollte zuerst wohl die Absoluten Maus Koordinaten auf die Form umrechnen um mit ControlAtPos zu arbeiten...
In einem Timer hole ich mir die Maus Position, setze sie in Relation zur Form und frage dann solange ControlAtPos ab bis ich das gewünschte Control habe und Prüfe dann den Namen.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
function GetControl(const c: TControl): TControl;
var
c2: TControl;
begin
Result:= c;
c2:= nil;
repeat
if Result is TWincontrol then
begin
c2:= TWincontrol(Result).ControlAtPos(Result.ScreenToClient(mouse.CursorPos), false, true);
if c2 is TFrame then begin
if Pos('Server', TFrame(c2).Name) > 0 then begin
Result := C2;
Exit;
end;
end;
if Assigned(c2) then
Result:= c2;
end;
until not Assigned(c2) or not (Result is TWincontrol);
end;
var
Cap: String;
AControl: TControl;
begin
AControl := GetControl(Self);
if Assigned(AControl) then
Cap := AControl.Name + '@' + AControl.ClassName
else Cap := 'NONE';
Label1.Caption := Format('[%d|%d] - [%d|%d] - %s', [Mouse.CursorPos.X, Mouse.CursorPos.Y, APoint.X, APoint.Y, Cap]);
end;
Wie gesagt nicht schön aber sicher selten und es funktioniert, noch...
Bin aber für jeden Verbesserungsvorschlag offen.