Qualcuno, cortesemente, mi può testare queste istruzioni (che mi mandano in crash il programma come se NON ESISTESSE la proprietà .RowCount di StringGrid)?
if Grid_Incassi.RowCount > 1 then; for i := 1 to Grid_Incassi.RowCount do Grid_Incassi.Rows.Delete(i);
Posizionandomi su .RowCount durante il debug mi esce in pop-up il messaggio:
Grid_Incassi.RowCount = Type TSTRINGGRID has no component named ROWCOUNT.
nomorelogic:
Il problema dovrebbe essere nell'uso del for (che è un loop predeterminato). Prova ad usare il while che verifica la correttezza della condizione prima di ogni iterazione.
Editato: Correzione errore da autocompletamento
xinyiman:
Inoltre un consiglio, quando cancellate le cose partite sempre dall'ultimo elemento e poi tornate indietro. Qualcosa simile a
--- Codice: --- i:= Grid_Incassi.RowCount-1; while i>=0 do begin Grid_Incassi.Rows.Delete(i); Dec(i); end;
--- Termina codice --- Altrimenti quando cancelli l'id 0, id 1 diventa l'id 0 e tu con il ciclo cancelli l'id 1 mangiandoti una voce dalla cancellazione e così via.
Maxx:
Ciao xinyi. Hai fatto una prova su strada del ciclo che hai dato a me? Perché copiando pari-pari (Ctrl-C, Ctrl-V :) ) il tuo, dà gli stessi errori sintattici che dava a me:
urepdata.pas(69,27) Error: Wrong number of parameters specified for call to "GetRows" grids.pas(10623,28) Error: Found declaration: GetRows(LongInt):TStrings;
A questo punto non vorrei avere una versione sballata del pacchetto LCL. Grazie, as usual!
xinyiman:
No, io ho scritto quel codice per indicarti che la strada corretta per cancellare è il ciclo a ritroso. Non ho provato. Era solo un consiglio.
Comunque quando si hanno questi problemi è buona norma che chi chiede aiuto crei un piccolo sorgente che isola la problematica e lo alleghi alla richiesta d'aiuto. Così chi ti vuole aiutare possa eseguire lo stesso codice che usi tu.