Смекни!
smekni.com

Разработка электронного органайзера средствами C++ Builder 6 (стр. 2 из 3)

IBSQL - для быстрого выполнения SQL-запроса с минимальными накладными расходами. Не имеет локального буфера данных, не совместим с визуальными компонентами;

IBDatabaseInfo - для получения системной информации о свойствах базы данных, соединения и сервера;

IBSQLMonitor - для перехвата и отслеживания SQL-запросов, которые выполняют приложения пр технологии InterBase Express;

IBEvents - для обработки событий сервера InterBase;

IBExtract - для получения метаданных от сервера InterBase;

IBClientDataSet - для получения данных и применения обновлений. Использует внутренние компоненты TIBDataSet И TDataSetProvider.

Компоненты IBTable, IBQuery, IBStoredProc И IBUpdateSQL во многом похожи на свои аналоги механизма BDE.

Глава 2. Технология разработки программного кода и интерфейса "Organizer 1.0"

2.1 Структура приложения "Organizer 1.0"

"Organizer 1.0" - программный продукт, который состоит из нескольких компонентов: планировщик задач, связанный с ним календарь и адресная книга.

Рис.1 Структура приложения "Organizer 1.0".

В качестве основы приложения с помощью IB Expert была разработана база данных ORGANIZER, состоящая из двух таблиц: TBL_EVENTS и TBL_PEOPLE.

Табл.1 Структура таблицы TBL_EVENTS

id_events date1 name

Табл. 2 Структура таблицы TBL_ PEOPLE

id_people imja familia otch birth email icq phone_mob phone_home phone_work firm post
phone_work firm post

Таблицы между собой не связаны, т.к несут разную смысловую нагрузку и реализуют разные задачи в приложении.

Таблица TBL_EVENTS предназначена для работы планировщика задач. Она содержит данные о введенных событиях (название, дата).

Таблица TBL_ PEOPLE предназначена для работы адресной книги. Она содержит данные о персоне (Ф.И. О, адрес, телефон (дом, раб, сотовый), ICQ, e-mail, дата рождения, название фирмы, должность).

2.2 Программная структура приложения "Organizer 1.0"

В приложении используются:

главная форма с главным меню, обеспечивающим переход ко всем функциям приложения (frmMain);

формы, используемые Планировщиком задач для просмотра (frmViewEv), редактирования (frmEditEv) и добавления событий (frmAddEv);

формы, используемые Адресной книгой для просмотра (frmBook), добавления (frmAddB) и редактирования записей (frmEditB), а также форма поиска в книге по различным параметрам (frmSearchB);

модуль данных (DM), который содержит в себе компоненты DataSource, IBDataBase, IBTranzaction, IBQuery, обеспечивающие работу с базой данных.

Для реализации просмотра, добавления и редактирования информации в приложении использованы следующие компоненты С++ Builder:

IBDatabase Этот компонент в основном используется в приложениях, работающих на платформе InterBase. Его задачи связаны с общением с удаленным сервером, реализацией транзакций, работой с паролями.

IBTransaction - организует управление транзакциями.

DataSource В качестве источника данных всегда используется размещенный на странице Data Access компонент DataSource. Он связывается с набором данных своим свойством Data Set.

IBQuery - невизуальный компонент набора данных, выполняющий запросы SQL к серверу InterBase.

DBGrid представляет собой таблицу, в которой могут отображаться поля строк, числовые и булевы поля. Для связи этого компонента с набором данных используется только одно свойство - DataSource.

DBNavigator - набор кнопок для навигации по DBGrid.

2.3 Главная форма

На главной форме приложения представлено:

главное меню,

календарь,

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

список событий запланированных на сегодня.


Рис. Главная форма

2.3.1 Структура Главного меню

Файл

Адресная книга (осуществляет переход на форму, отображающую записи Адресной книги - frmBook)

Напоминалка (осуществляет переход на форму, отображающую записи о событиях frmViewEv)

Выход (закрывает приложение)

Адресная книга

2.1 Просмотреть (осуществляет переход на форму, отображающую записи Адресной книги - frmBook)

2.2 Найти человека (осуществляет переход на форму поиска персоны по различным введенным данным - frmSearchB)

2.3 Добавить новую запись (осуществляет переход на форму, добавляющую записи в Адресную книгу - frmAddB)

3. События

3.1 Просмотр событий (осуществляет переход на форму, отображающую записи о событиях frmViewEv)

3.2 Создать напоминание (осуществляет переход на форму, добавляющую записи в Планировщик задач - frmAddEv)

2.3.2 Календарь

В качестве календаря для приложения был взят компонент C++ Builder TMonthCalendar, который находится во вкладке Win32.

Компонент TMonthCalendar (Календарь) используется для быстрого выбора даты с помощью мыши. Сразу после размещения в форме календарь готов к работе.

Рис.3. Календарь на форме

В красном кружке выделена текущая дата (она же подробнее указана в нижней части календаря), синим подсвечена дата, выбранная с помощью мыши или дата, устанавливаемая в календаре по умолчанию. Слева можно отображать номера недель в году (свойство WeekNumbers). С помощью кнопок в верхней части календаря можно перемещаться по месяцам. Чтобы вернуться к месяцу с текущей датой, достаточно щелкнуть на ней в нижней части календаря.

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

2.3.3 Список текущих событий

Реализован при помощи компонента DBGrid. Он связан с ресурсом данных DS1 и запросом на выборку qr4, находящимися в модуле данных DM.

При каждом запуске приложения выполняется функция FormCreate, которая выглядит следующим образом:

void __fastcall TfrmMain:: FormCreate (TObject *Sender)

{

MonthCalendar1->Date = Date ();

DM->qr4->Close ();

DM->qr4->SQL->Clear ();

DM->qr4->SQL->Text="SELECT DATE1, NAME FROM TBL_EVENTS where DATE1=: CURRENT_DATE";

DM->qr4->ParamByName ("CURRENT_DATE") - >AsDate = Date ();

DM->qr4->Open ();

DM->qr4->FetchAll ();

}

Здесь запрос qr4 производит выборку данных из таблицы TBL_EVENTS, значение столбца DATE1 которых совпадает с текущей датой.

2.4 Планировщик задач

2.4.1 Форма управления планировщиком задач

Планировщик задач вызывается с помощью главного меню: "События", "Просмотр событий". Появляется форма (frmViewEv), которая позволяет просматривать, добавлять, редактировать и удалять записи.


Рис.4 Форма управления планировщиком задач.

На форме представлено содержимое таблицы TBL_EVENTS, с помощью DBGrid. Под таблицей расположены навигационные клавиши, позволяющие перемещаться по записям таблицы вперед и назад. Они реализованы при помощи компонента DBNavigator. Он связывается с базой данных ORGANIZER через свойство DataSet.

Функциональная клавиша "Удалить" удаляет всю текущую запись в DBGrid с помощью функции btnDelClick:

void __fastcall TfrmViewEv:: btnDelClick (TObject *Sender)

{

if (Application->MessageBox ("Вы действительно хотите удалить эту запись??","Подтвердите удаление",MB_OKCANCEL + MB_ICONQUESTION) ! = IDCANCEL)

{

try

{

DM->qr5->Close ();

DM->qr5->SQL->Clear ();

DM->qr5->SQL->Text = "DELETE from TBL_EVENTS where id=: id";

DM->qr5->ParamByName ("id") - >AsInteger=DM->qr1->FieldByName ("id") - >AsInteger;

DM->qr5->Prepare ();

DM->qr5->ExecSQL ();

DM->IBTransaction1->Commit ();

DM->qr1->Close ();

DM->qr1->SQL->Clear ();

DM->qr1->SQL->Text = "SELECT * FROM TBL_EVENTS";

DM->qr1->Open ();

DM->qr1->FetchAll ();

}

catch (. .)

{

DM->IBTransaction1->Rollback ();

ShowMessage ("Error");

}

}

}

При нажатии кнопки "Удалить" функция вызывает диалоговое окно пользователя MessageBox, под названием "Подтвердите удаление", вопросом пользователю "Вы действительно хотите удалить эту запись?" и кнопками "Да" и "Отмена".

При нажатии кнопки "Да" функция выполняет SQL-запрос к таблице TBL_EVENTS, удаляющий запись с текущим ID.

При нажатии "Отмена" функция возвращается на форму управления планировщиком задач.

На форме также представлена возможность просмотра записей таблицы TBL_EVENTS за определенный промежуток времени. Для этого на форму помещены два компонента DataTimePicker, задающие этот промежуток по датам. Нажатие кнопки "Просмотр" реализует следующая функция:

void __fastcall TfrmViewEv:: btnViewClick (TObject *Sender)

{

DM->qr1->Close ();

DM->qr1->SQL->Clear ();

DM->qr1->SQL->Text="SELECT DATE1, NAME FROM TBL_EVENTS where DATE1 between: d1 and: d2";

DM->qr1->ParamByName ("d1") - >AsDate=DateTimePicker1->Date;

DM->qr1->ParamByName ("d2") - >AsDate=DateTimePicker2->Date;

DM->qr1->Open ();

DM->qr1->FetchAll ();

}

После нажатия кнопки "Просмотр" выполняется SQL-запрос, который делает выборку тех записей в таблице TBL_EVENTS, значения столбца которых находятся в промежутке между значениями DataTimePickerов, которые посылаются в запрос в качестве параметров.

Функциональные клавиши "Добавить" и "Редактировать" вызывают формы добавления и редактирования событий соответственно.

2.4.2 Форма добавления нового напоминания

Форма вызывается как из главного меню, так и с главной формы приложения нажатием кнопки "Напомнить о…", а также из формы управления планировщиком задач.


Рис.5. Форма добавления нового напоминания

На форме помещены 2 компонента: DateTimePicker1 и Memo1. после ввода соответствующей информации и нажатии на кнопку "ОК" вызывается функция BitBtn1Click: