Cita:
entonces por que si no uso StrToIntDef en vez de StrToInt en el siguiente fragmento de codigo aparece el error '' is no a integer value?.
|
Hola Paula.
Eso sucede por que
Trim no produce ningún efecto cuando se aplica a una celda vacía ya que no tiene 'nada' para quitar. Es decir que tanto
como
lanzarán una excepción.
El uso que haces de
StrToIntDef es correcto, incluso más simple que
TryStrToInt (aunque igual realiza la tarea).
Podrías eso sí, ahorrarte una línea y un begin/end usando
Trim dentro de
StrToIntDef:
Código Delphi
[-]
for j := 1 to RowCount - 1 do
suma:= suma + StrToIntDef(Trim(Cells[i,j]), 0);
Creo que te quedaría de este modo:
Código Delphi
[-]
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
CanSelect := ACol <> StringGrid1.ColCount - 1; end;
procedure TForm1.Button1Click(Sender: TObject);
var
c , f, suma: integer;
begin
with StringGrid1 do
begin
for f:= FixedRows to RowCount - 1 do begin
suma:= 0;
for c:= FixedCols to ColCount - 2 do suma:= suma + StrToIntDef(Trim(Cells[c, f]), 0); Cells[ColCount-1, f]:= IntToStr(suma) end
end
end;
Saludos.