Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по курсу Delphi.doc
Скачиваний:
11
Добавлен:
15.11.2019
Размер:
1.81 Mб
Скачать

Свойства компонента CheckBox

Свойство

Определяет

Name

Имя компонента. Используется в программе для доступа к свойствам компонента

Caption

Текст, поясняющий назначение флажка

Checked

Состояние, внешний вид флажка: если флажок установлен (в квадратике есть "галочка"), то checked = TRUE; если флажок сброшен (нет "галочки"), то Checked=FALSE

State

Состояние флажка. В отличие от свойства Checked, позволяет различать установленное, сброшенное и промежуточное состояния. Состояние флажка определяют константы:

cbChecked (установлен); cbGrayed (серый, неопределенное состояние); cbUnChecked (сброшен)

AllowGrayed

Может ли флажок быть в промежуточном состоянии: если AllowGrayed = FALSE, то флажок может быть только установленным или сброшенным;

если AllowGrayed = TRUE, то допустимо промежуточное состояние

Left

Расстояние от левой границы флажка до левой границы формы

Top

Расстояние от верхней границы флажка до верхней границы формы

Height

Высоту поля вывода поясняющего текста

Width

Ширину поля вывода поясняющего текста

Font

Шрифт, используемый для отображения поясняющего текста

ParentFont

Признак наследования характеристик шрифта родительской формы

Компонент SpinEdit удобно использовать, когда нужно вводить или редактировать данные, изменяющиеся в заданном диапазоне и с заданным шагом. Значок этого компонента находится на вкладке Samples. Свойства его приведены в табл. 5.2.

Таблица 5.2.

Свойства компонента SpinEdit

Свойство

Определяет

Name

Имя компонента. Используется в программе для доступа к свойствам компонента

Left

Расстояние от левой границы компонента до левой границы формы

Top

Расстояние от верхней границы компонента до верхней границы формы

Height

Высота компонента

Width

Ширина компонента

Font

Шрифт, используемый для отображения поясняющего текста

ParentFont

Признак наследования характеристик шрифта родительской формы

Increment

Шаг приращения величины

MaxValue

Максимальная величина вводимых исходных данных

MinValue

Минимальная величина вводимых исходных данных

Пример составления программы

Рассмотрим пример программы, демонстрирующий применение описанных компонент.

Пример 5.1.

Дан файл, содержащий следующие данные о сотрудниках: фамилия, возраст, рост, масса. Вывести данные о сотрудниках, которые имеют:

а) возраст не старше 50 лет и рост не выше 180 сантиметров;

б) массу не менее 70 килограмм и рост не ниже 160 сантиметров;

в) массу не более 90 килограмм и возраст не моложе 30 лет.

Поместим на форму компонент GroupBox, а затем поместим на него три компонента типа CheckBox, три компонента типа Combobox и три компонента типа SpinEdit. При правильной последовательности действий все компоненты, находящиеся на компоненте GroupBox, при перемещении его по форме будут перемещаться вместе с ним. Так же добавим один компонент StringGrid и два компонента типа Button. Примерное расположение компонент на форме показано на рис.5.1.

Рис. 5.1. Внешний вид формы

Для компонент типа ComboBox зададим соответствующие альтернативы (см. работу №2): Combobox1 – «не старше», «не моложе»; ComboBox2 – «не выше», «не ниже»; ComboBox3 – «не больше», «не меньше».

Компонент StringGrid будем использовать для вывода результатов работы программы. При его создании присвоим свойствам FixedCols и FixedRows значения 0 и 1 соответственно, что позволит использовать первую строку в качестве заголовка для соответствующих столбцов таблицы. Свойство FixedRows=1 будет означать, что первая строка зафиксирована, т.е. не будет перемещаться при использовании полосы прокрутки.

Величины свойств MinValue и MaxValue компонент типа SpinEdit будут определены в процессе чтения данных из файла. Это сделано для большей универсальности работы программы, что позволит не корректировать данные величины при смене исходных данных. Последние будут находиться в файле data.inp, который пользователю необходимо сформировать самостоятельно. Файл, использованный в программе, приведен ниже:

Иванов

30

170

80

Петров

42

185

98

Сидоров

26

160

60

Васечкин

32

169

88

Колокольчиков

51

175

70

Под каждого человека выделено 4 строки. Первая содержит в себе фамилию, вторая – возраст, третья – рост, четвертая – вес. При чтении из файла данные заносятся в массив, состоящий из элементов типа record.

Функции чтения информации из файла исходных данных, определение величин свойств MinValue и MaxValue компонентов типа SpinEdit, а так же заполнения заголовков столбцов таблицы возложены на процедуру TForm1.FormActivate (см. пример создания в работе №2). Текст этой процедуры приведен ниже:

procedure TForm1.FormActivate(Sender: TObject);

Var ff:TextFile;

Begin

StringGrid1.Cells[0,0]:='Фамилия';

StringGrid1.Cells[1,0]:='Возраст';

StringGrid1.Cells[2,0]:='Рост';

StringGrid1.Cells[3,0]:='Масса';

AssignFile(ff,'data.inp');

Reset(ff);

count:=0;

SpinEdit1.MinValue:=1000;

SpinEdit2.MinValue:=1000;

SpinEdit3.MinValue:=1000;

SpinEdit1.MaxValue:=0;

SpinEdit2.MaxValue:=0;

SpinEdit3.MaxValue:=0;

while not eof(ff) do

begin

count:=count+1;

readln(ff,person1[count].famil);

readln(ff,person1[count].vozr);

if person1[count].vozr<SpinEdit1.MinValue then

SpinEdit1.MinValue:=person1[count].vozr;

if person1[count].vozr>SpinEdit1.MaxValue then

SpinEdit1.MaxValue:=person1[count].vozr;

readln(ff,person1[count].rost);

if person1[count].rost<SpinEdit2.MinValue then

SpinEdit2.MinValue:=person1[count].rost;

if person1[count].rost>SpinEdit2.MaxValue then

SpinEdit2.MaxValue:=person1[count].rost;

readln(ff,person1[count].massa);

if person1[count].massa<SpinEdit3.MinValue then

SpinEdit3.MinValue:=person1[count].massa;

if person1[count].massa>SpinEdit3.MaxValue then

SpinEdit3.MaxValue:=person1[count].massa;

end;

CloseFile(ff);

SpinEdit1.Value:=SpinEdit1.MinValue;

SpinEdit2.Value:=SpinEdit2.MinValue;

SpinEdit3.Value:=SpinEdit3.MinValue;

end;

После запуска программы необходимо выбрать соответствующие параметры, для которых будет проводиться обработка исходных данных (см. рис.2) и нажать клавишу «Вывод данных». После этого запустится процедура TForm1.Button1Click, предназначенная для обработки исходных данных в соответствии с выбранными параметрами. Ее текст представлен ниже.

Рис.5.2. Пример выбора параметров при работе с программой

procedure TForm1.Button1Click(Sender: TObject);

Var count1,count2,i,j:integer;

Begin

{Очистка таблицы}

for i:=1 to count do

for j:=1 to 4 do

StringGrid1.Cells[j-1,i]:='';

person2:=person1;

{Возраст}

if CheckBox1.Checked then

begin

if ComboBox1.ItemIndex=0 then

begin

for i:=1 to count do

if person2[i].vozr<SpinEdit1.Value then

begin

person2[i].famil:='1';

end;

end;

if ComboBox1.ItemIndex=1 then

begin

for i:=1 to count do

if person2[i].vozr>SpinEdit1.Value then

person2[i].famil:='1';

end;

end;

{рост}

if CheckBox2.Checked then

begin

if ComboBox2.ItemIndex=0 then

begin

// не выше

for i:=1 to count do

if person2[i].rost>SpinEdit2.Value then

person2[i].famil:='1';

end;

if ComboBox2.ItemIndex=1 then

begin

// не ниже

for i:=1 to count do

if person2[i].rost<SpinEdit2.Value then

person2[i].famil:='1';

end;

end;

{масса}

if CheckBox3.Checked then

begin

if ComboBox3.ItemIndex=0 then

begin

for i:=1 to count do

if person2[i].massa>SpinEdit3.Value then

person2[i].famil:='1';

end;

if ComboBox3.ItemIndex=1 then

begin

for i:=1 to count do

if person2[i].massa<=SpinEdit3.Value then

person2[i].famil:='1';

end;

end;

{вывод результатов}

count1:=0;

for i:=1 to count do

begin

if person2[i].famil<>'1' then

begin

count1:=count1+1;

StringGrid1.Cells[0,count1]:=person2[i].famil;

StringGrid1.Cells[1,count1]:=IntToStr(person2[i].vozr);

StringGrid1.Cells[2,count1]:=IntToStr(person2[i].rost);

StringGrid1.Cells[3,count1]:=IntToStr(person2[i].massa);

end;

end;

end;

Условие выбора того или иного параметра определяется структурой типа if CheckBox.Checked then. Если параметр выбран, то определяется предел, по которому в дальнейшем будет проводиться обработка исходных данных (структура типа if ComboBox.ItemIndex=0 ) и производятся необходимые операции выбора.

Результаты работы программы представлены на рис. 5.3.

Рис. 5.3. Результаты работы программы