Pomoc w Delphi
Adam Boduch
Często gdy piszemy program myślimy: "Fajnie by było do niego napisać pomoc, ale jak to zrobić?". No właśnie. W takim przypadku też chodzi o to, aby po naciśnięciu na odpowiedni przycisk otwierała się strona pomocy odpowiadająca temu przyciskowi. No więc jak to zrobić?
Przede wszystkim potrzebny nam będzie odpowiedni program do tworzenia plików pomocy. Polecam: "Oasis" - prosty i szybki.
Teraz gdy tworzysz pomoc potrzebujesz nadać każdej stronie odpowiedni kontekst. Tylko dla tych stron dla których chcesz wykorzystać z swoim programie. Np. tworzysz stronę z opisem funkcji "Otwórz". Możesz wówczas nadać jej numer 0. Kolejna strona będzie o jeden numer większa. W programie "Oasis" robi się to naciskając prawym przyciskiem myszy na stronie i wybierając opcję "Contect ID". Nadajesz jej następnie jakiś numer np. 0, itd., itp. Teraz musisz skompilować pomoc ( "Project" -> "Compile" ). Do katalogu z Twoim programem musisz skopiować plik pomocy ( *.hlp ) jak i również plik ze spisem treścio ( *.cnt ). Teraz musisz uruchomić Delphi - będziemy musieli trochę popisać :)
Ok, uruchomiłeś już swój progam? Teraz musisz dopisać jedną linie w procedurze "OnCreate":
Application.HelpFile := 'NazwaPlikuPomocy.hlp';
Teraz w sekcji "private" dopisz takie oto dwie linie:
HelpMode : Boolean;
procedure DoHelp(ID : Integer);
Uzupełnij procedurę "DoHelp" ( najeżdżasz kursorem na nazwę i wciskasz Shift + Ctrl + C ). Deklaracja powinna wygladać w ten sposób:
procedure TMainFrm.DoHelp(ID: Integer);
begin
Application.HelpContext(ID);
end;
Teraz musisz na formie umieścić przycisk, który będzie zmieniał wartość zmiennej "HelpMode". Oto deklaracja procedury "OnClick" przycisku:
procedure TMainFrm.Button1Click(Sender: TObject);
begin
HelpMode := not HelpMode;
if HelpMode then
Screen.Cursor := crHelp
else
Screen.Cursor := crDefault;
end;
Procedura zmienia wartość zmiennej "HelpMode" - jeżeli była "True" zmienia na "False" i odwrotnie. Jeżeli jest to wartość "True" zmienia kursor na "crHelp".
Już prawie wszystko gotowe. Teraz załóżmy, że masz jakiś przycisk, który wyświetla okno "Otwórz". Procedura taka wyglądać będzie tak:
procedure TMainFrm.FileOpenClick(Sender: TObject);
begin
//otworz okno dialogowe
OpenDialog.Execute;
end;
Procedurę taką musisz teraz zmodyfikować do takiej postaci:
procedure TMainFrm.FileOpenClick(Sender: TObject);
begin
if HelpMode then // jeżeli "HelpMode" = "True"
begin
DoHelp(0); // wczytaj odpowiednią stronę w pliku pomocy
Exit; // później nie rób nic
end;
//otworz okno dialogowe
OpenDialog.Execute;
W takim przypadku jeżeli zmienna "HelpMode" ma wartość "True" zostanie otwarty plik pomocy i wczytana zostanie strona pomocy oznaczona kontekstem 0.
Żeby to lepiej zrozumieć możesz ściągnąć sobie program "Pad", w którym taka metoda również została zastosowana.
a nie prosciej jest tak:
uses ShellApi;
...
ShellExecute(0,'open','plik_pomocy.hlp',
,
,SW_SHOWNORMAL);Ten oasis nie dziala!! :-( Jak robie compile to tworzy jakieś dziwne pliki a hlp nie ma
Brakuje tu takiej rzeczy, jak pokazanie pliku pomocy z aktywną zakładką "Zawartość", "Indeks" lub "Znajdź", a nie jedynie wybranego tematu.
LX a co to za różnica? :/
Zamiast wpisywać Application.HelpFile := 'NazwaPlikuPomocy.hlp';
Można wybrać plik hlp w Project->Options->Application
Jest na tej stronie w dziale programy, Oasis...
Spox, tylko... zamieść jakiś program do helpów!