Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 30
Текст из файла (страница 30)
Чтобы добавить элемент в коллекцию картинок, следует в строке свойстваImages щелкнуть по кнопке с тремя точками. На экране появится окно ImageCollection Editor - окно редактора коллекции (рис. 5.4). В этом окне щелкнитепо кнопке Add и в появившемся стандартном окне открытия файла выберитефайл картинки.После того как коллекция будет сформирована, необходимо:1. Задать размер картинок коллекции (путем присвоения значения свойствуImageSize).2. Определить прозрачный цвет (присвоив значение свойству T r a n s p a rentColor).3. Задать глубину цветовой палитры (присвоив значение свойству ColorDepth).При задании параметров коллекции имейте в виду, что если размеркартинок коллекции не совпадает с выбранным значением свойства ImageSize, то будет произведено масштабирование.\Ц|7ГЛАВА 5 • Основные компоненты при программировании для .NETО Е З System.Drawing.Bitmap>В МмРис.
5.4 т Добавление картинок в коллекциюСледует также обратить внимание на то, что коллекция картинок объектахранится в файле ресурсов проекта. Преобразование картинок осуществляетсяредактором свойств Image Collection Editor, при этом исходные файлыкартинок для работы программы не нужны.Компонент ToolTipДанный компонент является вспомогательным. Основное его назначение состоит в предоставлении другим компонентам сведений-подсказок, которыепоявляются при наведении указателя мыши на эти компоненты.
Основныесвойства компонента приведены в табл. 5.5.Таблица 5.5 т Основные свойства компонента T o o l T i pСвойствоКомментарийNameИмя компонента. Это имя используется для доступа в программе к компоненту и егосвойствамСвойство разрешает (Active=True) или запрещает ( A c t i v e = F a l s e ) отображениеподсказокActiveAutoPopDelayInitialDelayReshowDelayВремя отображения подсказки 'Время, в течение которого указатель мыши должен оставаться неподвижным, чтобыпоявилась подсказкаВремя задержки отображения подсказки после перемещения указателя мышис одного компонента на другойКомпонент Pane!\FjfПосле того как компонент будет добавлен в форму, у других компонентовстановится доступным свойство ToolTip, которое и определяет текстподсказки.Компонент PanelКомпонент Panel представляет собой контейнер для других компонентов ипозволяет легко управлять компонентами, которые находятся на панели.Смысл состоит в том, что компоненты, находящиеся на панели, наследуют свойства компонента Panel.
Например, чтобы сделать недоступными все компоненты на панели, достаточно присвоить значение F a l s e свойству Enabledпанели. Свойства компонента Panel приведены в табл. 5.6.Таблица 5.6 т Основные свойства компонента PanelСвойствоКомментарийNameИмя компонента. Это имя используется для доступа в программе к компоненту иего свойствамВид границы панели - обычная рамка ( F i x e d s i n g l e ) , «объемная» граница(Fixed3D), нет границы (None)Позволяет задать фоновый рисунок панели. Возможно использование форматовЬтр, jpg, png, gif и icoСвойство позволяет сделать доступными (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 )панельОпределяет границу формы, к которой «прикреплена» панель.
Панель может бытьприкреплена к верхней (Тор), нижней (Bottom), левой ( L e f t ) или правой ( R i g h t )границе формы, занимать всю форму ( F i l l ) либо быть независимой (None)Задает шрифт панели. Все элементы, размещенные на панели, будут иметьуказанный шрифтПризнак необходимости отображать ( A u t o S c r o l l = T r u e ) полосы прокруткив случае, если компоненты, находящиеся на панели, не могут быть выведеныполностьюBorderStyleBackGroundlmageEnabledVisibleDockFontAutoScrollИз перечисленных в табл.
5.6 свойств более подробно следует остановитьсяна свойстве Dock. Это свойство позволяет «прикрепить» панель к границеформы. В результате привязки панели к границе формы размер панелиавтоматически меняется.Ниже на рис. 5.5 приведено окно программы, демонстрирующей некоторыеособенности использования компонента Panel.На панель помещены различные компоненты. Все они наследуют свойствапанели, на которой располагаются. Программа позволяет изменить шрифтпанели, а также сделать ее доступной или недоступной. Срответственно,ГЛАВА 5 • Основные компоненты при программировании для .NET1Строка текстаГ" Строке текстаV Строкатекста•••..'•Строке текста;7.
Свойство Enabled]Строка текстаj jВыбор шрифта панелиРис. 5.5 т Использование компонента Panelизменяется шрифт и доступность компонентов, расположенных на панели.Особенности использования компонента Panel показаны в листинге 5.3.Листинг 5.3 т Фрагмент программы, демонстрирующей особенности использованиякомпонента Panel//Свойство Enabled панели.procedure TWinForml.CheckBoxl_Click(sender: System.Object;e: System.EventArgs);beginPanel1.Enabled:=CheckBoxl.Checked;end;//Свойство Font панели.procedure TWinForml.Button2_Click(sender: System.Object;e: System.EventArgs);beginFontDialogl.ShowDialog;Panell. Font: =FontDialogl.Font ;end;Компонент CheckboxКомпонент CheckBox является переключателем, который может находиться водном из двух состояний: выбранном или невыбранном (иногда еще говорят установленном или не установленном).
Рядом с переключателем обычно находится поясняющий текст.Свойства компонента CheckBox приведены в табл. 5.7. Состояние переключателя изменяется в результате щелчка по его изображению (еслизначение свойства AutoCheck равно True). При этом возникает событиеКомпонент CheckBoxCheckedChanged, потом - событие C l i c k . Если же значение свойства АиtoCheck равно F a l s e , то в результате щелчка на переключателе возникаетсобытие C l i c k , а затем, если процедура обработки этого события изменитсостоянии кнопки, возникает событие CheckedChanged.Таблица 5.7 • Основные свойства компонента CheckboxСвойствоКомментарийNameИмя компонента.
Это имя используется для доступа в программе к компонентуи его свойствамTextCheckedТекст, располагающийся справа от флажкаСвойство определяет, в каком состоянии находится переключатель. Еслипереключатель выбран, то значение свойства равно 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 )панельПоложение кнопки в поле компонентаEnabledVisibleCheckAlignTextAlignImageImageAlignBackgroundlmageImageListImagelndexAppearanceAutoCheckFlatStyleThreeStateПоложение текста в поле отображения текста.
Свойство может приниматьследующие значения: M i d d l e L e f t , MiddleCenter, M i d d l e R i g h t , TopLef t ,TopCenter, TopRigh't, B o t t o m L e f t , BoCtomCenter, BottomRightКартинка, отображаемая в поле компонентаПоложение картинки в поле компонента.
Свойство может принимать следующие3Ha4eHHH:'MiddleLeft, MiddleCenter, MiddleRight, TopLef t, TopCenter,TopRight, BottomLeft, BottomCenter,BottomRightКартинка, определяющая фон компонентаНабор картинок, используемых для обозначения различных состояний кнопки.Свойство содержит ссылку (имя) на объект типа ImageListНомер (индекс) картинки из набора ImageListСвойство определят вид переключателя. Переключатель может быть обычным(Normal) или выполненным в виде кнопки (Button)Свойство определяет, будет ли автоматически изменяться состояниепереключателя в результате щелчка по его изображению.
По умолчанию значениеэтого свойства установлено в TrueЗадает стиль переключателя. Переключатель может быть стандартным (Normal),плоским ( F l a t ) или «всплывающим» (Popup). Стиль отображения проявляетсяпри наведении на переключатель указателя мышиСвойство определяет, будет ли иметь переключатель три состояния.По умолчанию значение свойства установлено в FalseСледующая программа (ее форма приведена на рис. 5.6, а текст - влистинге 5.4) демонстрирует использование компонента CheckBox.
Программапозволяет вычислить стоимость заказа в кафе.Листинг 5.4 т Текст программы вычисления стоимости заказаunitWinForml;interface>ГЛАВА 5 • Основные компоненты при программировании для .NETПожалуйста, сделайте заказ ; •;: •; МЕНЮ'. Г* Первое бяюдо| : <* БорщГороховый суп: Г Десерт(^ ПироженоеI:.' Г" Второеблтао ; : ;, ПловПельмени; Г" Налиток!>ЧайСделать заказГ" ТоргВаш заказБорщ.;...50 рзб. •Гороховый су|,..„...40ра& :П/кж 1.~.......
........;... 55 рзб. •Пеяьмв»»...35 раб. :Cose5рзб.:Пироженое,_.....ЭОрл)& •Торт ..„.„.„„45 раб.:Чай:....... ю рф. •Кофе.....20 раб.составил;Рис. 5.6 • Форма окна программы вычисления стоимости заказаSystem.Drawing, System.Collections, System.ComponentModel,System.Windows.Forms, System.Data;typeTWinForml = class(System.Windows.Forms.Form){$REGION 'Designer Managed Code 1 }strict privateComponents: System.ComponentModel.Container;Label1: System.Windows.Forms.Label;CheckBoxl: System.Windows.Forms.CheckBox;CheckBox2: System.Windows.Forms.CheckBox;СпескВохЗ: System.Windows.Forms.CheckBox;CheckBox4: System.Windows.Forms.CheckBox;Label2: System.Windows.Forms.Label,•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: System.Windows.Forms.RadioButton;RadioButton5: System.Windows.Forms.RadioButton;RadioButton6: System.Windows.Forms.RadioButton;RadioButton7: System.Windows.Forms.RadioButton;-Компонент CheckBox•RadioButton8: System.Windows.Forms.RadioButton;TextBoxl: System.Windows.Forms.TextBox;Label3: System.Windows.Forms.Label;Buttonl: System.Windows.Forms.Button;procedure InitializeComponent;procedure CheckBoxl_Click(sender: System.Object;e: System.EventArgs);procedure CheckBox2_Click(sender: System.Object;e: System.EventArgs);procedure CheckBox3_Click(sender: System.Object;e: System.EventArgs);procedure CheckBox4_Click(sender: System.Object;e: System.EventArgs);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);procedure 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);{$ENDREGION}strict protectedprocedure Dispose(Disposing: Boolean); override;private{ Private Declarations }sum:integer;// Суммарная стоимость заказа.si,s2,s3,s4:integer; // Стоимость выбранных опций по категориям.publicconstructor Create;end ;[assembly: RuntimeRequiredAttribute(TypeOf(TWinForml))]implementation•ГЛАВА 5 Т Основные компоненты при программировании для .NET{$AUTOBOX ON}{$REGION 'Windows Form Designer generated code'}procedure TWinForml.Dispose(Disposing: Boolean);beginif Disposing thenbeginif Components <> nil thenComponents.Dispose();end;inherited Dispose(Disposing);end;constructor TWinForml.Create;begininherited Create;InitializeComponent;sum:=0; // Начальное значение стоимости заказа.end ;// Определение, выбран ли пункт 'Кофе'.procedure TWinForml.RadioButton8_Click(sender: System.Object;e: System.EventArgs);beginif RadioButton8.Checked then s4:=20;end ;// Определение, выбран ли пункт 'Чай'.procedure TWinForml.RadioButton7_Click(sender: System.Object;e: System.EventArgs);beginif RadioButton7.Checked then s4:=10;end;// Определение, выбран ли пункт 'Торт'.procedure TWinForml.RadioButton6_Click(sender: System.Object;•e: System.EventArgs);beginif RadioButton6.Checked then s3:=45;end;// Определение, выбран ли пункт 'Пирожное'.procedure TWinForml.RadioButton5_Click(sender: System.Object;e: System.EventArgs);beginif RadioButton5.Checked then s3:=30;end;Компонент CheckBox•// Определение, выбран ли пункт 'Пельмени'.procedure TWinForml.RadioButton4_Click(sender: System.Object;e: System.EventArgs);beginif RadioButton4.Checked then s2:=35;end ;// Определение, выбран ли пункт 'Плов'.procedure TWinForml.RadioButton3_Click(sender: System.Object;e: System.EventArgs);beginif RadioButton3.Checked then s2:=55;end;// Определение, выбран ли пункт 'Гороховый суп'.procedure TWinForml.RadioButton2_Click(sender: System.Object;e: System.EventArgs);beginif RadioButton2.Checked then sl:=40;end;// Определение, выбран ли пункт 'Борщ'.procedure TWinForml.RadioB,uttonl_Click(sender: System.Object;e: System.EventArgs);beginif RadioButtoril.Checked then si: =5 0;end ;// Расчет суммарной стоимости заказа и вывод значения в Label-2.procedure TWinForml.Buttonl_Click(sender: System.Object;e: System.EventArgs);beginsum:=sl+s2+s3+s4;Label2.Text:='Ваш заказ составил: '+suin.ToString+' рублей';end;// Нажатие на переключатель CheckBox4.procedure TWinForml.CheckBox4_Click(sender: System.Object;e: System.EventArgs);beginGroupBox4.Enabled:=CheckBox4.Checked;if not GroupBox4.Enabled thenbeginRadioButton7.Checked:=True,•s4:=0;endelse s4:=10;•ГЛАВА 5 • Основные компоненты при программировании для .NETend;// Нажатие на переключатель Ch.eck.Box3.procedure TWinForml.CheckBox3_Click(sender: System.Object;e: System.EventArgs);beginGroupBox3.Enabled:=CheckBox3.Checked;if not GroupBox3.Enabled thenbeginRadioButton5.Checked:=True;s3:=0;endelse s3:=30;end ;// Нажатие на переключатель CheckBox2.procedure TWinForml.CheckBox2_Click(sender: System.Object;e: System.EventArgs);beginGroupBox2.Enabled:=CheckBox2.Checked;if not GroupBox2.Enabled thenbeginRadioButton3.Checked:=True;s2:=0;endelse s2:=55;end;,// Нажатие на переключатель CheckBoxl.procedure TWinForml.CheckBoxl_Click(sender: System.Object;e: System.EventArgs);beginGroupBoxl.Enabled:=CheckBoxl.Checked;if not GroupBoxl.Enabled thenbeginRadioButtonl.Checked:=True;sl:=0;endelse sl:=50;end;end.Процедура обработки события CheckedChanged делает доступным илинедоступным соответствующую панель.