![]() |
|
|
|
|
#1
|
|||
|
|||
|
День добрый. Столкунлся с такой проблемой как посчитать сумму в стринггриде. Вообщем считать надо в 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 не оперирует разделителями, ни точками, ни запятыми. Надо уточнить вопрос. |