Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вызов конкретной страницы .chm Help по F1 / 5 сообщений из 5, страница 1 из 1
22.07.2013, 17:08
    #38339416
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов конкретной страницы .chm Help по F1
Ну, например есть большой Help -один на все приложение.
Есть Phone Book - выполнена в виде отдельного exe.
В большом Help есть раздел "Phone Book".

Логично при выводе Help для Phone Book выводить раздел "Phone Book" а не дефолтный "About ALL aplication".

Из кода это решается через Help API:
Код: vbnet
1.
2.
3.
4.
5.
Public Sub menu_HelpHelp_Click()
  Dim helpTopic As String
  helpTopic = "PhoneBook_Main.htm"
  HTMLHelp 0, App.Path & "\" & "proga.chm", HH_DISPLAY_TOPIC, ByVal helpTopic
End Sub



Теперь об F1:
Если я в Form_Load или в main вставляю
Код: vbnet
1.
2.
Sub Main()
  App.HelpFile = App.Path & "\" & "proga.chm"



то по нажатию F1 файл справки выводится,
но при этом на нужную страницу не перемещается. Естественно, я ж нигде это не указал.

Как это увязать?

Я обратил внимание на параметр HelpContextID который есть в свойстве любого элемента.
Но опять же, как это увязать с моим helpTopic As String?
Потому как там явно имеется в виду число.
Я не соображу как привязать индексы к именам страниц (или пунктам дерева-оглавления) при компиляции chm.

Дайте наводку.
...
Рейтинг: 0 / 0
22.07.2013, 18:26
    #38339559
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов конкретной страницы .chm Help по F1
Я лишний раз убеждаюсь в том, что ХЭЛП-ы никто из здесь присутствующих не пишет вообще, обидно.
HelpContextID, так понимаю чисто VB6 фича.

P.S Будем надеяться что я просто подкалываю в надежде побыстрее получить ответ.
...
Рейтинг: 0 / 0
22.07.2013, 19:04
    #38339611
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов конкретной страницы .chm Help по F1
Все там просто как 2 копейки:

How To Prepare HTML Help Files for Context-Sensitive Help

В блокноте открываем файл html-проекта и тупо пишем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[ALIAS]
IDH_FILE_PHONEBOOK_MAIN = PhoneBook_Main.htm
IDH_FILE_PHONEBOOK_EDITENTRY = PhoneBook_EditEntry.htm

[MAP]
#define IDH_FILE_PHONEBOOK_MAIN 1
#define IDH_FILE_PHONEBOOK_EDITENTRY 2



Ну и компилируем.

В VB6 в основной форме ставим:
HelpContextID = 1

А в форме редактирования отдельной записи:
HelpContextID = 2

В основной форме по F1 будет открываться PhoneBook_Main.htm
А в форме редактирования контакта по F1 соответственно получим PhoneBook_EditEntry.htm

Для дочерних контролов формы HelpContextID можно оставить =0, будет использоваться родительский.

Идея в общем ясна.

Рутинно но просто.
...
Рейтинг: 0 / 0
22.07.2013, 20:05
    #38339673
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов конкретной страницы .chm Help по F1
Ух ты,

HelpContextID еще и в ран-тайм менять можно:

Типа так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub menu_FileNew_Click()
  'открываем FormContact в режиме добавления нового контакта
...
  FormContact.HelpContextID = 2 'PhoneBook_AddNewEntry.htm
  FormContact.Show 1, Me
End Sub

Public Sub menu_FileEdit_Click()
...
  FormContact.Caption = "Edit entry"
...
  FormContact.HelpContextID = 3 'PhoneBook_EditEntry.htm
 ...
  FormContact.Show 1, Me
End Sub



Да и кодом по ID тогда все гораздо проще вызывается

Т.е. вместо helpTopic As String
Код: vbnet
1.
2.
3.
4.
5.
Public Sub menu_HelpHelp_Click()
  Dim helpTopic As String
  helpTopic = "PhoneBook_Main.htm"
  HTMLHelp 0, App.Path & "\" & "proga.chm", HH_DISPLAY_TOPIC, ByVal helpTopic
End Sub


Можно делать ByVal Me.HelpContextID
Код: vbnet
1.
2.
3.
Private Sub CommandHelp_Click()
  HTMLHelp 0, App.Path & "\" & "proga.chm", HH_HELP_CONTEXT, ByVal Me.HelpContextID
End Sub



Если Me.HelpContextID зависит от отображаемого содержимого то не надо рассматривать кейсы.

Ля-по-та...
...
Рейтинг: 0 / 0
22.07.2013, 20:06
    #38339674
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов конкретной страницы .chm Help по F1
Дмитрий77P.S Будем надеяться что я просто подкалываю в надежде побыстрее получить ответ.
Надежды не оправдались.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вызов конкретной страницы .chm Help по F1 / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]