Einzelnen Beitrag anzeigen

iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit CreateParams und WS_EX_APPWINDOW

  Alt 23. Dez 2017, 22:25
Hallo,

ich benutze CreateParams um ein zweites Fenster meiner Anwendung in der Taskbar sichtbar zu machen:

Delphi-Quellcode:
type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;
...
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := 0;
end;
Das funktioniert auch soweit.

Nun gibt es aber einen merkwürdigen Nebeneffekt. Das Nebenfenster öffne ich aus dem Hauptfenster per Click auf ein Label, welches auch einen Hint enthält:

Delphi-Quellcode:
procedure TForm1.Label1Click(Sender: TObject);
begin
Form2.Visible:=true;
Form2.BringToFront;
end;
Click auf das Label bringt auch die Form2 wie gewünscht in den Vordergrund. Wenn man aber die Maus nicht schnell genug von dem Label entfernt, dann springt Form1 sobald der Hint angezeigt wird wieder in den Vordergrund, der Fokus bleibt aber auf Form2. Das sieht man nur, wenn die Forms überlappen. Achtung, das passiert aber erst beim zweiten Versuch, wenn man Form2 nach dem ersten Öffnen nicht wieder schließt. Ohne den CreateParams-Code passiert das überhaupt nicht. Kann man das irgendwie abstellen?

Democode ist angehängt.
Angehängte Dateien
Dateityp: zip DelphiHintFocus.zip (1,8 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat