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 Zweitfenster immer vor Hauptfenster - aber kein ShowModal (https://www.delphipraxis.net/56889-zweitfenster-immer-vor-hauptfenster-aber-kein-showmodal.html)

ManuMF 12. Nov 2005 19:16


Zweitfenster immer vor Hauptfenster - aber kein ShowModal
 
Hallo,

ich habe ein Hauptfenster und ein zweites, das eine Warteanzeige darstellt. Bei starten eines längeren Vorgangs soll das Zweitfenster geöffnet und nach Fertigstellen automatisch wieder geschlossen werden. Während dieser Zeit soll es den Fokus nicht an das Hauptfenster verlieren, also wie bei ShowModal. Nur kann ich ShowModal nicht verwenden, da das Programm sonst so lange wartet, bis das Zweitfenster geschlossen ist.
Gibt es vielleicht eine andere Möglichkeit, um das Zweitfenster vorne zu halten?

Oder kurz: Ich brauche ein ShowModal, das das Programm nicht aufhält. ;-)

Danke,
ManuMF

ichbins 12. Nov 2005 19:32

Re: Zweitfenster immer vor Hauptfenster - aber kein ShowModa
 
showmodal bedeutet ja
Delphi-Quellcode:
form2.show;
form1.enabled:=false;
Du kannst das enabled ja auch selbst auf false setzten. Andernfalls könntest du on form1.activate form2.bringtofront machen.
Du könntest das form1 auch einfach damit davon abhalten den Fokus zu erhalten indem du es versteckst:
Delphi-Quellcode:
form1.visible:=false;

on form2.close
  form1.visible:=true;

tigerman33 12. Nov 2005 19:34

Re: Zweitfenster immer vor Hauptfenster - aber kein ShowModa
 
In dem Fall würde ich aber lieber ein modales Fenster anzeigen, und den auszuführenden Code in einen neuen Thread packen. Dann könntest du sogar Informationen über den Fortschritt im "Wartefenster" anzeigen lassen.

Daniel Schuhmann 12. Nov 2005 19:38

Re: Zweitfenster immer vor Hauptfenster - aber kein ShowModa
 
Setz das zweite Fenster doch einfach in den Vordergrund.

Delphi-Quellcode:
procedure SetTopMost(Topmost: Boolean);
var
  Flags: Cardinal;
begin
  Flags := SWP_DRAWFRAME or SWP_NOMOVE or SWP_NOSIZE;
  If Topmost
    then SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, Flags)
      else SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, Flags);
end;
Dem ersten Fenster kannst Du dann aber dennoch den Focus geben. Eventuell kombinieren mit IchBins' Tipp, das erste Fenster deaktivieren.

ManuMF 12. Nov 2005 20:30

Re: Zweitfenster immer vor Hauptfenster - aber kein ShowModa
 
Danke an alle!
Das mit dem HauptForm.enabled hat funktioniert.

Gruß,
ManuMF


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