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)". Я предположил, что есть какието ссылочные линки внутри хэлпа однако... Что в этом случае делать, кто знает
|
|
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-файл.
Во второй папки только основа (извини коммерческий проект )
Суть следующая: в файле HelpContent.txt содежатся строки:
A=B, где А-имя раздела, B-номер раздела. В hpj смотри раздел [MAP].
Так вот-указываешь этот номер раздела в поле HelpContext формы. Компилишь хэлп. Еще раз повторю проверь через File->Report в HelpWorkShop создаются ли реально у тебя разделы.
Если не получится, пришли архив с исходником проги и хэлпа — rtf,cnt,hpj.
|
|
grebenyk |
Отправлено: 17.06.2005, 19:56 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 73
|
Честно признаться, я не как не могу понять , что от меня хотят. Как посмотреть создан ли раздел и что это за раздел такой. И вообще , мне нужно, чтоб все вылитало без каких-либо и на кого-либо ссылок. Отсылаю целиком все, что имею.
|
|
** 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. Она проста в обращении и с дает расширенные возможности.
Вот ссылочки:
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);
И все чих пых. Во че я хотел. |
|