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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 06:32   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию Перемножение столбцов в StringGrid

Доброе утро! Мне нужно построчно умножить значения в столбце В на соответствующее ему значение в столбце А и записать результат в столбец В. Например, есть такие записи:
КОЛ_ВО ЦЕНА
1 300
2 200
4 500
после перемножения должно получиться так:
КОЛ-ВО ЦЕНА
1 300
2 400
4 2000
пытался как-то так цикл записать:
Код:
procedure TForm1.btn1Click(Sender: TObject);
var
  col,row: Integer;
begin
  for row:=2 to Form1.RzStringGrid1.RowCount - 1 do
  begin
   Form1.RzStringGrid1.Cells[2,row]:=IntToStr(StrToInt(Form1.RzStringGrid1.Cells[2,row])*StrToInt(Form1.RzStringGrid1.Cells[1,row]));
  end;
end;
но то работает, то нет, хз, вообщем неправильный код. Подскажите как надо. Заранее спасибо.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.12.2010, 07:24   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Опять не выспался? Код верный. Видимо просто нужно обратить внимание на содержимое ячеек. Проверь их содержимое перед умножением.
Баламут вне форума Ответить с цитированием
Старый 28.12.2010, 07:40   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Да не то, чтобы не выспался, просто не кодил нормально давно . ДР же было Проверку на пустоту? Ну, написал так:
Код:
procedure TForm1.btn1Click(Sender: TObject);
var
  col,row: Integer;
begin
  for row:=2 to Form1.RzStringGrid1.RowCount do
  begin
   if (Form1.RzStringGrid1.Cells[1,row] <> '') and
      (Form1.RzStringGrid1.Cells[2,row] <> '') then
      begin
       Form1.RzStringGrid1.Cells[2,row]:=IntToStr(StrToInt(Form1.RzStringGrid1.Cells[2,row])*
                                                  StrToInt(Form1.RzStringGrid1.Cells[1,row]));
      end;
  end;
end;
Если заполнена первая строка, то никакой реакции на нажатие кнопки. Если добавляю еще одну строку, то при нажатии на кнопку происходит перемножение в первой строке, а во второй нет. Во как.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.12.2010, 09:05   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

А почему for row:=2 ? В первой строке шапка ?
to Form1.RzStringGrid1.RowCount do - нумерация же с нуля !
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  col,row: Integer;
begin
  for row:=1 to Form1.StringGrid.RowCount-1 do
  begin
   if (Form1.StringGrid.Cells[0,row] <> '') and
      (Form1.StringGrid.Cells[1,row] <> '') then
      begin
       Form1.StringGrid.Cells[1,row]:=IntToStr(StrToInt(Form1.StringGrid.Cells[1,row])*
                                                  StrToInt(Form1.StringGrid.Cells[0,row]));
      end;
  end;
end;
У меня пока не установлены Raize компоненты так что с обычным StringGrid`ом все работает ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 28.12.2010, 09:12   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
А почему for row:=2 ?
А какое это имеет значение? Ну используются 2 первые строки под заголовки... Я и с raise компонентом не смог добиться, чтобы не заработало
Баламут вне форума Ответить с цитированием
Старый 28.12.2010, 10:22   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

в смысле у тебя работает?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.12.2010, 12:18   #7
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
в смысле у тебя работает?

В прямом! Кинул грид на форму, добавил батон и в его обработчике клика прописал твой код. Тест ошибок пока не выявил. Потому и говорю, что кроме некорректных значений причин для неправильной работы пока не вижу.
Баламут вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с шириной столбцов в StringGrid Риндера Компоненты Delphi 13 09.11.2010 18:11
Удаление строк и столбцов в StringGrid Sarumjan Общие вопросы C/C++ 2 17.10.2010 20:38
Закрашивание столбцов в Stringgrid ertar Общие вопросы Delphi 3 19.02.2009 00:31
StringGrid - удаление строк и столбцов ReM Общие вопросы Delphi 4 22.12.2008 19:17
Вывод столбцов StringGrid в Edit ***СкаЙ*** Помощь студентам 1 04.05.2007 08:16