Newsgroup: it.comp.lang.delphi
Titolo: Emissione del video in tempo reale

Ciao a tutti,
ho un progetto composto da un Tedit, una StringGrid di 6 colonne, ed un
Button. L'utente inserisce un parametro nel TEdit, clicca sul bottone e
parte l'elaborazione. I dati in ogni colonna vengono scritti in sequenza,
così l'utente vede comparire a video prima la colonna 1, poi la 2 e così
via.
Fino a qui tutto Ok.
Mi è stato chiesto di fare im nodo che se arriva dalla riga comando un
parametro, considerarlo come se fosse stato immesso nella TEdit e far
partire l'applicazione in automatico.
Ho fatto un test nell'OnCreate del Form e, se arriva un parametro lancio
direttamente il Button1Click.
Quando viene usata questa modalità, però il form viene emesso tutto completo
e quindi mi perdo l'effetto delle colonne disegnate in sequenza.
Qualcuno mi sa dire da cosa dipende?
Grazie, Mario
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Nell'on-create attiva un timer (che so ad un secondo o più). Il timer 
scrive nella tedit e chiama Button1Click
Ciao

 e quindi mi perdo l'effetto delle colonne disegnate in sequenza.
Prova ad utilizzare l'OnShow invece dell'OnCreate.
-- 
Jax


Niente da fare :-((



Niente da fare :-((


 Niente da fare :-((
Secondo me non l'hai applicato correttamente. Questo è il metodo che ho 
usato anch'io molte volte... non è pulito ma funziona benissimo.
Posta il codice che hai usato.
-- 
Jax


procedure TForm1.FormShow(Sender: TObject);
begin
  Sleep(1000);
  Application.ProcessMessages;
 
 
  //Lancio direttamente la scansione
  if (ParamCount = 1) then begin
    edNome.Text:=ParamStr(1);
    Button1Click(Sender);
  end;
  //Faccio in modo che questa "procedure" non venga piů eseguita
  Form1.OnShow:=nil;
end;
Ho provato a fere le stesse cose anche nel il FormCreate, ma non cambia
niente


>
Prova nell'OnActivate del form

   end;
Endostà il Timer che microges ti aveva detto di usare?
-- 
Jax


Sleep(1000), o forse intendevate qualcos'altro ?


Mi sa che hai fatto un po' di casino.
Primo) Sleep blocca l'applicativo completamente per N millisecondi
Secondo) Non usare OnShow ma OnCreate oppure OnActivate
Terzo) Prova questa:
procedure TForm1.FormCreate(Sender: TObject);
begin
    If (ParamCount = 1) Then
       Begin
         edNome.Text := ParamStr(1);
         Timer1.Enabled := True;
       End;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
Begin
   Timer1.Enabled := False;
   Button1Click(Sender);
End;
Ps. Il timer impostalo a 5 secondi e, in seguito, diminuisci il tempo
Ciao,
David

 Ps. Il timer impostalo a 5 secondi e, in seguito, diminuisci il tempo
GRAZIEEEEEEEEEEE, funziona perfettamente anche con il timer impostato ad 1
millisecondo.
Se non chiedo troppo, mi potresti però spiegare la logica?


Il timer lavora con la coda dei messaggi di windows standard, quindi tra 
il timer che manda il messaggio e l'applicativo che lo processa 
l'applicazione "è libera" e ha tutto il tempo di eseguire le proprie 
operazioni (specialmente quelle di ridisegno che sono lente).
Come facevi tu vi era un'errore di fondo. L'applicativo non aveva il 
tempo materiale di ridisegnarsi e quindi perdevi tutta la gestione della 
form (che poi le operazioni fossero eseguite è un' altro paio di maniche)
Altra cosa gli eventi:
OnCreate: viene chiamato all'inizio, prima di qualsiasi disegno della 
form, serve alle operazioni preliminari e viene chiamato una sola volta.
OnShow: viene chiamato quando bisogna ridisegnare la form (e quindi 
anche più volte)
OnActivate: viene chiamato quando la tua form diventa attiva (per 
esempio quando premi Alt+Tab per passare da un'applicazione ad un'altra)
Ciao,


Grazie 1000
