Pääteohjaustehtäviä 12 / 24-25.11
Pääteohjaustehtäviä 12 / 25-29.11	1
1.	Avustus WinHelpillä	1
2.	Avustus HTML:llä	2

1.	Avustus WinHelpillä
1.	Kirjoita avustuksen alkua omaan ohjelmaasi.  Kopioi aluksi tiedosto n:\kurssit\winohj\oop\apf\mfc\vaihtaja\help2000.dot  omaan hakemistoosi.  Käynnistä sitten Word 2000 (jos vanhempi Word, niin käytä help97.dot  tai help.dot ), avaa uusi tiedosto ja valitse malliksi (template) HELP2000 (Tools/Templates and Add-Ins../Document template/Attach ja tarkista vielä että Add automatically… on päällä).  
2.	Ennen aloittamista tarkista, että makrossa Testaa (Tools/Macro/Macros ja valitse Testaa ja Edit) rivi
WordBasic.Shell "C:\PROGRA~1\Borland\Delphi6\Help\Tools\hcw /c /m /e" + 
                 BaseName$, 1
	todella osoittaa sinne, missä hcw.exe on.  Samoin tarkista että tiedostojen sijaintipolku on oikein (Tools/Options/File locations/Documents, tässä tulee joko olla . tai se hakemisto, jossa työskentelet).
3.	Kirjoita avustustiedosto .rtf-nimellä (mieluiten tietysti omaan työhösi liittyen) ja testaa sitä.  (jostain syystä pitää kerran avata ja sulkea .err-tiedosto käsin).
Käyttö:
 0) Tee heti ensimmäiseksi File saveAs oikeaan hakemistoon ja .doc-päättellä
 1) Vaihda näyttömuodoksi normaali (View/Normal).
 2) Jaa avustuksesi "sivuihin".  Kukin sivu erotetaan Sivunvaihdolla (Ctrl-Enter)
 3) Kunkin sivun 1. rivi kannattaa merkitä otsikoksi Heading1 tai Heading2-      
    tyylillä.  Älä käytä tyhjiä rivejä! (Ctrl-1, Ctrl-2)
 4) Mene yhden kerran kunkin sivun 1.riville ja paina nappulaa "NimiJaOsoite"
    (Ctrl-Shift-N). Tämä makro tekee tarvittavat hyppypaikat ja otsikot sivulle.
 5) Jos haluat hypätä johonkin kohti, mene Footnotes-ikkunassa hyppypaikkaa 
    vastaavalle #-riville ja paina OtaHyppy (Ctrl-Shift-O).
 6) Siirry sille tekstissä siihen paikkaan, josta haluat hypätä tähän kohti,
    maalaa se sana,jonka haluat linkiksi.  Paina 2alleviivaus (Ctrl-Shift-A).
    Siirry sanan loppuun ja paina LisaaHyppy (Ctrl-Shift-L)
 7) Kun haluamasi hypyt on merkitty, paina Testaa (Ctrl-Shift-T).
 8) Korjaile ja testaa uudelleen.
 9) Lisäile myös avainsanoja: mene sanan kohdalle ja paina KeyWord 
    (Ctrl-Shiftf-K)
10) Anna myös lukemisjärjestys: Mene kunkin sivun alkuun ja paina JarjNro 
   (Ctrl-Shift-J) ja sitten Footnotes ikkunaan syntyvän + -merkin kohdalla
    kirjoita juokseva tunnus, esim. 00, 01 jne...
4.	Delphissä avustuksen saa auki esimerkiksi suorittamalla komennon
Application.HelpJump('Elaimet'); // Haluttu #-tunnistemerkkijono .hlp-tiedostosta
	Ensin pitää kuitenkin olla esim. .dpr-tiedoston alussa sijoitus:
Application.HelpFile := 'elukat.hlp';
	Voi myös kirjoittaa .hpj-tiedoston [MAP]-osaan:
[Map]
#define kissa 100
#define koira 101
	ja sitten laittamalla halutun Delphi-komponentin HelpContext-kohtaan noita vastaavia numeroita.  Ja avustustiedostossa täytyy tietysti olla sitten nuo mainitut tunnistemerkkijonot (niitä #:lla Footnotes-ikkunassa merkittyjä).
	On myös mahdollista vaihtaa komponentin ominaisuus HelpType muotoon: htKeyword.  Tällöin ominaisuuteen HelpKeyWord voi kirjoittaa alaviitteellä K-merkittyjä sanoja.  Koodista voi myös suoraan hypätä avainsanaan kutsulla
Application.HelpKeyWord('Kissa'); // Haluttu K-alaviite .hlp-tiedostosta
	Huom!  KeyWord-käytössä helpin pitää olla auki, jotta hypyt toimivat?

2.	Avustus HTML:llä
1.	Kirjoita erittäin minimaalinen HTML–tiedosto (yhden valmiin saat esim: n:\kurssit\winohj\help\html\Elaimet.html)
2.	Tee Delphillä erittäin minimaalinen WWW–selain, jossa on vain yksi HTML–komponentti (TWebBrowser), Edit–ikkuna ja nappula Hae.
3.	HTML–komponenttiin voit hakea dokumentin komennolla
WebBrowser.Navigate(EditURL.Text);
4.	Edit–ikkunaan pitää kirjoittaa www-linkki tai tiedoston koko polku (?).  Jos halutaan välttää absoluuttisia polkuja – kuten aina pitäisi - ja kuitenkin hakea tiedostoa samasta hakemistosta kuin missä ohjelma on, voidaan nimi selvittää seuraavasti (esim. FormCreatessa)
EditUrl.Text := ExtractFilePath(ParamStr(0)) + 'Elaimet.html'
	Vastaavasti nykyhakemisto asetettaisiin polun eteen (nykyhakemisto voi olla eri kuin se, mistä ohjelma on käynnistetty):
GetDir(0,dir); // dir:string jossakin
EditUrl.Text := dir + '\' + 'Elaimet.html';// GetDir ei laita loppuun \-merkkiä!
5.	Jos F1 nappula halutaan toimimaan ja tähän vielä sisältöpohjainen avustus, niin silloin voidaan kirjoittaa lomakkeen OnHelp-tapahtumaan esimerkiksi koodi:
function TForm1.FormHelp(Command: Word; Data: Integer;
  var CallHelp: Boolean): Boolean;
var ctl : TControl; fn:string;
begin
 //
  ctl := ActiveControl;
  fn := ExtractFilePath(ParamStr(0)) + '..\html\elaimet.html';
  WebBrowser1.Navigate(fn+'#'+ctl.HelpKeyword);
  CallHelp := false;
  Result := true;
end;
	Lomakkeen BorderIcons-ominaisuudesta tulee biHelp laittaa todeksi.  Sitten nappuloihin yms. kontrolleihin laitetaan HelpKeyword halutuksi <a name=”???”></a> tagilla merkittyyn hyppypaikkaan.  Jotta F1 toimisi, pitää vielä valita ainakin lomakkeella HelpContext-kohtaan jokin nollasta poikkeava arvo.