Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
33
Добавлен:
01.07.2025
Размер:
14 Мб
Скачать
☆

1.6. Подсказки и контекстно-зависимые справки

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

• Ярлычки, которые всплывают, когда пользователь задержит курсор мыши над каким-то элементом окна приложения. В частности, такими ярлычками обязательно должны снабжаться быстрые кнопки инструментальных панелей, поскольку нанесенные на них пиктограммы часто не настолько выразитель­ны, чтобы пользователь без дополнительной подсказки мог понять их назначе­ние.

• Развернутые подсказки в панели состояния или в другом отведенном под это месте экрана, которые появляются при перемещении курсора мыши в ту или иную область окна приложения.

• Встроенную систему контекстно-зависимой оперативной справки, вызывае­мую по клавише F1.

• Раздел меню Справка, позволяющий пользователю открыть стандартный файл справки Windows *.hlp, содержащий в виде гипертекста развернутую информацию по интересующим пользователя вопросам.

Тексты ярлычков и подсказок панели состояния устанавливаются для любых визуальных компонентов в свойстве Hint в виде строки текста, состоящей из двух частей, разделенных символом вертикальной черты '|'. Первая часть, обычно очень краткая, предназначена для отображения в ярлычке; вторая более развернутая подсказка предназначена для отображения в панели состояния или ином заданном месте экрана. Например, в кнопке, соответствующей команде открытия файла, в свойстве Hint может быть задан текст: Открыть|Открытие текстового файла

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

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

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

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

Если ваше приложение содержит инструментальную панель с быстрыми кнопками, то, как правило, эти кнопки должны снабжаться не только всплывающими ярлычками, но и развернутыми подсказками в панели состояния. Поместите на форму панель состояния — компонент StatusBar со страницы Win32 и установите его свойство SimplePanel в true. Тем самым вы превратили панель в односекционную. Если вы хотите использовать многосекционную панель, то в приведенном ниже операторе надо заменить свойство SimpleText ссылкой на панель, в которой вы хотите отображать подсказку.

Напишите какие-нибудь тексты в свойствах Hint ваших окон редактирования, а в обработчик события OnHint компонента ApplicationEvents вставьте оператор

StatusBar1.SimpleText := Application.Hint;

Запустите приложение на выполнение. Вы увидите, что тексты подсказок отображаются в панели состояния, когда курсор мыши перемещается над тем или иным окном редактирования. Причем это не мешает появляться ярлычкам, отображающим тексты окон.

Более подробные пояснения пользователю может дать контекстно-зависимая справка, встроенная в приложение. Она позволяет пользователю нажать в любой момент клавишу F1 и получить развернутую информацию о том компоненте в окне, который в данный момент находится в фокусе. Для того чтобы это осуществить, надо разработать для своего приложения файл справки .help. Затем надо в компонентах, для которых вы хотите обеспечить контекстно-зависимую справку, установить в свойстве HelpContext номер контекстной справки, соответствующей данному компоненту. Если HelpContext компонента равен нулю, то данный компонент наследует это свойство от своего родительского компонента. Например, для всех компонентов, размещенных на некоторой панели можно задать HelpContext = 0, а для самой панели задать отличное от нуля значение HelpContext, соответствующее теме, описывающей назначение всех компонентов панели.

Для того чтобы все это работало, надо выполнить команду Project | Options и в окне Project Options (опции проекта) на странице Application (приложение) установить значение опции Help file, равное имени подготовленного файла .hlр. Это приведет к тому, что в головном файле проекта появится оператор вида:

Application.HelpFile := '<имя файла .hlp>';

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

Если предполагается, что файл справки будет расположен в том же каталоге, где находится само приложение, то имя файла и в окне Опции проекта и в приведенном выше операторе надо задавать без указания пути, иначе приложение, работающее на вашем компьютере, перестанет работать на компьютере пользователя, у которого каталоги не совпадают с вашими.

Для того чтобы приложение в свойствах HelpContext могло ссылаться на какой-то номер контекстной справки, в файле проекта справки .hpj в разделе [MAP] надо поместить таблицу соответствия использованных значений HelpContext и тем файла .hlp.

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

Application.HelpContext(<номер темы>);

Задаваемые в этих операторах номера тем аналогичны используемым при задании свойств HelpContext. Это номер той темы, которая первой отобразится при открытии окна справки, а в дальнейшем пользователь, как обычно, может перейти, работая с программой справки, к любой интересующей его теме.

Параметр Command — это выполняемая команда, параметр Data — параметр этой команды, параметр CallHelp (по умолчанию его значение равно true) определяет, будет ли после завершения обработчика вызвана программа справки Win-Help. Если задать CallHelp = false, то WinHelp вызываться не будет.

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

function TForml.ApplicationEventslHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;

begin

if (Coimand=HELP_CONTEXT) and (Data<10) then

begin

Application.HelpCommand(HELP_CONTEXTPOPUP,Data); CallHelp:=false;

end;

Result:=true;

end;

обеспечивает отображение всех контекстных справок с номерами идентификаторов тем, меньшими 10, во всплывающем окне, не вызывая при этом WinHelp. Это дает возможность отобразить многострочные (в отличие от ярлычков) всплывающие окна, поясняющие назначение тех или иных элементов приложения.