carmelo81:
Buondi. Con questo codice aggiungo un numero di righe nel componente stringgrid.
--- Codice: ---
procedure TForm1.Edit1Change(Sender: TObject); var i,v : integer; begin v:=strtoint(edit1.Text); stringgrid1.RowCount:=v+1; for i:=1 to stringgrid1.RowCount-1 do stringgrid1.Cols[0][i]:=inttostr(i); end;
--- Termina codice ---
Quando scrivo un numero in una cella e passo alla cella successiva, esce il messaggio di errore - " " is an invalid float - evidentemente perchè la cella successiva è ancora vuota. E cosi per ogni cella.
Suggerimenti per poter risolvere?
Grazie mille Carmelo
Stilgar:
Rileggi meglio l'errore ;) Secondo me, il problema sta nel codice :
--- Codice: --- v:=strtoint(edit1.Text);
--- Termina codice --- La cella centra poco o nulla in questi casi. Avresti al massimo un errore sulla colonna o sulla riga inesistenti. Qui il problema, sempre secondo me, è che nel campo edit1 non c'è nulla da convertire, quindi stringa non valida (nel senso che non ha caratteri validi per la conversione).
Stilgar
carmelo81:
grazie per la risposta. Però se non converto il valore dell'edit e lascio
--- Codice: --- v:=(edit1.Text) --- Termina codice --- mi da quest'altro errore:
bonmario:
Ciao, Stilgar intendeva dire che quando fai la conversione con StrToInt, la cesella Edit1 contiene qualcosa che non è un numero, quindi la conversione sbaglia.
Potresti provare a sostituire StrToInt con TryStrToInt che è spiegata qui http://delphi.about.com/library/rtl/blrtlTryStrToInt.htm in modo da potere emttere un errore se l'utente ha scritto nella casella qualcosa che non è un numero. In alternativa, ma la cosa è un po' più complicata, potresti testare ogni tasto premuto dall'utente nell'edit, e fare in modo si accettare solo i numeri.
Ciao, Mario
brunello:
per evitare che nel tedit vengano inseriti dati diversi puoi usare questo codice
--- Codice: --- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9', #08, #13]) then key := CHR(0); end;