AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Fenster beim minimieren in den Taskbar und zurück
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster beim minimieren in den Taskbar und zurück

Ein Thema von VizeTE · begonnen am 22. Mär 2006 · letzter Beitrag vom 24. Mär 2006
Antwort Antwort
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Fenster beim minimieren in den Taskbar und zurück

  Alt 22. Mär 2006, 16:54
Hallo zusammen,

ich habe schon einige Taskbar-Themen im Forum gefunden, leider war aber das richtig noch nicht dabei.

Ich habe ein "Kind"-Fenster (kein MDI) meiner Anwendung. Dies soll zunächst nicht in der Taskbar sichtbar sein. Wenn dieses jedoch minimiert wird soll es dort erscheinen.
Beim maximieren raus aus der Taskbar und wieder in den Fordergrund.

Die Messages für das minimieren und maximieren habe ich schon gefunden. Das sieht soweit gut aus. Das Problem ist das hinzufügen und entfernen aus der Taskbar.
Beispiele, die ich bisher gefunden haben machen das Fenster sofort in der Taskbar sichtbar, nicht erst beim minimieren.

Danke,
Daniel
  Mit Zitat antworten Zitat
roth

Registriert seit: 25. Nov 2005
Ort: -
72 Beiträge
 
#2

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 23. Mär 2006, 13:21
Benütze doch den ApplicationsEvents Komponenten! (under Additional)
Dort kannst du beim den Events angeben onMinimize bzw onRestor!?
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 23. Mär 2006, 15:46
Ich weiß aber leider nicht was ich dort bei diesen Events angeben muß damit das Fenster in der Taskbar erschein bzw. bei OnRestore wieder daraus entfernt wird.
  Mit Zitat antworten Zitat
roth

Registriert seit: 25. Nov 2005
Ort: -
72 Beiträge
 
#4

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 23. Mär 2006, 16:10
Probiere es mal mit
Code:
 Form1.Hide;
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 23. Mär 2006, 16:54
Wie ich die Form minimiere ist mir klar.
Aber mit Form.Hide geht das Ding doch nicht in den Taskbar, oder?!
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 23. Mär 2006, 17:23
Nein, mit Hide() wird die Form aus der Taskbar entnommen und Show() wieder in die Taskbar gesetzt.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 24. Mär 2006, 16:07
Ich befürchte wir reden hier ein wenig aneinander vorbei, oder ich versteh' es nicht richtig?!

Ich möchte, daß das Fenster beim öffnen sichtbar aber nicht in der Taskbar zu sehen ist.
Dann möchte ich das Fenster minimieren und solang das eingentliche Fenster nicht zu sehen
ist soll ein entsprechender Eintrag in die Taskbar.
Wenn ich das Fenster später wieder maximiere soll der Taskbareintrag natürlich wieder entfernt werden.

Ich hoffe das ist jetzt besser rübergekommen.
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Fenster beim minimieren in den Taskbar und zurück

  Alt 24. Mär 2006, 18:10
Hallo,

ich habe da jetzt schon mal selbst eine Lösung gefunden. Die gefällt mir zwar nicht so richtig gut aber funktioniert. Wenn jemand eine bessere Idee hat würde ich mich freuen

Mein jetztiges Prinzip basiert auf 2 Formularen. Wenn das eingentliche Formular minimiert wird so wird dieses komplett ausgeblendet. Somit ist dies schonmal nicht mehr sichtbar. Diese erzeugt dann ein zweites Formular was nur einen Taskbar-Eintrag erzeugt, selbst aber auch nicht zu sehen ist.
Wenn man dann auf den Taskbar-Eintrag klickt wird dieses Fenster zerstört. Vorher wird aber das eigentliche Formular sichtbar gemacht.

TTaskbarForm ist das eigentliche Formular.
TTaskbarForm2 ist das Formular, was nur im Taskbar sichtbar ist.

Und hier jetzt der Code:

Delphi-Quellcode:
type
  TTaskbarForm = class(TForm)
  private
    FTaskbarWindow: TTaskbarForm2;
  protected
    procedure WMSysCommand(var Message: TMessage); message WM_SysCommand;
  public
    { Public-Deklarationen } 
  end;

function ShowTaskbarForm: TModalResult;

implementation

{$R *.dfm} 

function ShowTaskbarForm: TModalResult;
var
  ATaskbarForm : TTaskbarForm;
begin
  Application.CreateForm(TTaskbarForm, ATaskbarForm);
  try
    Result := ATaskbarForm.ShowModal;
  finally
    ATaskbarForm.Release;
  end;
end;

{ TTaskbarForm } 

procedure TTaskbarForm.WMSysCommand(var Message: TMessage);
begin
  case Message.WParam of
    SC_MINIMIZE : begin
                    FTaskbarWindow := TTaskbarForm2.Create(Self);
                    FTaskbarWindow.ParentHandle := Self.Handle;
                    FTaskbarWindow.Show;
                    Self.Visible := true;
                    Self.Hide;
                  end;
    SC_RESTORE : begin
                    FTaskbarWindow := nil;
                    Self.Show;
                    Self.Visible := true;
                    Self.Enabled := true;
                  end;
  else
    inherited;
  end;
end;
Delphi-Quellcode:
type
  TTaskbarForm2 = class(TForm)
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    FParantHandle : THandle;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure WMSysCommand(var Message: TMessage); message WM_SysCommand;
  public
    property ParentHandle: THandle write FParantHandle;
  end;

implementation

{$R *.dfm} 

procedure TTaskbarForm2.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

procedure TTaskbarForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ShowWindow(FParantHandle, SW_RESTORE);
end;

procedure TTaskbarForm2.FormShow(Sender: TObject);
begin
  ShowWindow(Self.Handle, SW_MINIMIZE);
  Abort;
end;

procedure TTaskbarForm2.WMSysCommand(var Message: TMessage);
begin
  case Message.WParam of
    SC_MAXIMIZE,
    SC_RESTORE : Self.Close;
  else
    inherited;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 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