Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi In Komponente: Auf Minimieren der MainForm reagieren (https://www.delphipraxis.net/74922-komponente-auf-minimieren-der-mainform-reagieren.html)

Helmi 10. Aug 2006 22:19


In Komponente: Auf Minimieren der MainForm reagieren
 
Hallo,

ich habe eine Komponente. In diese Komponente würd ich gerne auf das Minimieren der MainForm reagieren.

Wie mach ich das am besten?

chaosben 11. Aug 2006 05:16

Re: In Komponente: Auf Minimieren der MainForm reagieren
 
Hi!

In der Theorie fallen mir da 3.5 Wege ein:
(Voraussetzung: Du musst dir erstmal das Formular holen, um das es geht [z.B. Application.Mainform, oder alle deine Parents durchgehen])

1. Ein Timer, der prüft, ob ein Resize stattgefunden hat.
2. Das hooken der Nachrichten, die an das Form gesandt wurden.
3. Das ersetzen des OnResize-Ereignisses durch dein eigenes, welches dann das originale aufruft
3.5. Ich weiß im Moment nicht, ob auch nicht-visuelle Komponenten die Resize-Message bekommen. Wenn ja, dann einfach auf diese reagieren (sofern die Komponente auf dem Formular liegt)

Jens Schumann 11. Aug 2006 07:41

Re: In Komponente: Auf Minimieren der MainForm reagieren
 
Hallo,
das wäre mein Ansatz.

Ich würde die Loaded Methode meiner Komponente überschreiben und prüfen ob dem Resize-Event des Parents
ein Eventhandler zugewiesen wurde. Der Anwender könnte ja dem Resize-Event des Parents
im OI ein Ereignis zugewiesen haben. Wenn meine Komponente jetzt das Resize-Event des Parents ersetzt
würde der ursrüngliche Eventhandler nicht abgearbeitet werden.

Deshalb würde ich den ursrüngliche Eventhandler in einem privaten Feld meiner Komponente speichern.
Denn meinen eigenen Code ausführen und anschließend den ursrüngliche Eventhandler aufrufen.

Helmi 11. Aug 2006 08:01

Re: In Komponente: Auf Minimieren der MainForm reagieren
 
Zitat:

Zitat von Jens Schumann
Hallo,
das wäre mein Ansatz.

Ich würde die Loaded Methode meiner Komponente überschreiben und prüfen ob dem Resize-Event des Parents
ein Eventhandler zugewiesen wurde. Der Anwender könnte ja dem Resize-Event des Parents
im OI ein Ereignis zugewiesen haben. Wenn meine Komponente jetzt das Resize-Event des Parents ersetzt
würde der ursrüngliche Eventhandler nicht abgearbeitet werden.

Deshalb würde ich den ursrüngliche Eventhandler in einem privaten Feld meiner Komponente speichern.
Denn meinen eigenen Code ausführen und anschließend den ursrüngliche Eventhandler aufrufen.

Hallo,

danke für die Hinweise!

Aber wie würde der obere Hinweis in Code-Form ausschauen? - Ich weiss momentan nicht wie ich prüfen kann, ob dem Resize-Event des Parents einem Eventhandler zugewiesen wurde

Boombuler 11. Aug 2006 08:25

Re: In Komponente: Auf Minimieren der MainForm reagieren
 
Zitat:

Zitat von Helmi
Ich weiss momentan nicht wie ich prüfen kann, ob dem Resize-Event des Parents einem Eventhandler zugewiesen wurde

Delphi-Quellcode:
If Assigned(Parent.OnRisize) then
  //zugewiesen
else
  //Nicht zugewiesen
Pass aber auf es kann auch sein das ein Event im Nachhinein zugewiesen wird... du könntest auch die WindowProc des Fensters überschreiben und bei entsprechender Nachricht dich benachrichtigen lassen
Oder du guckst einfach wie TApplicationEvents das macht ;)

Greetz
Boombuler


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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