Delphi - это просто. Урок 8.11.3: Программируем печать накладных. Часть 3. (DBLookupComboBox) |
Автор megabax | |||||||||||||||||||||||||||||||||
22.11.2010 г. | |||||||||||||||||||||||||||||||||
Delphi - это просто. Урок 8.11.3: Программируем печать накладных.Часть 3. (DBLookupComboBox, как записать в базу данных).Исходники к уроку вы можете скачать здесь. Сегодня мы закончим разработку программы редактирования шапки накладных. Затем мы сделаем так, что бы можно было набирать список товаров для данной накладной и только после этого вставив в форму редактирования накладной кнопочку "Печать". И так, открываем проект, который мы сделали на предыдущем уроке. Если у вас нет этого проекта, можете скачать его здесь. Для начала, дабы заголовки у таблицы формы редактирования документа перевести на русский язык, изменим обработчик создания формы главного окна программы:
Мы добавили в массив соответствий новые поля, теперь он стал длиннее, обратите внимание на код в начале процедуры
Теперь откроем форму TfrmDoc и положим нижеперечисленные компоненты:
Если забыли как открывать форму, напомню, через иконку View form*: выбираем из списка нужную форму*: Так же добавим две метки (TLabel), что бы сделать к выпадающим спискам комментирующие надписи*: Теперь свяжем между собой добавленные компоненты. У компонента dsStores свойство DataSet установим tbStores, у tbStores свойство DatabseName сделаем StorPrj, а TableName выберем "stores.DB". Если у вас не получается выбрать DatabseName как StorPrj то загляните в урок 8.2. Таблицу складов (dsStores) делаем активной (свойство Active=true). Затем переходим к компоненту TDBLookupComboBox, у него в качестве свойства ListSource выберем ссылку на компонент dsStores. Свойство ListFiled установим равным "Name", а свойство KeyField (ключевое поле) у нас будет равно "Id". Аналогичным способом связываем dsTypesDocs и tbTypesDocs. У tbTypesDocs устанавливаем DatabseName равным StorPrj, имя таблицы "docstypes.db", так же делаем этот компонент активным (свойство Active=true). DBLookupComboBoxTypes: в качестве источника списка (ListSource ) у него будет dsTypesDocs, ListFiled равно "Name", а ключевое поле "Id". Так же нам надо переписать процедуру OpenDoc класса TfrmDoc:
Теперь немного комментариев к коду. По сравнению с предыдущей версией мы добавили инициализацию начальных значений выпадающий списков:
В качестве начальных значений берем текущие значения из базы данных. У и еще, мы переводим столбцы на русский язык:
Еще в модуля DOCUnit и в DOCSFRM нам надо добавить подключение модуля StoreTypes*: Что бы записать сделанные изменения, давайте напишем обработчик нажатия кнопочки ОК:
Кстати, мы изменили параметры функции TfrmDoc.OpenDoc, поэтому, во первых, не забудьте поменять эти параметры еще и в объявлении метода OpenDoc класса TfrmDoc:
А во вторых, нам надо так же исправить все вызовы этой функции, к счастью, он ну нас только один из метода TfrmDocs.btnEditClick:
У нас там появилась новая переменная WaresFields, нам тоже ее нужно объявить, переделаем объявление класса TfrmDocs (выделено красным):
Очевидно, что теперь нам надо исправить саму процедуру вызова журнала документов:
Эта процедура у нас находиться в форме frmStoreForm*: Немного подкорректируем функцию glFindFieldAsName в модуле StoreTypes:
В данном случае мы в сравнении преобразуем все символы к верхнему регистру, так как для имен полей без разницы, какими буквами они набраны - строчными или прописными. Раз уж мы используем функцию UpperCase то нужно подключить модуль где она объявлена SysUtils*:
Исходники к уроку вы можете скачать здесь. Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями в соответствии со ст. 1274 ГК РФ программного продукта "Delphi", авторское право на который принадлежит "Borland Software Corporation, (a Micro Focus Company).
|
|||||||||||||||||||||||||||||||||
Последнее обновление ( 06.11.2011 г. ) |
« След. | Пред. » |
---|