И размещение в них визуальных компонент 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

И размещение в них визуальных компонент



 

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

В методе OnShow формы нужно выполнить открытие одной или более таблиц и запросов, участвующих в просмотре:

DM->CHI_CL->Open();

DM->CL->Open();

DM->CHIL->Open();

В методе OnClose формы нужно выполнить закрытие одной или более таблиц и запросов, участвующих в просмотре:

DM->CHI_CL->Close();

DM->CL->Close();

DM->CHIL->Close();

Формы просмотра будут содержать экземпляр компоненты DBGrid со страницы Data Controls.

Эта компонента предназначена для отображения табличных данных из БД. Так как редактирование таблиц будет проводиться путем нажатия кнопок, то групповое свойство Options должно иметь значения:

dgEditing false -не разрешать редактирование на самой визуальной таблице

dgRowSelect true -разрешать выбор строки для редактирования.

Кроме того, свойство ReadOnly нужно задать равным true (это означает, что редактирование таблицы визуально не разрешено).

Свойство DataSource компоненты DBGrid выбирается равным одному из экземпляров TDataSource, соответствующим либо таблице TTable (если отображаются данные из одной таблицы), либо запросу TQuery (если отображаются данные из нескольких таблиц).

Для указания отображаемых в таблице столбцов таблицы необходимо при нахождении курсора мыши в области таблицы нажать правую клавишу и из контекстного меню выбрать пункт ColumnsEditor:

Установку заголовка выделенного столбца можно сделать, выбрав в групповом свойстве столбца Title свойство Caption:

Также на форме размещаются кнопки Добавить Удалить Заменить Закрыть.

С событием OnClick кнопки Добавить свяжем процедуру вида:

void __fastcall TCH_Form::Button2Click(TObject *Sender)

{DM->CHIL->Insert();//Перевод НД в состояние dsInsert

Edit_CHIL_Form->ShowModal();//Вызов формы редактирования}

С событием OnClick кнопки Изменить свяжем процедуру одного из двух видов:

· Для случая, когда таблица содержит только поля, заполняемые на форме:

void __fastcall TPr_Form::Button3Click(TObject *Sender)

{DM->PR->Edit();//Перевод НД в состояние dsEdit

Edit_PR_Form->ShowModal();//Вызов формы редактирования

}

· Для случая, когда таблица содержит поля, выбираемые из других таблиц:

void __fastcall TCH_Form::Button4Click(TObject *Sender)

{Variant V;

TLocateOptions Opts;

Opts.Clear();

V=DM->CHI_CL->FieldByName("ncl")->AsInteger;

DM->CL->First();//Установка таблицы на начало

//Поиск в таблице записи с определенным значением ключа

DM->CL->Locate("ncl",V,Opts);

V=DM->CHI_CL->FieldByName("nchi")->AsInteger;

DM->CHIL->First();//Установка таблицы на начало

//Поиск в таблице записи с определенным значением ключа

DM->CHIL->Locate("nchi",V,Opts);

DM->CHIL->Edit();

Edit_CHIL_Form->ShowModal();}

Процедура, связанная с событием OnClick кнопки Удалить, будет иметь вид:

void __fastcall TPr_Form::Button4Click(TObject *Sender)

{DM->PR->Delete();

DM->PR->Close();

DM->PR->Open();}

После настройки форма примет вид:

Форма редактирования должна содержать поля DBEdit, DBRadioGroup, TBCheckBox для отображения и редактирования полей разных типов и, возможно, компоненты TDBLookupComboBox для выбора значений из связанной таблицы.

В компоненте DBEdit следует установить следующие свойства:

· DataSource - имя одного из экземпляров TDataSource, соответствующего редактируемой таблице TTable;

· DataField – имя редактируемого поля таблицы.

Например, для нашего примера форма редактирования предметов может выглядеть так:

Форма редактирования таблицы, у которой есть поля связи с другими таблицами (для нашего примера это классы), имеет вид:

Компонента TDBLookupComboBox предназначена для выбора значения из одной таблицы с целью помещения ее ключа в другую, связанную с первой таблицу. В ней заполняются свойства:

· ListSource -имя компоненты TDataSource, связанной с таблицей, из которой выбирается значение (в примере PR_DS);

· ListField -имя отображаемого поля таблицы (в примере NAMEPRED);

· KeyField -имя ключевого поля таблицы (в примере NP);

· DataSource -имя компоненты TDataSource, связанной с таблицей, в которую будет записываться ключ выбранного значения (в примере CL_DS);

· DataField -имя поля таблицы, в которое будет записываться выбранное значение (в примере NP).

При нажатии кнопки Ok на форме редактирования добавляемые или изменяемые данные должны попасть в таблицу и отобразиться на форме просмотра:

void __fastcall TEdit_CL_Form::Button1Click(TObject *Sender)

{DM->CL->Post();

DM->CL_PR->Close();

DM->CL_PR->Open();

Close();}



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 179; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.105.124 (0.01 с.)