Forum > Graphics

Forzare aggiornamento form

(1/2) > >>

Fabio:
Ho una procedura che cicla su tutti i file e directory e dovrebbe aggiornare un controllo con dei parametri, dico dovrebbe perchè la finestra esce solo quando il ciclo è terminato quindi l'applicazione risulta come bloccata fino a che non finisce.

In visual basic se non ricordo male si usava DoEvents o una roba simile per dare un po' di ossigeno al programma e dargli il tempo di aggiornare le finestre e i controlli, qui come si fa?

Ho già provato Application.Processmessages, Refresh, Repaint e Update ma niente da fare, quando parte il ciclo si blocca tutto e si sblocca solo quando il ciclo è terminato.

Fabio:
Aggiorno il thread, dunque il problema è che la procedura viene eseguita all'apertura di un form che viene usato per mostrare l'avanzamento della procedura, e il form non viene proprio mostrato.

Se io sposto l'avvio della procedura dal FormShow a un FormClick e avvio la procedura a mano con un click allora mettendo un Update nel ciclo si vede l'aggiornamento delle statistiche in tempo reale.

Quindi cambio la domanda in, come fare a far partire una procedura dopo che il form supplementare risulta caricato e visibile ?

Fabio:
E già che ci sono rincaro anche la dose  ;D , come posso far si che l'utente possa interrompere la procedura?

Ok che il form viene aggiornato però l'applicativo è comunque ingestibile, anche se ho un pulsante per annullare non riesco a cliccarlo fino a che la procedura è terminata.

Grazie.

xinyiman:
Allora, metti quel codice in un timer. Il timer lo fai partire all'apertura della form valorizzando il parametro .Intervall a un valore superiore a 0 (si tratta dei millisecondi). E all'avvio del tuo timer imposti il paratetro interval=0 in maniera tale da eseguire quel blocco di codice una volta sola. Esempio

procedure TForm1.FormShow(Sender: TObject);
begin
    timer1.interval:=100;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    timer1.interval:=0;
    {tuo blocco di codice}
end;

Fabio:
Ok perfetto, per l'avvio a form visibile è ok funziona.

Se avete poi un idea di come poter cliccare il pulsante che risulta non cliccabile fino al termine della procedura fate un fischio.

Grazie.

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa