Jak zrobić, aby na czas wykonywania jakiejś procedury (bardziej złożonej), zamrozić okno programu tzn. aby wszystkie obiekty znajdujące się na formie, nie reagowały na kliknięcia?
Spróbuj na początku wykonywania procedury:
[code]Form.Enabled:=False[/code]
a po jej wykonaniu
[code]Form.Enabled:=True;[/code]
[browar]
Pozdrawiam
przecież to jest standardowa sytuacja - jeśli nie stosujesz wielowątkowości ani application.processmessages, to na czas wykonywania kodu formatka "zdycha".
ale jak coś naciskasz mimowoli i tak po wykonaniu procedury moze sie wywołąćobsługa do danego zdarzenia.
Właściwość Enabled to niezbyt dobre rozwiązanie, gdyż blokuje cały program, łącznie z paskiem systemowym, co uniemożliwia przesuwanie formy/minimalizację.
Może macie jakieś inne pomysły??
wszystkie komponenty dać na TPanel a potem dawać do pętli w procedurze Application.proccessMessages i na początku napisać Panel1.Enabled:=false a po wykonaiu Panel1.Enabled:=true;
wtedy powinno dać się przesuwać formę itd. a nie będzie dało się nic robić na formie.
procedure TForm1.zablokuj;
var
q: Integer;
begin
for q := 0 to Form1.ComponentCount -1 do
if Form1.Components[q] is TControl then
(Form1.Components[q] as TControl).Enabled := not (Form1.Components[q] as TControl).Enabled;
end;
na poczatku zablokuj i na koncu zablokuj ... :-8
ok. Dzięki.