|
Лабораторная работа № 07.Инструментальная линейка и строка состоянияВо многих приложениях Windows имеются инструментальная линейка в верхней части окна и строка состояния в его нижней части. Инструментальная линейка содержит обычно несколько маленьких кнопок, которые вы можете нажимать щелчком мыши, чтобы задавать команды или переключать опции вкл. и выкл. Иногда инструментальная линейка может содержать комбинированный список, строку редактирования или некоторые другие управляющие элементы. Строка состояния обычно имеет одну или несколько областей с текстовым описанием текущего состояния программы. У вас может быть область для координат, для показа выбранного шрифта или отображения всплывающих подсказок о том, что делать дальше, сообщений об ошибках и т.д. Фактически приложение определяет, что должно войти в строку состояния. Построение инструментальной линейкиДля создания инструментальной линейки или строки состояния в Delphi вы можете использовать компонент Panel, Добавив в него несколько кнопок или других панелей, или же можете использовать специальный компонент StatusBar. Чтобы построить типичную инструментальную линейку, вам нужно поместить панель в верхней части формы и разместить в ней несколько компонентов SpeedButton (быстрая кнопка). Быстрые кнопки могут иметь заголовок и значок, хотя обычно они имет только графический элемент. Быстрые кнопки могут вести себя подобно командным кнопкам, чекбоксам или кнопкам опций (радиокнопкам) и иметь другие растровые изображения для различных ситуаций. Быстрые кнопки являются графическим элементом, они не имеют дескриптора окна (т.о. не использует ресурсы окон), не могут получать фокус, не участвуют в переборе клавишей Tab и быстрее создаются и закрашиваются. Если вы просто выбираете компонент SpeedButton и помещаете его экземпляр в панель, то в результате получите графическую командную кнопку. Потом можно выбрать растровое изображение или ввести заголовок и записать код для события OnClick. Чтобы добавить группу быстрых кнопок, которые будут работать подобно радиокнопкам, поместите их в панель и присвойте их свойствам GroupIndex одинаковое значение. Все кнопки, имеющие одинаковое свойство GroupIndex, станут осуществлять взаимоисключающий выбор аналогично кнопкам опций. Одна из этих кнопок должна быть всегда выбранной, поэтому не забывайте присвоить свойству Down значение True для одной из них на этапе проектирования или как только программа начинает работать. В качестве альтернативы у вас могут быть взаимоисключающие кнопки, которые все могут быть ненажатыми. Это означает, что вы можете щелкнуть на выбранной кнопке и отменить ее выбор. Вы можете выбрать этот режим, присвоив свойству AllowAllUp для всех кнопок группы значение True. Чтобы быстрая кнопка работала как чекбокс необходимо выполнить следующее. Чекбокс – это группа только с одним эелементом, в котором все кнопки могут быть невыбранными. На практике вы добиваетесь этого добавив новую быструю кнопку, присвоив ей конкретное значение для свойства GroupIndex (отличное от индексов других групп, и выбрав значение True для свойства AllowAllUp.. Задание № 1Постройте инструментальную линейку, в которой будут располагаться следующие кнопки:
procedure TForm1. SpeedButton1Click (Sender: TObject); begin if SpeedButton1.Down then Label1. Font. Style : = [ fsBold ] else Label1. Font. Style : = [ ] end ;
Добавление всплывающих подсказок в инструментальную линейкуВсплывающая подсказка – текст, который кратко описывает быструю кнопку под курсором. Этот текст обычно выводится на экран в окне желтого цвета, после того как курсор мыши оставался неподвижным над кнопкой в течение некоторого времени. Для добавления всплывающих посказок в инструментальную линейку приложения просто устанавливают значение свойства ShowHints панели, которая используется как инструментальная линейка, равным True. Вы также можете изменить значение по умолчанию свойств HintColor и HintPause глобального объекта Application и, что необязательно, добавить непосредственно конкретный текст для всплывающей подсказки кнопок инструментальной линейки (свойство Hint). Текст подсказок можно изменять при изменении состояния кнопки написав некоторый код, использующий свойство Hint. Комбинированный список в инструментальной линейкеСуществует несколько распространенных приложений, которые используют комбинированные списки в инструментальных линейках для того, чтобы показывать списки стилей, шрифтов, размеров шрифта и т.д. Используем в следующем задании такой подход: создадим комбинированный список, чтобы позволить пользователю выбирать шрифт и окно редактирования с прокруткой компонент (SpinEdit) для установки размера шрифта, каждый с собственной меткой. Два новых компонента и их метки имеют соответствующее сообщение в свойстве Hint. Комбинированный список заполняется, когда начинает работать приложение, копируя названия текущих шрифтов из объекта Screen. procedure TForm1. Form1Create (Sender : TObject) ; var I : Integer ; begin for I := 1 to Screen. Fonts. Count do {скопируйте название шрифта в комбинированный список} ComboBox1. Items. Add (Screen. Fonts. Strings [ I-1] ) ; {выберите текущий шрифт} ComboBox1. ItemIndex := ComboBox1. Items. IndexOf (Label1. Font. Name) ; end ; Когда выбирается новый элемент комбинированного списка – текст текущего элемента комбинированного списка копируется в название шрифта надписи. procedure TForm1. ComboBox1Change (Sender : TObject) ; begin Label1. Font. Name := ComboBox1. Items [ComboBox1. ItemIndex] ; end ; Для управляющего элемента редактирования с прокруткой : procedure TForm1. SpinEdit1Change (Sender : TObject) ; begin if not (SpinEdit1. Text = ‘ ‘ ) then Label1. Font. Size := SpinEdit1. Value ; end ; Задание № 2
Построение строки состоянияСистема Delphi Содержит специальный компонент StatusBar, основанный на специальном управляющем элементе системы Windows 95. Этот коипонент может быть использован почти как панель, когда значением его свойства SimplePanel является True. В этом случае вы можете использовать свойство SimpleText, чтобы вывести некоторый текст. Этот компонент позволяет вам определить несколько подпанелей с помощью редактора свойства Panels. Каждая подпанель имеет свои собственные графические атрибуты, настраиваемые с помощью редактора. Другой характеристикой компонента строки состояния является специальная область, которая добавляется в нижний правый угол линейки и полезна для изменения размера самой формы. Строка состояния используется для многих целей. Наиболее часто ее используют для вывода на экран информации об элементе меню, который в настоящее время выбран пользователем. При этом нужно сделать два шага. Сначала ввести строку как свойство Hint каждого элемента меню. Затем записать некоторый код для обработки события OnHint приложения. Вам нужно добавить вручную новый метод в форму и затем его присвоить свойству OnHint объекту Application при запуске : procedure TForm1. Form1Create (Sender : TObject) ; begin Application. OnHint := ShowHint ; end : В интерфейсной части кода формы вы можете добавить следующее определение procedure TForm1. ShowHint (Sender : TObject) ; Эта процедура копирует текущее значение свойства Hint приложения, которое временно содержит копию всплывающей подсказки выбранного элемента, в строку состояния : procedure TForm1. ShowHint (Sender : TObject) ; begin StatusBar1. Panels [0]. Text := Application. Hint ; end; Задание № 3Сконструировать строку состояния, в которую вывести подсказки для всех команд всплывающего меню формы, построенной в предыдущих заданиях. Задание № 4Написать программу – простой текстовый редактор (используйте компонент TRichEdit). Редактор должен просматривать и сохранять текстовые файлы, а также: - копировать, вырезать и вставлять фрагменты текста - изменять формат выделенного текста (начертание, высота, выравнивание) - должна присутствовать полоса прокрутки. |