HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

TWebTableGenerator komponens


Internet áruház 4. rész

Példaprogram letöltése

24202 bájt

Internet áruházunk mostani cikkében egy olyan komponenst készítünk, melynek segítségével néhány kattintással létrehozhatunk egy tetszőleges táblázatot egy-egy weblapra.

A komponens által szolgáltatott adatokat összekapcsolva a múlt héten létrehozott komponens adataival, könnyedén előállíthatunk egy web oldalon megjelenő adatbeviteli lapot táblázatos formában.

A mellékelt példaprogram megnyitása előtt a WebTableGenerator.pas-ban lévő komponenst telepítenie kell a Delphi alá. Szükség lesz még a múlt heti cikkben közölt WebFormGenerator.pas-ban lévő komponensre is. Ha múlt hét óta esetleg levette ezt a komponenst, akkor kérjük telepítse ismét.

Továbbá kérjük, hozza létre az ASWEBSHOP04 alias-t. Ez mutasson a mellékelt példaprogram Data könyvtárára, az adatbázis elérés végett.
A lefordított WS04.EXE-t helyezze a web szerver scripts könyvtárába, ahonnan az futtatható.
A HTM könyvtárban lévő Index.htm állományt pedig helyezze el a web szerveren úgy, hogy az egy böngészőn keresztül elérhető legyen. Például: C:\Inetpub\wwwroot\webshop. Ekkor a böngészőbe a www.animare.hu/webshop/ cím beírásakor meg kell hogy jelenjen az iménti web lap. Persze a web szerver neve mindenkinél más és más lesz.

A jelenlegi cikk elolvasása előtt javasoljuk a sorozat előző részeinek megismerését, mivel a mostani ismeretek csupán kiegészítői az előzőeknek, így azok ismerete nélkül e konkrét cikk tartalma sem érthető meg teljes egészében.


A múlt héten létrehoztunk egy olyan komponenst, mely képes volt a HTML-ben használt <form> kódolására, mellyel adatbeviteli lapokat készíthettünk. A mostani komponensünk egy HTML nyelv <table> parancsát valósítja meg. Ezt felhasználva egyszerűen készíthetünk tetszőleges táblázatokat.

Mostani cikkünkben össze is kapcsoljuk e két komponenst és segítségükkel néhány kattintással létrehozunk egy olyan web lapot, melyben táblázatos formában megjelenik egy adatbeviteli lap. Ennek segítségével hozunk létre új rekordot a már meglévő Product.dbf táblánkhoz.

Ahhoz hogy a dinamikus web lap generáláshoz már csak arra a néhány kattintásra legyen szükségünk, először is el kell készítenünk az új komponenst, mellyel létrehozhatjuk egyedi HTML táblázatainkat.

Bár a cikk végére a komponens már teljes mértékben használható lesz, ennek ellenére még lesznek hiányosságai, melyeket a cikksorozat következő fejezeteiben még megoldunk.

A táblázat sorokból és oszlopokból áll. Ehhez létrehozunk egy olyan property-t, melyen keresztül az egyes sorokat, illetve egy olyant, melyen keresztül az egyes oszlopokat érhetjük el.

A sorokhoz a Rows nevű TWebTableRowItems típusú property-t hozzuk létre, míg az oszlopokhoz a Cols nevű TWebTableColItems típusú property-t.

Mindkét típus a TCollection osztályból származik.

A komponens további property-einek neve és funkciója is megegyezik a HTML-ből ismert <table> parancs paramétereivel. Ugyanez igaz a Rows és Cols egyes elemeinek property-eire is, persze a soroknál a <tr> parancs paramétereit állíthatjuk be, míg az oszlopoknál a <td> parancsét.

Nézzük át gyorsan, hogy ezek a paraméterek pontosan mit is takarnak.

A TWebTableGenerator property-ei:
  • Align - a táblázat igazítását írja elő vízszintesen a web lapon
  • VAlign - a táblázat igazítását írja elő függőlegesen a web lapon
  • BGColor - a táblázat háttérszíne
  • Border - a táblázat keretének vastagsága
  • CellPadding - a cellákon belüli margó mértéke
  • CellSpacing - a cellák közötti távolság mértéke
  • Custom - egyedileg megadható paraméter
  • Height - a táblázat magassága pixelben ha számot írunk, és százalékban ha százalék jelet is használjuk
  • Width - a táblázat szélessége pixelben ha számot írunk és százalékban ha százalék jelet is használjuk
  • Title - az itt megadott sztring jelenik meg, amikor az egérrel a táblázatra mutatunk (Hint)
A sorok (Rows) property-ei:
  • Align - az adott soron belül az összes cella tartalma az itt megadott irányba lesz igazítva vízszintesen
  • VAlign - az adott soron belül az összes cella tartalma az itt megadott irányba lesz igazítva függőlegesen
  • BGColor - az adott soron belül az összes cella háttérszíne
  • Custom - egyedileg megadható paraméter
  • Title - az itt megadott sztring jelenik meg, amikor az egérrel az adott sor celláira mutatunk (Hint)
Az oszlopok (Cols) property-ei:
  • Align - az adott oszlopon belül az összes cella tartalma az itt megadott irányba lesz igazítva vízszintesen
  • VAlign - az adott oszlopon belül az összes cella tartalma az itt megadott irányba lesz igazítva függőlegesen
  • BGColor - az adott oszlopon belül az összes cella háttérszíne
  • Custom - egyedileg megadható paraméter
  • Title - az itt megadott sztring jelenik meg, amikor az egérrel az adott oszlop celláira mutatunk (Hint)
  • ColSpan - cellák összevonása az oszlopban
  • RowSpan - cellák összevonása a sorban
  • Width - az oszlop celláinak szélessége
  • Height - az oszlop celláinak magassága
  • NoWrap - az adott oszlop celláinak szövege nem jelenhet meg megtörve
A táblázat HTML kódjának lekérdezéséhez létrehoztunk a komponenshez egy Content nevű függvényt, mely sztringként adja vissza a szükséges kódot.

A Content függvény működési elve a következő: kezdődik a <table> parancs összeállításával. Minden paraméterhez egy-egy függvény kerül meghívásra, melyek neve: GetxxxProperty. Ezek után két egymásba ágyazott ciklust kezdünk, melyek végigmennek a Rows-ban megadott sorokon illetve a Cols-ban megadott oszlopokon, így a táblázat minden egyes cellája külön-külön előáll.

A Rows-ban és a Cols-ban is találunk egy Content függvényt, mely nem tesz mást, mint az adott objektum paramétereit szedi össze és adja vissza sztringként. Ezeket a paramétereket is az adott property-k értéke alapján állítja össze a függvény.

A kettős ciklusnál még néhány eseményt is meghívunk az egyes műveletek előtt (OnBeforexxx) és után (OnAfterxxx), valamint van egy olyan eseményünk is, melyen keresztül értékkel tölthetjük fel a táblázat egyes celláit. Ez az esemény lesz az OnCellData.

Itt első paraméterként a komponensre utaló referenciát kapunk. A következő két szám mondja meg, hogy melyik sorban és melyik oszlopban vagyunk éppen. A végső Data nevű változóban pedig azt a sztringet kell megadnunk, amit az adott cellában szeretnénk viszontlátni.



Nézzük a komponens felhasználását.

Amikor a megjelenő kezdeti web lapon az Új termék linkre kattintunk, akkor meghívásra kerül a programunk a NewProduct paraméterrel. Ekkor a kérést a PageProducer1-ben tárolt web lappal szolgáljuk ki:
procedure TWebModule1.WebModule1WebActionItem1Action(
  Sender: TObject; Request: TWebRequest; Response: 
  TWebResponse; var Handled: Boolean);
begin
  Response.Content:=PageProducer1.Content;
end;
Ebben a web lapban azonban elhelyeztünk egy címkét TABLE névvel. Amikor a PageProducer1 komponens ehhez ér, akkor jön létre az OnHTMLTag eseménye.

Ez lesz az a pillanat, amikor a saját komponenseinkkel létre kell hoznunk az adatbeviteli lap HTML kódját.
procedure TWebModule1.PageProducer1HTMLTag(Sender: 
  TObject; Tag: TTag;const TagString: String; 
  TagParams: TStrings; var ReplaceText: String);
begin
  if TagString='table' then begin
    ReplaceText:=WebFormGenerator1.Content(feStart);
    ReplaceText:=ReplaceText+WebTableGenerator1.
       Content;
    ReplaceText:=ReplaceText+WebFormGenerator1.
       Content(feEnd);
  end;
end;
Első lépésként a WebFormGenerator1 komponens segítségével elkészítjük a <form> parancs kezdő sorát.
Ezek után jön a táblázat készítése a WebTableGenerator1.Content; hívásával.
Végül a <form> parancsot lezáró sor következik a WebFormGenerator1 komponens által.

Amikor a táblázatot készítjük, akkor jön létre a WebTableGenerator1 komponens OnCellData eseménye minden egyes cella esetén.

Ekkor kell értéket adnunk a celláknak.

Az eseménynél kettéágaztatjuk a végrehajtást attól függően, hogy az első vagy a második oszlopról van-e szó. Az első oszlopba az adatbázis mezők nevei, míg a másodikba az adatbeviteli mezők kerülnek.

Az első oszlop esetén lekérdezzük a WebFormGenerator1 komponenstől, hogy az adott sorban melyik adatbázis mezőt kell megjeleníteni. Ezek után a TTable komponenstől megtudakoljuk az adott mező DisplayLabel értékét, és ezt írjuk a táblázat cellájába.

A második oszlop esetén a WebFormGenerator1 komponenstől lekérjük az adott sorhoz tartozó adatbeviteli eszköz HTML kódját, és ezt tesszük a cellába.
procedure TWebModule1.WebTableGenerator1CellData(
   Sender: TObject; row, col: Integer; var data: String);
var
  f: TField;
begin
  case col of
    0: begin
      f:=tProduct.FindField(WebFormGenerator1.FormItems
        [row].DataField);
      if Assigned(f) then begin
        data:=f.DisplayLabel+':';
      end;
    end;
    1: begin
      data:=WebFormGenerator1.Content(feItem, row);
    end;
  end;
end;
Amint látható, minimális gépeléssel és néhány property beállításával létrehoztunk egy olyan web lapot, melyen keresztül felvehetünk egy új rekordot az adatbázisunkba az Interneten keresztül.

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2000 évkönyv 208. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |