![]() |
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? ;) |
Re: Formular immer im Hintergrund
Meinst Du so einen Effekt?
Delphi-Quellcode:
Unit1 ist in diesem Falle die MainForm...
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. |
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. |
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... |
Re: Formular immer im Hintergrund
Oh, thx gut, dass du mir das noch sagst.
Genau sowas habe ich gesucht, gleich mal testen :coder: |
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 15:27 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