Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Delphi_1курс лекции / Тема 09 Меню, инстр панели, полоса состояния.doc
Скачиваний:
54
Добавлен:
23.03.2015
Размер:
133.12 Кб
Скачать

Полоса состояния StatusBar

Страница Win32

Компонент TStatusBarразмещается обычно внизу окна и представляет собой полосу состояния из одной или нескольких панелей. В этих панелях пользователю сообщается какая-то текущая информация о режиме работы, даются подсказки и т.п.

SimplePanel:Boolean– определяет, включает ли полоса состояния одну или множество панелей.

Если SimplePanel=true, то вся полоса состояния представляет собой единственную панель. В этом случае, свойство

SimpleText. задает текст полосы

Если SimplePanel = false, то полоса состояния является набором панелей. В этом случае, свойство

Panels задает набор панелей, каждая из которых имеет типTStatusPanels

SizeGrip: booleanопределяет наличие в нижнем правом углу полосы состояния захвата, позволяющего пользователю изменять размер полосы. Если при этом полоса выровнена по нижнему краю формы (Align=alBottom), то одновременно будет изменяться и размер окна приложения.

Свойства панелей вы можете задавать специальным редактором наборов, который можно вызвать тремя способами: из Инспектора Объектов кнопкой с многоточием около свойства Panels, двойным щелчком на компонентеTStatusBarили из контекстного меню, выбрав командуPanelsEditor. В окне редактора вы можете перемещаться по панелям, добавлять новые или уничтожать существующие. При перемещении по панелям в окне Инспектора Объектов вы будете видеть их свойства.

Свойства панели:

Text содержит отображаемый в панели текст.

Widthширина.

Style:TStatusPanelStyle, где TStatusPanelStyle = (psText, psOwnerDraw)определяет стиль панели:psText- текстовая,psOwnerDraw- предназначена для изображений на канве.

Программный доступ к текстам отдельных панелей можно осуществлять двумя способами: через индексированное свойство Panelsили через его индексированное подсвойствоItems. Например, два следующих оператора дадут идентичный результат:

StatusBar1.Panels[0].Text:= 'текст 1';

или

StatusBar1.Panels.Items[0].Text := 'текст 1';

Количество панелей полосы состояния можно определить из подсвойства CountсвойстваPanels. Например, следующий оператор очищает тексты всех панелей:

fori:= 0toStatusBar1.Panels.Count-1do

StatusBar1.Panels[i].Text:= '';

AutoHint: boolean, установленное вtrue, обеспечивает автоматическое отображение в первой панели полосы состояния вторых частей подсказок (свойстваHint) тех компонентов, над которыми перемещается курсор мыши. Причем отображение происходит независимо от значения свойстваShowHintэтих компонентов. Конечно, панель должна быть текстовой (Style=psText).

Свойство HintкомпонентDelphi

Свойство Hintкомпонента обеспечивает текст подсказки, появляющийся в ярлычке (всплывающем окне подсказки) или в заданном месте окна, например, в строке состояния.

В общем случае Hintсостоит из двух частей, разделенных символом вертикальной черты '|'. Первая часть отображается в ярлычке, если пользователь задержит курсор мыши над данным компонентом (это может быть любой компонент, включая разделы меню). Это обычно краткое пояснение компонента. В частности, такой подсказкой, как правило, снабжаются быстрые кнопки типаTSpeedButton. Вторая часть содержит текст, отображаемый в какой-то выделенной для этого части окна, например, в строке состояния. Это обычно развернутое пояснение. Например, свойствоHintдля быстрой кнопки доступа к разделу меню сохранения файла может иметь вид: 'Сохранить|Сохранение текущего документа в файле'. Как частный случай, в свойствеHintможет быть задана только первая часть подсказки без символа '|'.

------------------------------------------------------------------------------------------------

Для того чтобы первая часть подсказки появлялась в ярлычке, когда пользователь задержит курсор мыши над данным компонентом, надо сделать следующее:

1.  Указать тексты свойстваHintдля всех компонентов, для которых вы хотите обеспечить окно подсказки.

2.  Установить свойстваShowHint(показать подсказку) этих компонентов вtrueили установить вtrueсвойствоParentShowHint(ShowHintродителя) и установить вtrueсвойствоShowHintконтейнера, содержащего данные компоненты, или формы.

Конечно, вы можете устанавливать свойства в trueилиfalseпрограммно, включая и отключая подсказки в различных режимах работы приложения.

При ShowHint=trueярлычок будет всплывать даже если компонент в данный момент недоступен (Enabled=false).

Если вы не задали значение свойства компонента Hint, но установили вtrueсвойствоShowHintили установили вtrueсвойствоParentShowHint, а в родительском компонентеShowHint=true, то в ярлычке будет отображаться текстHintиз родительского компонента.

Правда, все описанное выше справедливо при значении свойства ShowHintприложенияApplicationравномtrue(это значение задано по умолчанию). Если установитьApplication.ShowHintвfalse, то ярлычки не будут появляться независимо от значенийShowHintв любых компонентах.

-----------------------------------------------------------------------------------------------------

Для того чтобы вторая часть сообщения, записанного в Hint, отображалась в строке состояния в моменты, когда курсор мыши проходит над компонентом, можно использовать обработку событияOnHint. Это событие именно приложенияApplication, а не того компонента, над которым проходит курсор мыши. Если обработчик этого события определен, то в момент прохождения курсора над компонентом, в котором задано свойствоHint, вторая часть сообщения компонента заносится в свойствоHintобъектаApplication. Если свойствоHintкомпонента содержит только одну часть, то в свойствоHintобъектаApplicationзаносится эта первая часть. Причем все это делается независимо от состояния свойства компонента

Чтобы отображать эти сообщения в строке состояния, надо определить и написать обработчик события приложения OnHint, как показано в приведенном ниже примере.

 Пусть вы хотите отображать вторую часть подсказок, введенных в свойство Hint компонентов, в полосе состояния StatusBar. Поместите на форму панель состояния - компонент StatusBar со страницы Win32 и установите его свойство SimplePanel в true. Тем самым вы превратите панель в односекционную. Если вы хотите использовать многосекционную панель, то в приведенном ниже операторе надо заменить свойство SimpleText ссылкой на панель, в которой вы хотите отображать подсказку. Перенесите на форму компонент ApplicationEvents (компонент TApplicationEvents перехватывает события приложения - объекта Application типа TApplication и, следовательно, обработчики этих событий можно писать как обработчики невизуального компонента ApplicationEvents) и в обработчик его события OnHint вставьте оператор

procedure TForm1.ApplicationEvents1Hint(Sender: TObject);

begin

StatusBar1.SimpleText := Application.Hint;

// StatusBar1.Panels[0].Text := Application.Hint // для многосекционной панели

end;

-----------------------------------------------------------------------------------------------

Третий способ использования свойства Hintкомпонента заключается в непосредственном отображении текста заключенного в нем сообщения в какой-то метке или панели с помощью функцийGetShortHintиGetLongHint, первая из которых возвращает первую часть сообщения, а вторая - вторую (если второй части нет, то возвращается первая часть).

 Пусть вы хотите, чтобы при нажатии некоторой кнопки Button1 вашего приложения в панели Panel1 высвечивалась подсказка пользователю, например, 'Укажите имя файла', а сама кнопка имела ярлычок с текстом 'Ввод'. Тогда вы можете задать свойству Hint этой кнопки значение 'Ввод|Укажите имя файла', задать значение true свойству ShowHint, а в обработчик события нажатия этой кнопки вставить оператор

Panel1.Caption := GetLongHint(Button1.Hint);

Если же вы не хотите отображать ярлычок для кнопки, то можете ограничиться значением Hint, равным 'Укажите имя файла', а приведенный выше оператор оставить неизменным или заменить на эквивалентный ему в данном случае оператор

Panel1.Caption := GetShortHint(Button1.Hint);

или даже просто на оператор

Panel1.Caption := Button1.Hint;