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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 05:27   #1
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию StringGrid.

Начинаю вводить текст с 1 рядка 2 колонки.
1 ряд ввожу название ингредиентов;
2 ряд - цена;
эти строки я заполняю таблицей что весит у меня в DBGrid
сначала заполняю одну таблицу с ингредиентами.
потом когда заполняю вторую таблицу(с DBGrid). И цену на ряд ниже заполняю.
Проверяю, если ингредиенты одинаковые то я не вписываю его название заново. А пишу цену в столбик под таким же только с первой таблицы (с DBGrid) .
по идее у меня такой алгоритм: если одинаковое беру только цену, нет пишу всё.
вот мой код но он у меня не работает корректно. он первый ингредиент норм сравнивает а остальные не сравнивает. И если во второй таблице меньше значений то он последним значением дописывает столько раз нужно до размеров первой.
Код:
procedure TForm1.CB1Change(Sender: TObject);
var i,i_:integer;

begin
  SG1.Cells[SG1.Col,SG1.Row]:=CB1.Items[CB1.ItemIndex];
  CB1.Visible:=False;
  SG1.SetFocus;
  DataModule2.ADOQuery1.Close;
  DataMOdule2.ADOQuery1.Parameters.ParamByName('name').Value:=CB1.Items[CB1.ItemIndex];
  DataModule2.ADOQuery1.Open;
  DataModule2.ADOQuery1.Active:=true;
  DataMOdule2.ADOQuery1.First;
   i:=iCol;
  while (not(DataModule2.ADOQuery1.Eof)) do
   begin
    if flag=true then   begin
                       for i_:=2 to iCol do
                         if DataMOdule2.ADOQuery1.Fields[0].AsString=SG1.Cells[i_,1] then
                             begin
                              SG1.Cells[i_,jRow]:=DataModule2.ADOQuery1.Fields[1].AsString ;
                               DataMOdule2.ADOQuery1.Next;
                             end
                          else
                           begin
                              SG1.Cells[i,1]:=DataMOdule2.ADOQuery1.Fields[0].AsString;
                              SG1.Cells[i,jRow]:=DataModule2.ADOQuery1.Fields[1].AsString;
                              inc(i);
                              DataMOdule2.ADOQuery1.Next;
                           end;
                        end
               else
                  begin
                     SG1.Cells[i,1]:=DataMOdule2.ADOQuery1.Fields[0].AsString;
                     SG1.Cells[i,jRow]:=DataModule2.ADOQuery1.Fields[1].AsString;
                     inc(i);        DataMOdule2.ADOQuery1.Next;
                  end;


   end;
   flag:=true;
 iCol:=i;
end;
В файле скрин того что получаеться.
Изображения
Тип файла: jpg Безымянный.jpg (106.8 Кб, 153 просмотров)
Антон Лысенко вне форума Ответить с цитированием
Старый 26.02.2013, 09:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Опиши функцию поиска съестного:
Код:
function ingry(name:string):Integer;
var i:integer;
begin result:=-1;
 with SG1 do
  for i:=2 to iCol do if [i_,jRow]=name then begin result:=i;exit;end;
end;
А в цикле используй эту функцию чтоб найти колонку:
Код:
 jCol=ingry(DataMOdule2.ADOQuery1.Fields[0].AsString);
 if jCol=-1 then дописать вправо
 else Sg.Cells[jCol,новая строка]:=DataModule2.ADOQuery1.Fields[1].AsString;
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2013, 01:14   #3
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Идея понятна?
Да понятно, спасибо!
Антон Лысенко вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid MAZADA Помощь студентам 3 31.05.2011 15:35
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
stringgrid kotopezzz Компоненты Delphi 0 08.02.2011 13:35
stringgrid Vitaliy3009 Общие вопросы Delphi 3 14.10.2009 16:59