Hola
Esto es lo mejor que puedo hacer, soy el Novato del club, alguno de los Maestros lo arreglara.
El progressbar ahora esta en el form1 (ya no se crea en ejecución, ni dentro de nada), una vez que termina se muestra el form2.
Lo que si creo en ejecución es el timer, pero si quieres también lo modificas.
Es lo mismo para un reporte, solo lo cambias.
Código Delphi
[-]
procedure TForm1.DialogTimer(Sender: TObject) ;
begin
if NOT (Sender is TTimer) then Exit;
if ((Sender as TTimer).Owner) is TForm then
with ((Sender as TTimer).Owner) as TForm do
begin
if ProgressBar1.Position >= ProgressBar1.Max then
ModalResult := mrCancel
else
ProgressBar1.StepIt;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ATimer : TTimer;
begin
ATimer := TTimer.Create(Form1) ;
with ProgressBar1 do begin
Max := 5;
Step := 1;
end;
with ATimer do begin
Interval := 1000;
OnTimer:=DialogTimer;
case ShowModal of
ID_CANCEL:
begin
form2:=Tform2.Create(self);
try
form2.ShowModal;
finally
form2.Free;
end;
end;
end;
end;
end;
Saludos