Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 31
Текст из файла (страница 31)
С помощью переключателей CheckBoxустанавливается, что будет заказано (первое блюдо, второе и т.д.), а с помощьюКомпонент RadioButtonкомпонента R a d i o B u t t o n (описание компонента будет рассмотрено ниже)выбирается, что именно будет заказано. Вывод стоимости заказа в поле LaЬе12 осуществляет процедура TWinForml. B u t t o n l _ _ C l i c k компонентаButtonl.Компонент RadioButtonКомпонент RadioButton представляет собой группу кнопок (или переключателей) с поясняющим текстом, который обычно располагается справа. Состояние кнопки зависит от состояния других кнопок (компонентов RadioButton).В каждый момент времени в выбранном состоянии может находиться толькоодна из кнопок, находящихся на форме. Однако возможна ситуация, когда ниодна из кнопок не выбрана.
В поле компонента, помимо текста, могут такжеприсутствовать и картинки.Несколько компонентов R a d i o B u t t o n можно объединить в группу, разместив их в поле компонента GroupBox. При этом состояние компонентов,принадлежащих одной группе, не зависит от состояния компонентов, принадлежащих другой группе.В табл. 5.8 приведены основные свойства компонента RadioButton.Таблица 5.8 т Основные свойства компонента RadioButtonСвойствоКомментарийNameИмя компонента, используемое для доступа в программе к компоненту и егосвойствамTextChecked•EnabledVisibleCheckAlignTextAlignImageImageAlignBackgroundlmageТекст, располагающийся справа от кнопкиСвойство определяет, в каком состоянии находится переключатель.
Еслипереключатель выбран, то значение свойства равно True, если не выбран - FalseСвойство, определяющее, доступен ли переключатель (Enabled=True) или нет(Enabled3False)Свойство позволяет отображать (visible=True) и скрывать (Visible=False)панельПоложение кнопки в поле компонента. Свойство может принимать следующиезначения: MiddleLeft.MiddleCenter, Mi ddleRight.TopLeft.TopCenter,TopRight, BottomLeft,BottomCenter,BottomRightПоложение текста в поле отображения текста. Свойство может приниматьследующие значения: MiddleLef t, MiddleCenter, MiddleRight, TopLef t,TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight,Картинка, отображаемая в поле компонентаПоложение картинки в поле компонента. Свойство может принимать следующиезначения:MiddleLeft, MiddleCenter,MiddleRight,TopLeft,TopCenter,TopRight, BottomLeft,BottomCenter, BottomRightКартинка, определяющая фон компонентаГЛАВА 5 • Основные компоненты паи программировании для .МЕТТаблица 5.8 т Основные свойства компонента R a d i o B u t t o n (окончание)СвойствоImageListКомментарий•Набор картинок, используемых для обозначения различных состояний кнопки.Свойство содержит ссылку (имя) на объект типа I m a g e L i s tImagelndexНомер (индекс) картинки из набора ImageListAppearanceСвойство определяет вид переключателя.
Переключатель может быть обычным(Normal) или выполненным в виде кнопки (Button)AutoCheckFlatstyle.Свойство определяет, будет ли автоматически изменяться состояниепереключателя в результате щелчка по его изображению. По умолчанию значениеэтого свойства установлено в TrueЗадает стиль переключателя. Переключатель может быть стандартным (Normal),плоским ( F l a t ) или «всплывающим» (Popup). Стиль отображения проявляетсяпри наведении на переключатель указателя мышиСостояние кнопки изменяется в результате щелчка по ее изображению(если значение свойства AutoCheck равно True). При этом возникает событиеCheckedChanged и затем событие Click. Если значение свойства AutoCheckравно F a l s e , то в результате щелчка на переключателе возникает событиеClick, а затем, если процедура обработки изменит состояние переключателя,возникает событие CheckedChanged.Следующая программа, окно которой приведено на рис. 5.7, демонстрируетиспользование компонента RadioButton.Текст программы приведен в листинге 5.5.
Программа работает следующимобразом. При запуске программы в переменные country, h o t e l , food и exзаносятся начальные значения. При нажатии на определенный компонентRadioButton значение соответствующей переменной изменяется на значенияРис. 5.7 т Окно программы, демонстрирующей использование компонента R a d i o B u t t o nКомпонент RadioButton•свойства Text этого компонента. Процедура вывода выбранных опций закреплена за событием C l i c k кнопки B u t t o n l .Следует заметить, что после запуска программы в группе кнопок Страна ниодин из элементов не выбран, поэтому при выводе дополнительно проводитсяпроверка, была ли выбрана страна или нет.Листинг 5.5 т Программа выбора опций поездкиu n i t WinForml;interfaceusesSystem.Drawing, System.Collections, System.ComponentModel,System.Windows.Forms, System.Data;typeTWinForml = class(System.Windows.Forms.Form){$REGION 'Designer Managed Code'}strict privateComponents: System.ComponentModel.Container;GroupBoxl: System.Windows.Forms.GroupBox;GroupBox2: System.Windows.Forms.GroupBox;GroupBox3: System.Windows.Forms.GroupBox;GroupBox4: System.Windows.Forms.GroupBox;RadioButtonl: System.Windows.Forms.
RadioButton,RadioButton2: System.Windows.Forms.RadioButton;RadioButton3: System.Windows.Forms.RadioButton;RadioButton4: Sy stem. Windows . Forms. RadioButton;RadioButton5: System.Windows.Forms.RadioButton;RadioButton6 : System.Windows. Forms,.RadioButton;RadioButton7: System.Windows.Forms.RadioButtdn;RadioButton8: System.Windows.Forms.RadioButton;RadioButton9: Sy stem.Windows.Forms.RadioButton;RadioButtonlO: System.Windows.Forms.RadioButton;RadioButtonl1: Systern.Windows.Forms.RadioButton;Label1: System.Windows.Forms.Label;Buttonl: Systern.Windows.Forms.Button;Button2: System.Windows.Forms.Button;procedure InitializeComponent;procedure Buttonl_Click(sender: System.Object,•e: System.EventArgs);procedure RadioButtonl_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton2_Click(sender: System.Object;e: System.EventArgs);•ГЛАВА 5 • Основные компоненты при программировании для .NETprocedure RadioButton3_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton4_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton5_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton6_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton7_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton8_Click(sender: System.Object;e: System.EventArgs);procedure RadioButton9_Click(sender: System.Object;e: System.EventArgs);procedure RadioButtonlO_Click(sender: System.Object;e: System.EventArgs);procedure RadioButtonll_Click(sender: System.Object;e: System.EventArgs);procedure TWinForml_Paint(sender: System.Object;e: System.Windows.Forms.PaintEventArgs);procedure Button2_Click(sender: System.Object;e: System.EventArgs);{$ENDREGION}strict protectedprocedure Dispose(Disposing: Boolean); override;private{ Private Declarations }publicconstructor Create;end;[assembly: RuntimeRequiredAttribute(TypeOf(TWinForml))]implementationvar country:string;hotel:string;food:string;ex:string;////////////// Переменная для хранения информации// о выбранной стране.Переменная для хранения информации о выбранномотеле.Переменная для хранения информации о выбранномрационе.Переменная для хранения информации об экскурс.программе.{$AUTOBOX ON}{$REGION 'Windows Form Designer generated code 1 }procedure TWinForml.Dispose(Disposing: Boolean);Компонент RadioButton•beginif Disposing thenbeginif Components <> nil thenComponents.Dispose() ;end ;inherited Dispose(Disposing);end;constructor TWinForml.Create;begininherited Create;InitializeComponent;end;// Нажатие на кнопку 'Завершение работы'.procedure TWinForml.Button2_Click(sender: System.Object;e: System.EventArgs);begin// Завершение работы программы.Close;end;// Выполнение начальных установок в момент появления// окна на экране.procedure TWinForml.TWinForml_Paint(sender: System.Object,•e: System.Windows.Forms.PaintEventArgs)begin// Устанавливаем начальные значения переменных.country:='';hotel:=RadioButton4.Text;food:=RadioButton7.Text;ex:=RadioButtonll.Text;end;// Нажатие на кнопку 'Нет' группы 'Экскурсионная программа'.procedure TWinForml.RadioButtonll_Click(sender: System.Object;e: System.EventArgs);beginex:=RadioButtonll.Text;end ;// Нажатие на кнопку 'Да' группы 'Экскурсионная программа'.procedure TWinForml.RadioButtonlO_Click(sender: System.Object;e: System.EventArgs);beginex:=RadioButtonlO.Text;end;7-3166ГЛАВА 5 • Основные компоненты при программировании для .NET// Нажатие на кнопку Ч раз в день' группы 'Питание'.procedure TWinForml.RadioButton9_Click(sender: System.Object;e: System.EventArgs);beginfood:=RadioButton9.Text;end;// Нажатие на кнопку '2 раза в день' группы 'Питание'.procedure TWinForml.RadioButton8_Click(sender: System.Object;e: System.EventArgs);beginfood:=RadioButton8.Text;end ;// Нажатие на кнопку 'обычное' группы 'Питание'.procedure TWinForml.RadioButton7_Click(sender: System.Object;e: System.EventArgs);beginfood:=RadioButton7.Text;end;// Нажатие на кнопку '5 звезд' группы 'Отель'.procedure TWinForml.RadioButton6_Click(sender: System.Object;e: System.EventArgs);beginhotel:=RadioButton6.Text;end;// Нажатие на кнопку '4 звезды' группы 'Отель'.procedure TWinForml.Ra'dioButton5_Click(sender: System.Object;e: System.EventArgs);beginhotel:=RadioButton5.Text;end ;// Нажатие на кнопку '3 звезды' группы 'Отель'.procedure TWinForml.RadioButton4_Click(sender: System.Object;e: System.EventArgs);beginhotel:=RadioButton4.Text;end;// Нажатие на кнопку 'Египет' группы 'Страна'.procedure TWinForml.RadioButton3_Click(sender: System.Object;e: System.EventArgs);begincountry:=RadioButton3.Text;end;,Компонент GroupBox•// Нажатие на кнопку 'Испания' группы 'Страна'.procedure TWinForml.RadioButton2_Click(sender: System.Object;e: System.EventArgs);begincountry:=RadioButton2.Text;end ;// Нажатие на кнопку 'Франция' группы 'Страна'.procedure TWinForml.RadioButtonl_Click(sender: System.Object;e: System.EventArgs);begincountry:=RadioButtonl.Text;end;// Нажатие на кнопку 'Обновить информацию'.procedure TWinForml.Buttonl_Click(sender: System.Object;e: System.EventArgs);begin// Проверяем, была ли введена страна.if country = 1 1 thenbegin// Если страна не введена, то выводим соответствующее сообщениеMessageBox.Show('Необходимо указать страну','Ошибка при вводе',MessageBoxButtons.OK,MessageBoxIcon.Information);//и выходим из процедуры отображения выбранных опций.Exitend;// Если страна введена, то отображаем выбранные опции в Labell.Labell.Text:='Вы выбрали: страна - '+country+', отель - '+hotel+', питание - '+food+', экс.