Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 23:02   #1
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
Радость Операция в StringGrid

Подскажите плиз как мне в этом stringGrid'e количество товара умножить на цену по каждой строчке, а потом сложив ответ поместить в Edit (сумма)
Учесть что строчек может быть и больше, еще и пустые (помешают или нет - Не знаю!)
ыва.jpg
Может кто знает как удалить пустые строчки?
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 07.10.2010, 23:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
with Stringgrid do 
 for i:=1 to RowCount-1 do
   if cells[i,0]<>'' then begin
    summ:=summ+StrToIntDef(Cells[i,2],0)*StrToIntDef(Cells[i,3],0);
   end;
Здесь будут пропускаться непронумерованные строки, рассчитываться сумма (summ:integer)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.10.2010, 00:21   #3
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

что то не получается. Код работает если в гриде 2или более строки, но он складывает 3 столбец и 2 столбец последней заполненой строки
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 08.10.2010, 06:34   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Небольшая промашка - в индексации ячеек вначале указывается индекс колонки.
Чтобы удалить пустые строки, необходимо знать сколько не пустых строк (при условии, что все пустые строки находятся ниже).
Код:
K := 1; // K : Integer;
summ := 0;
with Stringgrid do begin
  for i := 1 to RowCount-1 do
    if cells[0, i]<>'' then begin
      summ := summ + StrToIntDef(Cells[2, i],0) * StrToIntDef(Cells[3, i],0);
      Inc(K);
    end ;
  if K > 0 then
    RowCount := K; //удаление пустых строк
end;

Edit1.Text := FloatToStrF(summ, ffFixed, 8, 2); //как один из вариантов

Последний раз редактировалось Прик; 08.10.2010 в 06:40.
Прик вне форума Ответить с цитированием
Старый 08.10.2010, 13:01   #5
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Круто, с вычислением получилось, но оказалось что удаление пустых строк работает не так как нужно. А можно ли чтобы оставлял одну пустую строку?
И еще, может кто знает почему у меня в dbgrid не добавляет вещественные числа (вида 123,00)?
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 08.10.2010, 13:40   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от grafgrial Посмотреть сообщение
но оказалось что удаление пустых строк работает не так как нужно.
А как нужно?
Цитата:
Сообщение от grafgrial Посмотреть сообщение
А можно ли чтобы оставлял одну пустую строку?
Можно.
Цитата:
Сообщение от grafgrial Посмотреть сообщение
И еще, может кто знает почему у меня в dbgrid не добавляет вещественные числа (вида 123,00)?
Никто не знает. Есть только предположение. Может быть в региональных настройках поколдовать надо. А может нет и причина в чем-то другом.
Прик вне форума Ответить с цитированием
Старый 08.10.2010, 14:00   #7
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Удаление работает нормально, я просто в том смысле что нужно оставить только одну пустую строчку. Если можно то как? Буду очень благодарен
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 08.10.2010, 14:38   #8
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

К - это счетчик заполненных строк, в цикле он накапливается процедурой Inc(K).
Достаточно свойству RowCount присвоить на одну строку больше:
Код:
 if K > 0 then
    RowCount := K+1;
Прик вне форума Ответить с цитированием
Старый 09.10.2010, 16:09   #9
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Спасибо, тема закрыта
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операция с panel grafgrial Общие вопросы Delphi 7 31.03.2010 20:35
операция SHL Anohorett Общие вопросы C/C++ 2 02.12.2009 23:27
Операция в Газе Роман Радер Свободное общение 2 31.12.2008 17:03
Операция Ы SASHA50 Microsoft Office Excel 10 25.04.2008 12:38
Операция сдвига? SkyDreamer Общие вопросы C/C++ 3 10.10.2007 08:20