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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2012, 12:45
Дикоша Дикоша вне форума
Прохожий
 
Регистрация: 05.04.2012
Сообщения: 9
Репутация: 10
По умолчанию Список

Здравствуйте! Помогите пожалуйста написать прогу.
Есть список продуктов, при нажатии на нужные продукты, эти продукты должны показываться в другом(чистом) списке и при нажтии на кнопку снизу этого списка должна выходить форма, где находиться блюдо котор.можно приготовить с помощью этих продуктов.
Ответить с цитированием
  #2  
Старый 18.04.2012, 13:01
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Делаешь список, грузишь в него все продукты. В событии OnClick переносишь выделенный элемент во второй список. При нажатии кнопки идет перебор всех блюд, при этом смотришь состав - если есть хоть одно не соответствие, значит не получится это блюдо (критерии можешь немного изменить: например, указывать то, чего не хватает или что будет лишним). Все подходящие блюда выводишь в третий список.

Думаю, что нужна БД для хранения состава блюд.

P.S. Пролог с этим делом на УРА справится
Ответить с цитированием
  #3  
Старый 18.04.2012, 14:01
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

на форме 2 лист бокса и 3 конки и как-то так:
p.s. Фантазия у меня конечно больная
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:=ListBox1.Items[ListBox1.ItemIndex];
if ListBox2.Items.IndexOf(s)<0 then
  begin
    ListBox2.Items.add(s);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox2.Items.Delete(ListBox2.ItemIndex);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Clear;
if (pos('Водка',ListBox2.Items.Text)>0 )
  and  (pos('Пиво',ListBox2.Items.Text)>0 )
then
  memo1.Lines.Add('ЕРЖЖЖЖЬЬЬЬ');

if (pos('Водка',ListBox2.Items.Text)>0 )
  and  (pos('Шампанское',ListBox2.Items.Text)>0 )
then
  memo1.Lines.Add('СЕверноЕ сияНие!!');

if memo1.Lines.Text='' then  memo1.Lines.Add('ХЗ что это такое :)');


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.items.add('Пиво');
ListBox1.items.add('Водка');
ListBox1.items.add('Вино');
ListBox1.items.add('Коньяк');
ListBox1.items.add('Мартини');
ListBox1.items.add('Виски');
ListBox1.items.add('Шампанское');

memo1.Clear;
end;
end.
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
Этот пользователь сказал Спасибо friz за это полезное сообщение:
Дикоша (18.04.2012)
  #4  
Старый 18.04.2012, 15:38
Дикоша Дикоша вне форума
Прохожий
 
Регистрация: 05.04.2012
Сообщения: 9
Репутация: 10
По умолчанию

-все правильно..но мне надо как то так. но здесь кажется какая та ошибка? message вместе с формой открывается..(
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
 memo1.Clear;
if (pos('Водка',ListBox2.Items.Text)>0 )
  and  (pos('Пиво',ListBox2.Items.Text)>0 )
then form2.show    ;

if (pos('Водка',ListBox2.Items.Text)>0 )
  and  (pos('Шампанское',ListBox2.Items.Text)>0 )
then   form3.show
else showMessage('Не хватает ингредиентов или нет такого блюда');
  
end;

Последний раз редактировалось Admin, 19.04.2012 в 20:26.
Ответить с цитированием
  #5  
Старый 18.04.2012, 16:21
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Видимо, у тебя есть ВОДКА и ПИВО, а ШАМПАНСКОГО нет, поэтому срабатывает первое условие (форма открывается), и else второго условия (сообщение). Тебе надо из функции выходить после первого же истиннгого условия.
Ответить с цитированием
  #6  
Старый 18.04.2012, 18:31
Дикоша Дикоша вне форума
Прохожий
 
Регистрация: 05.04.2012
Сообщения: 9
Репутация: 10
По умолчанию

ууппсс это как? я новичок...и не так уж разбираюсь...)
Ответить с цитированием
  #7  
Старый 18.04.2012, 18:32
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

так примерно
Код:
procedure TForm1.Button3Click(Sender: TObject);
var nomerRecepta:integer;
begin
memo1.Clear;
nomerRecepta:=0;

if (pos('Водка',ListBox2.Items.Text)>0 )
and (pos('Пиво',ListBox2.Items.Text)>0 )
then nomerRecepta:=1 ;

if (pos('Водка',ListBox2.Items.Text)>0 )
and (pos('Шампанское',ListBox2.Items.Text)>0 )
then nomerRecepta:=2 ;

case nomerRecepta of
1:form2.show;
2:form3.show;
else showMessage('Не хватает ингредиентов или нет такого блюда');
end;

end;
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #8  
Старый 18.04.2012, 19:00
Дикоша Дикоша вне форума
Прохожий
 
Регистрация: 05.04.2012
Сообщения: 9
Репутация: 10
По умолчанию

нет все равно если там водка, пиво и коньяк то все равно форму2 открывает.а мне надо чтобы в этом случаи ошибку показывало...
Ответить с цитированием
  #9  
Старый 18.04.2012, 20:32
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Мало проверить наличие необходимых элементов, нужно еще и не забыть про исключение ненужных (в примере Коньяк исключается)
Код:
if (pos('Водка',ListBox2.Items.Text)>0 )
and (pos('Пиво',ListBox2.Items.Text)>0 )
and (pos('Коньяк',ListBox2.Items.Text)=0)
then nomerRecepta:=1 ;

if (pos('Водка',ListBox2.Items.Text)>0 )
and (pos('Шампанское',ListBox2.Items.Text)>0 )
and (pos('Коньяк',ListBox2.Items.Text)=0)
then nomerRecepta:=2 ;
Ответить с цитированием
  #10  
Старый 19.04.2012, 12:07
Дикоша Дикоша вне форума
Прохожий
 
Регистрация: 05.04.2012
Сообщения: 9
Репутация: 10
По умолчанию

Спасибооооо все выходит!
Ответить с цитированием
  #11  
Старый 19.04.2012, 18:40
PS11011010 PS11011010 вне форума
Новичок
 
Регистрация: 30.03.2012
Сообщения: 98
Репутация: 282
По умолчанию

Цитата:
Сообщение от Дикоша
Спасибооооо все выходит!
Для спасибо кнопка есть)
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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