Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка СУБД MySQL Borland Кузин.doc
Скачиваний:
85
Добавлен:
13.05.2015
Размер:
2.85 Mб
Скачать
    1. Создание форм с выбором режима просмотра или редактирования. Работа с датой и временем (форма «Поставки»)

Обычно к пользовательскому интерфейсу предъявляется требование дружественности, которое заключается в следующем:

- предоставление ясной и полной информации;

- интуитивно понятная организация;

- контроль вводимых пользователем данных;

- защита от неправильных действий;

- подсказки и предупреждения.

Для реализации примера дружественной формы создайте форму «Поставки» (Form5). Свяжите ее с соответствующим пунктом системного меню. Поместите на форму компонентыLabel,DBLookupComboBox,Button,ADODataSet,DataSourceкак показано на рисунке:

Установите для свойства Enabledкнопок Выбрать и Сохранить значениеFalse.

Добавьте в модуль формы Unit5.cppдирективу для включения заголовочного файла главной формы.

Для всех компонентов ADODataSetсвойствоConnectionопределите как Form1->ADOConnection1.

Задайте свойства CommandTextдля компонентовADODataSetв соответствии с таблицей:

Компонент

Значение CommandText

ADODataSet1

select * from supply

ADODataSet2

select * from parts

ADODataSet3

select * from projects

ADODataSet4

select * from providers

Для всех компонентов DataSourceзадайте свойствоDataSet, связав каждыйDataSourceсо «своим»DataSet.

Задайте свойства для компонентов DBLookupComboBoxиDBEditв соответствии с таблицей:

Компонент

DataSource

DataField

ListSource

ListField

KeyField

ReadOnly

DBLookupComboBox1

DataSource1

Part_ID

DataSource2

Part_name

Part_ID

True

DBLookupComboBox2

DataSource1

Project_ID

DataSource3

Project

Project_ID

True

DBLookupComboBox3

DataSource1

Provider_ID

DataSource4

Provider

Provider_ID

True

DBEdit1

DataSource1

Begin_Date

-

-

-

True

DBEdit2

DataSource1

End_Date

-

-

-

True

DBEdit3

DataSource1

Quantity

-

-

-

True

DBEdit4

DataSource1

Price

-

-

-

True

Для реализации ввода даты и времени создайте форму «Ввод даты и времени» (Form6). Поместите на форму компонентыDateTimePicker,Label,Button, как показано на рисунке.

Установите для первого компонента DateTimePickerзначение свойстваKindравноеdtkDate, а для второгоdtkTime.

Для передачи в форму «Ввод даты и времени» параметра выбора даты начала или конца поставки необходимо в заголовочном файле главной формы Unit1.hв разделеpublicописать переменную int n.

Для управления компонентами формы «Поставки» создайте в модуле формы следующие обработчики:

void __fastcall TForm5::Button3Click(TObject *Sender)

{

ADODataSet1->Next(); //Переход к следующей записи

}

//--------------------------------------------------------------void __fastcall TForm5::Button4Click(TObject *Sender)

{

ADODataSet1->Prior(); //Переход к предыдущей записи

}

//--------------------------------------------------------------void __fastcall TForm5::Button5Click(TObject *Sender)

{

ADODataSet1->Edit(); // Редактирование записи

Button1->Enabled=True;

Button2->Enabled=True;

Button3->Enabled=False;

Button4->Enabled=False;

Button5->Enabled=False;

Button6->Enabled=True;

Button7->Enabled=False;

Button8->Enabled=False;

DBLookupComboBox1->ReadOnly=False;

DBLookupComboBox2->ReadOnly=False;

DBLookupComboBox3->ReadOnly=False;

DBEdit3->ReadOnly=False;

DBEdit4->ReadOnly=False;

}

//--------------------------------------------------------------

void __fastcall TForm5::Button6Click(TObject *Sender)

{

ADODataSet1->Post(); // Сохранение изменений

Button1->Enabled=False;

Button2->Enabled=False;

Button3->Enabled=True;

Button4->Enabled=True;

Button5->Enabled=True;

Button6->Enabled=False;

Button7->Enabled=True;

Button8->Enabled=True;

DBLookupComboBox1->ReadOnly=True;

DBLookupComboBox2->ReadOnly=True;

DBLookupComboBox3->ReadOnly=True;

DBEdit3->ReadOnly=True;

DBEdit4->ReadOnly=True;

}

//--------------------------------------------------------------void __fastcall TForm5::Button7Click(TObject *Sender)

{

ADODataSet1->Insert(); // Вставка новой записи

Button1->Enabled=True;

Button2->Enabled=True;

Button3->Enabled=False;

Button4->Enabled=False;

Button5->Enabled=False;

Button6->Enabled=True;

Button7->Enabled=False;

Button8->Enabled=False;

DBLookupComboBox1->ReadOnly=False;

DBLookupComboBox2->ReadOnly=False;

DBLookupComboBox3->ReadOnly=False;

DBEdit3->ReadOnly=False;

DBEdit4->ReadOnly=False;

}

//--------------------------------------------------------------void __fastcall TForm5::Button8Click(TObject *Sender)

{

if (MessageBox(0,"Удалить поставку? ","Удаление поставки",MB_YESNO)==IDYES)

{

ADODataSet1->Delete();

}

}

//--------------------------------------------------------------void __fastcall TForm5::Button1Click(TObject *Sender)

{

Form1->n=1;

Form6->ShowModal();

}

//--------------------------------------------------------------void __fastcall TForm5::Button2Click(TObject *Sender)

{

Form1->n=2;

Form6->ShowModal();

}

//--------------------------------------------------------------

Создайте обработчик нажатия кнопки ОК формы «Ввод даты и времени»:

void __fastcall TForm6::Button1Click(TObject *Sender)

{

int n=Form1->n;

switch(n)

{

case 1: //Дата начала

{

DateTimePicker1->Time=DateTimePicker2->Time;

Form5->DBEdit1->Field->AsDateTime = DateTimePicker1->Date.FormatString("dd.MM.yyyy hh:mm:ss");

break;

}

case 2: //Дата конца

{

DateTimePicker1->Time=DateTimePicker2->Time;

Form5->DBEdit2->Field->AsDateTime = DateTimePicker1->Date.FormatString("dd.MM.yyyy hh:mm:ss");

break;

}

}

Form6->Close();

}