Привет, Гость! Регистрация RSS
Пятница, 03.05.2024
Главная » Файлы » Основные файлы сайта

Меню для ресторана
[ Скачать с сервера (171.9 Kb) ] 19.09.2012, 23:55

Создать приложение с использованием следующих базовых компонентов:


Рабочее приложение


Проектируемое  приложение

Задаем Обработчики событий:

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
    if CheckBox1.Checked then                     //Если покупаемтогда
      begin
        RadioGroup1.Enabled := true;                       //активен выбор
      end
    else
        RadioGroup1.Enabled := false;                    //иначе никакого выбора 
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
    if CheckBox2.Checked then
    begin
        RadioGroup2.Enabled := true;
    end
    else
        RadioGroup2.Enabled := false;
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
begin
    if CheckBox3.Checked then
    begin
        RadioGroup3.Enabled := true;
    end
    else
        RadioGroup3.Enabled := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    RadioGroup1.Enabled := false;
    RadioGroup2.Enabled := false;
    RadioGroup3.Enabled := false;
    Label2.Caption := ' ';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    Perv, Vtor, Tret, Itog: Real;
begin
    Perv:=0;
    Vtor:=0;
    Tret:=0;
    if CheckBox1.Checked then
    begin
        case RadioGroup1.ItemIndex of
            0: Perv := 3.55;
            1: Perv := 3.25;
            2: Perv := 5;
        end;
    end;
    if CheckBox2.Checked then
    begin
        case RadioGroup2.ItemIndex of
            0: Vtor := 15;
            1: Vtor := 5;
            2: Vtor := 3.5;
        end;
    end;
    if CheckBox3.Checked then
    begin
        case RadioGroup3.ItemIndex of
            0: Tret := 8;
            1: Tret := 3;
            2: Tret := 5;
        end;
    end;
    Itog:=Perv+Vtor+Tret;
    if Itog =0 then
        Label2.Caption:='Вы ничего не заказали...'
    Else
        Label2.Caption:='Вы заказали на '+FloatToStr(Itog)+' руб.'; 
end;
end.

Подпишись, чтобы получать свежие исходники!
Нравится
Категория: Основные файлы сайта | Добавил: Dark_Green | Теги: Label1, ресторан, RadioGroup1, CheckBox1, меню
Просмотров: 10307 | Загрузок: 1907 | Комментарии: 20 | Рейтинг: 5.0/5

Другие примеры
Всего комментариев: 20
1 Gio  
0
как реализовать в меню, допустим 2 борща?в нинешном варианте рассчитано так, что на каждого посетителя надо заного считать, если второй или третий захочет тоже блюдо,что и первый.

2 Dark_Green  
0
Я кажется понял Вас. Если Вы хотите добавить функцию выбора нескольких порций одного блюда, то Вам следует добавить edit'ы рядом с каждым блюдом. Это для того, чтобы клиент указывал количество блюда. Для реализации достаточно умножить цену блюда на рядом стоящий edit. Например:
case Radiogroup1.itemindex of 0: perv:=3.55*strtoint(edit1.text); ... end;

3 Gio  
0
спасибо большое за подсказку. очень интересный сайт с примерамы разнообразних программ, надеюсь не забросите это дело и обязательно ресурс станет популярным. и еще если можно вопрос: можно сделать так, чтобы при нажатий edit, появлялось что то наподобые выртуальной клавиатуры, но только с цифрами и с средствами делфи, без использования сторонных програм.

4 Dark_Green  
0
сайт только начинает развиваться, так что все впереди еще!

Цитата
с средствами делфи
с какими именно средствами?
А вообще чтобы сделать на подобии виртуальной клавиатуры, то Вам следует немного потрудиться. Могу привести как вариант, создать панель со всеми необходимыми кнопками и при запуске программы сделать её невидимой (panel1.visible:=false;). А при нажатии на edit сделать эту панель снова видимой. (прописать в событии OnChange код: panel1.visible:=true;)

5 Gio  
0
с панелю хорошее решение. еще одно полезное свойство можно ввести в программу, которое будет полезно тем кто меню разрабатывает. к примеру клиент хочет заказать из 1-их блюд, Борщ и Суп с клецками. в RadioGroup есть возможность множественного выбора, а не одной позиций?или такое только в checklistbox возможно?но у checklistbox вроде нет такой функций чтобы расстояние между колонками регулировать и все наименования блюд будут очень близко к друг другу.

6 Dark_Green  
0
В таком случае можно взять checkbox'ы и поместить их в groupbox, а потом увеличить высоту каждого checkbox'a. Надюсь, Вы понимаете, тогда Вам придется переписать код программы.

7 Gio  
0
возможно к checkbox-ам применить "case of" или наподобие код, чтобы узнать какой checkbox отмечен галочкой? а не узнавать оператором "if checbox1 and chekcbox2" и так каждый отдельный checkbox.

8 Dark_Green  
0
Ну если и есть другой способ, то мне это неизвестно. так что я бы тут без условного оператора if не обошелся бы...

9 Gio  
0
спасибо вам за помощь.

10 Gio  
0
Нужна ваша помощь опять. Спрашивал на форуме программистов, но никто не смог помочь. Может вы будете знать,и если не затруднит подскажете... делаю меню ресторана. на форме имеется 3 штуки 'TPanel' (это как бы столики) под номерами 1,2,3 и stringgrid, в который при нажатий кнопки отображается результат подсчета, наименования, дата и время... Задача в том, чтобы хранить содержимое stringgrid в файле или памяти . То есть нажимая на одну из трех TPanel, допустим в первый номер 1, содержимое stringgrid должно стать пустим если оно заполнено, после этого выведенный результат подсчета в stringgrid должен быть привязан к панели номер 1. Далее при нажатий панели номер 2, содержимое stringgrid опять должно стать пустим и новый результат подсчета должен привязатся к панели номер 2. После этого если нажать на панель 1, запомненное содержание должно отобразится уже не делая stringgrid пустим, при нажатий на панель 2, должно отобразится ее содержание и т.д. Как можно это реализовать так или по другому, чтобы были заказы по столикам? Это нужно для того чтобы при заказе с одного столика, может придти клиент на другой столик и надо будет принять его заказ, но при этом предыдущий столик захочет добавить что то к заказанному, и так держать столики в памяти до оплаты.

11 Dark_Green  
0
Довольно интересная задумка. Я лично решил бы эту проблему таким образом:
1. Добавил бы глобальную переменную ( пусть будет nstol: integer)
2. На каждый панель в собитие OnClick прописал бы след. код:
nstol:=N; (где N любое число соответствующее номеру панели, т.е. стола)
3. В свойствах OnClick всех внутри лежащих компонентов каждой панели необходимо выбрать событие OnClick
соответсвующей панели.

4. И последнее, процедуру Button1Click подкорректировал бы так:
case nstol of
1: begin Операция_1 end;
2: begin Операция_2 end;
...
N: begin Операция_N end;
end;
Где Операция_1 – расчет для стола 1, Операция_N – соответственно для стола N. Далее спокойно можно выводить результат в StringGrid'е.
Попробуйте, если что не понятно спрашивайте. А насчет сохранения данных каждого стола я не понял, зачем это надо.

12 Gio  
0
http://i46.fastpic.ru/big....59e.png
Спасибо, но это не совсем то,что я хотел. Я хочу чтобы результат стола 1 сохранялся (пока не оплачено) после того как нажму на стол 2. Ведь первый столик может добавить заказ.
это исходник, но он в Delphi XE3 http://rghost.net/45264458

13 Dark_Green  
0
В общем у нас версии Делфи не сошлись. Я думаю, что тебе придется данные сохранять в трех xls документах и при нажатии на панель эти данные загружались в стринггрид как ранее не рассчитанные заказы. Или же можно обойтись с ini-файлами, которые восстанавливали бы значения для каждого стола. В таком случае при нажатии на стол1 все данные в эдитах вернутся, и человек просто добавляет кол-во какого-то блюда.

14 Gio  
0
Хорошая идея хранить показатели Edit, а не стринггрид. Толко возможно чтобы в один ini файл все вводить, а не использовать десятки ini файлов, если столов много.

15 Dark_Green  
0
Конечно можно. В таком случае придется сначала условие поставить. К примеру так:
case nstol of
1: begin INI.WriteString('Stol_1','edit1',Edit1.text); ... end;
2: begin INI.WriteString('Stol_2','edit1',Edit1.text); ... end;
...
N: begin INI.WriteString('Stol_N','edit1',Edit1.text); ... end;
end;
И то же самое для чтения. Тут принцип хоть и громоздкий, но понятен, надеюсь. smile

16 Gio  
0
Можно немного подробней на примере 2 едитов и 1 панели,и еще 2 едитов и 2 панели.

17 Dark_Green  
0
Насчет  получения nstol я объяснял выше:

Цитата
2. На каждый панель в собитие OnClick прописал бы след. код: 
nstol:=N; (где N любое число соответствующее номеру панели, т.е. стола)
 Вот и дальше сравниваешь значение этой переменной и делаешь соответствующие операции.
var INI.TInifile;
begin
INI:=TiniFile.Create(extractfilepath(paramstr(0))+'INI.ini');

case nstol of 
1: begin INI.WriteString('Stol_1','edit1',Edit1.text); INI.WriteString('Stol_1','edit2',Edit2.text); ... end; 
2: begin INI.WriteString('Stol_2','edit1',Edit1.text); INI.WriteString('Stol_2','edit2',Edit2.text); ... end; 
... 
N: begin INI.WriteString('Stol_N','edit1',Edit1.text); ... end; 
end;
end;
 
Так понятнее?
Ну а для чтение данных пишешь код аналогичным образом.
var INI: TIniFile;
begin
INI:=TiniFile.Create(extractfilepath(paramstr(0))+'INI.ini');
case nstol of 
1: begin edit1.text:=ReadString('Stol_1','edit1','0'); edit2.text:=ReadString('Stol_1','edit2','0'); ... end; 
2: begin edit1.text:=ReadString('Stol_2','edit1','0'); edit2.text:=ReadString('Stol_2','edit2','0'); ... end; 
... 
N: begin edit1.text:=ReadString('Stol_N','edit1','0'); ... end; 
end; 
end;

Ну вот, примерно так. Дальше, думаю, сам сообразишь.

18 Gio  
0
nstol указал как глобальную переменную и при клике панели присваивается номер стола. Соответственно после case nstol of. если nstol равен 1, то должна записаться первая строка
1: begin edit1.text:=ReadString('Stol_1','edit1','0'); edit2.text:=ReadString('Stol_1','edit2','0'); ... end; если nstol равен 2, то вторая строка
2: begin edit1.text:=ReadString('Stol_2','edit1','0'); edit2.text:=ReadString('Stol_2','edit2','0'); ... end;
правильно понял?
тогда не получается в одну строку поместии это
1: begin edit1.text:=ReadString('Stol_1','edit1','0'); edit2.text:=ReadString('Stol_1','edit2','0'); пишет ошибку.
приходится делить на две строки,но тогда nstol равны 1, прочитает первую строку.

20 Dark_Green  
0
в любом случае прочитает все между begin и end'ом.

19 Gio  
0
разобрался все таки:)
осталось только тоже самое про checkbox-и, записать их значения в ini файл и вернуть.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]