Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Formular immer im Hintergrund (https://www.delphipraxis.net/15091-formular-immer-im-hintergrund.html)

Matze 21. Jan 2004 17:45


Formular immer im Hintergrund
 
Hi!

Naja, ein besserer Titel ist mir nicht eingefallen. ;)

Ich hab ein Formular, das StayOnTop ist, das den ganzen Bildschirm inkl. Taskleiste ausfüllt.

Nun möchte ich diverse Formulare starten, unter denen man wechseln kann, wobei das StayOnTop-Formular nie ganz nach vorne kommen soll.

Man muss sich das so vorstellen, als wäre das StayOnTop-Formular der Desktop und wenn man dies anklickt, darf es nicht vor die anderen Formulare kommen.

Wenn ich die anderen Forms mit ShowModal anzeige, kann ich leider nicht zwischen ihnen hin- und herwechseln. MAche ich es nur mit Show, so kann das StayOnTop-Formular nach vorne kommen. :wall:


Versteht einer mein Problem und kann mir helfen? ;)

NicoDE 21. Jan 2004 18:03

Re: Formular immer im Hintergrund
 
Meinst Du so einen Effekt?

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, Classes, Controls, Forms, Dialogs;

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  if Assigned(Application.MainForm) then
  begin
    Params.Style := Params.Style or WS_CHILD;
    Params.WndParent := Application.MainForm.Handle;
  end;
end;

end.
Unit1 ist in diesem Falle die MainForm...

Matze 21. Jan 2004 18:08

Re: Formular immer im Hintergrund
 
Danke. Ich verstehe nur nicht, was obiger Code macht?
Und dann weiß ich nicht, was für ein Paramater "Params". ist :oops:

Ich möchte einfach, dass Form1 FsStayOnTop ist vor allen anderen Fenstern fremder Programme.

Nun Kreiere ich Fenster, die Aber über Form1 erscheinen müssen und nie unter diese gelangen dürfen.

NicoDE 21. Jan 2004 20:18

Re: Formular immer im Hintergrund
 
CreateParam() wird vor dem Erzeugen der Form aufgerufen, um die Fenster-Attribute zu setzen.
In den Beispiel wird die vorhandene Methode überschrieben.
In neuen Methode selbst wird erstmal die überschriebene Version aufgerufen (inherited) und dann werden nachträglich die Parameter modifiziert.

Es wird WS_CHILD zum Fensterstil hinzugefügt, und als Eltern-Fenster die MainForm angegeben. Damit ist Form2 ein Kind-Fenster der MainForm und 'klebt' sozusagen auf MainForm (ergo, die MainForm kann Form2 nicht mehr überdecken).
Das gleiche müßte man für alle Formen machen, die sich so verhalten sollen...

Matze 22. Jan 2004 20:24

Re: Formular immer im Hintergrund
 
Oh, thx gut, dass du mir das noch sagst.
Genau sowas habe ich gesucht, gleich mal testen :coder:

Matze 25. Jan 2004 18:19

Re: Formular immer im Hintergrund
 
So, konnte es jetzt testen. ;)

Ich wollte mich nur nochmal bei dir bedanken NicoDE! Es funktioniert alles. :)


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