Buondi.
Con questo codice aggiungo un numero di righe nel componente stringgrid.
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;
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
grazie per la risposta.
Però se non converto il valore dell'edit e lascio
mi da quest'altro errore:
unit1.pas(49,12) Error: Incompatible types: got "TTranslateString" expected "LongInt"
per evitare che nel tedit vengano inseriti dati diversi puoi usare questo codice
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #08, #13]) then
key := CHR(0);
end;
ciao Brunello
Eh lo so ma non mi piace l'idea di dover fare due operazioni, ovvero prima inserire un numero nell'edit e poi cliccare un tbutton per avviare il comando. :)
Cosi facendo si presentano due problemi:
- Il codice viene lanciato anche quando il TEdit.Text è vuoto (quando l'utente cancella il contenuto del text). Facilmente risolvibile con un if TEdit.Text <> '' then
- Se da te permesso, per i numeri formate da due cifre (es. 12), verrà richiamato quell'evento due volte (prima per 1 poi per 12).
Esattamente.
Allego l'intero progetto, grazie :)
Il problema è in questo codice:
procedure DisegnaLinea(GridOrigine: TstringGrid; out SerieGrafico:TlineSeries);
var
x,y: double;
n, i: integer;
begin
SerieGrafico.clear;
n:=GridOrigine.RowCount;
if n>1 then
begin
for i:=1 to n-1 do
begin
x:=StrTofloat(GridOrigine.Cells[1,i]);
y:=StrToFloat(GridOrigine.Cells[2,i]);
SerieGrafico.AddXY(x,y,IntToStr(i));
end;
end;
end;
Precisamente nei due StrTofloat. Infatti non controlli che nella cella ci sia scritto effettivamente qualcosa.
Hai due soluzioni:
A Prima di recuperare i valori x e y, effettui il controllo che ci sia effettivamente un numero nelle due celle celle dell'attuale riga (se nel caso non ci sia o prendi un valore di default o passi alla riga successiva segnalando l'errore all'utente), prima di disegnare il grafico
B Nel momento che crei le nuove righe, per ogni cella gli dai un valore di default (per es. 0)