СТАТЬИ
»»
FreePascal
»» Lazarus
»» MSEide + MSEgui
»» Разное
»» Книги |
|
|
|
Lazarus
28.08.2004 Смирнов Сергей
Lazarus и базы данных
Пусть это выглядит странно, но при первом запуске в палитре
компонент Lazarus на вкладке Data Access присутствует только
TDataSource. Разработчики объясняют это тем, что большинство пакетов
компонент доступа к данным статически связано со специфическими
библиотеками, которые могут отсутствовать на большинстве компьютеров.
Например, для компонент доступа к серверу MySQL необходимы библиотеки
клиентского программного обеспечения, соответствующие версии сервера.
Также и для других серверов.
Есть, однако, два пакета с компонентами, не связанными ни с какими
сторонними библиотеками: TSdfDataSet и TDbf. Не знаю, почему нельзя
сразу настроить Lazarus на использование этих компонент, но это так. Ну
что-ж, давайте установим эти пакеты в качестве примера. Начнем с TDbf.
Для этого откроем заголовочный файл пакета, который называется
dbflaz.lpk и находится в каталоге tdbf папки components, в которой есть
и другие каталоги с другими пакетами, в том числе и наш второй пакет.
Сделать это можно с помощью меню "Компоненты"-"Открыть файл пакета"
(здесь и дальше я буду ссылаться на элементы русскоязычного интерфейса):
Теперь надо выбрать файл пакета. В каталоге Lazarus есть папка
components, в которой сосредоточены пакеты, входящие в комплект
поставки, однако не все из них по указанным выше причинам изначально
установлены. Найдем среди них каталог tdbf и выберем в нем файл
dbflaz.lpk:
В результате откроется окно пакета, в котором приводится подробная
информация о пакете и его зависимостях. Когда-нибудь я расскажу об
устройстве пакетов более подробно, но сейчас это не нужно. Достаточно
лишь нажать кнопки "Компилировать" и, если компиляция завершилась
успешно, "Установить". Так как пакеты в Lazarus статические, наш с Вами
TDbf не появится сразу в палитре компонент, как в мы привыкли в Delphi.
Вместо этого нам будет предложено пересобрать среду Lazarus:
Ответим утвердительно на это предложение и подождем, пока сборка не
завершится, о чем Lazarus нам напишет в окне сообщений. Если пакеты
грамотно оформлены, а используемая версия Lazarus и устанавливаемые
компоненты не содержат ошибок, то установка пакета обречена на успех
без всяких дополнительных усилий. После перезапуска Lazarus
установленный компонент появится в палитре на своем месте. Как видите,
все очень просто.
Теперь, для закрепления полученного только что навыка, отыщите и
установите самостоятельно пакет sdf. Он представляет собой пару
компонент табличного типа, которые хранят данные в текстовых файлах.
TSdfDataSet - в файле с разделителем, TFixedFormatDataSet - с
фиксированными длинами полей. Первый из них мы используем в небольшом
примере, демонстрирующем работу всей цепочки компонент доступа к
данным. Выбор именно этого компонента обусловлен тем, что я вполне
уверен в его работоспособности на момент написания этой статьи, так как
сам адаптировал его к Lazarus и fpc.
Создайте каталог для будущего проекта под именем sdf_test. В него
скопируйте файл fpc.ssy из каталога с исходниками компонента, который
находится среди исходников fpc в папке fcl/db/sdf. Это файл с тестовыми
данными. Вы и сами можете сделать такой в любом текстовом редакторе.
Создайте новый проект и "бросьте" на форму три TDBEdit, TDataSource,
TSdfDataSet, TDBGrid и TDBNavigator как показано на рисунке:
Задайте свойства SdfDataSet аналогично установленным на рисунке, только
расположение файла с данными введите свое. Свойство Schema определяет
набор полей и в нашем примере состоит из трех строк. Конечно, вместо 1,
2 и 3 можно написать нечто более информативное, однако помните, что те
же самые имена надо будет назначить именам полей для соответствующих
DBEdit. Свяжите все визуальные компоненты с DataSource, а его - с
SdfDataSet. Установите свойство SdfDataSet Active в True и на экране
отобразятся данные из файла, как показано на рисунке.
В той версии Lazarus, которая существовала на момент написания статьи,
компонент DBGrid еще не был готов к изменению данных, поэтому были
созданы компоненты DBEdit. В более поздних версиях эта проблема,
несомненно, будет решена. Таким образом, становится ясно, что сами по
себе Lazarus и fpc уже вполне готовы к работе с базами данных. Дело
лишь за соответствующими специализированными компонентами.
Всё описанное выше применимо и для Windows версии Lazarus, хотя её
развитие и несколько отстаёт от версии для Linux.
|