![]() |
fsStayOnTop funktioniert nicht
Ich habe ein Programm, bei dem ich per Checkbox ein weiteres Fenster (Form2) anzeigen lassen kann. Dabei ist
Delphi-Quellcode:
(im OI eingetragen)
Form2.FormStyle := fsStayOnTop;
Die OnClick-Methode der Checkbox hat folgenden Code:
Delphi-Quellcode:
Doch leider wird dieses zweite Fenster NICHT fsStayOnTop. D.h. wenn ich ein anderes Programm aktiviere, bleibt Form2 leider nicht im Vordergrund.
procedure TForm1.CheckBox1Click(Sender: TObject);
begin if CheckBox1.Checked then begin Application.CreateForm(TForm2, Form2); Form2.Show; end else begin Form2.Close; Form2.Free; end; end; Ich habe auch schon den Versuch unternommen und Form2 direkt bei Programmstart laden zu lassen. Ebenfalls ohne Erfolg. Habe ich irgendwas übersehen? |
Re: fsStayOnTop funktioniert nicht
Die Eigenschaft wirkt m.W. nur für Fenster der selben Anwendung
|
Re: fsStayOnTop funktioniert nicht
Gibt es eine Möglichkeit, dies Systemweit zu machen?
|
Re: fsStayOnTop funktioniert nicht
|
Re: fsStayOnTop funktioniert nicht
fsStayOnTop wirkt nur auf alle Fenster, wenn es im Hauptformular eingestellt ist.
Delphi-Quellcode:
Damit kann man das Formular in den Vordergrund bringen. Man muss es nur immer wieder wiederholen.
form2.BringToFront;
|
Re: fsStayOnTop funktioniert nicht
Zitat:
|
Re: fsStayOnTop funktioniert nicht
Zitat:
du must dir nur vor Augen halten, dass andere Programmierer ihr Fenster auch als Top-Fenster sehen wollen und dazu auch das gleiche tun können - es kann aber nur eines geben. Das ist dann wie beim Einkaufen, wer sich am brutalsten nach vorne drängelt, hat Erfolg. Egal welche Funktion angewandt wird, ein Konkurrent könnte ja das Gleiche tun. Dann ist das letzte nach vorne gebrachte Fenster vorne, weil das logisch gesehen die einzig sinnvolle Konsequenz aus der Patt-Situation ist. Gruss Reinhard |
Re: fsStayOnTop funktioniert nicht
Das verstehe ich ja. Aber wie kommt es, dass ein Topmost Fenster von Nicht-Topmost Fenstern überlagert wird. DAS ist es, was mich wundert.
|
Re: fsStayOnTop funktioniert nicht
Danke für das konsequente ignorieren meiner posts.
Zitat:
|
Re: fsStayOnTop funktioniert nicht
Zitat:
das Aneinander-Vorbei-Posten ist halt fester Bestandteil der Internet-Kultur. Betrachte es einfach als Vorbereitung für eine Politiker-Karriere. Gruss Reinhard |
Re: fsStayOnTop funktioniert nicht
Zitat:
- "Der Nächste bitte..." ;) Aber mal Spaß beiseite: Ich habe deinem Post nicht ignoriert, aber da DelphiStar nach Dir gepostet hatte (mit einer möglichen Lösung) und ich zu faul war mir den englischen Text von der MS-Seite durchzulesen, ist es einfach in der Prioritäts-Liste nach unten gefallen. Aber inzwischen habe ich den Text nun doch gelesen und für eine "schwachsinnige" Meinung Microsofts befunden, dass ein Topmost-Fenster zu einem Non-Topmost Fenster wird, wenn es in der Z-Reihenfolge nach unten gesetzt wird (wie auch immer). Allerdings frage ich mich, wie es Programme wie Dexpot schaffen, Fenster PERMANENT als Topmost zu setzen. |
Re: fsStayOnTop funktioniert nicht
Zitat:
ich habe solche Lösungen schon gesehen: einfach brutal, z.B. mit einem Timer die Z-Ordnung prüfen und bei Bedarf sich selbst wieder ganz nach vorne setzen. Aber wie ich ja schon geschrieben habe - im Prinzip könnte das ja jeder so machen. Am Ende beträgt die CPU-Belastung 95% für die Änderungen der Fensteranordnung. Editiert: Ausserdem kann man noch die Messages WM_WINDOWPOSCHANGING und WM_WINDOWPOSCHANGED abfangen und bearbeiten. Gruss Reinhard |
Re: fsStayOnTop funktioniert nicht
Hi,
schau mal ![]() Du musst im Application.OnDeactivate einfach
Delphi-Quellcode:
ausführen.Application.RestoreTopmosts Gruß Patrick |
Re: fsStayOnTop funktioniert nicht
Zitat:
Ich nutze die Methode aus dem zweiten Link und habe bisher keine Probleme mehr |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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