Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ShowHint -> Form nach hinten (https://www.delphipraxis.net/10569-showhint-form-nach-hinten.html)

Captnemo 21. Okt 2003 10:49


ShowHint -> Form nach hinten
 
Hi,

ich habe eine Anwendung, die eine zweite Form öffnet (.show). Dieser Form habe ich einen eigenen Taskbareintrag spendiert:

Delphi-Quellcode:
procedure TForm2.CreateParams(var Params : TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := GetDesktopWindow;
  Params.Caption := 'Test';
end;
Funktioniert auch wunderbar. Beide Fenster lassen sich aktivieren.

Nun zum Problem: Wenn ich in der zweiten Form einen SpeedButton mit einem Hint versehe, wird immer wenn dieser Hint angezeigt wird die erste Form aktiviert und ggf. vor die zweite Form gelegt.
Setzte ich die Eigenschaft ShowHint des SpeedButtons auf False, oder nehme ich die Procedure CreateParams wieder raus, ist der Spuk vorbei.

Hat da jemand eine Erklährung für?

Leuselator 23. Okt 2003 01:42

Re: ShowHint -> Form nach hinten
 
Blindschuß: ich vermute GetDesktopWindow liefert zum Zeitpunkt des CreateParams nicht Die 2. Form zurück (die ist noch nicht created) sondern die 1. Form

wie gesagt - nur so'n Gefühl...

Captnemo 23. Okt 2003 05:55

Re: ShowHint -> Form nach hinten
 
Das ist schon gut möglich.

Im weiteren Verlauf habe ich festgestellt, das bei InputDlg() genau das gleiche passiert. Das heißt die MainForm wird aktiviert.

Stellt sich jetzt nur die Frage, wie kann ich das verhindern.
Ich will Fenster erzeugen, die einen eigenen Taskbareintrag haben, aber mit Show angezeigt werden (nicht mit ShowModal), so daß ich beide über die Taskbar aktivieren kann.

stoxx 23. Okt 2003 14:13

Re: ShowHint -> Form nach hinten
 
Zitat:

Zitat von Captnemo
Das ist schon gut möglich.

Im weiteren Verlauf habe ich festgestellt, das bei InputDlg() genau das gleiche passiert. Das heißt die MainForm wird aktiviert.

Stellt sich jetzt nur die Frage, wie kann ich das verhindern.
Ich will Fenster erzeugen, die einen eigenen Taskbareintrag haben, aber mit Show angezeigt werden (nicht mit ShowModal), so daß ich beide über die Taskbar aktivieren kann.



Hi .. ich mach Dir wenig Hoffnung, ich hab das Problem schon länger, und konnte bisher keine Lösung dafür finden.
In einem anderen Bereich konnte ich das Problem lösen.
Dieses dämliche Problem tritt auch auf, wenn Du von form2 aus ein drittes Form mit show aufrufst.
Aber nur in einer bestimmten Konstellation.
Wenn nämlich ein völlig anderes Programm in Windows gerade aktiv war.
Du auf die Taskleiste drückst um Form2 aufzurufen, und in diesem dann ein drittes Form mit show aufrufst. dann Schiebt sich nervigerweise das Hauptform davor !

Das Problem ist die Parent Eigenschaft des dritten Fensters, oder in Deinem Fall das Parent des HINTS !

In dem Fall des Forms ist es lösbar wenn Du vor dem show noch form3.parent := self; umbiegst ( auf das Form2)
Der Nachteil ist aber, dass sich das nur für kleine Fenster eignet, da das FEnster dann Form2 nicht mehr "verlassen" kann.
Für größere "richtige" Form weiss ich nicht, wie man das lösen kann.

Das Parent des Hints ist aber immer irgendwie application.
Jemand gab mir den Rat, dass es irgendwie mit dem TapplicationEvents Object lösbar wäre.
Aber ich konnte es nicht rausfinden durch probieren.
Wenn Du eine Lösung gefunden hast, dann melde Dich bitte mal :-)

Kalfany 15. Jul 2009 07:56

Re: ShowHint -> Form nach hinten
 
hat jemand zu dem Problem schon eine Lösung gefunden?

Meine momentane Idee wäre das anzeigen des Hints zu unterbinden und in selber zu zeichnen ...

Edit: ich glaub ich hab was gefunden: Hint bringt Hauptform in den Vordergrund?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 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