Программирование - это просто
Advertisement
Главная arrow Уроки Delphi arrow Delphi - это просто! arrow Delphi. Урок 8.4. Базы данных: пишем форму просмотра баз данных.
19.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Delphi. Урок 8.4. Базы данных: пишем форму просмотра баз данных. Печать E-mail
Автор megabax   
24.07.2009 г.

Программирование баз данных в Delphi 7 - пишем форму просмотра баз данных.

Исходники к уроку (Delphi, базы данных)

Сегодня мы будем наполнять наш шаблон программным кодом. Для начала скопируем форму, которую мы создали на уроке 8.2 в созданный нами в прошлый раз шаблон. Для этого нужно скопировать в папку, где у нас лежит проект шаблона из папки, в котором мы на уроке 8.2 создали программу просмотра и редактирования базы данных, файлы UnitStore.dfm и UnitStore.pas.

Затем в Delphi выберем опцию Add to project*:

Добавление формы (TForm) в проект. В проекте так же TActionList, TImageList, базы данныех

И добавим файл  UnitStore.pas. У вас так же автоматически добавиться форма, которая будет доступна в списке форм проекта*:

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, базы данныех

Начнем с того, создадим еще одну таблицу базы данных с такой вот структурой

Имя поля Тип Размер
id +  
Fio A 50
Address A 100
Phone A 15

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, базы данныех

*и назовем ее employees.db, сохранив в том же каталоге, что и wares.db. Затем переключимся на добавленную форму (через список форм) и переименуем форму в frmTableView. Теперь займемся переименованием положенных на форму компонентов. TTable назовем tbView, TDataSource переименуем в dsView, TDbGrid назовем dbgView, TDbNavigator - dbnView. Затем к объявлению класса формы добавим новый метод OpenTable(ATableName:string):

TfrmTableView = class(TForm)
     tbView: TTable;
     dsView: TDataSource;
     dbgView: TDBGrid;
     dbnView: TDBNavigator;
private
     { Private declarations }
public
     { Public declarations }
     procedure OpenTable(ATableName:string);
end;

Реализуем его:

procedure TfrmTableView.OpenTable(ATableName:string);
begin
      tbView.Active:=false;
      tbView.TableName:=ATableName;
      tbView.Active:=true;
      Show;
end;

Да, кстати,  не забудьте включить UnitStore в раздел uses модуля MainStoreAppUnit, иначе  при компиляции у вас будет выдано сообщение об ошибке. Раньше этого не было написано в уроке, но посыпались вопросы, поэтому я решил дополнить урок (см. комментарии к уроку внизу текста)*:

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, базы данныех

Немного пояснений к программе:

tbView.Active:=false; - здесь мы выключаем доступ к таблице базы данных, что бы компонент TTable мог поменять таблицу. Если этого не сделать, то при попытке выполнить строку

tbView.TableName:=ATableName;

будет выдано сообщение об ошибке*:

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, базы данныех

Далее, мы присваиваем компоненту TTable новое имя таблицы и открываем его командой

tbView.Active:=true;

Теперь нам нужно еще и форму сделать видимой для пользователя. Это команда Show. Далее, переключимся на форму frmStoreForm и поставим на нее компонент TSession*.

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, TSession, базы данныех

Назовем добавленный компонет sSession. Свойство SessionName установим в "Store". Затем, с целью приведения имен в порядок, щелкнем на компонент TActionList*.

Базы данных на Delphi 7. В проекте так же TActionList, TImages, TSession, базы данныех

В открывшемся окне выберем FileOpen1*

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, TSession, базы данныех

и при помощи Object Inspector назначим ему новое имя acFileOpen. Заодно перведем обрабатываемый нами пункт меню на русский язык, сменив у пунктов меню File и Open свойство Caption*:

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, TSession, базы данныех

Теперь перейдем к обработчику события OnClick пункта меню "Файл --> Открыть" или кнопочки tbnOpen (он у них благодаря компоненту TActionList один и тот же) и изменим его содержимое:

procedure TfrmStoreForm.acFileOpenExecute(Sender: TObject);
var SessionParams:TStringList; i:integer;
begin
      SessionParams:=TStringList.Create;
      sSession.GetAliasParams('StorePrj',SessionParams);
      for i:=0 to SessionParams.Count-1 do
         if Pos('PATH',SessionParams[i])>0 then
         begin
                odOpenDialog.InitialDir:=copy(SessionParams[i],6,Length(SessionParams[i])-5);
                if odOpenDialog.Execute then  CreateMDIChild(odOpenDialog.FileName);
         end;
end;

В данном обработчике мы создаем переменную типа TStringList (список строк). При помощи метода GetAliasParams компонента TSession мы получаем в эту переменную список параметров Alias-а. Нам надо  извлечь параметр PATH. Для этого в цикле перебираем все параметры, и если найдем, извлекаем его командой:

odOpenDialog.InitialDir:=copy(SessionParams[i],6,Length(SessionParams[i])-5);

которая просто напросто обрезает все, что в тексте параметра идет после "PATH=". То, что мы вырезали, а это у нас путь к базе данных, записываем в свойство InitialDir диалога открытия файла. После этого запускаем диалог, и, в случае успешного его выполнения (пользователь в диалоге нажал ОК), вызываем процедуру CreateMDIChild, указав ей в качестве параметра выбранный файл.

Сама процедура CreateMDIChild является методом форму, которую автоматически сгенерировала система Delphi, когда мы создавали MDI приложение. Мы можем ее изменить. Точнее не только можем, но и изменим, потому что созданная автоматом процедура у нас открывает только текстовые файлы, а нам надо таблицы баз данных.

procedure TfrmStoreForm.CreateMDIChild(const Name: string);
var
Child: TfrmTableView;
begin
    { create a new MDI child window }
     Child := TfrmTableView.Create(Application);
     Child.Caption := Name;
     if FileExists(Name) then Child.OpenTable(Name);
end

В этой процедуре мы создаем форму типа TfrmTableView (которую мы с вами скопировали из урока уроке 8.2 и добавили в проект. После чего, если у нас существует переданный в качестве параметра файл, то открываем его через вызов метода OpenTable, который мы с вами так же написали ранее.

Все, остались последние штрихи. В фильтр масок диалога открытия файла добавим маску "*.db". Затем запускаем программу и смотрим через нее наши таблицы wares.db и employees.db.

Базы данных на Delphi 7. В проекте так же TActionList, TImageList, TSession, базы данныех

В заключении немного скажу о компоненте TActionList. Он содержит в себе список обработчиков событий, общих для нескольких объектов. В частности, для кнопочки и пункта меню. Для этой цели  связан с компонентом TImageList через  свое свойство Images, компонент TMainMenu связан с TImageList  через свое свойство Images и компонент TToolBar, на котором расположены кнопочки, так же связан с TImageList .


Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями   программного продукта "Delphi", авторское право на который принадлежит "Borland Software Corporation".


 

 

 

 

 

 

Последнее обновление ( 06.11.2011 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги