Оглавление Проект: Таблица базы данных .dbf



Главная форма программы.

Для работы этой программы не требуется другое обеспечение - в отличие от Делфи, проекты которого обычно требуют BDE для работы с базами данных.

В папке Lazarus\examples есть проект  address_book 
(Адресная книга). Он работает. Здесь рассмотрим создание с нуля упрощенной версии 
этого проекта.

Проект из одной формы, одного модуля. На форме установим: 
 - Dbf1: : TDbf; - компонент для связи с таблицей.
 - DBGrid1: TDBGrid; - компонент для отображения записей в табличной форме.
 - DBNavigator1: TDBNavigator;  - компонент для управления данными 
 - Datasource1: TDatasource;  - компонент для связи  DBGrid1 и DBNavigator1 с Dbf1.
 - OD1: TOpenDialog; - диалог для выбора открываемой таблицы
 - SD1: TSaveDialog; - диалог для задания имени при сохранении новой таблицы.
 -  MainMenu1: TMainMenu; - меню 
    itTable: TMenuItem;
    itOpen2: TMenuItem;
    itNew: TMenuItem;   
--------
Если хотим увидеть описание класса TDbf, то наводим на него курсор и жмем Ctrl.  
Как и в Делфи - появляется ладошка, щелкаем мышкой и видим описание класса TDbf
(а также весь модуль dbf).
Так же можем изучить допустимые типы полей таблицы (щелкаем ftString) и синтаксис 
метода Add, который добавляет поля в таблицу. 

Порядок действий (некоторые пункты можно переставлять):

0. Открываю Лазарус, в нем закрываю текущий проект (Файл/Закрыть все файлы редактора)

1. Создаю новый проект - приложение (Application), на форму ставлю вышеупомянутые 
компоненты,  ( Dbf1.Active = false )

2. Datasource1.DataSet = Dbf1 (выбираю из списка) 

3. DBGrid1.Datasource =  DataSource1  (выбираю из списка)  

4. Компилирую и сохраняю. Во время компиляции лучше ничего не трогать.

5. Добавляю меню (дв щелчок на иконке MainMenu1):
   прав щелчок - создать подменю, так же вставлять пункты в меню
 Создаю в подменю пункт Открыть табл. (itOpen: TMenuItem;)
 Обработчик этого пункта: 
procedure TForm1.itOpenClick(Sender: TObject);
begin
  if OD1.Execute then
    begin
      if Dbf1.Active then Dbf1.Close;
      Dbf1.TableName:= OD1.FileName;
      Dbf1.Open;
    end;
end; 
Теперь можно открывать любую таблицу *.dbf . Она будет показана в окошке DBGrid1,
причем заголовками столбцов будут имена полей. Если же программа создается для
таблиц только одной структуры, то можно колонки снабдить русскими заголовками. 
(см. п. 10)

6. Настраиваю якоря (anchors) DBGrid1 - все = true и  align = bottom
   DBNavigator1 - align = top, якоря: bottom=false, остальные - true

7. Добавляю диалог  SD1: TSaveDialog - диалог для задания имени 
при сохранении новой таблицы.

8. Добавляю в подменю пункт itNew:
  - Создать (новую таблицу). Обработчик беру из проекта address_book:
procedure TForm1.CreateTable(AFileName : String);
begin
  With Dbf1 do
    begin
    Close;
    with FieldDefs do
      begin
      Clear;
      Add('FirstName',ftString,10);
      Add('LastName',ftString,10);
      Add('Street',ftString,10);
      Add('Zip',ftString,10);
      Add('Town',ftString,10);
      Add('Country',ftString,10);
      Add('Telephone',ftString,10);
      Add('Fax',ftString,10);
      Add('Mobile',ftString,10);
      Add('Email',ftString,10);
      Add('WWW',ftString,10);
      end;
    TableName:=AFileName;
    CreateTable;
    Exclusive := true;
    Open;
    AddIndex('LastName', 'LastName', []);
    end;
end;   
Создавать индекс не обязательно. Он нужен при сортировке и поиске.
          
Эта процедура вызывается при щелчке по пункту меню:

procedure TForm1.itNewClick(Sender: TObject);
begin
   if SD1.Execute then
     CreateTable(SD1.FileName);
end; 

9. Русифицирую подсказки (hints) навигатора.
ShowHints = true для 8,9-й работают нечетко.
Некоторые кнопки навигатора лишние,
например, редактирование можно начать
щелкая клетку, перемещаться по записям - тоже.
стрелка вниз заменяет Insert (в нижней записи).

10. Настраиваю колонки (столбцы)  DBGrid1 
Русифицирую имена столбцов DBGrid1.
Доступ к столбцам: Columns. Щелкаю кнопку мастера,
однако список пустой. Добавляю 11 пунктов. 
Далее настраиваю каждый. 
.Title.Caption - заголовок столбца (русский)
.FieldName - имя поля таблицы, с которым связь - выбираю из выпадающего списка
(если Dbf1 открыта то этот список есть, иначе - неудобно: имена нужно вписывать).
Список полей можно взять из  CreateTable:
     FirstName, LastName, Street, Zip, Town, Country, Telephone, Fax,
     Mobile, Email, WWW 
Для столбцов можно также задать:
- Ширину
- Цвет и т д - см в инспекторе объектов
---------
Примечание: Database Desktop из комплекта Делфи7 тоже открывает эту таблицу,
но русский текст искажает.


Скачать RAR-архив исходников + .exe (address_book2_full.rar - 700 Кб)

Распакуйте архив в папку и откройте projdbf2.lpi - для работы с проектом
Проект должен открыться (если установлен Лазарус).
Или запустите projdbf2.exe.
Rambler's Top100
Hosted by uCoz