C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
работа с help, Раздел не существует...(129)
grebenyk
Отправлено: 16.06.2005, 15:12


Дежурный стрелочник

Группа: Участник
Сообщений: 73



Доброго времени суток. Излагаю ситуацию. Сделал helpfile на Help WorkShop. Все зашибись. Подставил его в свойство HelpFile формы. При нажатии ф1 не запускается. Тогда я сделал следующее.
void __fastcall TForm1::FormShortCut(TWMKey &Msg, bool &Handled)
{
if(Msg.CharCode==VK_F1)
{ Application->HelpFile = "112.hlp";
Application->HelpJump("TApplication_HelpJump");


}
}
И все зароботало. Но стала возникать ошибка"Раздел не существует. Обратитесь к поставшику продукта за обновленной версией файла справки(129)". Я предположил, что есть какието ссылочные линки внутри хэлпа однако... Что в этом случае делать, кто знает

User Attached Image Скачать файл
2005_06_16.ZIP


Schumi
Отправлено: 16.06.2005, 17:42


Машинист паровоза

Группа: Участник
Сообщений: 206



QUOTE
Application->HelpFile = "112.hlp"

Не самый лучший вариант — лучше указывай полный путь. А то побалуешься пару раз с OpenDialog, и может уже не открываться.
QUOTE
Раздел не существует. Обратитесь к поставшику продукта за обновленной версией файла справки(129)

Нужно проверить, а вообще создан такой раздел в хэлпе: в WordkShop: File->Report.
Попробуй так:
CODE

ShellExecute(BaseForm->Handle,"open",HelpFileName.c_str(),NULL,
DirName.c_str(),SW_SHOWNORMAL);
grebenyk
Отправлено: 16.06.2005, 18:28


Дежурный стрелочник

Группа: Участник
Сообщений: 73



По нулям, так не пашет. Предыдущая версия хоть хэлп показывала. А эта ..

Отредактировано grebenyk — 16/06/2005, 18:36
Schumi
Отправлено: 16.06.2005, 20:46


Машинист паровоза

Группа: Участник
Сообщений: 206



Скачал я твой прикпрепленный файл. Плохо, что информативность минимальная. В следующий раз присылай одни исходники.
Следующие моменты мне не ясны.
Во-первых, нет файла содержания: *.cnt. Если даже запустить просто hlp-файл, то кроме раздела "Ручное считывание" ни чего не увидешь.
Пример с командой ShellExecute потому и может не проходить.
Во-вторых, при нажатии F1 сперва происходит попытка обратиться к разделу, номер которого определен в поле HelpContext активного в данный момент контрола (един, кнопочка и т.д.), ЕСЛИ ТОЛЬКО ТАМ НЕ ЗАДАНО ЧИСЛО 0.
Как понял ты хочешь сделать, чтобы для каждой формы по нажатию F1 появлялся соответствующий раздел.
Блин..., так сразу и не объяснишь. Поэтому, в прикпрепленном файле см. — 2 папки: one и two.
В первой полностью рабочий пример. Посмотри внимательно. Главное — rtf-файл, а точнее сноски в заголовке. Также и cnt-файл.
Во второй папки только основа (извини коммерческий проект cool.gif )
Суть следующая: в файле HelpContent.txt содежатся строки:
A=B, где А-имя раздела, B-номер раздела. В hpj смотри раздел [MAP].
Так вот-указываешь этот номер раздела в поле HelpContext формы. Компилишь хэлп. Еще раз повторю проверь через File->Report в HelpWorkShop создаются ли реально у тебя разделы.
Если не получится, пришли архив с исходником проги и хэлпа — rtf,cnt,hpj.


User Attached Image Скачать файл
Help_Examples.zip


grebenyk
Отправлено: 17.06.2005, 19:56


Дежурный стрелочник

Группа: Участник
Сообщений: 73



Честно признаться, я не как не могу понять , что от меня хотят. Как посмотреть создан ли раздел и что это за раздел такой. И вообще , мне нужно, чтоб все вылитало без каких-либо и на кого-либо ссылок. Отсылаю целиком все, что имею.

User Attached Image Скачать файл
2005_06_16.ZIP


** Harold
Отправлено: 17.06.2005, 21:09


Не зарегистрирован







CODE

void __fastcall TForm1::menuHowItWorksClick(TObject *Sender)
{
String sPath = Form1->ExeCatalog +"HLP\\";
ShellExecute(Form1->Handle, "open", "MyHelpFile.chm", NULL, sPath.c_str(), SW_SHOWNORMAL);
}


Уже предложили же, чем так-то плохо? Нормально себе работает....
grebenyk
Отправлено: 18.06.2005, 03:43


Дежурный стрелочник

Группа: Участник
Сообщений: 73



Я пробовал и так не каких эмоций(у меня есть хэлп и в виде *.chm)

AnsiString b,a="c:\Alexey\2005_06_16\";
b="112.chm";
ShellExecute(Handle,"open",b.c_str(),NULL,a.c_str(),SW_SHOWNORMAL);
Alisa
Отправлено: 18.06.2005, 05:47


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Знаешь, есть такая замечательная программка, которая создает все нужные файлы helpа и нормально работает. Называется Help&Manual. Она проста в обращении и с дает расширенные возможности. cool.gif

Вот ссылочки:
Help&Manual — это сама прога.
Forum — а это обсуждение вопросов по help.
forum1 — это тоже обсуждение Help.
** Harold
Отправлено: 18.06.2005, 21:20


Не зарегистрирован








CODE

String sPath = Form1->ExeCatalog +"HLP\\";
ShellExecute(Form1->Handle, "open", "MyHelpFile.chm", NULL, sPath.c_str(), SW_SHOWNORMAL);

Я тебе кусок прямо из рабочего проекта взял — у меня работает.

*.chm изготовлен именно с помощью Help&Manual — респект Гедеону.
Удачи.
grebenyk
Отправлено: 20.06.2005, 18:58


Дежурный стрелочник

Группа: Участник
Сообщений: 73



Большое всем спасибо, нашел я то, что искал а те:
AnsiString aa=ExtractFileDir(Application->ExeName)+"\\Help.hlp";
HelpFile=aa;
Application->HelpFile =aa;
Application->HelpCommand(HELP_CONTENTS, 0);
И все чих пых. Во че я хотел.

Вернуться в Вопросы программирования в C++Builder