Noch nicht auf die Idee gekommen, nach dem Hint in der
DFM zu suchen?
Gleich in der 4. Zeile, an der FORM, also überall wo ParentHint.
Deaktivierte Controls reagieren nicht auf die Maus und auch WindowFromPoint und Co. guckt hindurch, welches auch für die Hints benutzt wird.
oder einfach mal einen Timer mit z.B. Interval=100
Delphi-Quellcode:
procedure TFormMain.Timer1Timer(Sender: TObject);
var
Pos: TPoint;
Wnd: HWND;
Ctl: TWinControl;
Txt: array[0..100] of Char;
S: string;
begin
GetCursorPos(Pos);
Ctl := FindVCLWindow(Pos);
if Assigned(Ctl) then
S := S + ' [Ctl] ' + Ctl.ClassName + ' ' + Ctl.Name;
while Assigned(Ctl) do begin
if Ctl.Hint <> '' then begin
S := S + ' [Hint] ' + Ctl.ClassName + ' ' + Ctl.Name;
Break;
end;
Ctl := Ctl.Parent;
end;
Wnd := WindowFromPoint(Pos);
RealGetWindowClass(Wnd, @Txt, Length(Txt)); S := S + ' [Wnd] ' + Txt;
GetClassName(Wnd, @Txt, Length(Txt)); S := S + ' ' + Txt;
GetWindowText(Wnd, @Txt, Length(Txt)); S := S + ' ' + Txt;
Caption := S;
end;
Wir haben bei uns ein LogFenster, wo es auch einen Tabsheet gibt, in dem vom Mauszeiger, Screen.ActiveControl und .ActiveCustomForm all diese Dinge angezeigt werden.
Bei gedrücktem Strg, sowie innerhalb (GetParentForm) des LogFensters, des TimerEvent deaktiviert ist, damit man sich diese Texte aus den Edits kopieren kann.
Hilft einem ungemein, in einem Projekt mit bestimmt 100 Forms und hunderten dynamischen Forms (in der
DB gespeicherte DFMs), einen Überblick zu bekommen.