|
|
MS Word programozása Delphi-ből
Office 2. rész
|
|
Példaprogram letöltése
188945 bájt
|
Az előző héten megkezdtük a Microsoft Office alkalmazások programozása című cikksorozatot, amelyet most folytatunk. Ebből a cikkből megtudhatjuk, hogy miként hozhatunk létre egy új, vagy nyithatunk meg egy már létező dokumentumot, hogyan menthetjük azt el, hogyan állíthatjuk be a lap paramétereit, továbbá hogyan jeleníthetjük meg a nyomtatási képet és nyomtathatjuk ki a dokumentumot. Szó lesz még arról, hogy hogyan írhatunk szöveget a megnyitott dokumentumba és hogyan tudunk egy dokumentumon belül mozogni.
Új dokumentum létrehozása
A Word-ben új dokumentumot az Add függvénnyel tudunk létrehozni és megnyitni.
WordApp.Documents.Add(Template, NewTemplate, DocumentType, Visible);
Lehetséges paraméterek:
Template: opcionálisan megadható paraméter, amely az új dokumentum sablonjának a neve. Ha nem adjuk meg (EmptyParam), akkor a Normal dokumentumsablont fogja használni.
NewTemplate: szintén opcionálisan használható paraméter, amely True érték esetén az új dokumentumot sablonként nyitja meg, alapértelmezett értéke False.
DocumentType: wdNewDocumentType típusú paraméter, amelynek a következő értékei lehetnek: wdNewBlankDocument ha üres dokumentumot szeretnénk létrehozni, wdNewEmailMessage ha Email-t akarunk létrehozni, wdNewFrameset ha egy web lapot szeretnénk hasábokkal, vagy wdNewWebPage egy egyszerű weblap létrehozásához. Az alapértelmezett érték wdNewBlankDocument.
Visible: meghatározza, hogy az új dokumentum ablak látható legyen-e vagy sem. Alapértelmezett értéke True.
Meglévő dokumentum megnyitása
Egy már létező dokumentum megnyitásához az Open függvényt kell használnunk. Ez a függvény meglehetősen sok paraméterrel rendelkezik, melyekből általában csak néhányat használunk.
WordApp.Documents.OpenOld(FileName, ConfirmConversions, ReadOnly,
AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format,
Encoding, Visible);
- FileName: fájlnév az elérési útvonallal.
- ConfirmConversions: True értéke esetén megjeleníti a Fájl konvertálása ablakot, ha a fájl nem Word dokumentum.
- ReadOnly: True esetén a dokumentum csak olvasható módban lesz megnyitva.
- AddToRecentFile: True érték esetén a fájlnév bekerül az utoljára használt fájlok listájába a Fájl menübe.
- PasswordDocument: a dokumentum megnyitásához szükséges jelszó.
- PasswordTemplate: a sablon megnyitásához szükséges jelszó.
- Revert: ha a fájl már meg van nyitva, akkor True esetén újra betölti a fájlt, és a nem mentett változtatások elvesznek. False esetén aktiválja azt a dokumentum ablakot, amelyben a fájl van.
- WritePasswordDocument: a fájl mentéséhez szükséges jelszó.
- WritePasswordTemplate: a sablon mentéséhez szükséges jelszó.
- Format: WdOpenFormat típusú paraméter, amely a fájl formátumát határozza meg. Értékei a következők lehetnek: wdOpenFormatAllWord, wdOpenFormatAuto, wdOpenFormatDocument, wdOpenFormatEncodedText, wdOpenFormatRTF, wdOpenFormatTemplate, wdOpenFormatText, wdOpenFormatUnicodeText, vagy wdOpenFormatWebPages. Az alapértelmezett érték wdOpenFormatAuto.
- Encoding: a dokumentumban használt kódlap azonosítója.
- Visible: a megnyitott dokumentum ablaka látható-e, vagy sem. Alapértelmezett értéke true.
Dokumentum mentése
Az aktív dokumentum mentéséhez két metódus áll a rendelkezésünkre. Az egyik a Save, a másik pedig a SaveAs. Mindkettőt a Document osztályon keresztül használhatjuk.
WordApp.ActiveDocument.Save(NoPrompt, OriginalFormat)
- NoPrompt: True érték esetén a Word elment minden dokumentumot. False érték esetén minden olyan dokumentumnál kérdést tesz fel, amelynél az utolsó mentés óta változtatások történtek.
- OriginalFormat: WdOriginalFormat típusú paraméter, melynek a következő értékei lehetnek: wdOriginalDocumentFormat, wdPromptUser, vagy wdWordDocument.
A SaveAs metódusnak "valamivel" több paramétere van:
WordApp.ActiveDocument.SaveAs(FileName, FileFormat, LockComments,
Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended,
EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
SaveAsAOCELetter)
- FileName: a fájl neve.
- FileFormat: a fájl formátuma, amelyet a WdSaveFormat típusú paraméterrel lehet megadni. Értékei a következők lehetnek: wdFormatDocument, wdFormatDOSText, wdFormatDOSTextLineBreaks, wdFormatEncodedText, wdFormatHTML, wdFormatRTF, wdFormatTemplate, wdFormatText, wdFormatTextLineBreaks, vagy wdFormatUnicodeText.
- LockComments: logikai érték.
- Password: a fájl megnyitásához szükséges jelszó.
- AddToRecentFiles: True érték esetén a fáj neve bekerül a legutóbb használt fájlok listájába a Fájl menübe.
- WritePassword: a dokumentum mentéséhez szükséges jelszó.
- ReadOnlyRecommended: True érték esetén a Word mindig felajánlja, hogy megnyitáskor csak olvasható módban legyen a dokumentum megnyitva.
- EmbedTrueTypeFonts: True esetén a TrueType font-okat is elmenti a dokumentummal.
- SaveNativePictureFormat: Ha a dokumentumban van olyan grafika, amely egy más platformról lett importálva (pl. Macintosh), akkor True esetén a Windows verzióban lesz elmentve.
- SaveFormsData: True esetén elmenti azokat az adatokat is, melyeket a dokumentum adatainál adott meg a felhasználó.
- SaveAsAOCELetter: ha a dokumentum egy levél melléklete, akkor True esetén AOCE levélként menti el.
Oldalbeállítás
A Word-ben megszokhattuk, hogy a papírméretet és a margókat tetszés szerint beállíthatjuk. Ezt természetesen programból is megtehetjük, felhasználva ehhez az ActiveDocument.PageSetup property-t. A legfontosabb mezői a property-nek a következők:
var
ps: PageSetup;
…
ps := WordApp.ActiveDocument.PageSetup;
ps.PaperSize := wdPaperA4;
ps.LeftMargin:=WordApp.CentimetersToPoints(3);
ps.TopMargin:=WordApp.CentimetersToPoints(2,5);
ps.RightMargin:=WordApp.CentimetersToPoints(2);
ps.BottomMargin:=WordApp.CentimetersToPoints(2,5);
WordApp.ActiveDocument.PageSetup := ps;
A margók megadásánál látható, hogy a CentimetersToPoints függvényét használtuk, mivel a margók méretét pontban kell megadni. A PaperSize property-nél a következő konstansokat használhatjuk: wdCustomLabelA4, wdCustomLabelA4LS, wdCustomLabelA5, wdCustomLabelA5LS, wdCustomLabelB4JIS, wdCustomLabelB5, wdCustomLabelFanfold, wdCustomLabelHigaki, wdCustomLabelHigakiLS, wdCustomLabelLetter, wdCustomLabelLetterLS, wdCustomLabelMini, wdCustomLabelVertHalfSheet, vagy wdCustomLabelVertHalfSheetLS.
Nyomtatás
A dokumentum nyomtatását kétféleképpen is megoldhatjuk. Az első eset egyszerűbb, mert itt csak a nyomtatási képet jelenítjük meg, a többit rábízzuk a felhasználóra:
WordApp.ActiveDocument.PrintPreview;
Ezzel nincs is semmi gond, még paramétereznünk sem kell. Ellenben a másik megoldás, amikor azonnal a nyomtatóra küldjük a dokumentumot. Ehhez az ActiveDocument.PrintOut metódust kell használnunk.
WordApp.ActiveDocument.PrintOut(Background, Append, Range,
OutputFileName, From, To, Item, Copies, Pages, PageType,
PrintToFile, Collate, FileName, ActivePrinterMacGX,
ManualDuplexPrint, PrintZoomColumn, PrintZoomRow,
PrintZoomPaperWidth, PrintZoomPaperHeight);
- Background: True esetén a program futása folytatódik a nyomtatás elkezdése után. False setén a program futása addig nem folytatódik, amíg a dokumentum kinyomtatása nem fejeződött be.
- Append: lásd. OutputFileName
- Range: WdPrintOutRange típusú paraméter, melynek a következő értékei lehetnek: wdPrintAllDocument, wdPrintCurrentPage, wdPrintFromTo, wdPrintRangeOfPages, vagy wdPrintSelection
- OutputFileName: ha a nyomtatás fájlba történik, akkor a fájl neve.
- From: ha a Range paraméter wdPrintFromTo akkor a kezdő oldal száma.
- To: ha a Range paraméter wdPrintFromTo akkor a befejező oldal száma.
- Item: WdPrintOutItem típusú paraméter: wdPrintAutoTextEntries, wdPrintComments, wdPrintDocumentContent, wdPrintKeyAssignments, wdPrintProperties, vagy wdPrintStyles.
- Copies: példányszám.
- Pages: a nyomtatandó oldalak sztring formátumban, ugyanúgy megadva, ahogyan azt a Word-ben megszokhattuk (pl. "3-5, 7").
- PageType: WdPrintOutPages típusú paraméter: wdPrintAllPages, wdPrintEvenPagesOnly, vagy wdPrintOddPagesOnly
- PrintToFile: True érték esetén fájlba nyomtat (lásd. OutputFileName).
- Collate: több példány nyomtatása esetén ha az értéke True, akkor először kinyomtatja az összes oldalt, és utána kezdi elölről a nyomtatást.
- FileName: ha a metódust közvetlenül az _Application osztályból hívjuk meg, akkor annak a fájlnak a neve, amit nyomtatni akarunk. Az ActiveDocument osztályban nem használható!
- ActivePrinterMacGX: Ez a paraméter csak a Microsoft Office 98 Macintosh Edition-ben használható.
- ManualDuplexPrint: kétoldalas nyomtatáskor használható.
Az előző metódushoz képest négy új paraméter van:
- PrintZoomColumn: oldalak száma aminek el kell férni a nyomtatási képen vízszintesen.
- PrintZoomRow: hasonló, mint az előző, de itt a függőlegesen megjelenítendő oldalak számát kell megadni.
- PrintZoomPaperWidth: a nyomtatási kép szélessége, amibe az oldalnak bele kell férnie.
- PrintZoomPaperHeight: a nyomtatási kép magassága, amibe az oldalnak bele kell férnie.
A Word bezárása
A Word bezárása a Quit metódussal történik. Ennek három paramétere lehetséges:
WordApp.Quit(SaveChanges, Format, RouteDocument);
- SaveChanges: WdSaveOptions típusú paraméter, lehetséges értékei: wdDoNotSaveChanges, wdPromptToSaveChanges, vagy wdSaveChanges.
- Format: WdOriginalFormat típusú paraméter, lehetséges értékei: wdOriginalDocumentFormat, wdPromptUser, vagy wdWordDocument.
Szöveg beírás, új sor kezdés
Szöveg beviteléhez az aktív dokumentumba a Selection osztályra lesz szükségünk. Ennek TypeText metódusával írhatunk szöveget az aktív dokumentumba az aktuális kurzorpozíciótól.
WordApp.Selection.TypeText('Animare Software');
Az így beírt szöveg nem egy új bekezdésbe történik, hanem úgy, mintha billentyűzetről gépeltük volna azt be. Új bekezdés kezdéséhez a TypeParagraph metódust kell használnunk, aminek nincs paramétere. Ennek a metódusnak a hatása megegyezik azzal, mintha az Enter billentyűt leütöttük volna.
WordApp.Selection.TypeParagraph;
Mozgás a dokumentumon belül
Szintén a Selection osztályt kell használnunk, ezen belül is elsősorban a Goto-val kezdődő metódusokat. A goto egy meghatározott objektumra ugrik, GotoNext a következő objektumra, míg a GotoWhat az előzőre. Azt, hogy mi az objektum konstansokkal lehet meghatározni (What paraméter).
WordApp.Selection.Goto(What, Which, Count, Name);
WordApp.Selection.GotoNext(What);
WordApp.Selection.GotoPrevious(What);
- What: WdGoToItem típusú konstans érték: wdGoToBookmark, wdGoToComment, wdGoToEndnote, wdGoToEquation, wdGoToField, wdGoToFootnote, wdGoToGrammaticalError, wdGoToGraphic, wdGoToHeading, wdGoToLine, wdGoToObject, wdGoToPage, wdGoToPercent, wdGoToProofreadingError, wdGoToSection, wdGoToSpellingError, és wdGoToTable használható.
- Which: WdGoToDirection konstans, ami a mozgás jellegét adja meg: wdGoToAbsolute, wdGoToFirst, wdGoToLast, wdGoToNext, wdGoToPrevious, vagy wdGoToRelative.
- Count: ennyi egységgel mozog.
- Name: wdGoToBookmark, wdGoToComment, wdGoToField, és wdGoToObject konstansok esetében használható paraméter.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 231. 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!
|