AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wann wird fremde TForm ausgeblendet

Ein Thema von himitsu · begonnen am 13. Jun 2024 · letzter Beitrag vom 15. Jun 2024
 
Benutzerbild von himitsu
himitsu

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

AW: Wann wird fremde TForm ausgeblendet

  Alt 14. Jun 2024, 13:21
Hey, an einen Hook im Screen hatte ich auch schon gedacht. (change des ActiveControl/ActiveForm)

Leider hat TList kein OnChange, sondern nur ein virtuellen Notify.
Ein einfaches überschreiben der VMT würde alle TList hooken, aber immernoch enorm weniger, als ein ApplicationEvents.OnMessage.
Aber wenn, dann hätte ich wohl den TVirtualMethodInterceptor bemüht. (der kopiert ja die ClassInfo und hookt dort dann nur für diese Instanz)

An TScreen.FForms bzw. FCustomForms wäre ich über einen bösen Cast mit kopierter Klasse bin ich über die RTTI rangekommen.
Beim Hook des Notify war ich mir noch unsicher.
Delphi-Quellcode:
  var R := TRttiContext.Create.GetType(Vcl.Forms.TScreen);
  var L := R.GetField('FForms').GetValue(Screen).AsObject as TList;

  R := TRttiContext.Create.GetType(TList);
  R.GetMethod('Notify').VirtualIndex
Da hier in der OTA/NTA nichts möglich ist
und auch die VCL direkt nichts bietet,
suche ich halt einfach nur einen "schönen" Weg, möglichst mit nativen Mitteln des Delphi (VCL/GDI),
um rauszubekommen, wann diese TForm hidden wird.

Mir fällt grad ein, anstatt an die Screen->TList könnte ich auch direkt die VMT der TAppBuilder (DoHide)
(auch wenn Delphi bei vielen eigenen Klassen die erweiterte RTTI deaktiviert hat ... die VMT der ClassInfo bleibt)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Jun 2024 um 13:25 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz