quarta-feira, 26 de outubro de 2011

Mostrando um formulário Modal usando Show

Um exemplo disso é quando você está mostrando um diálogo do progresso de uma operação.
O problema é que se você usa ShowModal todo o código da operação deve estar contido no form do diálogo de progresso. 

Para evitar isso use DisableTaskWindows and EnableTaskWindows.
Desta form seu diálogo vai agir como um formulário Modal e ao mesmo tempo permite executar o form da operação que está em progresso no diálogo.

procedure TForm1.ShowProgressDlg;
var
WindowList: Pointer;
begin
// Desabilita todos os formulários com exceção de FrmProgress
WindowList := DisableTaskWindows(FrmProgress.Handle);
try
FrmProgress.Show;
// Início do loop que executa a operação
FrmProgress.ProgressBar1.Position := FrmProgress.ProgressBar1.Position + 1;
// Fim do loop
finally
// Reabilita todos os formulários
EnableTaskWindows(WindowList);
FrmProgress.Close;
end; // try
end; // ShowProgressDlg

Nenhum comentário:

Postar um comentário