Dołączanie pliku pomocy .chm do programu

0

W Delphi 7.0 można dołączać do aplikacji pliki pomocy z rozszerzeniem .hlp, podając ścieżkę do pliku w opcjach projektu lub w kodzie (Application.HelpFile := 'NazwaPlikuPomocy.hlp';).

Jeśli w pliku pomocy dla różnych stron pomocy mamy ustawione wartości HelpContext i w programie w danych miejscach wprowadzimy te same wartości, to po naciśnięciu F1 otworzy się plik pomocy na danej stronie. Wszystko pięknie.

Natomiast ja mam dwa pytania:
1. Jak dołączyć do programu pomoc w nowym formacie .chm? Chodzi oczywiście o możliwość używania HelpContext.
Delphi zgłasza błąd, że to nie jest plik pomocy, bo zna tylko .hlp. Może trzeba jakoś ręcznie przechwycić wykonywanie wywołania pomocy i zrobić własną procedurę, ale jak...

2. Od której wersji Delphi obsługuje pliki .chm automatycznie tak jak .hlp?

0
  1. Przeczytaj ten artykuł.

  2. "Samo z siebie" - od żadnej. :D

0

Przeczytałem artykuł.

Zrobiłem krok po kroku to, co kazali i udało mi się w końcu uruchomić stronę domyślną mojego pliku .chm. Niestety nie wiem z tego artykułu jak otwierać za pomocą F1 zadaną stronę z pliku pomocy. Otworzyć domyślną stronę to każdy głupi potrafi bez tego arta.

Poza tym nie działa mi

procedure TForm1.Button1Click(Sender: TObject);
begin
HH(0, 0, dummy); //moje delphi nie wie co to dummy i wyskakuje błąd.
end;

Gdzie

function TForm1.HH(Command: Word; Data: Integer;var CallHelp: Boolean): Boolean;
begin
if (Command = 0) and (Data = 0) then
HtmlHelp(Application.Handle,PChar (Application.HelpFile),HH_DISPLAY_TOC, 0);

CallHelp := False;
end;

Po naciśnięciu przycisku F1, jak zwykle wyskakuje błąd, że chm to nie jest plik pomocy.

Proszę o przedstawienie mi działającego kodu, który pozwoli otworzyć konkretną strone pomocy.

0

Ustawiłeś HH jako Application.OnHelp? I nie wywołuj bezpośrednio HH a funkcje wbudowane w Delphi, które powinno się wykorzystywać do obsługi pomocy.

0

Wszystko robiłem zgodnie z tym artykułem i nie działa, bo ten artykuł nie mówił całej prawdy.

Widać także Ty nigdy nie dolączałeś plików chm z wyborem dowolnej strony, bo byś wiedział w czym tkwił błąd.

Na szczęście dołączanie plików chm teraz jest już dla mnie pestką i wiem wszystko. Głównie dzięki koledze, który zaangażował się w rozwiązanie problemu.

0

Ja używam plików chm w swoich aplikacjach i nie mam żadnych problemów. :P

Ale co tam... :D

Poza tym - istnieje sporo komponentów do automatycznej obsługi plików chm. :D

0

Może i używasz chm, ale nie do wywoływania dowolnej strony pliku pomocy. Bo tego nie da się zrobić na podstawie artykułu, który pokazałeś. Nie da się, bo Delphi 7 ma błąd, tak samo jak C++ 6 i przechwytywanie żądania pomocy nie działa. Trzeba dodać coś dodatkowego. Idąc w ślad za artykułem, który przytoczyłeś wywoływanie dowolnej strony nie ma prawa działać i nie działa. A skoro mi nie wspomniałeś, że jest taki błąd i trzeba coś dodać to znaczy, że się na tym nie znasz. Śmiejesz się natomiast jakbyś był nie wiadomo kim. Sobie sprawdź.

0

MS - moze podaj kawalek kodu odpowiedzialny za to wyswietlanie - moze sie komus przydac (np. mi kiedys ;))

0

Ten artykuł to tylko podstawy. Poza tym - ciężko w necie o dobry opis obsługi HTML help (w Delphi). Ja osobiście wybrałem ten komponent. Może to i najmniejsza linia oporu, ale efekt b. zadowalający i możliwości ogromne. :)

[EDIT]
Co dodatkowego? Z tego co pamiętam, można przechwycić OnHelpa bez problemu w Delphi 7... Ale jest szansa, że się mylę, nie używałem dość długo 7.

Ps.
Aha... Nie wiadomo kim, nie jestem... Jeszcze mi spooooro brakuje. :D

0

No to moze ktos wie jak przechwycic helpa i pobrac informacio o kontekscie. Chcialbym zamiast standardowych plik pomocy odwolywac sie bezposrednio do stron www.

0

Oprogramuj zdarzenie Application.OnHelp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1