Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Seltsammes Hint Verhalten eines TButtons

  Alt 30. Okt 2022, 10:20
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Okt 2022 um 10:28 Uhr)
  Mit Zitat antworten Zitat