Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
930.82 Кб
Скачать

Часть 2 – Создание формы приложения бд, размещение и настройка компонентов управления данными

  1. П одключить в форму модуль данных: #include "имя заголовочного файла"

ЗАМЕЧАНИЕ: для перехода между файлами проекта использовать кнопки панели инструментов Стандартная или соответствующие пункты меню View.

  1. Переименовать главную форму клиентского приложения (свойство Caption), задав ей соответствующее имя, например – Страховая компания.

  2. Расположить на форме компонент MainMenu (вкладка Standart на палитре компонентов) для создания меню формы.

  3. Задать пункты верхнего меню и подпункты. Справочниками будут выступать родительские таблицы (Рис. 6).

Рис. 6. Пункты верхнего меню

  1. Расположить на форме компонент Image (вкладка Additional), указать имя файла рисунка (свойство Picture), предварительно рисунок скопировать в папку с проектом, задать ему выравнивание (свойство Align установить в alClient), растяжение (свойство Strech установить в true).

  2. Расположить на форме компонент PageControl (вкладка Win32) для создания вкладок, которые будут содержать данные таблиц БД. Задать объекту выравнивание по полному размеру формы (свойство Align установить в alClient).

  3. Создать вкладки по количеству таблиц, задать вкладкам имена (свойство Caption), соответствующие таблицам БД: например – Виды страхования, Филиалы и Договоры.

ЗАМЕЧАНИЕ: для создания вкладок достаточно вызвать контекстное меню (рис. 7).

Рис. 7. Пример создания вкладок

  1. Задать жесткое разграничение рабочего поля на каждой вкладке главного окна формы, используя компоненты Panel (вкладка Standart) и Splitter (вкладка Additional).

ЗАМЕЧАНИЕ: рекомендуется выполнить следующие действия.

  1. активизировать любую из вкладок (объекты TabSheet1-3);

  2. добавить компонент Panel;

  3. задать выравнивание вверху вкладки (свойство Align установить в alTop);

  4. изменить вручную или с помощью свойств его высоту – высота объекта порядка 2/3 от высоты вкладки (Рис. 8 слева);

  5. выбрать компонент Splitter и щелкнуть на вкладке ниже панели – объект разместится вертикально (Рис. 8 справа);

Рис. 8. Создание фиксированных областей на вкладке – этап 1

  1. задать объекту Splitter1 выравнивание вверху свободной области на вкладке (свойство Align установить в alTop), толщину 1-2 (свойство Height) (Рис. 9 слева);

  2. расположить ниже объекта Splitter1 еще один компонент Panel и задать ему выравнивание по размеру свободной области на вкладке (свойство Align установить в alClient) (рис. 9 справа);

Рис. 9. Создание фиксированных областей на вкладке – этап 2

  1. выполнить аналогичные действия для остальных вкладок.

  1. Для вывода содержимого таблиц БД расположить вверху (верхняя панель) на каждой вкладке компонент DBGrid (вкладка DataControls) и задать его выравнивание вверху панели (свойство Align установить в alTop), увеличить высоту объекта (3/4 высоты панели) (Рис. 10 слева).

ЗАМЕЧАНИЕ:

Визуальные компоненты для работы с данными расположены на странице DataControls Палитры компонентов и предназначены для построения интерфейсной части приложения. Они используются для навигации по набору данных, а также для отображения и редактирования записей. Свойство DataSource задает имя источника данных, который подключен к одному из наборов данных приложения.

Для отображения записей редактируемого набора данных и навигации по нему используются объекты DBGrid и DBNavigator соответственно. Для установления связи названных компонентов с компонентами SimpleDataSet используется компоненты DataSource. Для компонентов DataSource их свойствам DataSet устанавливается значение нужного SimpleDataSet1. Соответственно для каждого из компонентов DBGrid1 и DBNavigator1 их свойству задается значение соответствующего DataSource.

  1. Добавить на каждую вкладку компонент DBNavigator (вкладка DataControls) и расположить его на верхней панели каждой вкладки под объектом DBGrid (Рис. 10 слева).

ЗАМЕЧАНИЕ: Навигатор используется для управления набором данных и обеспечивает соответствующий интерфейс пользователя.

Рис. 10.

  1. Настроить каждый объект DBGrid на отображение данных из соответствующих таблиц, выбрав нужное в свойстве DataSource (Рис. 10 справа).

  2. Настроить каждый объект DBNavigator на соответствующий объект DBGrid, выбрав нужное в свойстве DataSource (Рис. 10 справа).

  3. Запустить программу на выполнение: команда Run, пункта меню Run (кнопка или F9).

ЗАМЕЧАНИЕ: пункты верхнего меню еще не подключены – доступа к таблицам нет, на форме расположен фоновый рисунок. Закрыть окно приложения.

  1. Прописать обработчик события OnCreate при запуске клиентского приложения (т.е. создании формы) так, чтобы соединение с БД было выключено, активизирован фоновый рисунок и скрыта панель с вкладками окна приложения.

ЗАМЕЧАНИЕ: следует выполнить следующие действия

  1. активизировать объект форму, щелкнув по заголовку или выбрав в списке

  2. перейти на вкладку Events (события) в ObjectInspector и выбрать событие OnCreate, создать обработчик события, содержащий команды:

PageControl1->Visible=false;

Image1->Visible=true;

  1. На модуле данных также закрыть соединение с сервером базы данных (свойство Connected компонента SQLConnection установить в false).

  1. Задать соответствующие обработчики события OnClick при выборе пунктов и подпунктов верхнего меню.

ЗАМЕЧАНИЕ:

Для пункта меню ПОДКЛЮЧИТЬ БАЗУ.

  1. вызвать для редактирования расположенный на форме объект MainMenu1;

  2. выбрать пункт Подключить базу;

  3. создать для события OnClick обработчик события, содержащий команды (ниже приведены команды):

DM->SQLConnection->Connected=true;

DM->SimpleFilials->Open();

DM->SimpleVidStrah->Open();

DM->SimpleDogovors->Open();

DM->DataSourceFilials->Enabled=true;

DM->DataSourceVidStrah->Enabled=true;

DM->DataSourceDogovors->Enabled=true;

Для пункта меню ВЫХОД.

  1. выбрать пункт Выход;

  2. создать для события OnClick обработчик события, содержащий команды:

DM->SQLConnection->Connected=false;

Form1->Close();

Для пункта меню активизации вкладки на форме.

  1. выбрать пункт с названием вкладки;

  2. учитывая, что каждая вкладка нумеруется от 0 и далее, записать команды вида:

Image1->Visible=false;

PageControl1->Visible= true;

PageControl1->ActivePageIndex=0; //указать нужный индекс вкладки

Пункт отчеты и другие в данной работе не рассматриваются.

  1. Запустить программу на выполнение и проверить работу запрограммированных пунктов верхнего меню.

  2. Запустить приложение и внести изменения в таблицы с помощью инструментов навигационной панели : вставки новой записи, удаления, обновления данных. Закрыть окно приложения.

  3. Снова запустив приложение, проверить сохранность внесенных изменений в таблице.

ЗАМЕЧАНИЕ: изменения не будут сохранены, т.к. не были прописаны обработчики событий обновления, внесения и удаления записей в таблицах для объектов типа Навигатор.

  1. Задать соответствующие обработчики события обновления, внесения и удаления записей в таблицах БД для объектов типа SimpleDataSet.

ЗАМЕЧАНИЕ:

Пересылка данных между сервером и компонентом SimpleDataSet осуществляется с помощью пакетов. Размер пакетов (по числу записей) можно задать с помощью свойства PacketRecords типа int. По умолчанию устанавливается значение -1, которое означает, что один пакет должен содержать все записи набора данных. Если значение данного свойства равно 0, то в пакете передаются только метаданные.

Фиксация внесенных при редактировании изменений и отправка данных на сервер осуществляется в обработчике события AfterPost, возникающего при нажатии кнопки Post (утвердить результат изменения записи) компонента DBNavigator и при переходе в компоненте DBGrid на другую строку.

После модификации набора данных возможна ситуация, когда изменения сделаны, но не отображены визуальными компонентами, связанными с этим набором. В таких случаях нужно вызывать метод Refresh, который повторно считывает набор данных и тем самым гарантирует, что визуальные компоненты будут отображать текущие, а не устаревшие данные. При работе в многопользовательской системе рекомендуется периодически вызывать метод Refresh, чтобы своевременно учитывались изменения, сделанные другими пользователями.

С учетом выше сказанного для главных таблиц БД следует для события AfterPost объектов SimpleDataSet создать процедуру обработчика события по щелчку мыши следующего вида:

void __fastcall TDM::SimpleFilialsAfterPost(TDataSet *DataSet)

{

SimpleFilials->ApplyUpdates(-1);

SimpleDogovors->Refresh(); //обновление старых данных в

//подчиненной таблице Dogovors

//для поддержки целостности данных

}

void __fastcall TDM::SimpleVidstrahAfterPost(TDataSet *DataSet)

{

SimpleVidstrah->ApplyUpdates(-1);

SimpleDogovors->Refresh(); //обновление старых данных в

//подчиненной таблице Dogovors

//для поддержки целостности данных

}

Для подчиненной таблицы достаточно одной команды в процедуре для соответствующего события AfterPost:

SimpleDogovors->->ApplyUpdates(-1);

Аналогично, прописать команды процедур обработчиков событий AfterDelete для компонентов SimpleDataSet для того, чтобы выполнялось удаление данных в таблицах

  1. Запустить приложение и внести изменения в таблицы с помощью инструментов навигационной панели : вставки новой записи, удаления, обновления данных. Закрыть окно приложения.

  2. Снова запустив приложение, проверить сохранность внесенных изменений в таблице.

ЗАМЕЧАНИЕ: изменения должны быть сохранены. В противном случае проверьте созданные обработчики событий, обновления, внесения и удаления записей в таблицах для объектов типа Навигатор (см. п. 34).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]