Шаг 29.
Класс TControl. Ярлыки и оперативная подсказка

    На этом шаге мы продолжим изучение некоторых событий и методов класса TControl. Полный перечень свойств, методов и событий приведен на шаге 16.

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

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

   property ShowHint: Boolean;       . 

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

   property Hint: string;   . 

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

    Система оперативных подсказок имеет свойства и методы, общие для всех форм в приложении. Неудивительно, что они сосредоточены в Application - глобальном объекте, соответствующем работающему приложению (они описаны на шаге 18 "Состав класса TApplication"). Здесь мы рассмотрим только особенности использования подсказок.

    Напомним, что после истечения времени таймера (определяемого свойством HintPause), равного 500 миллисекундам, если мышь осталась над тем же элементом, наступает момент инициализации окна подсказки. При этом программист может получить управление, предусмотрев обработчик события:

   property OnShowHint: TShowHintEvent; 
    TShowHintEvent = procedure (var HintStr: string; var CanShow: 
Boolean; 
                   var HintInfo: THintInfo) of object; 
с параметрами:

    Если в переменной CanShow обработчик вернет False, то окно подсказки высвечиваться не будет. HintInfo - структура, несущая всю информацию о том, какой элемент управления где и как собирается показать подсказку. Ее тип:

   THintInfo = record
                //Компонент, для которого выводится подсказка. 

                HintControl: TControl; 
                //Координаты левого верхнего угла 
                //прямоугольника  с подсказкой.
                HintPos: TPoint;
                //Максимальная длина прямоугольника.
                HintMaxWidth: Integer;
                //Цвет фона прямоугольника.
                HintColor: TColor;
                //Размеры области, в которую должен
                //попасть курсор для вывода подсказки.
                CursorRect: TRect;
                //Текущее положение курсора.
                CursorPos: TPoint; 
               end;

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

   procedure CancelHint;    . 

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

    Со следующего шага мы начнем разбирать состав класса TWinControl.




Предыдущий шаг Содержание Следующий шаг