Delphi - Internetes naptár készítése Delphi-vel

Naptár 4. rész

forráskód letöltése
Ezen a héten elkészítjük azt a funkciót, melynek segítségével egy tetszőleges, a felhasználó által megadott dátumra ugorhat a felhasználó. A mellékelt példa kipróbálása előtt az alábbi teendők szükségesek:
  • A sorozat első részében mellékelt adatbázisok alkönyvtárára létre kell hozni egy BDE alias-t, ASWEBCALENDAR névvel.
  • A Main.pas-ban található HTMDIR konstansnál adja meg azt az elérési útvonalat, ahová a mellékelt példa HTM alkönyvtárát helyezte.
  • Ezek után fordítsa le a programot (Project - Build).
  • A létrejött EXE-t másolja át web szerverének azon könyvtárába, ahonnan van joga futtatni internetes alkalmazásokat (Pl.: C:\InetPub\Scripts\)
  • Indítson el egy böngészőt és írja be a következő címet: http://szervernev/scripts/webcalendar04.exe, persze a szervernev mindenkinél más és más lehet.


A múlt héten már előkészítettük az új funkció bevezetését, így most már csak a felhasználói felületet kell kialakítanunk.

A dátumra való ugrásra a programunk paraméterezett meghívásával van lehetőségünk, ahogy ezt a múltkor már részleteztük is. Így három paraméter áll rendelkezésünkre, hogy a megjelenő naptár dátumát befolyásoljuk. Ezek a year, month és day.

Tehát a http://server/scripts/webcalendar04.exe?year=2000&month= 9&day=4 hívásával 2000. szeptember 4-re ugrunk.

Ahhoz, hogy a felhasználó a web lapon keresztül is megadhasson egy dátumot, szükségessé válik a mellékelt main.htm kiegészítése. Létre kell hoznunk egy HTML Form-ot, melyen keresztül az év, hó és nap megadható.
<form action="/scripts/webcalendar04.exe" method=get>
<div style="padding: 20">
<table border=0 class=hn cellspacing=4 cellpadding=0>
<tr><td colspan=2 class=f8b style="text-align: center"
       >Ugrás dátumra</td></tr>
<tr><td class=f8b>Év:</td><td><
     input type=text size=8 maxlength=4 name=year 
     value=<#actyear>></td></tr>
<tr><td class=f8b>Hónap:</td><td><
     input type=text size=8 maxlength=2 name=month 
     value=<#actmonth>></td></tr>
<tr><td class=f8b>Nap:</td><td><
     input type=text size=8 maxlength=2 name=day 
     value=<#actday>></td></tr>
<tr><td colspan=2 style="text-align: center"><
     input style="width: 60" type=submit 
     value=Ok></td></tr>
<tr><td colspan=2 style="text-align: center"   
    ><a href="/scripts/webcalendar04.exe?<#nowdate
    >">Mai dátum</a></td></tr>
</table>
</div>
</form>
Mivel a HTML Form egyes mezőinek a nevét a program által már kezelt year, month és day névre választjuk, így a HTML kód elkészítésével már használható az alkalmazásunk, úgy hogy a programon nem is kell változtatnunk.

Létrehozunk még egy linket, melynek segítségével az aktuális napra lehet ugrani. <a href="/scripts/webcalendar04.exe?<#nowdate>">Mai dátum</a> Itt egy nowdate címkét helyezünk el, melyet a programunk kicserél az aktuális dátumra.

Ehhez persze már szükséges a program módosítás is. A PageProducer1 OnHTMLTag eseményénél kezelnünk kell a nowdate címkét.
…
if TagString='nowdate' then begin
   DecodeDate(Now, year, month, day);                
   ReplaceText:='year='+IntToStr(year)+'&month='+
        IntToStr(month)+'&day='+IntToStr(day);
end;
…
Így mire a felhasználónál megjelenik a web lap, ott már a következő link szerepel feltéve, hogy 2000. szeptember 4-e van:
<a href="/scripts/webcalendar04.exe?year=2000&month=9&day=4">Mai dátum</a>.

Ezek után erre a linkre kattintva a program az aktuális napot fogja mutatni a naptárban.

Naptár cikksorozat