Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Eingabeinterface kurzeitig sperren (Maus+Tastatur) (https://www.delphipraxis.net/131472-eingabeinterface-kurzeitig-sperren-maus-tastatur.html)

Whookie 25. Mär 2009 11:23


Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Ich habe ein Programm, das eine große Menge Daten auf Platte schreiben muss. Das kann zwischen 30sec und 10min dauern und während dieser Zeit soll der Anwender nur einen Fortschrittsbalken in der Statuszeile sehen, aber das Programm nicht mehr bedienen können (ausser das Fenster verschieben, minimieren, maximieren, beenden).

Leider habe ich bisher keine Möglichkeit gefunden das einfach umzusetzen.

Was ich jetzt mache ist eine eigene Form in der ein TProgressBar liegt. Die Form hat keine Border und wird zur Laufzeit an der Position der Statusbar mit ShowModal ausgegeben. Das kommt dem was ich machen will schon recht nahe hat aber den Nachteil, dass ich das Fenster der Applikation nicht mehr verschieben/minimieren kann.

Gibt es sonst eine Möglichkeit die Eingabe an mein Programm für diesen Zeitraum zu sperren?

TIA
Whookie

Sherlock 25. Mär 2009 12:03

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Du könntest in einer Schleife alle Controls disablen.

Sherlock

Meflin 25. Mär 2009 12:46

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Wenn es um so lange Zeitspannen geht, gehört sich das Programmfenster m.E. komplett ausgeblendet. Die Fortschrittsanzeige packst du in eine extra Form (zusammen mit der Abbrechen-Funktion ;) ) und die wird angezeigt während der Vorgang läuft und sonst nix.

Nur so als Anregung.

_frank_ 25. Mär 2009 12:48

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Zitat:

Zitat von Sherlock
Du könntest in einer Schleife alle Controls disablen.

oder alle controls auf ein panel (align=alClient) und dieses disablen.
spart die Schleife :)

Gruß Frank

mr_emre_d 25. Mär 2009 12:53

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Form1.Enabled := False; ??

_frank_ 25. Mär 2009 12:54

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Zitat:

Zitat von mr_emre_d
Form1.Enabled := False; ??

dann kannst das form nicht mehr verschieben/minimieren

Gruß Frank

Cyberbob 25. Mär 2009 13:27

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Lass dir per findcomponent alle Controls geben und deaktiviere sie!

Oder einfacher: alle Controls auf ein Panel legen, dass sich über die gesamte form erstreckt und dann das Panel Enabled := False setzen, nicht die Form!

Florian H 25. Mär 2009 13:59

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Zitat:

Zitat von Cyberbob
Lass dir per findcomponent alle Controls geben und deaktiviere sie!

Oder einfacher: alle Controls auf ein Panel legen, dass sich über die gesamte form erstreckt und dann das Panel Enabled := False setzen, nicht die Form!

Öh.. nette Zusammenfassung aller bisherigen Postings :gruebel:


@Threadersteller: Würde es als Anwender auch bevorzugen, wenn die Anwendung dann von sich aus komplett verschwindet ... ich käme wohl auch gar nicht auf die Idee, eine arbeitende Anwendung zu minimieren, weil das in 90% der Fälle ja eh nicht möglich ist :/

_frank_ 25. Mär 2009 14:10

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Zitat:

Zitat von Cyberbob
Lass dir per findcomponent alle Controls geben und deaktiviere sie!

zumal findcomponent dafür bisschen ungünstig ist...warum nicht das Controls-Property des forms zu nehmen (ggf. rekursiv).

Gruß Frank

mr_emre_d 25. Mär 2009 14:44

Re: Eingabeinterface kurzeitig sperren (Maus+Tastatur)
 
Zitat:

Zitat von _frank_
Zitat:

Zitat von mr_emre_d
Form1.Enabled := False; ??

dann kannst das form nicht mehr verschieben/minimieren

Gruß Frank

Dann soll er alles auf n Panel packen und Panel1.Enabled := False - setzen

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.
Seite 1 von 2  1 2      

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