![]() |
Topmost die Zweite
Die Frage aus meinem Thread "Topmost für Form2" blieb unbeantwortet (zumindest hat niemand die eigentliche Frage des Threads beantwortet). Ich dachte eigentlich, hier im Forum bekäme man Antworten. Ich buche das mal unter Fastnachts-Verschleißerscheinungen ab.
Hier der zweite Versuch: Wie um alles in der Welt stellt man ein Form topmost, das NICHT das Mainform ist? Also Form2, Form3, ... Zusatzfrage: Derzeit trage ich gezwungenermaßen das Form, das topmost sein soll, als Mainform im Projekt ein und stelle "FormStyle" auf "fsStayOnTop". Aber dennoch verschwindet es ab und zu, ohne dass ich einen konkreten Grund dafür finden kann. (Und glaubt mir, ich habe gesucht!) Warum verlässt das Mainform ab und zu den topmost-Modus? Guido. |
Re: Topmost die Zweite
Guten Morgen,
Zitat:
Ich habe die Lösung (s.u.) schon in 2 Threads gepostet. Zitat:
Zitat:
Kann nur bestätigen, dass das selbe ab und zu mit der Uhr aus der Vista Sidebar passiert, die hier StayOnTop läuft. Grüße Patrick |
Re: Topmost die Zweite
Hallo Patrick.
Zitat:
Zitat:
Zitat:
Ich hatte schon eine andere Lösung getestet, die in CreateParams() das Topmost setzt und den Desktop als Parent für Form2 zuweist. Das würde ansich auch ganz gut funktionieren, hat aber in meinem Fall den Nachteil, dass für Form2 ein weiterer Eintrag in der Taskbar erstellt wird. Wenn ich den mit Params.ExStyle beseitige, wird aber auch im Fenster-Manager ("Alt + Tab") kein Eintrag mehr angezeigt. Das alles lässt sich mit deinem Tip lösen! Eine Frage zum TApplication.OnDeactivate: wo bekomme ich das her? Derzeit benutze ich eine TApplicationEvents-Komponente, die auch in der Delphi-Hilfe erwähnt wird. Wie hast du das Event erstellt? Viele Grüße, Guido. |
Re: Topmost die Zweite
Hallo Guido,
Zitat:
Einfach eine Prozedur mit dem entsprechenden Code erstellen, z.B.
Delphi-Quellcode:
und im TForm.Create Deiner Mainform einfach
procedure TForm1.AppDeactivate(Sender: TObject);
begin Application.RestoreTopMosts; end;
Delphi-Quellcode:
...wie gesagt, könnte man. Ich selbst bin aber oft so stinkend faul, dass ich einfach TApplicationEvents benutze ;-)
Application.OnDeactivate := AppDeactivate;
Gruß, Patrick |
Re: Topmost die Zweite
Hallo Patrick.
Vielen Dank für die Erklärung! Das beruhigt doch ungemein, wenn man weiß dass man nicht mit Kanonen (TApplicationEvents-Komponente) auf Spatzen schießt. Übrigens, das Selbsterstellen des Events habe ich versucht. Ich habe dann natürlich noch in der Deklaration von Form1 die Deklaration von AppDeactivate(Sender: TObject); eingefügt. Versucht habe ich es unter private, protected und public. Doch es gab immer irgendwelche Exeptions. Deshalb hab ich dann die VCL-Komponente benutzt. Vielen Dank und viele Grüße, Guido. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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 by Thomas Breitkreuz