Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
150
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Ярлычки и оперативная подсказка

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

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

(Pb) property ShowHint: Boolean;

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

(Pb) property Hint: string;

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

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

Цвет окна подсказки можно изменить посредством свойства:

(Pb) property HintColor: TColor;

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

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

(РЙ property OnHint: TNotifyEvent;

Пример:

procedure TFormI.AppHint(Sender: TObject);

begin

Pane 11.Caption:= Application.Hint ;

end;

procedure TFormI.FormCreate(Sender: TObject);

begin

Application.OnHint := AppHint;

end;

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

У других компонентов свойство ShowHint интерпретируется системой так:

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

(Pb) property HintPause: Integer;

Интервал времени по умолчанию равен 800 мс. После истечения времени таймера, если мышь осталась над тем же элементом, наступает момент

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

(Pl) property OnShowHint: TShowHintEvent ;

TShowHintEvent = procedure (var HintStr: string; var CanShow:

Boolean; var Hintlnfo: THintInfo) of object;

с параметрами:

HintStr — отображаемый текст;

CanShow — необходимость (возможность) появления подсказки. Если в переменной CanShow обработчик вернет False, то окно подсказки вы­свечиваться не будет;

Hintlnfo — структура, несущая всю информацию о том, какой элемент управления, где и как собирается показать подсказку. Ее тип:

THintInfo = record

HintControl: TControl;

HintPos: TPoint;

HintMaxWidth: Integer;

HintColor: TColor;

CursorRect: TRect;

CursorPos: TPoint;

end;

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

procedure TFormI.AppShowHint(var HintStr: string; var CanShow:

Boolean; var Hintlnfo: THintInfo);

begin if HintStr='' then

begin

HintStr := Hintlnfo.HintControl.Name;

Hintlnfo.HintColor := ciRed;

CanShow := True ;

end;

end;

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

"Спрятать" окно подсказки можно с помощью метода:

procedure CancelHint;

Без повторного перемещения мыши на текущий элемент оно более не возникнет.

Соседние файлы в папке Delphi