Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы IT / ЛабаDelphi6.doc
Скачиваний:
62
Добавлен:
06.02.2015
Размер:
253.95 Кб
Скачать

Лабораторная работа №6. Работа в DELPHI.

Краткий обзор некоторых стандартных компонентов

Задание 1.1. Исследуем компоненты GroupBox и RadioGroup

Рассмотрим компонент GroupBox – стандартный элемент управления Windows для объединения кнопок с зависимой фиксацией, флажков опций и других элементов управления, которые являются неотъемлемой частью большинства windows – приложений.

Создайте новый проект.

Перенесите GroupBox1, GroupBox2, Button1 на форму. Затем перенесите по 3 компонента RadioButton в GroupBox1 и в GroupBox2 (рис. 1)

Рис 1 Компоненты TGroupBox могут содержать в себе Объекты TRadioButton

RadioButton – это кнопка с зависимой фиксацией, в любом наборе из таких кнопок для выбора доступна только 1 кнопка, каждый компонент GroupBox как раз объединяет один конкретный набор таких кнопок. Выбор конкретной кнопки указывается её свойством Checked, точно также как и у компонента CheckBox.

Поэтому запрограммируем обработчик щелчка на Button1 так чтобы выдавалось сообщение какая кнопка RadioButton и в каком компоненте GroupBox она выбрана.

В обработчике щелчка на Button1 напишите следующее:

if RadioButton1.Checked

then MessageDlg('выбрана RadioButton1 в GroupBox1',mtInformation,[mbOk],0);

if RadioButton2.Checked

then MessageDlg('выбрана RadioButton2 в GroupBox1',mtInformation,[mbOk],0);

if RadioButton3.Checked

then MessageDlg(' выбрана RadioButton3 в GroupBox1',mtInformation,[mbOk],0);

if RadioButton4.Checked

then MessageDlg(' выбрана RadioButton4 в GroupBox2',mtInformation,[mbOk],0);

if RadioButton5.Checked

then MessageDlg(' выбрана RadioButton5 в GroupBox2',mtInformation,[mbOk],0);

if RadioButton6.Checked

then MessageDlg(' выбрана RadioButton6 в GroupBox2',mtInformation,[mbOk],0);

Далее добавьте кнопку BitBtn1 из палитры Additional, это функциональная кнопка. Измените значение её свойства Kind на bkClose и теперь при щелчке на ней приложение будет закрываться.

Запустите программу. Выберите произвольно некоторые кнопки в наборах и щелкните на Button1. Убедитесь в правильности работы программы. Вернитесь в режим программирования.

Задание 1.2. Исследуем компонент RadioGroup1

Есть более удобный способ объединения кнопок с зависимой фиксацией, который реализует компонент RadioGroup1 аналог компонента GroupBox. Сбросьте на форму компонент RadioGroup1. Выберите его свойство Items, и чуть справа щелкните на на надписи TSrings (так же как и для компонента Memo), наберите там вручную следующее:

Рис 2 Добавление имен кнопок TRadioButton в TRadioGroup

И нажмите OK. Получите уже сформировавшийся, готовый к работе набор кнопок RadioButton.

Рис. 3 Сформированные кнопки TRadioButton в TRadioGroup

Для RadioGroup1 измените значение свойства Columns – количество столбцов на 2 или 3. Чтобы добраться до конкретной кнопки RadioButton нужно просматривать массив Items (свойство представляющее из себя набор строк типа TStrings) компонента RadioGroup1.

Массив Items начинается с нуля, поэтому запись Items[0] определяет первую кнопку RadioButton внутри RadioGroup1, Items[1] определяет вторую кнопку RadioButton и т.д.

Значение свойства Count массива Items равно числу строк в свойстве Strings и следовательно числу объектов–кнопок RadioButton принадлежащих RadioGroup1.

Значение ItemIndex определяет индекс выбранной кнопки. Если ItemIndex=-1 не выбрана ни одна кнопка, если ItemIndex=0 выбрана первая кнопка, если ItemIndex= 1 вторая и т.д.

Сбросьте кнопку Button2 на форму и запрограммируете щелчок на ней так чтобы при выборе кнопки с фиксацией выводилась информация, во первых: присутствует ли в RadioGroup1 кнопка с надписью ‘aaaaa’ и во вторых, кнопка с каким индексом выбрана в данный момент.

Для этого в обработчике Button2 напишите следующее:

var i:integer;

begin

for I:=0 to RadioGroup1.Items.Count-1 do

if RadioGroup1.Items[i]='aaaaa' then

MessageDlg('Knopka aaaaa присутствует',mtinformation,[mbOk],0);

MessageDlg(RadioGroup1.Items[RadioGroup1.ItemIndex],mtinformation,[mbOk],0);

end;

Запустите программу. Выберите произвольно кнопку в RadioGroup1 и щелкните на Button2. Убедитесь в правильности работы программы. Вернитесь в режим программирования.

Задание 1.3 Изучим полезный оператор With … do.

Далее, в обработчике Button2 закомментируете набранный ранее текст чтобы его не воспринимал компилятор, и измените обработчик следующим образом :

var i:integer;

begin

{ for I:=0 to RadioGroup1.Items.Count-1 do

if RadioGroup1.Items[i]='aaaaa' then

MessageDlg('Knopka aaaaa присутствует',mtinformation,[mbOk],0);

MessageDlg(RadioGroup1.Items[RadioGroup1.ItemIndex],mtinformation,[mbOk],0); }

With RadioGroup1 do

for I:=0 to Items.Count-1 do

if Items[i]='aaaaa' then MessageDlg('Knopka aaaaa присутствует',mtinformation,[mbOk],0);

With RadioGroup1 do

MessageDlg(Items[ItemIndex],mtinformation,[mbOk],0);

end;

Запустите программу. Выберите произвольно кнопку в RadioGroup1 и щелкните на Button2. Программа будет работать точно также как и в предыдущем случае. Мы просто немного изменили код. Вернитесь в режим программирования.

Данный оператор With … Do используется для того, чтобы обращаться к полям, свойствам или методам объекта только один раз указав имя объекта, без использования операции доступа “.” что является очень удобным.

В частности для RadioGroup1 указали его имя один раз, а затем в теле оператора With RadioGroup1 do просто записываем Items.Count вместо RadioGroup1.Items.Count.

Также например для упрощения кода удобно написать вместо a:=RadioGroup1.Items.Count инструкцию With RadioGroup1, Items do a:=Count перечисляя через запятую члены класса. Подобные инструкции используются часто и делают код программы более читабельным.

Так как многие объекты (компоненты) в Delphi могут содержать другие объекты (компоненты), то для обработки этих других объектов есть ряд полезных свойств благодаря которым можно до них добраться программным путем, 3 таких свойства приведем в следующей таблице:

Свойство

Описание

Components

Массив, содержит все внутренние объекты(компоненты) находящиеся в некотором объекте (компоненте). Нумеруется начиная с нулевого номера, например первый объект это Components[0], второй – Components[1] и т.д.

ComponentIndex

Определяет номер внутреннего объекта (компонента) выбранного или активированного в данный момент времени в некотором объекте (компоненте). (0­­–первый, 1 – второй, 2 – третий и т.д.)

ComponentCount

Число всех внутренних объектов содержащихся в некотором объекте.


Приведенные свойства в частности также имеются и у формы.

Соседние файлы в папке Лабы IT