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 Fenster kann nicht mehr minimiert werden (https://www.delphipraxis.net/50931-fenster-kann-nicht-mehr-minimiert-werden.html)

Alois 3. Aug 2005 07:43


Fenster kann nicht mehr minimiert werden
 
Ich benutze in meinem Programm eine Funktion, die nur einen Programmstart zulässt.
Desweiteren übergibt die Zweite Programm Instanz die Parameterzeile an die Erste Instanz.

Damit man davon auch was mitbekommt wenn das Programmfenster der Ersten Instanz verdeckt oder
gar minimiert ist... rufe ich das Fenster mit folgenden Code auf:
Delphi-Quellcode:
BringWindowToTop(wnd);
ShowWindow(wnd,SW_SHOWNORMAL);
SetForeGroundWindow(wnd);
Leider hat dies folgenden Nebeneffekt: Solange ich keine Zweite Instanz starte, kann ich das Fenster
minimieren. Rufe ich die Zweite Instanz (mit besagten Programmcode) auf, erscheint die Erste Instanz
zwar im Vordergrund, aber ab jetzt kann ich das Fenster nicht mehr minimieren.

Hat jemand eine Idee??

Gruss Alois ;)

RavenIV 3. Aug 2005 08:19

Re: Fenster kann nicht mehr minimiert werden
 
haben nicht "BringWindowToTop(wnd);" und "SetForeGroundWindow(wnd);" den selben effekt, dass das Fenster im Vordergrund ist?
lass doch mal einen von beiden Befehlen weg.

gruessle

Alois 3. Aug 2005 10:01

Re: Fenster kann nicht mehr minimiert werden
 
Mein Problem scheint die Anweisung
Delphi-Quellcode:
ShowWindow(wnd,SW_SHOWNORMAL);
zu sein. Sobald ich diese Zeile entferne, kann ich das Fenster wieder minimieren. Aber... das aufpoppen wenn das Fenster minimiert ist funktioniert
dann auch nicht mehr.

Heul :cry:

Gruss Alois ;)

Alois 3. Aug 2005 10:08

Re: Fenster kann nicht mehr minimiert werden
 
Habe gerade gesehen das da jemand das gleiche Problem hat(te)? Link
Eine Lösung steht leider nicht dabei. Heul :cry:

Gruss Alois ;)

Alois 3. Aug 2005 12:25

Re: Fenster kann nicht mehr minimiert werden
 
Ich habe hier etwas gefunden, was 100%tig funktioniert.

Folgendes ins Programm einfügen:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    { ... } 
  private
    procedure WMSysCommand(var Message: TMessage);
      message WM_SYSCOMMAND;
  end;


procedure TForm1.WMSysCommand(var Message: TMessage);
begin
  if(Message.Msg = WM_SYSCOMMAND) and
    (Message.wParam = SC_RESTORE) then Application.Restore;

  inherited;
end;
und das hier:
Delphi-Quellcode:
BringWindowToTop(wnd);
ShowWindow(wnd,SW_SHOWNORMAL);
SetForeGroundWindow(wnd);
mit dem hier ersetzen:
Delphi-Quellcode:
BringWindowToTop(wnd);
SendMessage(wnd, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForeGroundWindow(wnd);
Das war's!! Minimieren geht wieder. :cheers: Besonderen Dank geht an MathiasSimmack :kiss:
Gruss Alois ;)


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