Tipy a triky v Delphi, díl 87. - Word

Po Outlooku máme na řadě Word. Dnes si ukážeme, jak vytvořit nový dokument a napsat několik řádek zformátovaného textu. Samozřejmě, že vše prostřednictvím Delphi.
Náplň dnešního dílu je tedy jasná, takže se pustíme do práce. I dnešní příklad využívá OLE a proto je nezbytně nutné, aby byl na počítači, kde budete ukázku testovat, nainstalován Word. Stejně jako v minulých příkladech pak potřebujeme knihovnu ComObj.

A co vlastně bude náš dnešní příklad umět? Po kliknutí na příslušné tlačítko bude spuštěn Word a v něm založen nový dokument. Bude-li již Word běžet ještě před spuštěním naší aplikace, bude prostě otevřena další instance a původní dokument se nijak nenaruší. V tomto novém dokumentu bude nejprve vyplněna hlavička a patička dokumentu a dále bude přidán jednoduchý zformátovaný text, který by se dal s trochou nadsázky označit za hlavičku nějakého (úředního) dopisu. Zdrojový kód tedy vypadá takto:

procedure TForm1.Button1Click(Sender: TObject);
var
  Word: OLEVariant;
begin
  try
    Word := CreateOleObject(`Word.Application`);
    Word.Visible := True;
    Word.Documents.Add;
    if Word.ActiveWindow.View.SplitSpecial <> 0 then Word.ActiveWindow.Panes[2].Close;
    if (Word.ActiveWindow.ActivePane.View.type = 1) or
    (Word.ActiveWindow.ActivePane.View.type = 2) or
    (Word.ActiveWindow.ActivePane.View.type = 5) then
    Word.ActiveWindow.ActivePane.View.type := 3;
    Word.ActiveWindow.ActivePane.View.SeekView := 9;
    Word.Selection.Font.Name := `Times New Roman`;
    Word.Selection.Font.Size := 12;
    Word.Selection.Font.Bold := True;
    Word.Selection.ParagraphFormat.Alignment := 1;
    Word.Selection.TypeText(Text := `Hlavička dokumentu`);
    if Word.Selection.HeaderFooter.IsHeader = True then Word.ActiveWindow.ActivePane.View.SeekView := 10
    else Word.ActiveWindow.ActivePane.View.SeekView := 9;
    Word.Selection.ParagraphFormat.Alignment := 1;
    Word.Selection.TypeText(Text := `Patička dokumentu`);
    Word.ActiveWindow.ActivePane.View.SeekView := 0;
    Word.Selection.TypeText(Text := `Jméno a příjmení`);
    Word.Selection.TypeParagraph;
    Word.Selection.TypeText(Text := `Ulice a čp.`);
    Word.Selection.TypeParagraph;
    Word.Selection.Font.Name := `Times New Roman`;
    Word.Selection.Font.Size := 12;
    Word.Selection.Font.Bold := True;
    Word.Selection.TypeText(Text := `Město`);
    Word.Selection.TypeParagraph;
    Word.Selection.TypeParagraph;
    Word.Selection.TypeParagraph;
    Word.Selection.TypeParagraph;
    Word.Selection.Font.Name := `Arial`;
    Word.Selection.Font.Size := 14;
    Word.Selection.Font.Bold := True;
    Word.Selection.TypeText(Text := `Nadpis`);
    Word.Selection.TypeParagraph;
    Word.Selection.TypeParagraph;
    Word.Selection.TypeParagraph;
    Word.Selection.Font.Name := `Times New Roman`;
    Word.Selection.Font.Size := 12;
    Word.Selection.Font.Bold := True;
    Word.Selection.TypeText(Text := `Vážená paní / vážený pane`);
  except
  end;
end;

Myslím, že ze zdrojového kódu je velmi dobře vidět jak vložit text požadovaných vlastností a jak vložit odstavec. Experimentováním jistě přijdete na další zajímavé možnosti.

Pokud bude vámi vytvářený text delší a složitější, můžete přímo v průběhu jeho vytváření vidět v okně Wordu jak postupně přibývá a dotváří se. To je proto, že hned jedním z prvních příkazů zapneme viditelnost Wordu (Word.Visible := True). Pokud by vám to nevyhovovalo, samozřejmě můžete tento řádek přesunout až na samý konec.

Určitě jste také zjistili (nebo si možná rovnou všimli v kódu), že po vytvoření dokumentu nebude Word uzavřen. To je proto, že náš dnešní příklad vlastně popisuje jistou modelovou situaci. Ve vaší aplikaci nejprve vyplníte například údaje do EditBoxů a dalších prvků (a nebo je třeba načtete z databáze) a poté jedním kliknutím tlačítka vaše aplikace vygeneruje základ pro obchodní dopis. Ten bude obsahovat základní údaje (hlavičku, patičku, adresu atd..) načtený z EditBoxů a zbytek (text dopisu) poté doplní uživatel ručně, uloží jej a Word uzavře. V tom je právě síla tohoto příkladu. Nemusíte do zdrojového kódu psát natvrdo nějaký text, ale můžete použít textové proměnné (například právě zmiňované EditBoxy), což vám pak umožní dynamicky generovat různé výstupy.

Diskuze (1) Další článek: Resource Kit Tools pro Windows Server 2003 a XP

Témata článku: Software, Programování, Microsoft Word, Díl, Word, Trik


Určitě si přečtěte

ELONOVINKY: Druhá strana popularity – servisy Tesly jsou přeplněné a nestíhají

ELONOVINKY: Druhá strana popularity – servisy Tesly jsou přeplněné a nestíhají

** Automobilka Tesla neustále zvyšuje prodeje svých vozů ** S kvapně rostoucím počtem nových majitelů Tesel ale stoupá i počet zákazníků servisů ** Servisy Tesly nestíhají, firma proto řeší další akutní problém

Petr Melechin, Karel Dlabač | 73

Nový iPhone a další novinky Applu: sledujte, na co se zase budou stát fronty

Nový iPhone a další novinky Applu: sledujte, na co se zase budou stát fronty

** Apple dnes představuje nové produkty v čele s novými iPhony ** Nemusí zůstat jen u telefonů, čekají se i další novinky ** Úvodní přednáška začíná v 19:00 našeho času

David Polesný | 57


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku