AGB  ·  Datenschutz  ·  Impressum  







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

Hint bringt Hauptform in den Vordergrund?!

Ein Thema von hitzi · begonnen am 26. Mai 2008 · letzter Beitrag vom 18. Feb 2015
Antwort Antwort
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#1

Hint bringt Hauptform in den Vordergrund?!

  Alt 26. Mai 2008, 09:49
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:
procedure TfrmExtra.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := GetDesktopWindow;
end;
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?

Im Anhang ein vollständiges Testprojekt, mit dem dieses Verhalten reproduziert werden kann.
Angehängte Dateien
Dateityp: zip hintextraform_327.zip (216,9 KB, 11x aufgerufen)
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Hint bringt Hauptform in den Vordergrund?!

  Alt 26. Mai 2008, 11:27
hmm,

ich mutmaße mal.

wenn man Params.WndParent := GetDesktopWindow; entfernt, bleibt die form im Vordergrund.

Meine Idee: Der Desktop weiss nach dieser zuweisung nicht mehr so recht, welches Fenster zu welchem gehört und kommt da durcheinander

Die Frage ist auch, brauchst du die Zordnung überhaupt? In der Taskleiste angezeigt, wird das doch eigentlich nur durch   Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Hint bringt Hauptform in den Vordergrund?!

  Alt 26. Mai 2008, 11:33
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.
Angehängte Dateien
Dateityp: zip hintextraform_778.zip (217,2 KB, 33x aufgerufen)
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Timbo

Registriert seit: 21. Dez 2003
2 Beiträge
 
#4

AW: Hint bringt Hauptform in den Vordergrund?!

  Alt 18. Feb 2015, 19:32
Super vielen Dank!!! Schleife das Problem schon lange mit mir rum...
  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 18:25 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