![]() |
Erkennen ob ein Fenster verdeckt wird
Hallo
Beispiel: Ich habe auf einem cxPageControl 2 Tabs mit jeweils einem Form drauf. Kann ich beim Wechsel der aktiven Page im Formular mitbekommen (z.B. WndProc o.a.), dass das eine Formulat quasi nicht mehr sichtbar ist, dafür aber das Andere? Ich weiss, embedded Forms war nicht die beste Idee, will ich aber jetzt nicht mehr ändern. Ausserdem habe ich eigentlich alles gelöst, ausser eben dieses Problem. Danke, Frank |
AW: Erkennen ob ein Fenster verdeckt wird
Zitat:
Prüfe doch einfach welches Tab\Seite aktiv ist dann weist du es doch. |
AW: Erkennen ob ein Fenster verdeckt wird
.. kannst Du dazu nicht das Ereignis onHide der Form hernehmen?
Das sollte doch gefeuert werden wenn die Form verdeckt wird -oder? Grüße Klaus |
AW: Erkennen ob ein Fenster verdeckt wird
Zitat:
Diese wird lediglich in den Hintergrund gesetzt mit dem nicht aktiven Tab. Und nein. Nur weil eine Form bedeckt\verdeckt wird muß diese nicht gleich unsichtbar sein. |
AW: Erkennen ob ein Fenster verdeckt wird
.. dann könnte das Event onDeactivate/onActivate das richtige sein?
Grüße Klaus |
AW: Erkennen ob ein Fenster verdeckt wird
Zitat:
Ich bin soweit, dass ich die ganze Steuerung (aktives Form, aktives Datasource etc.) quasi an einer zentralen Stelle habe. Ich hätte es gern so, dass ich dann, wenn ich ein PageControl mit Forms verwende, nich daran denken muss, das Event OnPageChanged zu setzten, zumal ich dieses evtl. anderweitig bräuchte. Es muss dann einfach funktionieren. Frank |
AW: Erkennen ob ein Fenster verdeckt wird
Zitat:
|
AW: Erkennen ob ein Fenster verdeckt wird
Kurzer Test mit 'nem Form, 'nem Button, 'nem TPageControl mit zwei Tabs und auf jedem Tab ein Panel.
Delphi-Quellcode:
Es könnte also (mit etwas Glück) ausreichen, auf die Sichtbarkeit des Parents der Formulare abzufragen.
procedure TForm1.Button1Click(Sender: TObject);
begin if Panel1.Visible then ShowMessage('Panel1'); // ist immer erfüllt, egal welcher Tab aktiv if Panel2.Visible then ShowMessage('Panel2'); // ist immer erfüllt, egal welcher Tab aktiv if Panel1.Parent.Visible then ShowMessage('Parent Panel1'); // ist nur erfüllt, wenn Tab 1 sichtbar if Panel2.Parent.Visible then ShowMessage('Parent Panel2'); // ist nur erfüllt, wenn Tab 2 sichtbar end; |
AW: Erkennen ob ein Fenster verdeckt wird
Zitat:
Es reicht einfach wie im ersten Beitrag schon gesagt die aktive Seite vom Tab abzufragen alles andere ist Sinnlos. Denn nur weil das Child Window in dem Fall als bsp. das Panel auf dem alle Komponenten abgelegt sind unsichtbar\in den Hintergrund geschaltet wird bleiben die anderen Komponente trotzdem sichtbar. Das betrifft also auch deine Formen die dort abgelegt sind. Wenn ich meine Küchentür öffne dann sehe ich die Küche wird sie hingegen geschlossen dann sehe ich sie nicht mehr. Bedeutet aber nicht das diese nun nicht mehr sichtbar ist. Es wird einem nur die Sicht darauf genommen. |
AW: Erkennen ob ein Fenster verdeckt wird
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal mein "Spiel - Projekt" angehangen. (erfordert DevExpress)
So ist es vielleicht besser verständlich. Der Code ist natürlich nicht sauber... Ich verwende einen MouseHook, Screen.OnActiveContolChange und WMMouseActivate der BasisForm. Damit kann ich fast alles bekommen. Wenn ich mich aber z.B. mit der Tab - Taste bis zum Aktivieren einer Page vorarbeite, kann ich mit den Cursortasten die aktive Page wechsel und bekomme davon nichts mit. Daher wäre es ideal, wenn die Form irgendeine Nachricht erhalten würde. Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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