Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 45
Текст из файла (страница 45)
7.8 основных свойств более подробно следуетостановиться на свойстве A l i g n , позволяющем «прикрепить» панель кгранице компонента, на котором расположена панель, например формы.В результате привязки панели к границе формы размер панели автоматически меняется при изменении размера компонента, на которомпанель расположена.Ниже на рис. 7.4 приведена форма окна программы, демонстрирующейнекоторые особенности использования компонента TPanel.На панель помещены различные компоненты.
Все они наследуют свойствапанели, влияющие на отрисовку, на которой располагаются. Программапозволяет изменить шрифт панели, а также сделать ее доступной или недоступной, видимой или невидимой. Соответственно, изменяются шрифт,доступность и видимость компонентов, расположенных на панели (листинг 7.2).тГЛАВА 7 f Основные компоненты при программировании для Win32Припер использования панели.
При изменении свойствкомпонента TPanet компоненты, которые находятся напанели, наследуют ее свойства.[Компонент TtditКомпонент ТBufcttMГ~ Компонент TCheckfioxСвойствоErubtedС Компонент RadioButton17 СвойствоУЫЫевыоЪририфта['Рис. 7.4 т Использование компонента TPanelЛистинг 7.2 т Фрагмент программы, демонстрирующей особенности использованиякомпонента TPanel// Установка/сброс свойства Enabled панели.procedure TForml.CheckBox2Click(Sender: TObject);beginPanel1.Enabled:=CheckBox2.Checked;end ;// Установка/сброс свойства Visible панели.procedure TForml.CheckBox3Click(Sender: TObject);beginPanel1.Visible:=CheckBox3.Checked ;end ;// Задание шрифта панели// (используется компонент TFontDialog, расположенный// на вкладке Dialogs).procedure TForml.Button2Click(Sender: TObject);beginif FontDialogl.Execute thenPanell.Font:=FontDialogl.Font;end;Компонент TCheckBoxКомпонент TCheckBox является переключателем (основные свойства приведеныв табл.
7.9), который может находиться в одном из двух состояний: выбранном илиневыбранном (иногда еще говорят - установленном или не установленном). Рядомс переключателем обычно находится поясняющий текст.Компоненты TRadioButton и TRadioGroupТаблица 7.9 тОсновные свойства компонента checkBoxСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и егосвойствамCapt i o nТекст, располагающийся справа от кнопкиcheckedСвойство, определяющее, в каком состоянии находится переключатель.
ЕслиEnabledСвойство, определяющее, доступен ли переключатель (Enabled=True) или нет(Enabled=False)Свойство, позволяющее отображать ( V i s i b l e = T r u e ) и скрывать ( v i s i b l e = F a l s e )панельпереключатель выбран, то значение свойства равно True, если не выбран - F a l s eVisibleAlignmentВзаимоположение кнопки и текста в поле компонента. Текст может располагатьсясправа(Aligment=taRightJustify) или слева(Aligment=taLefCJustify)от кнопкиAllowGrayedСвойство определяет, будет ли переключатель иметь возможность находиться в трехсостояниях.
По умолчанию свойство равно False, что подразумевает два возможныхсостояния переключателя - установлен и не установленВ предыдущих примерах мы достаточно много использовали подобныйкомпонент - он служит для включения или выключения каких-либо элементовв окне программы.Компоненты TRadioButton и TRadioGroupКомпоненты T R a d i o B u t t o n и TRadioGroup представляет собой группу кнопок (или переключателей) с поясняющим текстом, который обычно располагается справа. Можно сказать, что второй компонент является объединением компонентов TRadioButton и TGroupBox (описание см.ниже). Состояние кнопки зависит от состояния других кнопок (компонентовTRadioButton). В каждый момент времени в выбранном состоянии можетнаходиться только одна из кнопок, находящихся на форме или в контейнере(например, кнопки, расположенные в разных компонентах TradioGroup, независят друг от друга).
Возможна также ситуация, когда ни одна из кнопок невыбрана. В отличие от аналога компонента для .NET в поле компонента неможет присутствовать картинка.Несколько компонентов TRadioButton можно объединить в группу,разместив их в поле компонента TGroupBox. При этом состояние компонентов,принадлежащих одной группе, не зависит от состояния компонентов,принадлежащих другой группе.В табл.
7.10 приведены основные свойства компонента TRadioButton.ГЛАВА 7 Т Основные компоненты при программировании для Win3 2Таблица 7 . 1 0 т Основные свойства компонента TRadioButtonСвойствоКомментарийNameCaptionCheckedИмя компонента, используемое в программе для доступа к компоненту и его свойствамТекст, располагающийся справа от кнопкиСвойство, определяющее, в каком состоянии находится переключатель. Еслипереключатель выбран, то значение свойства равно True, если не выбран - F a l s eСвойство, определяющее, доступен ли переключатель (Enabled=True) или нет(Enabled=False)Свойство, позволяющее отображать ( v i s i b l e = T r u e ) и скрывать ( V i s i b l e = F a l s e ) кнопкуВзаимоположение кнопки и текста в поле компонента. Текст может располагаться справа(Aligment=taRightJustify) или слева(Allgment=taLeftJustify)от кнопкиEnabledVisibleAlignmentАналогичного результата можно добиться, если использовать компонентTRadioGroup. Для того чтобы добавить в компонент TRadioGroup кнопки,необходимо в окне Object Inspector щелкнуть в строке свойства Items покнопке с тремя точками.
После этого следует ввести несколько строк,содержание которых определит количество и названия кнопок TRadioButtonв компоненте. Заполнить компонент кнопками можно и во время выполненияпрограммы - для этого необходимо вызвать метод Add свойства Items:RadioGroupl.Items.Add('новая кнопка');Основные свойства компонента TRadioGroup приведены в табл. 7.11.Таблица 7.11 т Основные свойства компонента TRadioGroupСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и его свойствамCapt i o nТекст, располагающийся слева в верхней части панелиEnabledVisibleItemsItemlndexСвойство, определяющее, в каком состоянии находится переключатель. Еслипереключатель выбран, то значение свойства равно True, если не выбран - FalseСвойство, определяющее, доступна ли панель: если Enabled=True - доступна, еслиEnabled=False - нетСвойство, позволяющее отображать ( v i s i b l e = T r u e ) и скрывать ( V i s i b l e = F a l s e ) панельКоллекция строк, определяющая количество и названия располагаемых в поле компонентакнопок TRadioButtonСвойство, содержащее индекс нажатой в данный момент кнопки.
Если ни одна кнопкане нажата, то значение равно -1Если попробуете сделать две аналогичные панели (рис. 7.5), то заметите,что второй способ гораздо быстрее.Попробуем написать простенькую программу, которая позволяет намвыбрать напиток и кондитерское изделие, - применим для сравнения обаварианта использования кнопок R a d i o B u t t o n . Форма окна программыприведена на рис. 7.5. В этой форме левая панель с кнопками реализована сКомпоненты TRadioButton и TRadioGroupИспо.'изошанче iKedioc utton и 1Кл»1юип)ир]^]Л!1у]сй•:1"Коня, изделиеpijЩ• • - у Напиток ~ -Г Рулет: : : • < " чайГ торт: : ' .
; г ' Кофе<~ Пироженое;::Вы выбрали:гс— [ •• ;"<ЩРис. 7.5 т Окно программы, демонстрирующей •использование компонента TRadioButtonпомощью компонентов TGroupBox и TRadioButton, правая - с помощьюкомпонента TRadioGroup.Текст программы приведен в листинге 7.3. Из особенностей использованиякомпонента TRadioGroup можно отметить то, что событие C l i c k ,возникающее при нажатии на кнопку, является общим для всех кнопок панели.Для определения того, какая именно кнопка была нажата, необходимоиспользовать свойство Itemlndex.Листинг 7.3 т Использование компонентов TRadioBut ton и TRadioGroupunitUnitl;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics,Controls, Forms, Dialogs, StdCtrls, ExtCtrls;typeTForml = class(TForm)GroupBoxl: TGroupBox;RadioGroupl: TRadioGroup;RadioButtonl: TRadioButton;RadioButton2: TRadioButton;RadioButton3: TRadioButton;Label1: TLabel;procedure FormCreate(Sender: TObject);procedure RadioGrouplClick(Sender: TObject);procedure RadioButton3Click(Sender: TObject);procedure RadioButton2Click(Sender: TObject);procedure RadioButtonlClick(Sender: TObject);privateГЛАВА 7 т Основные компоненты при программировании для Win32{ Private declarations }public{ Public declarations }end;• •const s t = 'Вы выбрали: ' ;varForml: TForml;chl ,ch2 -.string; // Результат выбора левой и правой части.impIementat i on{$R *.dfm}// Нажатие на кнопку 'Рулет'.procedure TForml.RadioButtonlClick(Sender: TObject);beginchl:='рулет';if ch2='•then Labell.Caption:=st+chlelse Labell.Caption:=st+chl+' и '+ch2;end;// Нажатие на кнопку 'Торт'.procedure TForml.RadioButton2Click(Sender: TObject);beginchl:='торт';iif ch2=''then Labell.Caption:=st+chlelse Labell.Caption:=st+chl+' и '+ch2;end;// Нажатие на кнопку 'Пирожное'.procedure TForml.RadioButton3Click(Sender: TObject);beginchl:='пирожное';if ch2=''then Labell.Caption:=st+chlelse Labell.Caption:=st+chl+' и '+ch2;end;// Для компонента TRadioGroup требуется определить,// какая кнопка была нажата.procedure TForml.RadioGrouplClick(Sender: TObject);begincase RadioGroupl.Itemlndex of0: ch2:='чай'; // Нажата кнопка 'Чай'.1: ch2: = 'кофе' ; // Нажата кнопка 'Кофе'.Компонент TComboBox2: ch2:='сок'; // Нажата кнопка 'Сок'.end;if chl=''then Label1.Caption:=st+ch2else Labell.Captibn:=st+chl+' и '+ch2;end;// Начальные установки - при загрузке формы еще ничего не выбрано.procedure TForml.FormCreate(Sender: TObject);beginchl:='' ;Ch2:='';end;end.Компонент TGroupBoxЭтот компонент мы уже упоминали ранее и даже использовали в предыдущихпримерах.