01
af 07
Hvad er (OLE) automatisering? Hvad er Automation Server? Hvad er Automation Client?
Antag, at du udvikler en HTML-editor som HTML-sæt. Som enhver anden teksteditor skal din ansøgning indeholde en slags stavekontrol-system. Hvorfor købe stavekontrolkomponenter eller skrive dem fra bunden, når du nemt kan bruge MS Word?
OLE Automation
en applikation kan kontrollere en anden
automatiseringsklient
automatiseringsserver
Automation (også kendt som OLE Automation) er en funktion, som programmer bruger til at udsætte deres objekter for udviklingsværktøjer, makrosprog og andre programmer, der understøtter Automation. For eksempel kan Microsoft Outlook eksponere objekter til afsendelse og modtagelse af e-mail, planlægning og kontakt- og opgavestyring.
Ved at bruge Word Automation (server) kan vi bruge Delphi (klient) til dynamisk at oprette et nyt dokument, tilføje noget tekst, vi vil stavekontrol, og derefter få Word til at kontrollere stavemåden. Hvis vi holder Microsoft Word minimeret, vil vores brugere måske aldrig vide det! Takket være Microsoft Words OLE-interface kan vi tage en side-tur fra Delphi og se på måder at snyde, når vi udvikler vores version af Notepad-editor :)
Der er kun én fejl;) Brugere af applikationen skal have Word installeret. Men lad ikke det stoppe dig.
For fuldt ud at mestre brugen af automatisering i dine applikationer skal du naturligvis have detaljeret arbejdsviden om de applikationer, du integrerer - i dette tilfælde MS Word.
For at dine "Office" -programmer skal fungere, skal brugeren eje det program, der fungerer som en automatiseringsserver. I vores tilfælde skal MS Word installeres på brugerens maskine.
02
af 07
Opretter forbindelse til Word: "Hello Word" Tidlig binding vs. Sen binding
Der er flere hovedtrin og tre vigtigste måder at automatisere Word fra Delphi.
Delphi> = 5 - Office XX-serverkomponenter
TWordApplication
TWordDocument
Delphi 3,4 - Tidlig binding
Skriv biblioteker
For at bruge Words type bibliotek i Delphi (version 3 eller 4) skal du vælge Project | Importer menuen Type bibliotek…, og vælg filen msword8.olb, der findes i Microsoft Office's "Office" -mappe. Dette vil oprette filen "Word_TLB.pas", som er objektets pascal-oversættelse af typebiblioteket. Omfatte Word_TLB i brugslisten over enhver enhed, der får adgang til Word-egenskaber eller -metoder. Henvisning til Word-metoder ved hjælp af typebiblioteket kaldes tidlig binding.
Delphi 2 - Sen binding
Sen binding
bør om muligt undgås, da det er meget lettere og hurtigere at bruge typebiblioteker - kompilatoren hjælper ved at fange fejl i kilden. Når man bruger sentbinding erklæres Word for at være en variabel af typen Variant. Dette betyder især end at kalde metoder og få adgang til egenskaber, du skal vide, hvad de er.
04
af 07
Stavekontrolprojektet - TWordApplication, TWordDocument

For at opbygge et stavekontrolprojekt har vi brug for to former: den ene bruges til at redigere teksten og den anden til at se staveforslag... men lad os gå fra starten.
Start Delphi. Opret et nyt projekt med en tom form (form1, som standard). Dette vil være den vigtigste form i stavekontrol med MS Word-projekt. Tilføj en TMemo (Standard fane) og to TButtons til formen. Føj noget tekst til memoet, der udfylder egenskaben Lines. Selvfølgelig med nogle skrivefejl. Vælg fanen Servere, og tilføj TWordApplication og TWordDocument til formen. Skift navnet på TWordApplication-komponent fra WordApplication1 til WordApp, WordDocument1 til WordDoc.
TWordApplication, TWordDocument
Den offentliggjorte ejendom ConnectKind bruges til at kontrollere, om vi opretter forbindelse til en nyligt lanceret Word-instans eller til en eksisterende instans, der allerede kører. Indstil ConnectKind til ckRunningInstance.
Når vi åbner eller opretter en fil i Word, opretter vi et dokumentobjekt. En almindelig opgave, når du bruger automatisering af Word, er at specificere et område i et dokument og derefter gøre noget med det, f.eks. Indsætte tekst og stavekontrol. Et objekt, der repræsenterer et sammenhængende område i et dokument kaldes Range.
05
af 07
Stavekontrolprojektet - Stavekontrol / udskift

Ideen er at gennemgå teksten i Memo og analysere den i mellemrum afgrænsede ord. For hvert ord kalder vi MS Word for stavekontrol af det. Words automatiseringsmodel indeholder SpellingErrors-metoden, der giver dig mulighed for at kontrollere stavningen af tekst, der er indeholdt i et vist område.
Område er defineret for kun at indeholde ordet, der lige er uddelt. SpellingErrors-metoden returnerer en samling af forkert stavede ord. Hvis denne samling indeholder mere end nul ord, bevæger vi os videre. Et opkald til GetSpellingSuggestions-metoden, der indtaster det forkert stavede ord, udfylder en SpellingSuggestions-samling af foreslåede erstatningsord.
Vi videregiver denne samling til stavekontrolformularen. Det er den anden form i vores projekt.
For at tilføje en ny form til et projekt skal du bruge File | Ny form. Lad det have navnet 'frSpellCheck'. Tilføj tre TBitBtn-komponenter på denne formular. To EditBox-er og en ListBox. Bemærk de tre yderligere etiketter. Etiketten "Ikke i ordbog" er "forbundet" med redigeringsfeltet edNID. EdNID viser simpelthen det forkert stavede ord. Listeboksen lbSuggestions viser de emner, der findes i SpellingSuggestions-samlingen. Det valgte staveforslag placeres i redigeringsfeltet edReplaceWith.
De tre BitButtons bruges til at annullere stavekontrol, ignorere det aktuelle ord og til at ændre det forkert stavede ord med det i redigeringsfeltet edReplaceWith. Egenskaben BitBtn-komponenter ModalResult bruges, når der henvises til det, brugeren har klikket på. Knappen "Ignorer" har sin ModalResult-egenskab indstillet til mrIgnore, "Change" to mrOk og "Cancel" til mrAbort.
FrSpellCheck har en offentlig strengvariabel kaldet sReplacedWord. Denne variabel returnerer teksten i edReplaceWith, når brugeren trykker på knappen "Skift".
07
af 07
Thesaurus? Thesaurus!

Som en bonus har projektet koden, der skal bruges Word's Thesaurus. Det er meget lettere at bruge tesaurusen. Vi analyserer ikke teksten, for det valgte ord kaldes CheckSynonyms-metoden. Denne metode viser sin egen valgdialog. Når et nyt ord er valgt, bruges Word Documents Range indholdet til at erstatte det originale ord.