M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Ярлыки

    Пользовательский интерфейс трудно представить без ярлычков с оперативной подсказкой (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;

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