Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.05.2009, 23:17
mma mma вне форума
Прохожий
 
Регистрация: 03.12.2007
Сообщения: 19
Репутация: 10
По умолчанию stringgrid-суммирование столбцов

У меня получилось, что суммируется только один столбец, создает еще строку, в ней пишет результат, а очень хочу, чтобы он отсуммировал каждый столбец и под каждым из столбцов выдавл его сумму.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
sum: integer;
a:Longint;
begin
sum:=0;
for a:=0 to StringGrid1.RowCount-1 do begin
sum:=sum+StrToInt(StringGrid1.Cells[0,a])
end;
StringGrid1.rowCount:=StringGrid1.rowCount+1;
StringGrid1.Cells[0,a]:=FloatToStr(sum);
Form1.StringGrid1.Height:= Form1.StringGrid1.Height+ 21;
end;
Подскажите пожалуйста. Спасибо.
Ответить с цитированием
  #2  
Старый 15.05.2009, 00:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,044
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Соответственно, тебе надо не одну переменную для сумм, а несколько.
Ответить с цитированием
  #3  
Старый 15.05.2009, 08:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Делаете так:
1. Увеличиваете количество строк на 1. Последняя строка будет содержать итоги всех столбцов.
2. Делаете два цикла. Первый обходит столбцы, второй строки. Во втором цикле накапливаете сумму в последней ячейке данного столбца. Никаких промежуточных переменных не надо.
А вот собственно реализация:
Код:
 StringGrid1.RowCount := StringGrid1.RowCount + 1;
 for Col := 0 to StringGrid1.ColCount-1
 do begin
    StringGrid1.Cells[Col,StringGrid1.RowCount-1] := '0';
    for Row := 0 to StringGrid1.RowCount-2
    do StringGrid1.Cells[Col,StringGrid1.RowCount-1] := Format('%6.2f',[StrToFloat(StringGrid1.Cells[Col,StringGrid1.RowCount-1]) + StrToFloat(StringGrid1.Cells[Col,Row])]);
    end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 15.05.2009 в 10:11.
Ответить с цитированием
  #4  
Старый 15.05.2009, 19:52
mma mma вне форума
Прохожий
 
Регистрация: 03.12.2007
Сообщения: 19
Репутация: 10
По умолчанию

Всё очень чудно работает ! Спаасиибоо ВАМ, СТРАДАЛЕЦЪ!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter