Entwickler-Ecke

Sonstiges (Delphi) - Form immer im Hintergrund behalten


blackdrake - Fr 20.05.05 21:43
Titel: Form immer im Hintergrund behalten
Hallo.

Ich möchte mein Delphi-Form ständig im Hintergrund behalten, sodass es direkt auf dem Desktop liegt. Ich habe bereits den Artikel http://www.google.de/url?sa=U&start=1&q=http://www.swissdelphicenter.ch/de/showcode.php%3Fid%3D2096&e=9707 angewandt, jedoch wirkt dies bei mir nicht. Ich habe "protected" in meine Form-Deklaration eingebunden. Was kann ich tun?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
type
  TForm1 = class(TForm)
    {...}
  protected
    procedure CreateParams(var Params: TCreateParams); override;

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


Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt.


feivel3333 - Fr 20.05.05 22:08

Wie sehr soll dein Fenster in den Hintergrund geschickt werden?

Mit Form1.SendToBack; kannst du es nach hinten bringen. Wenn du es mit einem Timer machst, würde es permanent nach hinten gesetzt werden.


blackdrake - Fr 20.05.05 22:13

Hallo feivel3333.

Danke für den Tipp. Das funktioniert genau so, wie ich es wollte.


feivel3333 - Fr 20.05.05 22:25

Na klasse ! Wenn alles so einfach wäre!


Benutzername - Fr 20.05.05 22:42

Oder lagers in nen Thread us, der nur diese eine Aufgabe hat, die in ner Schleife zu prüfen.
Dann hast du keine Verzögerungen die durch das Timerintervall entstehen


blackdrake - Sa 21.05.05 12:54

Hallo.

Danke für den Tipp. Ich habe aber eine bessere Variante gefunden:


Delphi-Quelltext
1:
2:
3:
4:
procedure TMainForm.ApplicationEvents1Activate(Sender: TObject);
begin
 SetWindowPos(Handle, HWND_BOTTOM, Left, Top, Width, Height, 0);
end;


Ich habe jetzt noch ein Problem entdeckt:

Wenn ich in den QuickLinks "Desktop anzeigen" klicke, verschwindet meine Form. Dies ist bei meinem Programm sehr unerwünscht. Hätte ich "FormStyle = fsStayOnTop", würde das Form ständig auf dem Desktop (aber leider auch im Vordergrund) bleiben.

Meine Frage: Wie kann ich es verhindern, dass meine Form durch "Desktop anzeigen" minimiert wird?

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.