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/)
-   -   "Teilmodales" Formular? (VCL) (https://www.delphipraxis.net/210438-teilmodales-formular-vcl.html)

Getox 26. Apr 2022 08:35

"Teilmodales" Formular? (VCL)
 
Guten Morgen,

gibt es so etwas wie ein "teilmodales" Formular? Den Begriff habe ich mir spontan ausgedacht...

Ich möchte gerne ein Formular so aufrufen, dass es alle eigenschaften eines modalen Aufrufs hat. Also dass alle "untergeordneten" Formulare komplett gesperrt sind und das "teilmodale" Formular kurz pulsiert, wenn man ein gesperrtes "untergeordnetes" anklickt. Auf der anderen Seite möchte ich aber auch die aufrufende Funktion weiter durchlaufen lassen, als hätte ich es einfach mit "show" angezeigt.

Damit möchte ich ein wiederverwendbares Fortschrittsformular umsetzen, das ich einfach aufrufen kann und mich ansonsten nicht um das Disablen und Enablen der "untergeordneten" Formulare kümmern muss.

Vielen Dank :)

BerndS 26. Apr 2022 09:01

AW: "Teilmodales" Formular? (VCL)
 
So was ähnliches mache ich auch. Allerdings mit einmen anderen Ansatz. Das modale Fenster mit dem Fortschritsbalken bekommt eine Prozedure übergeben (procedure of object). Diese Prozedur läuft dann in einem Thread, den das Form mit Fortschritsbalken erstellt started.
Ist der Thread fertig oder wird durch einen Abbrechenschalter im Form mit Fortschritsbalken terminiert, schließt sich das Fenster wieder.

Es besteht aber auch die Möglichkeit mittels
Delphi-Quellcode:
  WindowList := DisableTaskWindows(0);
  ...
  EnableTaskWindows(WindowList);
so etwas zu machen. Am besten mal in TForm.Showmodal reinschauen.

Getox 26. Apr 2022 13:12

AW: "Teilmodales" Formular? (VCL)
 
Ich habe das mit dem DisableTaskWindows getestet. Die Formulare sind zwar gesperrt und auch die Buttons sind optisch nicht klickbar (Kein Highlight bei Mouseover oder Klick)... aber wenn man während der "Sperrzeit" auf Buttons, Tabs oder sonst was Klickt, werden diese Klicks Zeitverzögert nach dem Freigeben der Fenster trotzdem ausgeführt.

Edit:
Ich habe auch versucht einfach das Formular, aus dem heraus der Fortschritts-Dialog aufgerufen wird zu disablen und nachher wieder zu enablen. Aber auch da werden die Klicks, welche ich währenddessen getätigt habe nach dem Enablen nachträglich abgearbeitet :( Das Selbe Ergebnis habe ich mit LockWindowUpdate...

BerndS 26. Apr 2022 13:40

AW: "Teilmodales" Formular? (VCL)
 
Versuch es doch mal mit Application.ProcessMessages vor EnableTaskWindows.

Getox 26. Apr 2022 13:47

AW: "Teilmodales" Formular? (VCL)
 
Zitat:

Zitat von BerndS (Beitrag 1505095)
Versuch es doch mal mit Application.ProcessMessages vor EnableTaskWindows.

Das funktioniert tatsächlich! Vielen Dank!


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