HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Jelentéskészítés Word-ben


Példaprogram letöltése

5619 bájt

A most bemutatásra kerülő cikkben készítünk egy olyan komponenst, melynek segítségével jelentéseket hozhatunk létre a Word-ben. Egy megadott StringGrid tartalmát megfelelően formázva átvisszük egy dokumentumba, melyhez immár a Word-ben hozzászerkeszthetjük a szöveget. A komponensben megadható a jelentés címe, formája, igazítása, a létrehozandó táblázat tulajdonságai, valamint hogy a fejlécben fel legyen-e tüntetve az aktuális dátum és idő. A komponens segítségével közvetlenül készíthetünk nyomtatási képet, valamint az adott dokumentumot ki is nyomtathatjuk.

A mellékelt példaprogram megnyitása előtt a WordReport.pas-ban levő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponensben létrehoztunk egy ShowReport nevű függvényt, mely a Word dokumentum megjelenítését végzi. Nézzük meg ennek felépítését:
procedure TWordReport.ShowReport;
var
   Range: Variant;
   i, j: integer;
begin
Megvizsgáljuk, hogy van-e StringGrid megadva a komponens FGrid property-jében. Amennyiben igen, megnyitjuk a Word-öt, és létrehozunk egy új dokumentumot.
  if FGrid = nil then
    raise Exception.Create('Nincs grid kiválasztva!');
  FWordApp := CreateOleObject('Word.Application');
  try
    FWordApp.Visible := True;
    FWordApp.Documents.Add;
Amennyiben beállítottuk a dátum és az idő megjelenítését, elhelyezzük azokat a dokumentum fejlécében.
    if FShowDate then begin
      Range := FWordApp.Documents.Item(1);
      Range := Range.Sections.Item(1);
      Range := Range.Headers.Item(1).Range;
      Range.Text := 'Dátum: ' + DateToStr(Date) + ' Idő: ' + TimeToStr(Time);
    end;
A láblécben feltüntetjük az aktuális oldal sorszámát.
    Range := FWordApp.Documents.Item(1);
    Range := Range.Sections.Item(1);
    Range := Range.Footers.Item(1);
    Range.Range.Text := 'Oldal:';
    Range.Range.ParagraphFormat.Alignment := ord(waAlignParagraphRight);
    Range.PageNumbers.Add;
Ezután létrehozzuk a jelentés címét, és a komponensben beállítottak szerint formázzuk.
    FWordApp.Documents.Item(1).Paragraphs.Add;
    Range := FWordApp.Documents.Item(1).Range(
             FWordApp.Documents.Item(1).Paragraphs.Item(FWordApp.Documents.Item(1).Paragraphs.Count - 1).Range.End,
             FWordApp.Documents.Item(1).Paragraphs.Item(FWordApp.Documents.Item(1).Paragraphs.Count - 1).Range.End);
    Range.Text := FTitle;
    Range.Bold := fsBold in FTitleFont.Style;
...
    Range.Font.Name := FTitleFont.Name;
    Range.Font.Size := FTitleFont.Size;
    Range.Font.ColorIndex := ord(FTitleColor);
    Range.ParagraphFormat.Alignment := ord(FTitleAlignment);
...
Létrehozzuk a megadott StringGrid-el megegyező méretű Word táblázatot, és annak megfelelően formázzuk.
    FWordApp.Documents.Item(1).Tables.Add(Range, FGrid.RowCount, FGrid.ColCount);
    Range := FWordApp.Documents.Item(1).Tables.Item(FWordApp.Documents.Item(1).Tables.Count);
    for i := 1 to FGrid.RowCount do
      for j := 1 to FGrid.ColCount do begin
        Range.Cell(i, j).Range.InsertAfter(FGrid.Cells[j-1, i-1]);
Azokat a cellákat, ahol a Grid-ben fix cellák találhatóak, a Word-ben is különböző színnel és betűtípussal jelenítjük meg.
        if (i <= FGrid.FixedRows) or (j <= FGrid.FixedCols) then begin
          Range.Cell(i, j).Range.Bold := True;
          Range.Cell(i, j).Range.Shading.BackgroundPatternColorIndex := ord(wcGray25);
        end
        else begin
          Range.Cell(i, j).Range.Bold := fsBold in FCellFont.Style;
...
          Range.Cell(i, j).Range.Font.Name := FCellFont.Name;
          Range.Cell(i, j).Range.Font.Size := FCellFont.Size;
          Range.Cell(i, j).Range.Shading.BackgroundPatternColorIndex := FCellColor;
        end;
      end;
  finally
  end;
end;
A nyomtatási kép megjelenítését a PrintPreview függvény végzi.
procedure TWordReport.PrintPreview;
begin
  ShowReport;
  if not VarIsEmpty(FWordApp) then begin
    FWordApp.PrintPreview := True;
  end;
end;
Közvetlenül a nyomtatóra is küldhetjük a jelentést a Word PrintOut parancsával. Mindezt a PrintReport függvény valósítja meg.
procedure TWordReport.PrintReport;
begin
  ShowReport;
  if not VarIsEmpty(FWordApp) then begin
    FWordApp.PrintOut;
  end;
end;
A mellékelt példaprogramban mindhárom függvény működését kipróbálhatjuk.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 588. 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 |