Fórum Desabilitar uma Form #354941
06/03/2008
0
Durante os 9 segundo que a form está desabilitada se eu clicar no botão B, após esse tempo ele mostra Botão clicado.
Vocês sabem como posso ignorar qualquer click efetuado na form enquanto ela estiver como enabled = false ?
procedure TForm2.AClick(Sender: TObject);
begin
Form2.Enabled := False;
Application.ProcessMessages;
Try
form2.Caption:=´desabilitado´;
sleep(9000);
Finally
Form2.Enabled := True;
form2.Caption:=´´;
end;
end;
procedure TForm2.BClick(Sender: TObject);
begin
SHOWMESSAGE(´BOTÃO CLICADO´);
end;
Clistenes
Curtir tópico
+ 0Posts
07/03/2008
Bueno.box
declare na seção public do Form a função BlockInput e desative os periféricos com o parâmetro true e ative com false:
exemplo
type
...
Private
...
Public
function BlockInput(fBlockIt:boolean):boolean;StdCall; External ´user32.DLL´;
end;
procedure TForm2.AClick(Sender: TObject);
begin
Form2.Enabled := False;
Try
Application.ProcessMessages;
BlockInput(true);
{Faz os seus processos ....}
finally
BlockInput(false);
end;
end;
Gostei + 0
07/03/2008
Clistenes
Resumindo enquanto estiver disabled a form não interpreta nada, assim como é um botão quando colocamos como disabled.
Obrigado
Gostei + 0
07/03/2008
Onjahyr
Não suje o fórum!!!
Gostei + 0
09/03/2008
Marco Salles
ser exatamente o contrário (isto é habilitar os controles dos forms enquanto se processa algo demorado em segundo plano )
Veja como é que fica
//crie a classe
este é apenas um esboço . Uma idéia ...Tem Outras coisas envolvidas , como por exemplo a utilização ou não do método Synchronize ..
Para este exemplo simples colocado por voce usando o Sleep , esta arquitetura funciona perfeitamente . Porém eu não tenho nen idéia de qual é este processo ´demorado´ citado por voce ... Espero que voce consiga adaptar este codigo a sua necessidade .
espero ter sido util . Boa sorte.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)