к оглавлению VB   VBScript   VBA   VB7 (.NET)   к 4GL - визуальному программированию

Справочная система Visual Basic

  1. Создание тематических разделов справочной системы
  2. Обратная сторона тематических разделов
  3. Создание контекстно-зависимой справочной системы
  4. Создание и компиляция файла справки
  5. Доступ к справочной системе Windows
  6. Справочная система What's This

Любое профессиональное приложение для операционной системы Windows должно содержать справочную систему стандартного вида, позволяющую пользователю получить дополнительную информацию по любому вопросу. Если внешний вид и принципы работы справочной системы будут отличаться от принятых в среде Windows, то это означает, что пользователь будет вынужден затратить дополнительное время на обучение. Обе версии Visual Basic (Professional и Enterprise) поставляются с компилятором файловой системы Windows, который позволяет легко встраивать справочную систему в приложения.


Примечание: Полное рассмотрение всех средств справочной системы Windows заняло бы слишком мною места, поэтому в данной главе рассказывается в основном только о взаимодействии справочной системы Windows с приложением. Справочное руководство Visual Basic Books Online для обоих версий Professional и Enterprise включает полную информацию, необходимую для построения справочной системы.

    Грубо говоря, метод использования компилятора справочной системы достаточно прост: создается текстовый файл, содержащий соответствующие коды формата, которые компилятор преобразует во внутренние ссылки, выпадающие окна и т.д. Текстовый файл должен создаваться в текстовом редакторе, поддерживающем формат RTF (rich text format) фирмы Microsoft. Большинство современных текстовых редакторов поддерживают этот формат.


Совет: Некоторые инструменты независимых поставщиков существенно облегчают процесс создания справочной системы. Один из них, который постоянно используется автором в его работе, это "RoboHelp" фирмы BlueSky Software. Если нужно создать сложную справочную систему, то пакет RoboHelp окажет в этом неоценимую помощь. Для создания более простых справочных систем можно воспользоваться продуктами, распространяемыми по принципу shareware. Список подобных систем приведен в WINDSK forum системы CompuServe. Инструменты WHAT (Windows Help Authoring Templates) и WHPE (Windows Help Project Editor), которые можно найти на компакт-диске Microsoft Software Developers, также отличается простотой в использовании.

    Система помощи Windows также включает в себя меню с дополнительными средствами. (При работе с Windows может понадобиться создать многоуровневую систему меню.) Подобное меню содержит такие пункты, как Search, который выводит список ключевых слов и позволяет пользователю перемещаться по списку, вводя первые буквы интересующего его слова. Далее, при помощи ключевого слова можно сразу перейти к нужному разделу. Также различные части приложения (как и в Visual Basic) могут содержать контекстно-зависимую подсказку. Этот способ получения подсказки доступен при нажатии клавиши F 1 (или при помощи кнопки WhatsThisHelp в среде Windows) и выдает информацию о том инструменте среды, который задействован в настоящий момент.
 

Создание тематических разделов справочной системы

    Базовой операцией при создании справочной системы является определение набора тематических разделов помощи. В идеале это должен быть короткий список (не более одного - двух экранов) тем помощи, объединенных общим принципом классификации. Обычно тематические разделы организуются в виде иерархической системы. Это позволяет пользователю легко перемещаться от общих тем к более специфическим. Тем не менее каждый раздел должен содержать достаточное количество ссылок для перехода к другим темам без необходимости подниматься на самый верхний уровень иерархии.
    Хотя определение достаточного набора тематических разделов и бывает желательным, выполнить это требование удается не всегда. В этих случаях может возникнуть необходимость добавить всплывающее или дополнительное окно к справочной системе.
 

 
 

Обратная сторона тематических разделов


Совет: Если найти файл Iconwrks.rtfB директории VBVHC, то он сможет стать отличным примером файла RTF. Этот файл содержит простейшую справочную систему для приложения Iconwrks. (Исполняемый файл этого приложения называется Iconwrks.ехе и находится в том же директории.) Далее, сравнивая содержимое RTF-файла с экраном помощи Iconwrks.ехе, можно увидеть, как управляющие символы формата RTF превращаются в дополнительные возможности справочной системы. Возможно, это даже поможет достаточно хорошо изучить значение управляющих символов. Однако более предпочтительным является использование программных инструментов независимых поставщиков.

    Практически нет людей (за редким исключением), которые для создания справочной системы не использовали бы простые пакеты, основанные на макроопределениях, для расстановки управляющих символов RTF. Используя подобный пакет можно смело забыть о том, что обозначет тот или иной идентификатор формата RTF, щелкнув вместо этого несколько раз мышкой. В качестве примера можно привести внешний вид панели инструментов пакета RoboHelp, дающей доступ к некоторым из его возможностей.
    В любом случае, как об этом уже говорилось ранее, необходим текстовый редактор, поддерживающий формат RTF (rich text format) для сохранения файла, который будет впоследствии перетранслирован компилятором в справочную систему. (Это связано с тем, что большинство доступных инструментов типа RoboHelp доступны в качестве дополнительных модулей к редактору Microsoft Word, который, без сомнения, полностью поддерживает спецификацию RTF-формата.)
    Каждый тематический раздел справочной системы должен быть отделен от другого символом "разрыв страницы" (hard page break). (Этот символ надо вводить самостоятельно, в отличие от других символов разрыва, которые тестовый редактор проставляет автоматически. Символ "разрыв страницы" можно ввести путем нажатия комбинации клавиш CTRL+ENTER в семействе редакторов фирмы Microsoft.) Каждый тематический раздел должен содержать идентификатор контекстной строки, название, а также список доступных ключевых слов. Контекстная строка используется для перехода к разделу, следовательно, каждый раздел должен иметь уникальную строку. Ключевые слова используются для организации возможностей поиска в справочной системе. Естественно, несколько тематических разделов могу т иметь одинаковые ключевые слова.
    Привязка по ключевым словам, использующая идентификаторы, является основой для построения справочной системы. Например, контекстная строка выделяется при помощи идентификатора привязки "#". Контекстная строка может использовать символы от А до Z, числа, точки и символы подчеркивания. Максимальная длина строки ограничена 255 символами.
    Название тематического раздела выделяется при помощи идентификатора привязки "$" (знак доллара). Название может содержать до 127 символов из стандартного набора системы Windows. И, наконец, ключевые слова выделяются при помощи идентификатора привязки "К" (в верхнем регистре).
    (Ключевые слова не являются обязательными, однако можно назначить тематическому разделу более чем одно ключевое слово, перечислив их в списке, разделенном знаками ";". Ключевые слова могут содержать произвольные символы из стандартного набора символов системы Windows. Максимальная длина ключевого слова не должна превышать 255 символов.)
    Далее заметим, что можно организовать ссылку на файл с растровым изображением.bmp, указав его имя в фигурных скобках. При этом растровое изображение будет помещено в соответствующее место экрана помощи. Можно также поместить растровое изображение на страницу со списком тематических разделов. Если для создания справочной системы используется текстовый редактор Word for Windows, то того же результата можно достичь, воспользовавшись функцией Insert Picture. (Для вставки изображения большого размера следует воспользоваться методом вставки "By Reference".) Графическая часть справочной системы также может использоваться в качестве точек перехода к другим темам. Если не используется редактор Word for Windows, то следует создать ссылку на растровое изображение в файле тематических разделов.
    Обратим внимание, что некоторые фрагменты текста (например, "Status Area") подчеркнуты двойной линией. Такие фрагменты используются в качестве точек перехода к другим разделам. Вслед за каждым таким фрагментом следует текст, указывающий место перехода (этот текст не выводится на экран в справочной системе). Общий синтаксис подобного механизма ссылок может быть записан как:

JumpString CONTEXT_SroWG

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


Примечание: Способ указания фрагмента текста как скрытого зависит от используемого текстового редактора.   

Создание контекстно-зависимой справочной системы.

    Свойство, ссылающееся на файл справочной системы, является базовым свойством любого объекта типа Арр (application). Для того чтобы связать это свойство с соответствующим слайдом, необходимо выполнить следующее:

    Далее, предположим, что уже создан файл справочной системы, который будет откомпилирован и добавлен к приложению. Прежде чем использовать возможности контекстно-зависимой справочной системы, необходимо выполнить ряд действий.
      Например, если программист установит значение 5 для свойства HelpContextID меню File, то создатель справочной системы должен об этом знать. После этого он (или она) должен сообщить компилятору, как следует соотносить значение свойства HelpContextID с соответствующим тематическим разделом (более подробно эта операция описана в следующем разделе). В нашем случае тематический раздел FILE MENU должен иметь контекстный номер 5.


Совет: Если требуется назначить элементу управления изображением контекстно-зависимую подсказку (это невозможно сделать обычным способом по причине отсутствия свойства HelpContextID у такого элемента), следует заменить подобный элемент панелью с изображением.

Создание и компиляция файла справки

    Файл проекта справочной системы содержит всю информацию, необходимую для корректной работы компилятора. Кроме этого, он содержит таблицу (карчу) соответствий для установления связей между контекстной строкой и контекстным номером ID, которая будет использоваться в проекте (еще раз напомним, что должно существовать строгое соответствие между информацией, содержащейся в файле проекта справочной системы, и кодом приложения).
    Файл проекта справочной системы представляет собой обычный текст в формате ASCII. В качестве расширения для всех подобных файлов проекта используется.hpj. Файл проекта справочной системы содержит список всех файлов с тематическими разделами, а также может содержать растровое изображение или таблицу соответствия между контекстными строками и контекстными номерами ID. Можно также назначить две контекстные строки одному и тому же тематическому разделу, модифицировав файл проекта.
    Для установления соответствий между контекстным номером ID и определенным тематическим разделом необходимо указать имя раздела после ключевого слова [MAP], после чего через пробел (т.е. после нажатия клавиши SPACE или TAB) следует указать контекстный номер справки. Например, секция [МАР]-файла проекта справочной системы может содержать следующую информацию:

    [MAP]
    FILE_MENU 5 ;5 is the context number
                    ;Comments follow semicolons
    EDIT_MENU 10 ;10 is context number
    VIEW_MENU 15 ;15 is context number

    Теперь, если вызвать инструмент создания справочной системы со значением HelpContextID, установленным в 5, получим экран помощи для тематического раздела FILE_MENU; установив HelpContextID в 10 и вызвав инструмент создания справочной системы, получим экран EDIT MENU и т.д.
    После создания файла проекта справочной системы остается только вызвать компилятор системы помощи. (Заметим, что директорий, в котором находится компилятор, должен содержаться в системной переменной PATH, в противном случае необходимо будет указать полный путь.) Например, в системе Windws можно использовать для этого диалоговую панель Run, доступную из меню Start, в которой нужно написать нечто подобное:

    C:\VB\HC\HC Named fHelpPi-ojectFile

если компилятор находится в назначенном по умолчанию директории (для версии Professional). Или же можно написать:

НС NameOfHelpProjectFile

в IUM случае, когда директорий, содержащий компилятор, содержится в переменной PATH.
    Компилятор справочной системы имеет большое количество возможностей, не рассматриваемых здесь. Например, можно компилировать только определенные части файла или управлять размерами и видом его окон. Кроме этого, можно использовать всю мощь макроопределений, написанных фирмой Microsoft, для расширения возможностей компилятора справочной системы. Эта и другая информация содержатся в Visual Basic Books Online. Также можно почерпнуть большое количество информации, внимательно изучив содержание файла Iconwrks.rtf.

Доступ к справочной системе Windows

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

    Если необходимо вызвать справочную систему самой системы Windows (например, для получения доступа к экрану Windows "Help on Help"), необходимо вызвать API - функцию WinHelp. Для этого необходимо добавить в приложение соответствующий фрагмент кода. Для 32-битной версии справочной системы это может быть такой фрагмент:

        Declare Function WinHeip Lib "user32" Alias "WinHelpA" (ByVal hHnd As Long, ByVal IpHclpFu
        As String, ByVal wCommand As Long, ByVal dwData As Long) As Long

    Параметр hWnd ("window's handle) является параметром свойства hWnd рабочей формы. Параметр IpHelpF указывает путь к файлу справки (этот файл находится в директории, отличном от директория .ехе-файлов). Мог понадобиться следующие константы, используемые параметром wCommand:

        Global Const HELP CONTEXT = &H1          'Display topic by id number
        Global Const HELP QUIT -- &H2             'Terminate help
        Global Const HELP INDEX = &H3                 'Display index
        Global Const HELP HELPONHELP = &H4 'Display help on using help
        Global Const HELP SETINDEX = &H5 'Set an alternate Index
        Global Const HELP KEY = &H101                 'Display topic for keyword in Data
        Global Const HELP MULTIKEY = &H201 'Look up keyword in alternate table

    Например, для того, чтобы вызвать стандартную справочную систему "Help on Help", необходимо испольвать следующую процедуру:

    Public Sub DisplayHelp On Help(X As Form)
        Dim Foo As Long ' dummy variable
        Foo = WinHeip(X.hWnd,"C:\WINDOWS\HELP\WINDOWS.HLP",
        HELP HELPONHELP,CLng(O))
    End Sub

    После этого любая строка вида

    DisplayHelp_On_Help_Me

будет вызывать стандартную справочную систему Windows.


Примечание: После присвоения параметру hCommand значения HELP_CONTEXT следует установить для параметра dwData соответствующий номер ID контекстной строки.

    Если для вызова справочной системы используется WinHeip API, то для того чтобы закрыть дополнительные окна справки, вам нужно снова вызвать функцию WinHeip API (т.к. справочная система Windows является отдельным приложением). Это можно сделать следующим образом (обычно для этого используется событие Form Unload). Переменные Foo и Bar должны иметь правильный тип, хотя реально они не несут никакой полезной нагрузки.

    Sub Form_Unload(Cancel As Integer)
            Dim Foo As Integer, Bar As String 'dummy variables
            Foo = WinHeip(Me.hWnd, Bar, Help_Quit, CLng(O))
    End Sub

Справочная система What's This

    Операционная система Windows имеет новый тип контекстно-зависимой подсказки, который вызывается щелчком мышки над изображением небольшого вопросительного знака, расположенного на заголовке экранной формы. При этом указатель мыши изменяет свой внешний вид на вопросительный знак, после чего пользователь может щелкнуть мышкой по любому объекту. В результате этих действий на экран выводится контекстно-зависимая информация о выбранном объекте. Точно так же, как и в других вариантах контекстно-зависимой подсказки, для корректной работы подсказки "What's This" надо установить соответствие между приложением и секцией MAP в файле проекта справочной системы.


Примечание: Для использования этого варианта контекстно-зависимой подсказки необходимо установить значение True для свойства WhatsThisHelp. Кроме этого, надо установить для свойства WhatsThisHelpID значение соответствующего контекстного номера ID.


 
 

    Для встраивания контекстно-зависимой подсказки What's This в приложение доступны три способа. Но в любом случае свойство WhatsThisHelp должно быть установлено в True.

                    FormObject.ShowWhatThis     И, наконец, можно вызывать систему помощи напрямую из приложения при помощи метода WhatsThisMode. Эффект вызова при этом такой же, как и в случае, когда пользователь щелкает по кнопке What's This на полосе заголовка. (Подобный метод вызова может использоваться для запуска приложения в режиме обучения, когда пользователь будет видеть описание каждого выбираемого им пункта меню.)

к оглавлению VB   VBScript   VBA   VB7 (.NET)   к 4GL - визуальному программированию

Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет)
При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов.
Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution