on E:EDBEngineError do ShowMessage('Ошибка инициализации BDE' ) ;
end;
end;
procedure TMainForm.FormClose(Sender: TObject; -var Action: TCloseAction); begin try
finally
if hDB <> Nil then DbiCloseDatabase(hDB);// Закрытие базы данных DbiExit; // Закрытие сеанса работы с BDE
end end;
procedure TMainForm.AliasesListChange(Sender: TObject);
begin try
if hDB <> Nil
then DbiCloseDatabase(hDB);// Закрытие базы данных DbiOpenDatabase // Открытие базы данных
(
PChar(AliasesList.Text), // Псевдоним базы данных Nil, // Тип базы данных
dbiReadWrite, // Режим редактирования данных
dbiOpenShared, // Режим разделения данных
Nil, // Пароль
О, // Число дополнительных параметров
Nil, // Перечень полей для доп. параметров
Nil, // Список доп. параметров
hDB // Дескриптор базы данных
) ;
DbiSetPrivateDir('с:\temp');// Определение временного каталога DbiOpenTableList(hDb, False, False, '*.DB', hCursor) ;
TablesList.Items.Clear;
TablesList.Clear;
while DbiGetNextRecord(hCursor, dbiNOLOCK, OTblDesc, nil) = dbiErr_None
do TablesList.Items.Add(TblDesc.szName);
DbiCloseCursor(hCursor);
except
on E:EDBEngineError do ShowMessage('Ошибка открытия базы данных');
end;
end;
procedure TMainForm.EmptyBtnClick(Sender: TObject); begin try
DbiEmptyTable(hDB, Nil, PChar(TablesList.Text), ' ' ) ;
except
on Е:EDBEngineError do ShowMessage('Неверно задана таблица' ) ;
end;
end;
end.
При открытии главной формы (метод-обработчик FormShow) функция Dbilnit осуществляет инициализацию BDE. Затем функция DbiOpenDatabaseList создает в памяти временную таблицу, в которую записываются характеристики каждой зарегистрированной базы данных. Для этого применяется структура DBDesc. Курсор hcursor обеспечивает доступ к записям о базах данных.
После этого функция DbiGetNextRecord позволяет осуществить последовательное считывание имен псевдонимов баз данных (для этого в параметре передается указатель на структуру DBDesc) и их запись в список компонента AliasesList ТИПЭ TComboBox.
При выборе из этого списка конкретного псевдонима работает метод-обработчик AliasesListChange. В нем открывается соответствующая база данных (функция DbiopenDatabase), доступ к которой в дальнейшем осуществляется через дескриптор hDB.
Функция DbiOpenTableList создает временную таблицу в памяти, в которую помещаются данные о таблицах выбранной базы данных в соответствии с форматом структуры TBLBaseDesc. Функция DbiGetNextRecord позволяет передать эту информацию в список компонента TablesList типа TComboBox
При щелчке на кнопке EmptyBtn в методе-обработчике EmptyBtnClick работает функция DbiEmptyTable, которая очищает выбранную ранее в компоненте TabiesList таблицу.
Теперь рассмотрим пример простейшего приложения, которое может отображать два поля из таблицы COUNTRY.DB в демонстрационной базе данных DBDEMOS. Эта база данных поставляется в комплекте Delphi. В примере использованы только функции API BDE.
Проект называется DirectBDE и имеет только одну форму, в которой отображаются сведения из таблицы COUNTRY.DB о государствах и их столицах (рис. 16.5). Кнопки в нижней части формы позволяют перемещаться по набору данных.