Шаг 24.
Основные компоненты Delphi. Вкладка InterBase.
Создание приложения (окончание)

    На этом шаге мы закончим изложение алгоритма создания приложения.

    Создаем новую форму для обслуживания справочника фирм и назовем ее Form3. В свойство Caption пишем Справочник - фирмы. Сохраняем модуль под именем Unit4.

    Помещаем компоненты TDBGrid, TDBNavigator, два компонента TButton, TIBQuery, TDataSource. Для компонента TDBNavigator свойство VisibleButtons установите как на рисунке 3 22 шага.

    Свойство DataSet компонента TDataSource устанавливаем в IBQuery1. Свойство DataSource компонентов TDBGrid и TDBNavigator устанавливаем в DataSource1.

    Подключим модкль первой формы. Для этого выбираем пункт меню File | Use Unit, в появившемся окне выбираем модуль Выбираем Unit1 и нажимаем кнопку ОК. Это нужно для того, чтобы мы смогли подключить компонент IBQuery1 к компоненту TIBDatabase.

    В свойстве Database компонента IBQuery1 помещаем значение DM.IBDatabase1.

    Теперь заходим в свойство SQL этого же компонента. В окне Command Text Editor создаем следующий запрос:

    Select * from Firm 
    Order By Name;
(т.е. выбрать все данные из таблицы Фирмы, и отсортировать по названию фирмы).

    Щелкаем два раза по компонету IBQuery1. Щелкаем правой кнопкой мыши по появившемуся окошку и выбираем Add all fields, то есть добавляем все поля.

    После этого настроим отображение полей:

    Делаем активной форму Form1 и для пункта меню Справочники | Фирмы пишем код. Но предварительно нам надо подключить модуль Unit4; это делается с помощью пункта меню File | Use Unit.

    Обработчик выбора пункта меню Справочники | Фирмы имеет следующий вид:

  Form3:=TForm3.Create(self); 
  Form3. IBQuery1.Open; 
  Form3.ShowModal;

    Обработку событий OnClick для кнопок TButton ''+'' и ''-'', используемых для добавления и удаления фирм, реализуем аналогично описанному в 23 шаге.

    Форма Справочник - фирмы может выглядеть аналогично приведенной на рисунке 1.


Рис.1. Форма Справочник - фирмы

    Переходим на главную форму Form1 и помещаем компоненты TDBGrid, TIBQuery, TDataSource, три компонента TButton (рисунок 2).


Рис.2. Расположение компонентов на главной форме

    В свойство Database компонента IBQuery1 помещаем значение DM.IBDatabase1.

    Теперь заходим в свойство SQL этого же компонента и пишем в окне Command Text Editor следующий запрос:

  Select * From Sale,Tovar,Firm
  Where Sale.FIRMKOD=FIRM.FIRMID and
  Sale.TOVARKOD=Tovar.TOVARID;
(т.е. выбрать все данные по продажам каждого товара каждой фирмы.) Таким образом с помощью этого запроса мы связываем все три таблицы.

    Свойство DataSet компонента TDataSource устанавливаем в IBQuery1. А свойство DataSource компонента TDBGrid устанавливаем в DataSource1.

    Щелкаем два раза по кнопке "Открыть базу" и напишем простую процедуру аутентификации.

procedure TForm1.ButtonlClick(Sender: TObject);
var
s: string;
begin
  //Спрашиваем пароль входа
  s:=InputВох('Аутентификация','Введите пароль:',");
  //Если пароль правильный, то...
  ifs='nadi' then
  begin
    //Открываем базу продаж
    IBQuery1.Open;
    //Кнопку "Открыть базу" делаем недоступной
    Button1.Enabled:=false; 
  end 
  else //Если пароль неправильный...
    ShowMessage('Henpaвильный пароль!');
end;

    Для кнопки Продать пишем:

  Form4:=TForm4.Create(self);
  Form4. ShowModal;

    Теперь создадим форму для реализации продаж. Назовем ее Form4, сохраняем под именем Unit5. Расположим на ней компоненты, как показано на рисунке 3.


Рис.3. Форма Продажи

    Выполняем пункт меню Project | Option и отменяем автоматическое создание формы.

    Для кнопки с тремя точками, расположенной напротив слова "Фирма", пишем:

  Form3:=TForm3.Create(self);
  Form3.IBQuery1.Open; 
  //Делаем доступной кнопку "Выбрать"
  Form3.Button1.Enabled:=True; 
  Form3.ShowModal;

    Выбираем форму Form3 и для кнопки Выбрать пишем:

procedure TForm3.ButtonlClick(Sender: TObject); 
begin
  //Запоминаем название организации и его код, код пишем в свойство Tag
  Form4.Editl.Text:=IBQuery1NAME.Value; 
  Form4.Editl.Tag:=IBQuery1FIRMID.Value; 
  Form3.Close; 
end;

    Выбираем форму Fоrm4. Для кнопки с тремя точками, расположенной напротив слова "Товар", пишем:

  Form2:=TForm2.Create(self); 
  Form2.IBQueryl.Open; 
  //Делаем доступной кнопку "Выбрать "
  Form2.Button1.Enabled:=True; 
  Form2.ShowModal;

    Выбираем форму Form3 и для кнопки Выбрать пишем:

procedure TForm2.Button2Click(Sender: TObject);
begin
  //Запоминаем название товара и его код, кодпишем в свойство Tag
  Form4.Edit2.Text:=IBQuery1NAME.Value;
  Form4.Edit2.Tag:=IBQuery1TOVARID.Value;
  Form2.Close;
end;

    Идем на форму Form4, для кнопки Продать пишем:

procedure TForm4.Button3Click(Sender: TObject); 
begin
  //Передаем в параметры данные по продаже
  Form1.IBQuery2.Params.ParamByName('FIRMKOD').Value:=Edit1.Tag; 
  Form1.IBQuery2.Params.ParamByName('TOVARKOD').Value:=Edit2.Tag; 
  Form1.IBQuery2.Params.ParamByName('REM').Value:=Edit3.Text;
  //Пытаемся выполнить запрос
  try
    Form1.IBQuery2.ExecSQL;
    //Если не удалось, то сообщаем об ошибке
  except
    ShowMessage('Продать товар не получилось! Повторите попытку!');
    //Откатываем транзакцию
    DM.IBTransaction1.RollbackRetaining;
    exit; 
  end;
  //Если запрос выполнился, то потверждаем транзакцию
  DM.IBTransaction1.CommitRetaining;
  //Обновляем таблицу продаж, если она открыта
  if Form1.IBQuery1.Active then
  begin
    Form1.IBQuery1.Close;
    Form1.IBQuery1.Open; 
  end;
  Form4.Close; 
end;
Текст этого приложения вместе с базой можно взять здесь (59,7 Кб).

    Еще несколько элементарных процедур (таких как, Закрыть и т.п.) и приложение готово.




Предыдущий шаг Содержание