Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Визуальное программирование Delphi.doc
Скачиваний:
69
Добавлен:
05.06.2015
Размер:
603.65 Кб
Скачать

7. Компонент ComboBox(страница Standard)

Компонент предназначен для выбора из выпадающего списка с возможностью редактирования. При изменении текста в окне (в результате выбора из списка или редактирования) вырабатывается событие OnChange. Основные свойства:

  • Text - текст, находящийся в окне редактирования

  • Items строковый массив элементов для выбора. Его заполнение происходит при нажатии на кнопку с многоточием, расположенную рядом со свойством Items. Появляется окно, каждая строка которого будет строкой в выпадающем списке.

  • ItemIndex – номер выбранного элемента

  • Sorted задает сортировку элементов списка по алфавиту

  • Style определяет вид комбинированного списка:

    • сsSimple – редактируемая строка и статический список фиксированной длины;

    • сsDropDown - редактируемая строка и раскрывающийся список;

    • сsDropDownList - раскрывающийся список (запрещается редактирование)

Таким образом, Text можно использовать, если необходимо узнать, что выбрал или ввел пользователь. Свойство Itemlndex, значения которого начинаются с 0, доступно только во время выполнения программы. Если ни одна строка не выбрана, то Itemlndex = -1 (по умолчанию). Для установки начального значения можно ввести в обработчике события OnCreate формы оператор вида

ComboBox1.ItemIndex := 0;

  • Пример. Пусть пользователю требуется изменять шрифт надписи на компоненте Label1, выбирая размер шрифта из выпадающего списка. Для этого добавим на форму компонент ComboBox1 и в свойстве Items зададим следующие значения:

10

12

14

Тогда при изменении значения списка необходимо обрабатывать событие OnChange следующим образом:

procedure TForm1.ComboBox1Change(Sender : TObject)

begin

Label1.Font.Size: = StrToInt(ComboBox1.Text);

end;

Пример выполнения задания

Вычислить площадь треугольника двумя способами: по трем сторонам и по двум сторонам и углу по формулам

S = иS = a*b* sin(a^b), где p – полупериметр; a, b, c – стороны

Пошаговая инструкция для выполнения задания.

  • Измените свойство Caption окна Form1 на «Вычисление площади треугольника», а Name на MyFirstForm.

  • Добавьте на форму 4 окна редактирования: Edit1, Edit2, Edit3, Edit4 и поменяете имена компонентов соответственно на InpA, InpB, InpC, Result. Для этого необходимо изменить соответствующие свойства Name в Инспекторе Объектов.

  • Чтобы выровнять компоненты, нужно их выделить, затем выбрать пункт меню View/Alignment Palette и выбрать нужную кнопку.

  • Сотрите текст из окон редактирования (либо в самом компоненте, либо в свойстве Text).

  • Рядом с окнами редактирования поместите поясняющие надписи - компоненты Label1, Label2, Label3, Label4 и измените надписи у меток соответственно на «Введите сторону А», «Введите сторону B», «Введите сторону С» и «Площадь треугольника». Чтобы изменить надпись у Label1, необходимо выбрать компонент и в свойстве Caption ввести соответствующую строку.

  • Добавьте компонент GroupBox1 и измените заголовок группы на «Способ вычисления».

  • Для реализации выбора одного из двух вариантов вычисления площади поместите на контейнер радиокнопки RadioButton1 и RadioButton2, измените имена на GeronRadioButton и SinusRadioButton и поменяйте надписи на «По трем сторонам» и «По двум сторонам и углу».

  • В обработчике события OnCreate формы необходимо задать по выбранный по умолчанию способ вычисления (например, по трем сторонам), т.е. написать

GeronRadioButton.Checked := true;

  • При нажатии на SinusRadioButton (событие OnClick) пользователь должен вводить угол между сторонами a и b. Для этого измените в обработчике события SinusRadioButtonClick надпись на метке Label3 «Величина угла в градусах», а в обработчике GeronRadioButtonClick – на «Введите сторону С»

  • Добавьте на форму кнопку Button1, измените надпись (Caption) на кнопке на «Вычислить», а название на StartCountButton.

  • Определим действие, которое будет выполняться при нажатии на кнопку StartCount. При этом совершается событие OnClick. Нам необходимо записать операторы для вычисления суммы в обработчике этого события. Перейдите к нему можно одним из двух способов, описанных выше. В пустой обработчик добавьте

Uses Math

procedure TMyForm.StartCountButtonClick(Sender : TObject);

var

s,p : real; //площадь треугольника

a, b, c : integer; //стороны

begin

if ((InpA.Text <> ‘’) and (InpB.Text <> ‘’) and (InpC.Text <> ‘’))

then

begin

a := StrToInt(InpA.Text); b := StrToInt(InpB.Text);

if (GeronRadioButton.Checked = true)

then

c := StrToInt(InpC.Text);

p :=(a+b+c)/2; //полупериметр

s := sqrt(p*(p-a)*(p-b)*(p-c));

Result.Text := FloatToStr(s);

end;

else

begin

p := StrToInt(InpC.Text);

s := a*b*sin(p*3.141592654/180);

Result.Text := FloatToStr(s);

end;

end;

end.

  • Добавьте на форму компонент ComboBox1. Измените имя на ColorComboBox. В нем мы будем изменять цвет фона у компонентов InpA, InpB, InpC при выборе соответствующего цвета из списка., например на желтый или серый. Для этого в свойстве Items необходимо набрать названия цветов, а в обработчике события OnChange компонента написать

case (ColorComboBox.ItemIndex) of

0: begin

InpA.Color:=clYellow;

InpB.Color:=clYellow;

InpC.Color:=clYellow;

end;

1: begin

InpA.Color:=clSilver;

InpB.Color:= clSilver;

InpC.Color:= clSilver;

end;

end;

  • Затем поместите на форму компонент CheckBox1, который будет следить за отображением ColorComboBox, т.е. есть галочка - выпадающий список появляется, нет – исчезает. Назовите его ColorSwitchShowCheckBox Таким образом, необходимо обрабатывать событие OnClick компонента ColorSwitchShowCheckBox

… if (ColorSwitchShowCheckBox.Checked = true)

then ColorComboBox .Visible := true;

else ColorComboBox .Visible := false; …

  • Откомпилируйте и запустите приложение (F9).