Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Альтернативная справка


>|< ©   (2011-08-04 15:53:00) 

Хочу по нажатию F1 открывать определенный PDF-файл, который лежит в базе.
присвоил обработчик Application.OnHelp, присвоил значение Application.HelpFile
Но при нажатии на F1 получаю сообщение:
---------------------------
Приложение: WINHELP
---------------------------
Подсистеме Win 16 недостаточно ресурсов для продолжения работы. Щелкните "ОК", закройте все приложения и перезагрузите компьютер.
---------------------------
ОК  
---------------------------
Вот код:
function TfrmMain.FormHelp(Command: Word; Data: Integer;
 var CallHelp: Boolean): Boolean;
 var HelpDir:string;
 procedure OpenURL(const AURL: String);
 
 begin
 
   DMMain.odsHelpinDB.Close;
   if Application.MainForm.ActiveMDIChild<>nil then
     DMMain.odsHelpinDB.SetVariable('P_CN', Application.MainForm.ActiveMDIChild.ClassName)
   else
     DMMain.odsHelpinDB.SetVariable('P_CN', Self.ClassName);
   DMMain.odsHelpinDB.Open;
   if DMMain.odsHelpinDB.IsEmpty then
      ErrorDlg('По данной форме справка не найдена!')
   else
   begin
     HelpDir:=ExtractFilePath(Application.ExeName)+'\HELP';
     if not DirectoryExists(HelpDir) then
        CreateDir(HelpDir);
     DMMain.odsHelpinDBDOC.SaveToFile(HelpDir+'\'+Self.ClassName+'.doc');
     ShellExecute(0, nil, PAnsiCHAR(HelpDir+'\'+Self.ClassName+'.doc'), nil, nil, SW_SHOWNORMAL);
   end;
 end;

var
 DataStr: String;
begin
 // Пока установим признак успешного выполнения
 Result := True;

 case Command of
   // Открытие заголовочной страницы
   HELP_FINDER,  HELP_CONTENTS:
     OpenURL(Application.HelpFile);
   // Поиск по ключевому слову
   HELP_KEY:
     OpenURL(Application.HelpFile + '?q=' + PChar(Data));
   // Открытие темы по номеру
   HELP_CONTEXT, HELP_CONTEXTPOPUP:
     OpenURL(Application.HelpFile + '/article' + IntToStr(Data) + '.html');
   // Расширенные команды:
   HELP_COMMAND:
   begin
     DataStr := PChar(Data);

 
   end;
   // HELP_QUIT: - здесь можно закрыть окно браузера
   // ... <- тут прочие команды, если надо
 else
   // Все прочие команды обрабатывать не умеем - указываем, что завершились неудачно
   Result := False;
 end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
 Application.HelpFile := 'help.hlp';
 Application.OnHelp := FormHelp;
 
 


Кто знает, в чем может быть причина ошибки и как ее победить?


kilkennycat   (2011-08-05 17:29:00) [1]

гансмокер бредить не может


&gt;|&lt;   (2011-08-05 15:41:00) [2]


> Amoeba_   (05.08.11 15:05) [5]

FYI
http://www.gunsmoker.ru/2011/02/delphi.html#supports
Абзац "Web/Online"


Anatoly Podgoretsky   (2011-08-05 15:20:00) [3]

> Amoeba_  (05.08.2011 15:05:05)  [5]

Где же еще делать, кроме этих и ряда еще других Help свойств. Вызывать из
HelpContext и HelpJump


Amoeba_   (2011-08-05 15:05:00) [4]


> >|<   (05.08.11 14:21) [4]
>
>
> >  Application.HelpFile := 'help.hlp';
>
> это фейковое значение, чтобы сработал обработчик. А уже
> в самом обработчике открывается док и пдф
>

Не тем путем идешь. Оставь в покое
Application.HelpFile
и
Application.OnHelp

Нужно просто сделать свой обработчик для F1 и в нем открывать свои файлы.


&gt;|&lt;   (2011-08-05 14:21:00) [5]


>  Application.HelpFile := 'help.hlp';

это фейковое значение, чтобы сработал обработчик. А уже в самом обработчике открывается док и пдф


QAZ   (2011-08-05 11:16:00) [6]

а где связь между "открывать определенный PDF-файл" и HLP с DOC ?


&gt;|&lt;   (2011-08-04 19:08:00) [7]


> DiamondShark ©   (04.08.11 16:51) [1]

Добавил в этот обработчик первой строкой CallHelp := False;
Но он в него даже не заходит.
Если Application.HelpFile ничего не присваивать - никакой реакции на F1
Если присвоить любое значение - вываливается ошибка, приведенная выше.
В текст обработчика компилятор не заходит


DiamondShark   (2011-08-04 16:51:00) [8]

Set CallHelp to true if the application should still invoke the help system after the event. Set CallHelp to false to prevent the default response by the help system.


Наверх

Титульная страница Поиск, карта сайта Написать письмо