Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Feb 2015
procedure TForm2.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
C: TWinControl;
begin
C := FindControl(Msg.hwnd);
if C is HintWindowClass then begin
Tag := Tag + 1;
Caption := IntToStr(Tag);
end;
end;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Feb 2015
Aber es ist letztendlich doch nur ein "Windows"?
Dann müsste es eigentlich viele Messages geben, welche von und an das Ding gehen. :gruebel:
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Feb 2015
WM_CLOSE, CM_VISIBLECHANGED usw.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Feb 2015
Eventuell auch TApplicationEvents.OnMessage und auf WM_DESTROY des HintWindows reagieren.
Oder, da die HintWindows-Klasse eine TComponent ist, sich beim Anzeigen dranhängen (TComponent.FreeNotification).
Direkte Events/Messages, beim Ausblenden des Hints, hab ich auch nicht entdecken können.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Feb 2015
Ja, zum Auslesen und das funktioniert auch.
Also man kann die "Adresse" auslesen und z.B. casten oder an eine Event-Variable übergeben.
Und was mich nicht wundert: Man kann das natürlich nicht zurückschreiben oder ändern ... wohin auch?
Das geht maximal mit einem bösen Hook.
Seit XE, XE2 oder XE3 (k.A.) kann man man sich in virtuale Methoden auch mit einen Interceptor reinhängen....
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
22. Feb 2015
Weil der Compiler endlich mal schauler ist, als du. (früher wurde sowas einfach noch nicht bemängelt)
Es wird das Propert HideHint ausgelesen und du versuchst in der ausgelesenen Kopie dieses Records ein Feld zu ändern.
Und nein, es wird ausschließlich der Getter aufgerufen, da du ja einen bestehenden Wert teilweise ändern willst, aber es wird nacher nicht mehr per Setter zurückgespeichert.
...