AGB  ·  Datenschutz  ·  Impressum  







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

Topmost die Zweite

Ein Thema von Guido Eisenbeis · begonnen am 23. Feb 2007 · letzter Beitrag vom 25. Feb 2007
Antwort Antwort
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#1

Topmost die Zweite

  Alt 23. Feb 2007, 02:30
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.
  Mit Zitat antworten Zitat
Benutzerbild von holliesoft
holliesoft

Registriert seit: 4. Apr 2005
Ort: Gau-Algesheim
250 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Topmost die Zweite

  Alt 23. Feb 2007, 06:35
Guten Morgen,

Zitat von Guido Eisenbeis:
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 im Forum gibt es auch eine Suchfunktion
Ich habe die Lösung (s.u.) schon in 2 Threads gepostet.

Zitat von Guido Eisenbeis:
Hier der zweite Versuch:

Wie um alles in der Welt stellt man ein Form topmost, das NICHT das Mainform ist? Also Form2, Form3, ...
Du musst beim TApplication.OnDeactivate die Prozedur "Application.RestoreTopmosts" aufrufen.

Zitat:
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?
Das Phänomen kenne ich, habe aber leider keine Antwort darauf.
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
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Topmost die Zweite

  Alt 24. Feb 2007, 01:07
Hallo Patrick.

Zitat von holliesoft:
Hier im Forum gibt es auch eine Suchfunktion
Ich habe die Lösung (s.u.) schon in 2 Threads gepostet.
Die Suchfunktion habe ich natürlich schon benutzt (und auch schon ganz Google-Land abgesucht). Leider wird man (insbesondere bei Google) mit (unützen) Ergebnissen erschlagen. Und jetzt, wo ich von deinen beiden Threads wusste, hab ich sie auch gefunden.


Zitat von holliesoft:
Zitat von Guido Eisenbeis:
... 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?
Das Phänomen kenne ich, habe aber leider keine Antwort darauf.
Kann nur bestätigen, dass das selbe ab und zu mit der Uhr aus der Vista Sidebar passiert, die hier StayOnTop läuft.
Das werden jetzt "Langzeit-Tests" zeigen.


Zitat von holliesoft:
Du musst beim TApplication.OnDeactivate die Prozedur "Application.RestoreTopmosts" aufrufen.
Dies war der entscheidende Hinweis! Vielen Dank dafür!

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.
  Mit Zitat antworten Zitat
Benutzerbild von holliesoft
holliesoft

Registriert seit: 4. Apr 2005
Ort: Gau-Algesheim
250 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Topmost die Zweite

  Alt 24. Feb 2007, 10:19
Hallo Guido,

Zitat von Guido Eisenbeis:
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?
Ich benutze die TApplicationEvents Komponente, die bei der VCL dabei ist. Man könnte den Event zwar auch manuell in den Code aufnehmen:

Einfach eine Prozedur mit dem entsprechenden Code erstellen, z.B.

Delphi-Quellcode:
 procedure TForm1.AppDeactivate(Sender: TObject);
 begin
  Application.RestoreTopMosts;
 end;
und im TForm.Create Deiner Mainform einfach

 Application.OnDeactivate := AppDeactivate; ...wie gesagt, könnte man. Ich selbst bin aber oft so stinkend faul, dass ich einfach TApplicationEvents benutze

Gruß,
Patrick
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Topmost die Zweite

  Alt 25. Feb 2007, 01:13
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz