Sì in effetti avevo già fatto una modifica in tal senso.
(Anche se non è possibile impostare un valore alla proprietà Terminated; esiste la funzione apposta "Terminate"
)
Il problema è che se riapro la popup, imponendo nuovamente un Thread.Execute, mi vede il thread sempre come "Terminated" infatti non comincia alcun countdown.
Avevo modificato così:
codice:
procedure TThreadTimer.Execute;
var i: integer;
begin
i := 0;
Popup.LblInfo.Caption := IntToStr(10-(i div 1000));
while not(Terminated) do
begin
sleep(1000); // un secondo
i := i + 1000;
Popup.LblInfo.Caption := IntToStr(10-(i div 1000)); // mostra i secondi che mancano
if i = 10000 then
begin
Timer.Terminate;
Synchronize(Dissolve);
end;
end;
end;
procedure TPopup.FormShow(Sender: TObject);
begin
AlphaBlendValue := 0;
if Timer.Terminated then
Timer.Execute;
end;
Però in questo modo, quando ricompare la popup, il counter è fermo a 10 e non entra mai nel ciclo while (probabilmente perchè Terminated è true ma non è possibile assegnare valori, dato che Terminated è read-only)