Delphi - Stílusok kezelése a Word-ben

Office 4. rész

forráskód letöltése
Az előző részben már eljutottunk odáig, hogy a beírt szöveget meg tudtuk formázni. A formázáshoz viszont van a Word-nek egy nagyszerű lehetősége, ez pedig nem más, mint a stílusok használata. Ebben a cikkben annak járunk utána, hogy hogyan tudjuk az előre definiált stílusokat felhasználni, ill. hogyan tudunk saját stílust létrehozni. Talán már senki sem lepődik meg azon, hogy megint a Selection osztályt használjuk. Azért elmondom, hogy azért használjuk mindig ezt az osztályt, mert az ezen keresztüli műveletek hasonlítanak arra leginkább, mintha manuálisan dolgoznánk a Word-ben. Egy bekezdést például elérhetünk az ActiveDocument.Paragraphs osztályon keresztül is, de ahol éppen a kurzor van, vagy amely bekezdések ki vannak jelölve, azokat a legegyszerűbben a Selection osztályon keresztül érhetjük el.

Az első feladatunk tehát az lesz, hogy a dokumentumban kijelölt bekezdések stílusát beállítsuk. Végtelenül egyszerű dolgunk van, az Application.Selection.Style property-t kell használnunk az alábbi módon:
WordApp.Selection.Style:=MyStyle;
MyStyle: a használni kívánt stílus neve, vagy egy WdBuildInStyle típusú konstans.

A wdStyleList kezdetű konstansok használatával felsorolást ill. számozást érhetünk el.

Ez eddig egyszerű volt, de most nézzük, hogyan készíthetünk saját stílust. Ehhez az ActiveDocuments.Styles osztály Add függvényét kell használnunk. Ez a függvény visszaad egy Style osztályt, amelyben tetszés szerint beállíthatjuk a stílus paramétereit.
var
  MyStyle: OleVariant;
…
MyStyle := WordApp.ActiveDocument.Styles.Add('Animare Stílus 1');

MyStyle.Font.name := 'Arial';
MyStyle.Font.Size := 14;
MyStyle.ParagraphFormat.Alignment:= wdAlignParagraphCenter;
Ezentúl a mi általunk felvett stílus is szerepel a stílusok között. Mielőtt felveszünk egy új stílust, nem árt ellenőrizni, hogy ilyen nevű stílus létezik-e már. Legjobb, ha erre készítünk egy saját függvényt:
function TForm1.StyleExists(StyleName:string):boolean;
var van:boolean;
    i:OleVariant;
    SName:OleVariant;
begin
  van:=false;
  i:=1;
  while (i<=WordApp.ActiveDocument.Styles.Count) and (NOT van) do begin
    SName:=WordApp.ActiveDocument.Styles.Item(i).NameLocal;
    if SName=StyleName then van:=true;
    i:=i+1;
  end;
  result:=van;
end;
A függvény visszatérési értéke True, ha a megadott néven már létezik stílus. Sajnos ez az ellenőrzés elég lassú művelet!

Office cikksorozat