Ярлыки

Пользовательский интерфейс трудно представить без ярлычков с оперативной подсказкой (Hints). Если задержать курсор, например, над кнопкой или компонентом палитры самой среды Delphi, появляется маленький прямоугольник яркого цвета (окно подсказки), в котором одной строкой сказано о названии этого элемента или связанном с ним действии. Delphi поддерживает механизмы создания и отображения таких ярлычков в создаваемых программах.

Свойство, определяющее активность системы подсказки у элемента управления:


property ShowHint: Boolean;
Если свойство ShowHint установлено в True, и во время выполнения курсор задержался над компонентом на некоторое время, в окне подсказки высвечивается текстовая строка с подсказкой, которая задана свойством:


property Hint: string;  

Подсказка компонента может быть пустой строкой — в этом случае система ищет в цепочке первый родительский компонент с непустой подсказкой.

Если в строке Hint встречается специальный символ-разделитель "Г, то часть строки до него ("короткая") передается в окно подсказки, а после ("длинная") — присваивается свойству Hint объекта Application. Ее можно использовать, например, в строке состояния внизу главной формы приложения (см. пример ниже).

Система оперативных подсказок имеет свойства и методы, общие для всех форм в приложении. Не удивительно, что они сосредоточены в Application — глобальном объекте, соответствующем работающему приложению. Все описанные ниже в этом разделе свойства относятся не к компоненту, показывающему подсказку, а именно к Application.

Фоновый цвет окна подсказки можно изменить посредством свойства


property HintColor: TColor;  

У объекта Application значение свойства showHint нужно устанавливать во время выполнения, например, в обработчике OnCreate главной формы приложения. Оно является главенствующим для всей системы подсказок: если оно установлено в значение False, ярлычки не возникают.

Есть еще один способ получения подсказки. При смене текущего элемента управления (т. е. при смене текста в свойстве Hint) в объекте Application возникает событие


property OnHint: TNotifyEvent;   

Пример:


procedure TForml.AppHint(Sender: TObject);  
begin  
Panell.Caption:= Application.Hint;:  
end;  
procedure TForml.FormCreate(Sender: TObject);  
begin  
Application.OnHint := AppHint;  
end;  

В этом примере текст подсказки будет отображаться в строке состояния Panell независимо от значения showHint у любого объекта — лишь бы этот текст был в наличии. Для этого разделяйте подсказку у элементов управления вашего приложения на две части при помощи символа " |" — краткая информация появится рядом с элементом, а более полная — в строке состояния.


function GetLongHint(const Hint: string): string; function GetShortHint(const Hint: string): string;

У других компонентов свойство ShowHint интерпретируется системой так: когда курсор мыши останавливается над элементом управления или пунктом меню, и приложение не занято обработкой сообщения, происходит проверка, и если свойство showHint у элемента или у одного из его родительских элементов в иерархии равно True, то начинается ожидание.

Если в данный момент другие ярлычки не показываются, то интервал времени задается свойством HintPause:


property HintPause: Integer;  

Интервал времени по умолчанию равен 500 мс. Если в данный момент уже виден ярлычок другого компонента, то интервал времени ожидания задается свойством:


property HintShortPause: Integer;  

По истечении этого времени, если мышь осталась над тем же элементом управления, наступает момент инициализации окна подсказки. При этом программист может получить управление, предусмотрев обработчик события объекта Application:


property OnShowHint: TShowHintEvent;  
TShowHintEvent = procedure (var HintStr: string;  
var CanShow: Boolean;  
var Hintlnfo: THintlnfo) of object;  

Рассмотрим параметры обработчика события OnShowHint:

Hintstr — отображаемый текст;
CanShow — необходимость (возможность) появления подсказки. Если в переменной CanShow обработчик вернет значение False, то окно подсказки высвечиваться не будет;
Hintinfo — структура, несущая всю информацию о том, какой элемент управления, где и как собирается показать подсказку. Ее описание:

THintlnfo = record  
HintControl: TControl;  
HintPos: TPoint;  
HintMaxWidth: Integer;  
HintColor: TColor;  
CursorRect: TRect;  
CursorPos: TPoint;  
end;  

Для показа окна подсказки необходимо еще, чтобы у элемента управления или у его предков в цепочке строка Hint была непустой. Впрочем, это можно исправить в обработчике OnShowHint:


procedure TForml.AppShowHint(var HintStr: string;  
var CanShow: Boolean;var Hintlnfo: THintlnfo);  
begin if HintStr='' then  
begin  
HintStr := Hintlnfo.HintControl.Name; Hintlnfo.HintColor := clRed; CanShow := True;  
end;  
end;  

Присвоив этот метод обработчику Application.OnShowHint, установив Form.showHint:=True и очистив все строки Hint, получим в качестве подсказки имя каждого элемента.

Длительность показа ярлычка задается свойством


property HintHidePause: Integer;  

По умолчанию его значение равно 2500 мс.

Свойство


property HintShortCuts: Boolean;  

отвечает за показ вместе с текстом ярлычка описания "горячих" клавиш данного элемента управления.

Наконец, можно вручную "зажечь" и "потушить" ярлычок. При помощи метода


procedure ActivateHint(CursorPos: TPoint);  

ярлычок показывается в точке CursorPos (система координат — экранная). "Спрятать" окно подсказки можно с помощью метода:


procedure CancelHint;  

Без повторного перемещения мыши на текущий элемент оно более не возникнет.
Теги:
Ярлыки
Добавлено: 07 Августа 2018 21:16:14 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...