Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 34
Текст из файла (страница 34)
Image. PhysicalDimension .Width* scale) ;PictureBoxl.Height:=Round(PictureBoxl. Image.PhysicalDimension.Height * scale);end;end;end.Компонент NumericUpDownЭтот компонент предназначен для ввода числовых данных. Мы уже вводилиразличные данные, казалось бы, зачем использовать еще один компонент?Компонент предназначен для ввода только числовых данных, причем вводитьданные можно как с клавиатуры, так и с использованием стрелок Увеличить/Уменьшить.
При вводе дробных чисел имеется возможность округления. Дляэтого необходимо использовать свойство DecimalPlaces, в котором следуетуказать количество цифр, до которого будет произведено округление. Если жеэто свойство равно нулю, то будет произведено округление до целого значения.Основные свойства компонента приведены в табл.
5.15.Компонент StatusBai*Таблица 5.15 • Основные свойства компонента NumericUpDownСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и егосвойствамValueЗначение поля для ввода компонента. В отличие от поля для ввода Text Boxимеет тип данных d e c i m a l , а не s t r i n gМинимальное значение, которое можно ввести в компонентMinimumMaximumIncrementМаксимальное значение, которое можно ввести в компонентDecimalPlacesСвойство определяет количество цифр в дробной части числаВеличина, на которую увеличивается (или уменьшается) значение свойства Valueпри нажатии на соответствующую стрелкуThousandseparatorПризнак необходимости отделять пробелом тысячные разряды числаUpDownAlignСвойство определяет, с какой стороны будут отображаться стрелки Увеличить/Уменьшить: R i g h t - справа, L e f t - слеваКомпонент StatusBarКомпонент S t a t u s B a r представляет собой область (панель) для вывода служебной информации.
Обычно такая панель располагается в нижней части окнапрограммы и может разбиваться на несколько частей.Свойства компонента S t a t u s B a r приведены в табл. 5.16.Таблица 5.16 т Основные свойства компонента S t a t u s B a rСвойствоКомментарийNameИмя компонента.
Это имя используется в программе для доступа к компоненту и егосвойствамTextТекст, который содержится в поле компонентаFontШрифт, который используется для отображения текстаcolorЦвет фона поля компонентаLeftРасстояние от левой границы формы до левой границы компонентаторРасстояние от верхней границы формы до верхней границы компонентаWidthШирина поля компонентаHeightВысота поля компонентаB o r d e r S t y l e Вид рамки компонента. По умолчанию задается обычная (bsSingle) рамка.
Свойствотакже может принимать значение None (рамка отсутствует)Для того чтобы разделить панель на несколько составных частей, необходимо в строке свойства Panels (Панели) нажать кнопку с тремя точками ив появившемся окне редактора свойств StatusBar Collection Editorщелкнуть на кнопке Add столько раз, сколько планируется использоватьпанелей (рис. 5.15). В этом же окне можно выполнить настройку каждой изГЛАВА 5 • Основные компоненты при программировании для .МЕТAgil nmentAutoSzieBorderStyelSunkenIcon\^J (none)S(yteJI4TextStalusBaiPaneMTodTipTert !WidthИ00Рис. 5.15 • Использование окна StatusBar Collection Editorпанелей. Свойства выбранной панели отображены в правой части окна StatusBar Collection Editor.
.Основные свойства панелей объекта S t a t u s B a r приведены в табл. 5.17.Т а б л и ц а 5 . 1 7 т Основные свойства панелей объекта S t a t u s B a rСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и его свойствамTextТекст, отображаемый в панелиIconКартинка, отображаемая в панелиwidthAutoSizeДлина панелиПризнак необходимости изменять размер панели.
Если свойство имеет значениеContents, то ширина панели определяется ее содержанием (длиной текста). Еслизначение равно None, то панель имеет фиксированнуюширину, определяемую свойствомw i d t h . Если свойство имеет значение S t r i n g , то ширина панели выбирается такой, чтобынаходящаяся справа панель была прижата к правому краю окна. Если справа панели нет,то ширина устанавливается такой, чтобы правая граница панели была прижата к правойгранице окнаMinWidthМинимальная длина панели (свойство имеет силу, если значение A u t o S i z e не равно None)B o r d e r S t y l e Вид границы панели. Панель может быть приподнята (Raised), утоплена (Sunken) илине иметь границы вообще (None)ToolTlpTextСвойство, определяющее текст всплывающей подсказки, появляющейся в случаенаведения и задержки над панелью указателя мышиСледующая программа, окно которой приведено на рис. 5.16, демонстрирует вариант применения этого компонента.Компонент StatusBar-и-в• (Строка текста|Количество набранньк символов 131;80:02:8Рис.
5.16 т Окно программы, поясняющей использование компонента StatusBarТекст программы приведен ниже в листинге 5.9. Из особенностей работыпрограммы можно отметить следующие. При появлении окна программы наэкране выполняются начальные установки (см. обработку события TWinForml_Paint) - в панели заносится текст, настраивается таймер (интервалвозникновения события Tick). В конце процедуры таймер запускается игенерирует последовательность событий Tick. При возникновении каждоготакого события формируется и отображается в правой части окна текущеевремя.
Содержимое левой части панели (количество введенных символов)обновляется только при изменении поля для ввода TextBoxl (см. процедуруобработки события TextBoxl_TextChanged).Листинг 5.9 т Использование компонента s t a t u s B a r (основные процедуры)procedure TWinForml.TWinForml_Paint(sender: System.Object;e: System.Windows.Forms.PaintEventArgs);begin// Начальные установки панелей - формирование текста.StatusBarl.Panels[0].Text:='Количество набранных символов: 0 ' ;StatusBarl.Panels[1].Text:=DateTi.me.Now.ToLongTimeString;//' Установка интервала (1 секунда) и запуск таймера.TimerI.Interval:=1000;Timer1.Enabled:=True;end;// Обработка события таймера Tick - обновление значения времени.procedure TWinForml.Timerl_Tick(sender: System.Object;e: System.EventArgs);beginStatusBarl.Panels[1].Text:=DateTime.Now.ToLongTimeString;end ;// Обновление содержимого левой панели при наборе текста.procedure TWinForml.TextBoxl_TextChanged(sender:System.Object;e: System.EventArgs);beginS t a t u s B a r l .
P a n e l s [ 0 ] . T e x t : = ' К о л и ч е с т в о набранных символов: '+TextBoxl.TextLength.ToString;end;>|ЦГГЛАВА 5 • Основные компоненты при программировании для .МЕТКомпонент TimerВ примере из предыдущего раздела мы использовали компонент Timer, генерирующий последовательность событий Tick. Данный компонент невидим вовремя выполнения программы, то есть является невизуальным. Свойства компонента Timer приведены в табл. 5.18.Таблица 5 . 1 8 т Основные свойства компонента TimerСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и его свойствамEnabledСвойство, определяющее, включен таймер или нетintervalСвойство определяет промежуток времени, через который происходит генерация событияT i c k . Задается в миллисекундахСледующая программа (рис.
5.17), которая является простейшим секундомером, поясняет использование компонента Timer.Сначала свойство Enabled компонента Timer установлено в F a l s e ,поэтому таймер не генерирует никаких сообщений. Процедура обработкисобытия C l i c k на кнопке B u t t o n l присваивает свойству Enabled значениеTrue, тем самым запуская таймер. Процедура обработки события Tickотсчитывает интервалы с момента нажатия на кнопку Пуск. Нажатие на кнопкуСтоп останавливает секундомер - опять же изменением свойства Enabledтаймера Timer 1.
Текст программы приведен в листинге 5.10.0:00Рис. 5.17 • Форма программы и использованием компонента TimerЛистинг 5.10 т Текст программы (основные процедуры), поясняющей использованиекомпонента Timer/ / Процедура обработки события Click для левой кнопки.// Кнопка имеет две функции - запуск и останов секундомера.procedure TWinForml.Buttonl_Click(sender: System.Object;e: System.EventArgs);beginКомпонент Timer•if Timerl.Enabledthen// Если секундомер работает.beginTimerl.Enabled := False; // Останавливаем таймер.Buttonl.Text := 'Пуск'; // Меняем название кнопки со 'Стоп'// на 'Пуск'.Button2.Enabled := True; // Кнопка 'Сброс' теперь доступна.endelse// Если секундомер не работает.beginTimerl.Enabled := True; // Запускаем таймер.Buttonl.Text := 'Стоп'; // Меняем название кнопки с 'Пуск'// на 'Стоп'.Button2.Enabled := False;// Кнопка 'Сброс' теперь недоступна.end ;end;// Обработка события компонента Timer// (обновление показаний секундомера).procedure TWinForml.Timerl_Tick(sender: System.Object;e: System.EventArgs);varStr : string;beginif sec = 59 then// Если кол-во секунд равно 59,begin_ // увеличиваем минуты на 1,inc(min);// секунды обнуляем.sec := 0;end.
// В противном случае простоelse// наращиваем секунды.inc(sec);// Формируем строку// в формате m:ss.str := str + Convert.ToString(sec);if str.Length = 1 then str := '0' + str;// Создаем эффект мигания двоеточия// (отображаем двоеточие только на четных секундах).if sec mod2 = 0then str':= ':' + strelse str := ' ' + str;str := Convert.ToString(min) + str;Labell.Text := str;•ГЛАВА 5 • Основные компоненты при программировании для .WETend;// Обработка нажатия на кнопку 'Сброс'.procedure TWinForml.Button2_Click(sender: System.Object;e: System.EventArgs);beginsec := 0;min := 0;Labell.Text := ' 0:00';end;Компонент ToolBarЭтот компонент представляет собой панель инструментов, на которой можно размещать командные кнопки. Свойства компонента ToolBar приведены в табл.
5.19.Т а б л и ц а 5 . 1 9 т Основные свойства к о м п о н е н т а T o o l B a rСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и его свойствамButtonsСвойство задает кнопки панели инструментов (коллекцию объектов типаToolBarButton)ButtonSizeРазмер находящихся на панели кнопокAppearanceСвойство задает тип кнопки. Может принимать значения Normal (обычные кнопки), F l a tBorderStyleОпределяет вид границы (рамки) панели инструментов.