Pääteohjaustehtäviä 10 / 12.-13.11
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ä
6.
Tee Delphillä erittäin minimaalinen WWW- selain, jossa on vain yksi
HTML- komponentti (
TWebBrowser),
Edit- ikkuna ja nappula Hae.
7.
HTML- komponenttiin voit hakea dokumentin komennolla
WebBrowser.Navigate(EditURL.Text);
8.
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ä!
9.
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.