|
#1
|
|||
|
|||
Stringgrid
День добрый. Столкунлся с такой проблемой как посчитать сумму в стринггриде. Вообщем считать надо в 5 столбце, а количество строк может меняца. Каким методом это сделать?
|
#2
|
|||
|
|||
Код:
function TForm1.CalcSumm: Extended; var I : Integer; E : Extended; begin Result := 0; for I := 1 to StringGrid1.RowCount-1 do //c 1, если есть заголовок if TryStrToFloat(StringGrid1.Cells[4, I], E) then //индекс "4" - пятая колонка Result := Result + E; end; Не забывайте делать резервные копии |
#3
|
|||
|
|||
СПАСИБО БОЛЬШОЕ SAN-46! работает!
есть еще вопрос: у меня в ячейку можно вводить данные, так как мне сделать чтобы он не ругался когда я ему вместо "," ввожу "."?? т.е. можно сделать чтобы и так и так было правильно? это наверное свойство определенной ячейки надо менять? |
#4
|
|||
|
|||
Код:
function TForm1.CalcSumm: Extended; var I, K : Integer; E : Extended; FS : TFormatSettings; S : String; begin Result := 0; GetLocaleFormatSettings(0, FS); FS.DecimalSeparator := '.'; for I := 1 to StringGrid1.RowCount-1 do begin S := StringGrid1.Cells[4, I]; K := Pos(',', S); if K > 0 then S[K] := '.'; if TryStrToFloat(S, E, FS) then Result := Result + E; end; end; Не забывайте делать резервные копии |
#5
|
|||
|
|||
Цитата:
Я сделал на создание формы разделитель. А как сделать так, чтобы еще и при операциях с числами у которых разделитель '.' не вылазила ошибка? |
#6
|
|||
|
|||
А что за "операции с числами"?
В Delphi в числовых константных выражениях целая и дробная части должны разделяться точкой (это когда в тексте программы число указывается в явном виде). А так же при преобразовании числа в строку и наоборот. Больше нигде при операциях с числами Delphp не оперирует разделителями, ни точками, ни запятыми. Надо уточнить вопрос. Не забывайте делать резервные копии |