A ver, intenta con esta función:
Código Delphi
[-]
function DeepControlAtPos(Parent: TWinControl; Pos: TPoint): TControl;
var
Child: TControl;
begin
Result := Parent.ControlAtPos(Parent.ScreenToClient(Pos), false, true);
if Assigned(Result) and (Result is TWinControl) then
begin
Child := DeepControlAtPos(TWinControl(Result), Pos);
if Assigned(Child) then
Result := Child;
end;
end;
Pordrías usarla así en el formulario:
Código Delphi
[-]
var
Control: TControl;
begin
Control := DeepControlAtPos(Self, Mouse.CursorPos);
if Assigned(Control) then
Caption := Control.ClassName
else
Caption := 'ninguno';
end;
// Saludos