
A mellékelt példaprogram megnyitása előtt a DBStructToWord.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponenst a TComponent osztályból származtatjuk. Ahhoz, hogy egy adatbázis táblát egyértelműen azonosítani tudjunk, szükség lesz az adatbázis és a tábla nevére. Az adatbázis nevét a DatabaseName, a tábla nevét pedig a TableName property-ben adhatjuk meg. Az adatbázis nevét nem szükséges megadni, de ekkor a tábla nevét a teljes elérési útvonallal együtt kell megadni.
A Visible property-vel állíthatjuk, hogy a művelet közben látjuk-e a dokumentum készítését, vagy minden a háttérben történik. Ha a Visible property értéke hamis, akkor a Word nem jelenik meg, és a dokumentum elkészülte után be is záródik. Ha a property értéke igaz, akkor a Word megjelenik, látni fogjuk a dokumentumot, és ez a művelet végén nem lesz bezárva.
A FileName property-ben megadhatjuk az elkészült dokumentum fájlnevét. Ha megadjuk, akkor a komponens elmenti a dokumentumot ebbe a fájlba, ellenkező esetben nem. A fájl nevét kiterjesztés nélkül ajánlott megadni.
A művelet az Execute metódus meghívásával indul. Ebben létrehozunk egy TTable típusú objektumot (Table), majd átadjuk a megfelelő property-knek a DatabaseName és TableName property-k értékét. Ezután meghívjuk a Table FieldDefs és IndexDefs objektumának Update metódusát, melyekkel a mezők és indexek adatait töltjük be.
Ezután kapcsolódunk a Word alkalmazáshoz, és ha ez sikerült, akkor létrehozunk egy új dokumentumot. Ezután beállítjuk az új dokumentum margóinak méretét 1,5 cm-re. A margók méreteit a Document objektum (WordDoc) PageSetup objektumában tudjuk beállítani. Az értékeket pontban kell megadni, ezért az 1,5 cm-t át kell számítani pontba. Ehhez az értéket meg kell szorozni 28,35-tel.
var
margin: single;
...
margin:=1.5*28.35;
WordDoc.PageSetup.LeftMargin:=margin;
WordDoc.PageSetup.TopMargin:=margin;
WordDoc.PageSetup.RightMargin:=margin;
WordDoc.PageSetup.BottomMargin:=margin;
Ha ez megvan, akkor beállítjuk a stílust „Címsor 1”-re, és beírjuk az adatbázis és a tábla nevét. A „Címsor 1” stílust a wdStyleHeading1 konstanssal állíthatjuk be:
WordDoc.Range.Style:=wdStyleHeading1;
WordDoc.Range.Text:=FDatabaseName+' / '+FTableName;
Ezután létrehozunk egy új bekezdést, amelybe beírjuk az STR_FIELDDEFS konstans értékét, és a stílusát beállítjuk „Címsor 2”-re. A feliratokat konstansokban helyeztük el, hogy programból egyszerűen lehessen módosítani őket, amennyiben ez szükséges.
A felirat alá beszúrunk egy táblázatot, amelynek 5 oszlopa lesz, és a tábla mezőnek számánál egyel több sora. Az öt oszlopban a következő adatokat fogjuk megjeleníteni: mező neve, típusa, hossza, a törtszámok tizedes jegyeinek száma, a mezőt kötelezően ki kell-e tölteni (Required tulajdonság). Ezeket az adatokat a Table objektum FieldDefs property-jéből tudhatjuk meg. A FieldDefs property tartalmazza a tábla mezőinek TFieldDef típusú objektumait. A TFieldDef osztály Name property-je a mező nevét, a Size a mező méretét (pl. sztring típus esetén a sztring maximális hosszát), a Precision a törtszámok tizedes jegyeinek számát (nem minden esetben), a Required pedig megadja, hogy a mezőt kötelezően ki kell-e tölteni, vagyis lehet-e NULL értéke. Ha ez utóbbi property értéke igaz, akkor a mező nem tartalmazhat NULL értéket. A mező típusát a DataType property-ből tudhatjuk meg.
Egy ciklusban beolvassuk a mezők adatait, és beírjuk azokat a táblázat megfelelő celláiba.
A következő feladat az indexek adatainak megjelenítése. Az nem biztos, hogy tartozik a táblához index, ezért ellenőrizzük az IndexDefs objektum Count property-jének értékét. Ez tartalmazza a táblához tartozó indexek számát, beleértve az elsődleges kulcs indexet is. AZ indexek adatait egy-egy táblázatban fogjuk megjeleníteni, egymás alatt. A táblázat fölé az index nevét helyezzük, kivéve az elsődleges kulcs indexet, mivel ennek nincs neve (STR_PRIMARYKEY). Az IndexDefs property az egy-egy indexhez tartozó TIndexDefs típusú objektumokat tartalmazza, amelyekből kiolvashatjuk az adott indexhez tartozó adatokat. A Name property-ből tudhatjuk meg az index nevét, a Fields-ből pedig az indexben szereplő mezők neveit. A CaseInsFields property tartalmazza azoknak a mezőknek a neveit, amelyek a rendezéskor érzékenyek a kis- és nagybetűkre. Ez a property nem feltétlenül tartalmaz adatot, csak néhány speciális esetben, például amikor az index tartalmaz olyan mezőket is, amelyek megkülönböztetik a kis- és nagybetűket, és olyanokat is, amelyek nem. A DescFields azokat a mezőket tartalmazza, amelyek szerint csökkenő sorrendben kell rendezni az adatokat. Az Expression dBase táblák esetén az index kifejezést tartalmazzák, ha az index nem egyszerű mezőkből áll. dBase esetén az index fájl neve. Az Options property különböző kapcsolókat tartalmaz, amelyek az index egyes tulajdonságát határozzák meg (pl. egyedi index, elsődleges kulcs, kifejezés, stb.).
Mivel nem biztos, hogy minden property tartalmaz adatot, ezért ezt figyeljük, és csak az érvényes adatokat tartalmazó property-ket szúrjuk be a dokumentumba. Ehhez egy belső eljárást is készítünk (AddIndexProperty), ami beszúrja a táblázatba az adott sort, és a property adatait olvashatóbb formába alakítja (pl. a mezőket elválasztó karaktereket új sor karakterekre cseréli).
Ha elkészült a dokumentum, akkor ellenőrizzük, hogy a FileName property-ben van-e megadva fájlnév. Ha van, akkor elmentjük a dokumentumot a megadott néven. Ezután ellenőrizzük a Visible property értékét is. Ha ez hamis, akkor bezárjuk a dokumentumot, és a Word-öt is, de csak abban az esetben, ha már nincs megnyitott dokumentum.