Смекни!
smekni.com

База данных 3 (стр. 3 из 5)

- нажать правой клавишей мыши в области диалога редак­тирования полей;

- в выведенном меню выбрать опцию AddFields, в резуль­тате чего на экране появится соответствующий диалог;

- добавить необходимые поля выбором кнопки Ok. В результате диалог редактирования полей должен содер­жать список созданных объектов, свойствакоторых отражены в окне ObjectInspector. Каждый из созданных объектов, указываю­щих на соответствующие поля, имеет свойство Name.

Например, для таблицы с именем stud.dbf, содержащей фа­милии студентов и их оценки с именами полей FAM и OZ, для полей FAM и OZ будут созданы объекты с именами Table1[‘FAM ‘]и Table1[‘OZ’].

Созданные объекты позволяютоперироватьс таблицей на уровне полей.

Фрагмент программы

Var

Soz : real;//переменная для средней оценки

N : integer; //счётчик записей

begin

Table1.First;

While not Table1.EOF do begin

soz:=soz+Table1[‘OZ’].Value;//накоплениесуммы

n:=n+1;//увеличение счётчика записей

Table1.Next;//переход на след. запись

End;

if (n<>0) then//проверка отсутствия записей

soz := soz/n;//расчёт среднего

end;

показывает, как вычислить среднюю оценку всех студентов. Для отображения на экране вычисленных данных можно, например, использовать объекты Label (текстовая метка). Свойст­во Caption объекта Label отвечает за надпись на форме приложе­ния.

Например, если имя объекта Label1, то фрагмент програм­мы

var

buf : string[50];

buf:="Средняяоценка:”+FloatToStr(soz);

Label1.Caption := buf;

позволяет отобразить на форме вычисленное значение средней оценки.

Свойство Caption представляет собой данное специализи­рованного типа AnsiString, позволяющего хранить символьные строки в формате отличном от формата хранения в символьном массиве. Для преобразования значения типа символьной строки в значение типа AnsiString используется операция при­сваивания, справа от которой указывается символьная строка или ее адрес.

Для вывода разного рода списков плавающего размера используется компонента Memo. Добавление, например, фамилии студента в список будет осуществляться с помощью оператора:

Memo1.lines.Add(Table1[‘FAM’]);

Кроме ввода данных в таблицу, как правило, в программу требуется вводить другие исходные данные. Для ввода исходных данных в программу используются объекты Edit. Объект Editимеет свойство Text, которое является данным типа AnsiString и содержит значение, введенное в поле ввода на форме приложе­ния.

Например, если имя объекта Edit1, то фрагмент программы

Var

soz : real;

n : integer;

begin

soz:=0;

n:=0;

Table1.First;

While not Table1.EOF do begin

/* проверка совпадения поля FAM и текста в Edit1*/

if (Table1[‘FAM’] = Editl.Text) then begin

soz:=soz+Table1[‘OZ’];

n:=n+1;

end;

Table1.Next;

End;

If (n<>0) then soz:=soz/n;

End;

позволяет рассчитать оценку не всех студен­тов, а конкретного студента, фамилия которого введена в поле ввода объекта Edit1.

Ряд методов в Borland Delphi специально предусмотрен для преобразования типов:

FloatToStr() - преобразование вещественного числа в строку;

IntToStr() - преобразование целого числа в строку;

StrToFloat() - преобразование строки в вещественное число;

StrToInt() - преобразование строки в целоечисло.

Как правило, программные модули выполняются в резуль­тате определенных действий пользователя. Например, фрагмент программы по расчёту и выводу средней оценки может выпол­няться при нажатии кнопки «Расчет». Событие Click (одинар­ное нажатие) объекта Button (кнопка) позволяет определить функцию, выполняемую при нажатии на кнопку. За надпись на кнопке отвечает свойство Caption.

Заголовок функции генерируется автоматическипри выбо­ре в закладке Events инспектора объектов соответствующего со­бытия и двойном щелчке напротив, сама функция инкапсулирует­ся в класс Form (форма) - основной класс приложения. В BorlandDelphi такие функции называются обработчиками событий, т. к. они содержат программный код, выполняющийся при насту­плении соответствующего события этой компоненты. Например, если на форме с именем Form1 разместить ком­поненту Button с именем Button1 и создать обработчик события Click для компоненты Button1, в редакторе кода в файле Unit1.pas будет создана пустая функция, которая должна содер­жать код, выполняемый, если произойдёт событие Click.

procedure TForm1.Button1Click(Sender: TObject);

begin

//код, выполняющийся при наступлении события OnClick //например, расчёт средней оценки студентов

end;

а в заголовочном файле unitUnit1 в шаблоне класса TForm1 будет объявлена функция обработчика события Click.

procedure Button1Click(Sender: TObject);

Приведём вид формы приложения (рис. 9) примера работы с таблицей stud.dbf, расчёта средней оценки студента, фамилия которого вво­дится в поле ввода и описание компонент приложения с по­яснением настройки свойств и событий (табл. 1).

Рис. 1. Внешний вид формы приложения

Таблица 1. Свойства и события компонент приложения

Компонент Cвойство Значение
Table Name Table1
TableName stud.dbf
DataSource Name DataSource1
DataSet Table1
DBGrid Name DBGrid1
DataSource DataSource1
DBNavigator Name DBNavigator1
DataSource DataSource1
ShowHint TRUE (показывает подсказки к кноп­кам навигатора)
Button Name Button1
Caption "Расчёт средней оценки студентов"
Label Name Label1
Caption Определяется в обработчике события OnClick компоненты Button1
Edit Name Edit1
Text Определяется пользователем
Компонент Cобытие Значение
Button OnClick Одинарное нажатие на кнопку

На рис. 2 показан вид работающего Windows-приложения после отладки и компиляции проекта, запускаприложения, ввода в поле ввода фамилии Петров и нажатия кнопки "Расчёт средней оценки".

Рис. 2. Внешний вид работающего приложения

3. Печать данных

A. Для осуществления печати результатов, представления данных в удобной для просмотра форме удобно использовать так называемые отчёты. В Borland Delphi имеется набор компо­нент для быстрой визуальной разработки отчётов. За автоматиче­скую генерацию отчёта отвечает компонента TRVTableConnect(вкладка Rave). Вся дальнейшая работа осуществляется под управлением утилиты RaveReportDesigner.

Для создания отчёта необходимо выполнить последовательность действий:

1. Для вызова утилиты выберите в главном меню команду Tools-> RaveDesigner.

2. C помощью команды File->NewDataObject вызовите окно DataConnection, в котором выберите продолжение DirectDataView, и после щелчка на кнопке Next-RvTableConnection1. Таким образом, отчет связывается с источником данных, которые он будет отображать.

3. Вызовите мастера создания отчета по данным, получаемым из единственной таблице командой Tools-> ReportWizards -> SimpleTable. Этот мастер с помощью последовательно раскрывающихся окон определяет основные параметры отчета.

4. Для подготовки проекта отчета скорректируйте размеры полос и взаимное расположе­ние на них компонент.

5. Для указания связи приложения с проектом имя файла отчета (*.rav) помещается в свойство ProjectFile компоненты TrvProject, которую необходимо поместить на форму.

6. Напишите обработчик события щелчка на кнопке Отчет:

procedure TForm1.Button1Click (Sender: TObject);

Begin

RvProject1.Execute;

End;

B. Существует альтернативная технология создания отчетов в DelphiQuickReport.

Этот компонент всегда помещается на пустую форму, образуя с ее помощью визуальную среду конструирования отчета.

Для создания отчёта необходимо выполнить последовательность действий:

1. Создать дополнительную форму для отчёта,выбрав опции меню File->NewForm, вынести на форму отчёта компоненту TQuickRep из вкладки Qreport и сохраните.

2. Эта форма не будет создаваться автоматически в момент старта программы, поэтому после ее присоединения к проекту выберите команду Project-> Options и перенесите ее в список доступных форм Availableforms.

3. С помощью команды File->Useunitсвязать новую форму с модулем данных, после чего поместить в свойство DataSet компонента QuickRep1 значение того набора данных, который будет содержать основную информацию.

4. Вынести на форму отчёта компоненты QRBand (полосы отчёта). Эта компонента является частью печатной страницы, т.е. основанием для ввода данных. В зависимости от свойств BandType различают несколько типов компонентыQRBand: за­головочная полоса (rbTitle) выводится только один раз в начале страницы (может содержать заголовок и наименования столбцов таблицы); полоса данных (rbDetail) содержит значения полей текущей записи и выводится столько раз, сколько записей в таб­лице; rbSummary выводится один раз в конце отчёта.

5. Установить значение свойства BandType компоненты QRBand. Рекомендуется выносить как минимум две полосы: за­головочную и данных.

6. На заголовочную полосу вынести компоненты QRLabel(аналогичны компонентам Label). Свойство Caption содержит выводимую на печать информацию (например, наименования столбцов, поясняющие надписи, расчётные значения и т.д.).