На главную   На главную   Форумы Новости Документация Скачать Купить  
Регистрация  
Система Allegro
Oб Allegro Характеристики Пример конфигурации Документация База ошибок Развитие
Версия для печати К списку книг Вернуться к оглавлению Предыдущий параграф Следующий параграф
Поиск по книге

Глава 5. СОЗДАЕМ ОКОННЫЙ ИНТЕРФЕЙС «ПОСТУПЛЕНИЯ НА СКЛАД»

Оконный интерфейс «Поступления на склад», добавляем компоненты.

Войдем в режим «Дизайнер» и откроем проект stock _in_project.ipr с помощью меню Файл /Открыть проект. Займемся добавлением компонентов на форму StockInForm . Компоненты расположены на палитрах с закладками Standard, Additional , и так далее:



Для того чтобы добавить компонент на форму, нужно сначала выбрать соответствующую палитру, щелкнув на ее закладке, выбрать компонент на палитре одиночным щелчком мыши, а затем щелкнуть однократно на форме в том месте, куда мы желаем поставить компонент. «Перетаскивать» компоненты с палитры на форму не нужно!

Для изменения значений свойств компонента, нужно выбрать соответствующий компонент на форме, щелкнув на нем мышью один раз. У компонента появляются квадратные точки по его периметру (с их помощью можно изменять его размеры), а свойства компонента отображаются в Инспекторе объектов.

Хорошим стилем программирования считается назначать свойство Name компонентов в соответствие с какой-то системой, а не оставлять их названия по умолчанию, которые присваиваются системой (Button1, Button2, Panel1 и т.д.). Вы можете разработать свой стиль называния компонентов. Мы с вами уже придерживались некоторой системы, дав название форме StockInForm, добавив имя класса Form в качестве суффикса. Мы будем использовать этот стиль для того, чтобы называть формы и панели . Для остальных компонентов мы будем использовать префикс из трех -четырех букв, говорящий нам о том, какого рода это компонент. Например, для кнопок будем использовать префикс btn, для запросов префикс qry, и так далее.

Расположим на форме следующие компоненты последовательно, один за другим , сразу назначая им свойства в Инспекторе объектов:

Панель Panel (палитра Standard)

Align = alTop

Height = 80

Caption = ‘’

Name = TopPanel

BevelOuter = bvNone

Сетка DBGridA (палитра Allegro)

Align = alTop

Height = 200

Name = dbgDetail

Сплиттер Splitter (палитра Additional)

Align = alTop

AutoSnap = False

Сетка DBGrid (палитра DataControls)

Align = alClient

Name = dbgGoods

Добавим компонент транзакции:

IBTransaction (палитра InterBase)

DefaultAction = taRollBack

DefaultDatabase = MainConnection.MainDatabase

Name = traCurrent

Дважды щелкнем на компоненте транзакции и в появившемся редакторе свойств компонента установим изоляцию транзакций Read Committed:



В режиме изоляции транзакций Read Committed пользователь сможет видеть все изменения, сделанные и подтвержденные в других транзакциях другими пользователями .

Добавим два компонента SQL-запросов. Один для главной таблицы документа, другой для подчиненной:

Компонент SQL-запроса IBDataSet (палитра InterBase)

Name = qryMaster

Transaction = traCurrent

Компонент SQL-запроса IBDataSet (палитра InterBase)

Name = qryDetail

Transaction = traCurrent

Добавим два компонента DataSource с палитры InterBase. Если там Вы не можете найти этот класс компонентов, то поищите его на палитре DataAccess:

Компонент DataSource (палитра InterBase)

Name = dsrMaster

DataSet = qryMaster

Компонент DataSource (палитра InterBase)

Name = dsrDetail

DataSet = qryDetail

Дело в том, что экранные компоненты (сетки, и т.п.) не работают с компонентами запросов напрямую, а подключаются к ним через компоненты класса TDataSource . Это особенность реализации VCL-библиотеки Delphi.

Назначим у сетки dbgDetail свойство DataSource = dsrDetail.

Компоненты запросов с палитры InterBase работают с сервером Firebird напрямую . Практически вся работа с базой данных осуществляется при помощи этих компонентов. Поэтому Вы должны хорошо изучить, как ими пользоваться. В большинстве случаев нам достаточно будет компонента IBDataSet. Этот компонент имеет 5 свойств, в которых хранятся тексты SQL-запросов (SelectSQL, InsertSQL, ModifySQL, DeleteSQL, RefreshSQL). В зависимости от состояния , в котором находится компонент, он посылает соответствующие SQL -запросы на сервер. С помощью запроса, записанного в SelectSQL, например, компонент получает набор данных с сервера.

Посмотрим, как это происходит.

Выберем компонент запроса qryDetail Дважды щелкнем на его свойстве SelectSQL в «Инспекторе объектов». Выберем в появившемся диалоге в верхнем списке таблицу STOCK_IN_ITEM и нажмем кнопку Add Table to SQL:



Вставим звездочку * между словами select и from и нажмем кнопку OK. Фактически мы вписали текст простейшего SQL- запроса, с помощью которого можно получить данные из подчиненной таблицы документа. В дальнейшем мы усложним этот текст, а пока давайте активизируем запрос, установив у компонента qryDetail в Инспекторе объектов свойство Active = True.



Мы видим, что в результате выполненного SQL-запроса , компонент получил с сервера набор данных и отобразил его в сетке. Сохраним все. Запустим проект с помощью F9. Конечно, это еще мало похоже на готовый интерфейс ввода данных, но зато это уже работает! Для того чтобы довести это окно до «товарного вида » нам еще предстоит внести в него целый ряд усовершенствований …



Пример создания склада в Allegro Наверх