Forum > LCL

Problema con cella vuota Stringgrid

(1/3) > >>

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:

--- Codice: ---
unit1.pas(49,12) Error: Incompatible types: got "TTranslateString" expected "LongInt"

--- Termina codice ---

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;

--- Termina codice ---
ciao Brunello

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa