Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form ohne Taskleisten-Button (https://www.delphipraxis.net/61388-form-ohne-taskleisten-button.html)

Helmi 20. Jan 2006 17:28


Form ohne Taskleisten-Button
 
Hallo,

ich erzeuge mit diesem Code ein Fenster (testweise):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  f: TForm;

begin
  f := TForm.CreateParented(getdesktopwindow);

  f.Top := 200;
  f.Left := 200;
  f.Height := 200;
  f.Width := 200;

  f.Caption := 'Fenster';
  f.Show;
end;
Wenn diese neue Form angezeigt wird, wird Diese in der Taskleiste mit einem Button dargestellt.

Codes für das Ausblenden von Applicationen in der Taskleiste gibts ja genügend (z. B. Diesen ) - nur will ich ja nicht die gesamte Application aus der Taskleiste ausblenden, sondern nur diese eine, speziell erzeugte (getdesktopwindow) Form.

ManuMF 20. Jan 2006 17:31

Re: Form ohne Taskleisten-Button
 
Dann nimm doch diesen Code, aber statt Application.Handle :arrow: F.Handle.

Gruß,
ManuMF

Helmi 20. Jan 2006 17:40

Re: Form ohne Taskleisten-Button
 
Zitat:

Zitat von ManuMF
Dann nimm doch diesen Code, aber statt Application.Handle :arrow: F.Handle.

Gruß,
ManuMF

bringt leider nichts

Khabarakh 20. Jan 2006 17:45

Re: Form ohne Taskleisten-Button
 
Muss es aber :wink: . Auszug aus meinem "Bounce and Fall":
Delphi-Quellcode:
procedure TBlobForm.FormShow(Sender: TObject);
begin
  // Setzt Fenster an die vorderste Front
  SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height,
    SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
  // Setzt Parent auf den Desktop
  SetWindowLong(Handle, GWL_HWNDPARENT, 0);
  // Versteckt das Fenster in der Taskleiste
  SetWindowLong(Handle, GWL_EXSTYLE,
    GetWindowLong(Handle, GWL_EXSTYLE) or
    WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
end;

Helmi 20. Jan 2006 17:47

Re: Form ohne Taskleisten-Button
 
Hallo,

wenn ich den Code vom meinem Link oben in das OnShow der erzeugten Form tu, dann funktionierts. Ist Dieser aber im OnCreate (so wie in dem Code ersichtlich) funktioniert ned!

Trotdem Vielen Dank für die Hilfe!

hanselmansel 20. Jan 2006 17:51

Re: Form ohne Taskleisten-Button
 
Das "Problem" hatte ich auch mal. Aber es ist ja eigentlich relativ klar, dass man ein Ding erst verstecken kann, wenn es existiert. :zwinker:

Helmi 20. Jan 2006 18:20

Re: Form ohne Taskleisten-Button
 
Zitat:

Zitat von hanselmansel
Das "Problem" hatte ich auch mal. Aber es ist ja eigentlich relativ klar, dass man ein Ding erst verstecken kann, wenn es existiert. :zwinker:

ein Versuch wars wert :wink:

Helmi 20. Jan 2006 19:17

Re: Form ohne Taskleisten-Button
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt muss ich das Thema nochmal aufgreifen.

In meinem Projekt kann es sein, dass die MainForm beim Starten nicht sichtbar ist.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowMainForm := false;
end;
Durch eine Procedure (im Testbeispiel durch einen Timer verwirklicht) wird dann die neue Form erzeugt.

In dieser Situation wird, trotz dem Code fürs Ausblenden des Taskbar-Buttons im OnShow der neuen Form, der TaskBar-Button angezeigt.

Wie kann man dies verhindern?

P.S.: Anbei mein Testbeispiel. Startet die Echse, nach 2 sek wird die neue Form angezeigt.

Helmi 21. Jan 2006 17:17

Re: Form ohne Taskleisten-Button
 
weiss jemand warum das obrige nicht geht, wenn die mainform beim starten nicht sichtbar ist?

Helmi 22. Jan 2006 10:05

Re: Form ohne Taskleisten-Button
 
Ich hab jetzt selbst eine Lösung gefunden. Ich finde sie aber nicht sehr schön:

Delphi-Quellcode:
procedure TForm1.OnFShow(Sender: TObject);
begin
  with f do
    begin
      ShowWindow(Handle, SW_HIDE );
      SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
                    WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
      ShowWindow(Handle, SW_SHOW );
    end;

  If not Application.MainForm.Visible then
    begin
      with Application do
        begin
          ShowWindow(Handle, SW_HIDE );
          SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
                        WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
          ShowWindow(Handle, SW_SHOW );
        end;
    end;
end;


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