Программирование баз данных в Delphi 7 - создаем шаблон программы складского учетаСегодня мы создадим шаблон программы складского учета. И так, начнем новый проект в отдельном каталоге. Зайдем в меню "File" --> "New" --> "Other"*.В открывшемся окне на закладке Projects выберем "MDI Application"* Далее, у вас откроется окно сохранения проекта, в котором Вам нужно выбрать путь, куда сохранять. После чего появиться уже готовая форма*:Если мы запустим ее, то увидим, что это самый обычный текстовый редактор, который мы писали на уроках 4.1, 4.2, 4.3, 4.4 и 4.5, правда, в нем можно открыть не одно окно редактирования текста, а много*. Теперь давайте переименуем наш проект в StoreApp, для этого просто из меню "File" выберем "Save Project as..." и сохраним проект под нужным именем. Так же поступим с программным модулем - переключимся на него и сохраним под именем MainStoreAppUnit. через меню "File" --> "Save as..".Теперь давайте переименуем уложенные на форму компоненты, будем сразу привыкать к правильным именам. Начнем с ToolBar*:Программа назвала его ToolBar2, мы назовем tbrStore. Теперь займемся кнопочками. Вместо ToolButton1, ToolButton2 и так далее, присвоим имена, соответствующие их назначению:
Теперь перейдем к не визуальным компонентам в нижней части формы*: Назовем их вот так, начиная с первого:
Далее, изменим название и заголовок формы на frmStoreForm и "Программа складского учета". Для начала скопируем форму, которую мы создали в созданный нами в прошлый раз шаблон. Для этого нужно скопировать в папку, где у нас лежит проект шаблона из папки, в котором мы на уроке 8.2 создали программу просмотра и редактирования базы данных, файлы UnitStore.dfm и UnitStore.pas. Затем в Delphi выберем опцию Add to project*: И добавим файл UnitStore.pas. У вас так же автоматически добавиться форма, которая будет доступна в списке форм проекта*: Начнем с того, создадим еще одну таблицу базы данных с такой вот структурой
*и назовем ее employees.db, сохранив в том же каталоге, что и wares.db. Затем переключимся на добавленную форму (через список форм) и переименуем форму в frmTableView. Теперь займемся переименованием положенных на форму компонентов. TTable назовем tbView, TDataSource переименуем в dsView, TDbGrid назовем dbgView, TDbNavigator - dbnView. Затем к объявлению класса формы добавим новый метод OpenTable(ATableName:string):
Реализуем его:
Да, кстати, не забудьте включить UnitStore в раздел uses модуля MainStoreAppUnit, иначе при компиляции у вас будет выдано сообщение об ошибке. Раньше этого не было написано в уроке, но посыпались вопросы, поэтому я решил дополнить урок (см. комментарии к уроку внизу текста)*:
Немного пояснений к программе: tbView.Active:=false; - здесь мы выключаем доступ к таблице базы данных, что бы компонент TTable мог поменять таблицу. Если этого не сделать, то при попытке выполнить строку tbView.TableName:=ATableName; будет выдано сообщение об ошибке*: Далее, мы присваиваем компоненту TTable новое имя таблицы и открываем его командой tbView.Active:=true; Теперь нам нужно еще и форму сделать видимой для пользователя. Это команда Show. Далее, переключимся на форму frmStoreForm и поставим на нее компонент TSession*. Назовем добавленный компонет sSession. Свойство SessionName установим в "Store". Затем, с целью приведения имен в порядок, щелкнем на компонент TActionList*. В открывшемся окне выберем FileOpen1* и при помощи Object Inspector назначим ему новое имя acFileOpen. Заодно перведем обрабатываемый нами пункт меню на русский язык, сменив у пунктов меню File и Open свойство Caption*: Теперь перейдем к обработчику события OnClick пункта меню "Файл --> Открыть" или кнопочки tbnOpen (он у них благодаря компоненту TActionList один и тот же) и изменим его содержимое:
В данном обработчике мы создаем переменную типа TStringList (список строк). При помощи метода GetAliasParams компонента TSession мы получаем в эту переменную список параметров Alias-а. Нам надо извлечь параметр PATH. Для этого в цикле перебираем все параметры, и если найдем, извлекаем его командой: odOpenDialog.InitialDir:=copy(SessionParams[i],6,Length(SessionParams[i])-5); которая просто напросто обрезает все, что в тексте параметра идет после "PATH=". То, что мы вырезали, а это у нас путь к базе данных, записываем в свойство InitialDir диалога открытия файла. После этого запускаем диалог, и, в случае успешного его выполнения (пользователь в диалоге нажал ОК), вызываем процедуру CreateMDIChild, указав ей в качестве параметра выбранный файл. Сама процедура CreateMDIChild является методом форму, которую автоматически сгенерировала система Delphi, когда мы создавали MDI приложение. Мы можем ее изменить. Точнее не только можем, но и изменим, потому что созданная автоматом процедура у нас открывает только текстовые файлы, а нам надо таблицы баз данных.
В этой процедуре мы создаем форму типа TfrmTableView (которую мы с вами скопировали из урока уроке 8.2 и добавили в проект. После чего, если у нас существует переданный в качестве параметра файл, то открываем его через вызов метода OpenTable, который мы с вами так же написали ранее. Все, остались последние штрихи. В фильтр масок диалога открытия файла добавим маску "*.db". Затем запускаем программу и смотрим через нее наши таблицы wares.db и employees.db. В заключении немного скажу о компоненте TActionList. Он содержит в себе список обработчиков событий, общих для нескольких объектов. В частности, для кнопочки и пункта меню. Для этой цели связан с компонентом TImageList через свое свойство Images, компонент TMainMenu связан с TImageList через свое свойство Images и компонент TToolBar, на котором расположены кнопочки, так же связан с TImageList . |