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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2015, 13:05   #1
sg-ua
Пользователь
 
Регистрация: 13.04.2013
Сообщений: 21
Восклицание Цикл проверки

Не могу разобраться с циклом, есть Label, в нем есть текст, нужно что бы при нажатии на кнопку программа проверяла в listview есть ли такая запись Label.Text в Item.Text, если есть записываем что есть и завершаем цикл, если нет такой строчки то добавляем...
цикл в конце, но он не работает так как нужно, сначала не проходит весь цикл, а сразу выполняет условие.....помогите пожалуйста
Код:
procedure TForm2.ListView1Click(Sender: TObject);
var
  LItem: TListViewItem;
  ms: TMemoryStream;
  begin
     ListView2.ClearItems;
     MyQuery1.Active:=false;
     MyQuery1.SQL.Text:='select * from dish, type where type.id_type=dish.id_type and type.name_type= :parType';
     MyQuery1.Params.ParamByName('parType').Value:=ListView1.Selected.Text;
     MyQuery1.Active:=true;
     while (not myQuery1.Eof) do
          begin
            LItem := ListView2.Items.Add;
              LItem.Text:=MyQuery1.FieldByName('name_dish').AsString;
            LItem.Detail:='Состав: '+ MyQuery1.FieldByName('struktyre').AsString;
            IdHTTP1 := TIdHTTP.Create(Application);
            ms := TMemoryStream.Create;
            IdHTTP1.Get(MyQuery1.FieldByName('image').AsString , ms);
            LItem.Bitmap.LoadFromStream(ms);
            MyQuery1.Next;
          end;
     TabControl1.Next();
  end;
 
 procedure TForm2.ListView2Click(Sender: TObject);
 var mss: TMemoryStream;
begin
  MyQuery1.Active:=false;
  MyQuery1.SQL.Text:='select * from dish where name_dish= :parDish';
  MyQuery1.Params.ParamByName('parDish').Value:=ListView2.Selected.Text;
  MyQuery1.Active:=true;
  DishDetailName.Text:=MyQuery1.FieldByName('name_dish').AsString;
  IdHTTP1 := TIdHTTP.Create(Application);
  mss := TMemoryStream.Create;
  IdHTTP1.Get(MyQuery1.FieldByName('image').AsString , mss);
  DishDetailIcon.Bitmap.LoadFromStream(mss);
  DishDetailPrice.Text:='Ціна: '+MyQuery1.FieldByName('Ціна').AsString+' гривень';
  DishDetailСomposition.Text:='Состав: '+ MyQuery1.FieldByName('struktyre').AsString;
  TabControl1.Next();
end;
 
procedure TForm2.Button1Click(Sender: TObject);
var
  proverka: string;
  i: integer;
 
begin
 
 
  for i:=0 to ListView3.Items.Count-1  do
  begin
    if (ListView3.Items.Item[i].Text=DishDetailName.Text) then
    begin
      label1.Text:='yes';
    end
    else
    begin (ListView3.Items.Item[i].Text<>DishDetailName.Text)
      ListView3.Items.Add.Text:=DishDetailName.Text;
    end;
  end;
 
 
 
  end;

Последний раз редактировалось Stilet; 25.05.2015 в 14:37.
sg-ua вне форума Ответить с цитированием
Старый 25.05.2015, 13:32   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1) сначала считаем что нужного нет
Код:
      label1.Text:='NO';
2) потом проверяем ВСЕ
Код:
  for i:=0 to ListView3.Items.Count-1  do
  begin
    if (ListView3.Items.Item[i].Text=DishDetailName.Text) then
    begin
      label1.Text:='yes';
    end
 end;
3) а теперь ДЕЛАЕМ то что хотим в зависимости от результатов проверки
Код:
   if label1.Text='NO' then begin
      ListView3.Items.Add.Text:=DishDetailName.Text;
    end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать процедуры для “Цикл For ... Next ” и «Цикл Do ... Loop» по ниже приведенному условию Кристина_Патачиц Microsoft Office Excel 3 17.04.2013 17:01
Не работает цикл проверки на наличие неверных символов artemavd Общие вопросы Delphi 39 17.09.2010 04:55
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34