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