![]() |
Hint bringt Hauptform in den Vordergrund?!
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
gegeben sind zwei Forms (Hauptform und eine Extraform). Die Extraform wird über einen Button der Hauptform aufgerufen und angezeigt. Die Besonderheit dabei ist, dass die zweite Form in der Taskbar angezeigt wird. Das bewerkstelligt folgender Code:
Delphi-Quellcode:
Das funktioniert auch alles wunderbar, wenn es da nicht ein Problem mit den Hints der Controls geben würde. Ab dem zweiten Anzeigen eines Hints eines Controls der Extraform, wird bei jedem Aufpoppen des Hints die Mainform in den Vordergrund (vor die Extraform) geholt. Warum geschieht das und wie kann man das verhindern?
procedure TfrmExtra.CreateParams(var Params: TCreateParams);
begin inherited; Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; Params.WndParent := GetDesktopWindow; end; Im Anhang ein vollständiges Testprojekt, mit dem dieses Verhalten reproduziert werden kann. |
Re: Hint bringt Hauptform in den Vordergrund?!
hmm,
ich mutmaße mal. wenn man
Delphi-Quellcode:
entfernt, bleibt die form im Vordergrund.
Params.WndParent := GetDesktopWindow;
Meine Idee: Der Desktop weiss nach dieser zuweisung nicht mehr so recht, welches Fenster zu welchem gehört und kommt da durcheinander :stupid: Die Frage ist auch, brauchst du die Zordnung überhaupt? In der Taskleiste angezeigt, wird das doch eigentlich nur durch
Delphi-Quellcode:
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
|
Re: Hint bringt Hauptform in den Vordergrund?!
Liste der Anhänge anzeigen (Anzahl: 1)
Ohne diese Zuweisung kann man das Hauptfenster nicht mehr vor das Extrafenster und wenn man das Hauptform minimiert wird automatisch auch die Extraform mit minimiert und das Taskbaricon der ExtraForm entfernt. Aber du hast Recht, ohne die Zuweisung funktioniert die Hintgeschichte so wie sie soll. Ich hätte aber trotzdem gern das Fensterverhalten, wie ich es bekomme, wenn ich den Parent ändere.
[EDIT] Auch die Nutzung von Application.MainFormOnTaskBar unter Delphi 2007 bringt nichts, da auch hier das Parent auf null gesetzt werden muss um das entsprechende Fensterverhalten zu bekommen. [EDIT 2] Ich hab eine Lösung gefunden. Man muss einfach eine eigene Hintklasse nutzen, in welcher man mit CreateParams den Parent auf null setzt. Diese Hintklasse stellt mann dann noch Application vor und schon läuft alles :) Hier ist der wichtige Teil des Quellcodes - im Anhang befindet sich nochmal das komplette Projekt:
Delphi-Quellcode:
program Project1;
uses Forms, Controls, Unit1 in 'Unit1.pas' {frmMain}, Unit2 in 'Unit2.pas' {frmExtra}; {$R *.res} type TFixedHintWindow = class(THintWindow) protected procedure CreateParams(var Params: TCreateParams); override; end; procedure TFixedHintWindow.CreateParams(var Params: TCreateParams); begin inherited; Params.WndParent := 0; end; begin Application.Initialize; HintWindowClass := TFixedHintWindow; Application.CreateForm(TfrmMain, frmMain); Application.Run; end. |
AW: Hint bringt Hauptform in den Vordergrund?!
Super vielen Dank!!! Schleife das Problem schon lange mit mir rum...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 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