Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 08:11, курсовая работа
Подходя к современным требованиям нельзя не отметить, что эффективная работа всецело зависит от уровня оснащения электронным оборудованием, таким, как компьютеры, средства связи, копировальные устройства, а также соответствующего программного обеспечения. Ни одна современная организация не обходится без систем сбора и обработки информации. Чем больше стадий, тем этот процесс сложнее, чем больше и разнообразнее спектр информации, тем больше потребность в автоматизированном сборе, обработке и хранении информации в электронном виде. Поиск информации в бумажном виде занимает от минуты до нескольких дней, в зависимости от того, когда информация была собрана, поиск в электронном хранилище данных выполняется за доли и единицы секунд.
Введение…………………………………………………………………………3
1 Интерфейсы компьютерных систем…………………………………………4
1.1 Эволюция пользовательских интерфейсов……………………………….4
1.2 Актуальность интерфейсов....……………………………………………....5
1.3 Понятие интерфейса пользователя………………………………………...6
1.4 Виды интерфейсов……………………………...…………………………...8
2 Разработка пользовательского интерфейса «Языковая школа»……..…...10
2.1 Подключение базы данных к проекту Delphi………….....……………10
2.2 Интерфейсное управление данными..……………..……………………11
2.3 Диалоги загрузки графических файлов…………….…………………..12
2.4 Главное и контекстное меню...……………………..……………………..14
2.5 Создание сортировки.……………………………..……………………….19
2.5 Создание фильтрации для записей таблицы…………….……………….21
2.7 Поиск и работа с записями набора данных……………..………………25
Заключение…………………………………………………………………...…29
Список использованной литературы...………………...…
if Application.MessageBox(PChar('
DataM.UchenikiTable.Post; //если изменения есть, сохраняем
if DBGrid1.DataSource = DataM.PrepodaSource then
if DataM.PrepodaTable.Modified then
if Application.MessageBox(PChar('
DataM.PrepodaTable.Post;
end;
Для элемента главного меню CancelEdit_Item программный код следующий:
procedure TForm1.CancelEdit_ItemClick(
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
if DataM.UchenikiTable.Modified then
DataM.UchenikiTable.Cancel;
//отменяем изменения, если
if DBGrid1.DataSource = DataM.PrepodaSource then
if DataM.PrepodaTable.Modified then
DataM.PrepodaTable.Cancel;
end;
Для пункта Del_Item обработчик выглядит таким образом:
procedure TForm1.Del_ItemClick(Sender: TObject);
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
begin
//создаем сообщение
if Application.MessageBox(PChar('
'Внимание!', MB_YESNOCANCEL + MB_ICONQUESTION) = id_YES then
begin
DataM.UchenikiTable.Delete; //удаляем запись
end;
end;
if DBGrid1.DataSource = DataM.PrepodaSource then
begin
//создаем сообщение
if Application.MessageBox(PChar('
'Внимание!', MB_YESNOCANCEL + MB_ICONQUESTION) = id_YES then
begin
DataM.PrepodaTable.Delete; //удаляем запись
end;
end;
Для создания контекстного меню поместим на форму компонент PopupMenu1. Его проектирование во многом схоже с проектированием MainMenu, потому что производится также с помощью специального конструктора.
Рисунок 8 – Создание контекстного меню
Когда макет PopupMenu1 готов, можно указывать его в одноименном свойстве какого-либо из имеющихся визуальных компонентов, например DBGrid1.
Далее двойным щелчком по каждому из пунктов меню «Правка» в режиме конструктора вызовем обработчик события OnClick, в котором требуется только прописать вызов соответствующей процедуры главного меню, никаких новых операторов включать не понадобится.
procedure TMainForm.AddPop_ItemClick(
begin
Add_ItemClick(Sender);
end;
procedure TMainForm.EditPop_ItemClick(
begin
Edit_ItemClick(Sender);
end;
procedure TMainForm.DelPop_ItemClick(
begin
Del_ItemClick(Sender);
end;
procedure TMainForm.DelFotoPop_
begin
DelFotoBtnClick(Sender);
end;
procedure TMainForm.LoadFotoPop_
begin
LoadFotoBtnClick(Sender);
end;
2.5 Сортировка
Сортировка заключается в упорядочивании записей по определенному полю в порядке возрастания или убывания содержащихся в нем значений. Сортировку можно выполнить и по нескольким полям. Например, при сортировке по двум полям записи сначала упорядочиваются по значениям первого поля, а затем группы записей с одинаковым значением первого поля сортируются по второму полю.
Сортировка наборов данных выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей. Таким образом, сортировка возможна по полям, для которых создан индекс.
В главном меню проекта создадим новый пункт со значением «Сортировка» в свойстве Caption и Sort_Menu в свойстве Name, имеющий в свою очередь 6 подпунктов со следующими заголовками (свойство Caption):
Рисунок 9 – Создание меню «Сортировка»
В обработчиках события OnClick каждого из перечисленных пунктов меню «Сортировка» напишем:
procedure TForm1.SortBySur_ItemClick(
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
DataM.UchenikiTable.Sort := 'Familiya ASC';
if DBGrid1.DataSource = DataM.PrepodaSource then
DataM.PrepodaTable.Sort := 'Familiya_P ASC';
end;
procedure TForm1.SortByName_ItemClick(
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
DataM.UchenikiTable.Sort := 'Imya ASC';
if DBGrid1.DataSource = DataM.PrepodaSource then
DataM.PrepodaTable.Sort := 'Imya_P ASC';
end;
procedure TForm1.SortByPat_ItemClick(
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
DataM.UchenikiTable.Sort := 'Otchestvo ASC';
if DBGrid1.DataSource = DataM.PrepodaSource then
DataM.PrepodaTable.Sort := 'Otchestvo_P ASC';
end;
procedure TForm1.SortOrgsByNaz_
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
DataM.UchenikiTable.Sort := 'Predmet ASC';
if DBGrid1.DataSource = DataM.PrepodaSource then
DataM.PrepodaTable.Sort := 'Predmet ASC';
end;
procedure TForm1.SortByKlass_ItemClick(
begin
if DBGrid1.DataSource = DataM.UchenikiSource then
DataM.UchenikiTable.Sort := 'Klass ASC';
end;
2.6 Фильтрация записей таблицы
Фильтрация – это задание ограничений для записей, отбираемых в набор данных. По умолчанию фильтрация записей не ведется, и набор данных, например ADOTable, содержит все записи связанной с ним таблицы БД.
Фильтрация похожа на SQL-запросы, но является менее мощным средством. По сравнению с SQL-запросами фильтрация менее эффективна, так как ограничивает количество записей, видимых в наборе.
Поместим на главную форму компонент Panel1 под именем FilterPanel, в свойстве Align которого выберем значение alTop и False в свойстве Visible. К FilterPanel добавим две новые панели TGroupBox. Для первой из них в свойстве Name укажем значение FilterAllBox, а для второй – FilterOrgsBox. Заголовки панелей оставим одинаковыми, т.е. в свойстве Caption у каждого компонента пропишем «Фильтр».
Вызов непосредственно
функции фильтра будем
procedure TMainForm.Filter_MenuClick(
begin
FilterPanel.Visible := true;
if DBGrid1.DataSource = DataM.UchenikiSource then
begin
FilterAllBox.Visible := true;
FilterOrgsBox.Visible := false;
FilterBySur.SetFocus;
end;
if DBGrid1.DataSource = DataM.PrepodaSource then
begin
FilterOrgsBox.Visible := true;
FilterAllBox.Visible := false;
FilterByNaz.SetFocus;
end;
end;
Рассмотрим обработчик события OnClick кнопки FilterAllBtn:
procedure TForm1.FilterPrepodaBtnClick(
var Familiya_P, Imya_P, Otchestvo_P, Predmet : string;
begin
//включаем свойство Filter таблицы AllBooks
DataM.PrepodaTable.Filtered := true;
//присваиваем переменным значения, введенные в поля Edit
Familiya_P := FilterByFamiliya_P.Text;
Imya_P := FilterByImya_P.Text;
Otchestvo_P := FilterByOtchestvo_P.Text;
Predmet := FilterByPredmet.Text;
//если все поля Edit не пусты, то
if (Length(FilterByFamiliya_P.
and(Length(FilterByOtchestvo_
//фильтруем по всем полям в DBGrid
DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(
'and Imya_P='+QuotedStr(Imya_P)+'
'and Predmet='+QuotedStr(Predmet);
//если пусто поле FilterByTel, то
if (Length(FilterByFamiliya_P.
and(Length(FilterByOtchestvo_
//фильтруем по всем полям в DBGrid
DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(
'and Imya_P='+QuotedStr(Imya_P)+'
if (Length(FilterByFamiliya_P.
and(Length(FilterByOtchestvo_
//фильтруем по всем полям в DBGrid
DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(
if (Length(FilterByFamiliya_P.
and(Length(FilterByOtchestvo_
//фильтруем по всем полям в DBGrid
DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(
if (Length(FilterByFamiliya_P.
and(Length(FilterByOtchestvo_
//фильтруем по всем полям в DBGrid
DataM.PrepodaTable.Filter := 'Imya_P='+QuotedStr(Imya_P);
if (Length(FilterByFamiliya_P.
and(Length(FilterByOtchestvo_
//фильтруем по всем полям в DBGrid
DataM.PrepodaTable.Filter := 'Otchestvo_P='+QuotedStr(
end;
Перейдем к обработке события OnClick кнопки FilterAllCancel:
procedure TForm1.
begin
//очищаем поля ввода параметров фильтра
FilterByFamiliya_P.Text := '';
FilterByImya_P.Text := '';
FilterByOtchestvo_P.Text := '';
FilterByPredmet.Text := '';
//устанавливаем фокус ввода в поле фильтра "По фамилии"
FilterByFamiliya_P.SetFocus;
//делаем
недоступными кнопки панели
FilterPrepodaBtn.Enabled := true;
FilterPrepodaCancel.Enabled := true;
//отменяем фильтр и возвращаем исходное содержание таблицы
DataM.PrepodaTable.Filtered := true;
end;
Спроектируем панель FilterOrgsBox подобным описанному образом и в обработчике события OnClick кнопки FilterOrgsBtn напишем:
procedure TForm1.FilterUchenikiBtnClick(
var Familiya, Imya, Otchestvo, Telefon : string;
begin
//включаем свойство Filter таблицы AllBooks
DataM.UchenikiTable.Filtered := true;
//присваиваем переменным значения, введенные в поля Edit
Familiya := FilterByFamiliya.Text;
Imya := FilterByImya.Text;
Otchestvo := FilterByOtchestvo.Text;
Telefon := FilterByTelefon.Text;
//если все поля Edit не пусты, то
if (Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(
'and Imya='+QuotedStr(Imya)+'
'and Telefon='+QuotedStr(Telefon);
//если пусто поле FilterByTel, то
if (Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(
'and Imya='+QuotedStr(Imya)+'
if (Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(
'and Imya='+QuotedStr(Imya);
if (Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(
if (Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Imya='+QuotedStr(Imya);
if
(Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Otchestvo='+QuotedStr(
if
(Length(FilterByFamiliya.Text)
and(Length(FilterByOtchestvo.
//фильтруем по всем полям в DBGrid
DataM.UchenikiTable.Filter := 'Telefon='+QuotedStr(Telefon);
end;
Отмена фильтра для таблицы UchenikiBooks реализуется посредством следующего кода:
procedure TForm1.
begin
//очищаем поля ввода параметров фильтра
FilterByFamiliya.Text := '';
FilterByImya.Text := '';
FilterByOtchestvo.Text := '';
FilterByTelefon.Text := '';
//устанавливаем фокус ввода в поле фильтра "По фамилии"
FilterByFamiliya.SetFocus;
//делаем
недоступными кнопки панели
FilterUchenikiBtn.Enabled := true;
FilterUchenikiCancel.Enabled := true;
//отменяем фильтр и возвращаем исходное содержание таблицы
DataM.UchenikiTable.Filtered := true;
DataM.UchenikiTable.Filter
:= 'Predmet='+QuotedStr(
end;
2.7 Поиск и работа с записями набора данных
Откроем наш проект и первым делом создадим новую форму FindAllForm с заголовком «Поиск». Сохраним ее модуль под именем FindAllUnit.
Свойству формы BorderStyle присвоим значение bsDialog, а свойству Position – poMainFormCenter. Размеры формы лучше задать небольшими, чтобы она не перекрывала обзор основной формы. Например, в свойстве Height указать значение 207, а в Width – 400. На форму поместим компонент Panel1 со следующими параметрами: BevelInner – bvSpace, BevelOuter – bvLowered, Color – clWhite, Height – 120, Width – 370, Left и Top – 11. На панели разместим LabeledEdit1 со значением «Найти:» в свойстве EditLabel - Caption и четыре TRadioButton:
Рисунок 10 – Окно «Поиск»
Для кнопки «Отмена» обработчик выглядит так:
procedure TFindAllForm.CancelBtnClick(
begin
Close;
end;
Приступим к программированию основной кнопки данного окна «Найти далее». В обработчик события OnClick запишем нижеприведенный код и рассмотрим его построчно:
procedure TFindAllForm.