powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция "Что это такое?" диалогового окна
8 сообщений из 8, страница 1 из 1
Функция "Что это такое?" диалогового окна
    #33758133
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно сделать самую обычную функцию "Что это такое?" диалогового окна. Сделал я файл справки, установил HelpContext компонентов. Работает НО текст показывается не во всплывающем окне (как во всех нормальных программах), а в стандартном окне WinHelp!
ВОПРОС: Как мне сделать чтобы текст выводился во всплывающем окне? Может там в самом RTF-файле справки что-то подчеркнуть или как-то выделить нужно?
Формат файла справки HLP, создавался с помощью Microsoft Help WorkShop. Работаю в C++ Builder 6. Спасибо.
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33759311
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну где же ответы люди? Что за полтергейст, три моих темы и ни одного ответа! Ведь о земных вещах спрашиваю!
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33759364
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё один интересный факт. Команда
Application->HelpCommand(HELP_CONTEXTPOPUP,102);
тоже вызывает содержание раздела 102 не во всплывающем окне, а в окне WinHelp.
Это ещё больше меня наводит на мысль, что что-то не так именно в файле справки. Подскажите, пожалуйста, что?
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33759459
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной из старых программ нашёл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
//------------------------------------------------
bool __fastcall TfrmMain::AppHelp(Word Command, int Data,
  bool &CallHelp){
if(IsDeveloper && strcmp(Cfg.FindVar("DesignHelp"),"Yes")== 0 ){
    if(Data!= 0 ){
        FrontPageCall(Data); // если вызвал разработчик, то открываем FrontPage
    } else {
        Msg(USER_ERROR,NULL, "HelpContext=0"); // моя ф-я
    }
    return true;
}

if (Command == HELP_CONTEXT || Command == HELP_CONTEXTPOPUP)  {
    // all context calls come here and get diverted to HTML Help Context call
    HtmlHelp(NULL, frmMain->m_asHelpFile.c_str(),
      HH_HELP_CONTEXT, Data);
    // VCL should not call WinHelp
    CallHelp = false;
}
return true;
}

может поможет?
Лелик2Работает НО текст показывается не во всплывающем окне (как во всех нормальных программах), а в стандартном окне WinHelp!
Так и будет.
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33760364
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muk07В одной из старых программ нашёл:
[src c++]//------------------------------------------------
bool __fastcall TfrmMain::AppHelp(Word Command, int Data,
bool &CallHelp){
if(IsDeveloper && strcmp(Cfg.FindVar("DesignHelp"),"Yes")==0){
if(Data!=0){
FrontPageCall(Data); // если вызвал разработчик, то открываем FrontPage
} else {
Msg(USER_ERROR,NULL, "HelpContext=0"); // моя ф-я
}
return true;
}

if (Command == HELP_CONTEXT || Command == HELP_CONTEXTPOPUP) {
// all context calls come here and get diverted to HTML Help Context call
HtmlHelp(NULL, frmMain->m_asHelpFile.c_str(),
HH_HELP_CONTEXT, Data);
// VCL should not call WinHelp
CallHelp = false;
}
return true;
}


Сам код не работает (куча неизвестных для моей программы идентификаторов). Ну да и фиг с ним.

muk07
Лелик2Работает НО текст показывается не во всплывающем окне (как во всех нормальных программах), а в стандартном окне WinHelp!
Так и будет.


Что значит так и будет. Вы хотите сказать что не возможно вывести текст раздела справки во всплывающем окне? Тогда у меня к вам вопрос:
- зачем тогда существует параметр HELP_CONTEXTPOPUP для функции Application->HelpCommand ?
Кроме того Архангельский и Джарод Холингвэрт в своих книгах пишут что при использовании "Что это такое" текст будет выводится именно во всплывающих окнах и что никакого дополнительного программирования это не требует, достаточно установить HelpContext компонентов в соответствующие разделы справки. Кроме того Арханельский советовал если нужно вывести текст подсказки в несколько строчек (Hint выводит всё в одну) то можно использовать всё туже функцию Application->HelpCommand с параметром HELP_CONTEXTPOPUP .
Может я вас или их неправильно понял?
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33760877
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очередной полтергейст моего общения с Билдером:

1. Добавил я на динамически создаваемое диалоговое окно (в котором нужно сделать функцию "Что это такое") компонент ApplicationEvents .
2. В его событии OnHelp написал:
bool __fastcall TOKBottomDlg::ApplicationEvents1Help(WORD Command,
int Data, bool &CallHelp)
{
Beep();/*по звуку узнаю наступало ли это событие*/
WinHelp(Handle,Application->HelpFile.c_str(),HELP_CONTEXTPOPUP,Data);
CallHelp=false;
return true;
}

3. Запускаю программу на выполнение, открываю диалоговое окно.
4. Нажал на знак вопроса затем на компонент (связанный свойством HelpContext с определённым разделом в файле помощи), появляется посказка во всплывающем окне, ещё раз жму на знак вопроса и на тот же компонент появляется всплывающее окно с текстом "С данным элементом не сопоставлен ни один раздел справки". Проделываю это ещё раз вообще ничего не происходит хотя событие OnHelp наступает (узнаю по звуку см. выше). Проделываю это ещё пять раз появляется нормальная подсказка и всё повторяется заново.
Т.е. пользователь сможет получить сведения только по элементу который он выберет первым по остальным он не догадается шесть раз кликнуть впустую что-бы на седбмой посмотреть справку!
Короче говоря WinHelp работает как-то нестабильно.
В чём дело?
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33760901
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лелик2Может я вас или их неправильно понял?
Да нет, просто я не в курсе такой возможности.
Во времена DOS на Clipper и в простом Си я делал горячую клавишу (F1)
по которой вызывалась ф-я, отыскивающая в БД текст help. Ключ для поиска для каждого экрана (сейчас формы) задавался прямо в тексте программы.
Просто, но нынче совсем не модно.
Окно всплывало.
...
Рейтинг: 0 / 0
Функция "Что это такое?" диалогового окна
    #33761024
Лёлик2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура разобрался!
Для последующих поколений:
Нужно было в событии OnHelp компонента ApplicationEvents написать следующее:
bool __fastcall TOKBottomDlg::ApplicationEvents1Help(WORD Command,
int Data, bool &CallHelp)
{
CallHelp=false;
if ((Data>=102)&& (Data<=113))WinHelp(Handle,Application->HelpFile.c_str(),HELP_CONTEXTPOPUP,Data);
return true;
}


P.S. числа 102 и 113 это "крайние" номера идентификаторов разделов в моём файле справки, текст которых я использую для отображения во всплывающем окне "Что это такое".

Тема закрыта! Спасибо всем кто пытался мне помочь!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция "Что это такое?" диалогового окна
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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