|
|
Táblázat készítés, formázás Word-ben
Office 6. rész
|
|
Példaprogram letöltése
183860 bájt
|
Ebben a cikkben a táblázatok létrehozásával, formázásával foglalkozunk. Megnézzük, hogy miként tudunk létrehozni Delphi-s alkalmazásunkból egy olyan Word dokumentumot, melybe táblázatot is beszúrunk, majd azt egyedileg formázzuk.
Új táblázatot a Tables.Add függvénnyel hozhatunk létre:
tbl:=WordApp.ActiveDocument.Tables.AddOld(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior);
- Range: a kijelölés, ill. a táblázat helye.
- NumRows: a táblázat sorainak száma.
- NumColumns: a táblázat oszlopainak száma.
- DefaultTableBehavior: értékei a következők lehetnek: wdWord8TableBehavior (AutoFit kikapcsolva) vagy wdWord9TableBehavior (AutoFit bekapcsolva). Az alapértelmezett érték: wdWord8TableBehavior.
- AutoFitBehavior: WdAutoFitBehavior típusú paraméter, melynek a következő értékei lehetnek: wdAutoFitContent, wdAutoFitFixed, vagy wdAutoFitWindow. Ha a DefaultTableBehavior értéke wdWord8TableBehavior, akkor ez a paraméter figyelmen kívül marad!
A dokumentumban található táblázatokat az ActiveDocument.Tables osztályon keresztül érhetjük el. Egy táblázatot az ActiveDocument.Tables.Item(x) függvénnyel kaphatunk meg, ahol x a táblázat sorszáma a dokumentumban.
var
tbl: Table;
…
tbl:=WordApp.ActiveDocument.Tables.Item(2);
A fenti példa a második számú táblázat lekérdezését mutatja be. A tbl változóban ezután tetszőleges műveleteket végezhetünk a táblázattal.
Ha már megvan a táblázatunk, akkor töltsük fel azt adatokkal, és formázzuk is meg egy kicsit. A cellákat nagyon egyszerűen elérhetjük, a Table osztály Cell függvényével, amely egy Cell osztályt ad vissza. Ebben a cella formázásához szükséges property-k és függvények találhatók. A következő módon adhatjuk meg a cella szövegét:
tbl.Cell(2, 3).Range.Text:='Continent';
A Range osztályon keresztül minden formázási lehetőséget megkapunk. Formázhatunk bekezdést (Range.Paragraphs), betűtípust (Range.Font), és még sok más tulajdonságot lekérdezhetünk és beállíthatunk.
Egy táblázatban sokszor előfordul, hogy cellákat kell összevonni. Ezt a következőképpen tehetjük meg:
tbl.Rows.Item(1).Cells.Merge;
Ezzel a sorral, az első sor celláit egyesítettük.
Gyakori formázás a táblázatoknál a keretezés. Az alábbi sorral a táblázat köré rajzolunk keretet, 2,25 pontos vonallal:
tbl.Borders.InsideLineStyle := wdLineStyleSingle;
tbl.Borders.OutsideLineWidth := wdLineWidth225pt;
Valamivel bonyolultabb egy kijelölt rész keretezése. Az alábbi példa a táblázat első sorát keretezi be, szintén 2,25 pontos vonallal.
tbl.Rows.Item(1).Borders.InsideLineStyle := wdLineStyleSingle;
tbl.Rows.Item(1).Borders.OutsideLineWidth := wdLineWidth225pt;
Megint másként kell eljárnunk, ha a cella, vagy cellák valamelyik oldalán lévő keretet szeretnénk csak megváltoztatni. Az alábbi példa a második sor celláit dupla vonallal húzza alá:
tbl.Rows.Item(2).Borders.Item(wdBorderBottom).LineStyle := wdLineStyleDouble;
A táblázatot bekereteztük, most már csak fel kell tölteni tartalommal. A táblázat első sora a címsor, ezért ezt egy kicsit másképpen formázzuk, mint a többi sort. Az (1,1) cellába beírjuk a címet, majd beállítjuk a betűformázást. A Paragraphs.Shading osztályon keresztül tudjuk a bekezdés hátterének színét, így a cella színét is beállítani. Ez az első sorban szürke lesz (clSilver).
r:=tbl.Cell(1,1).Range;
r.Text:='Countryes of America';
r.Font.Name:='ARIAL';
r.Font.Size:=16;
r.Font.Bold:=integer(true);
r.Font.Italic:=integer(true);
r.Paragraphs.Shading.BackgroundPatternColor:=clSilver;
A második sorban az oszlopok feliratai találhatók, melyeket szintén megformázunk. A Rows osztály Items függvényével lekérdezzük a második sort az r változóba, majd a Select függvény meghívásával kijelöljük a teljes sort. Ezután az összes formázás a kijelölt cellákra lesz hatással.
r:=tbl.Rows.Item(2);
r.Select;
r.Range.Font.Name:='arial';
r.Range.Font.Size:=8;
r.Range.Font.Bold:=integer(true);
r.Range.Paragraphs.Alignment:=wdHorizontalLineAlignCenter;
A második sor celláiba beírjuk az oszlopok elnevezéseit.
tbl.Cell(2, 1).Range.Text:='Country Name';
tbl.Cell(2, 2).Range.Text:='Capital';
tbl.Cell(2, 3).Range.Text:='Continent';
tbl.Cell(2, 4).Range.Text:='Area';
tbl.Cell(2, 5).Range.Text:='Population';
Egy ciklusban végigmegyünk az adatbázis rekordjain, és sorban beírjuk a rekordok mezőinek értékeit a megfelelő cellákba. A row változóban tároljuk táblázat aktuális sorának sorszámát. Ez a programrészlet a fentiekhez képest már nem tartalmaz újdonságot.
with Query1 do begin
First;
row:=3;
while not EOF do begin
tbl.Cell(row, 4).Range.Paragraphs.Alignment:=wdHorizontalLineAlignRight;
tbl.Cell(row, 5).Range.Paragraphs.Alignment:=wdHorizontalLineAlignRight;
tbl.Cell(row, 1).Range.Font.Bold:=integer(true);
tbl.Cell(row, 1).Range.Text:=Query1Name.Value;
tbl.Cell(row, 2).Range.Text:=Query1Capital.Value;
tbl.Cell(row, 3).Range.Text:=Query1Continent.Value;
tbl.Cell(row, 4).Range.Text:=Query1Area.DisplayText;
tbl.Cell(row, 5).Range.Text:=Query1Population.DisplayText;
inc(row);
Next;
end;
end;
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 287. 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!
|