01
av 07
Vad är (OLE) automatisering? Vad är Automation Server? Vad är Automation Client?
Anta att du utvecklar en HTML-redigerare som HTML-kit. Liksom alla andra textredigerare bör din ansökan innehålla ett slags stavningskontrollsystem. Varför köpa stavningskontrollkomponenter eller skriva dem från grunden när du enkelt kan använda MS Word?
OLE Automation
en applikation kan styra en annan
automatiseringsklient
automatiseringsserver
Automation (även känd som OLE Automation) är en funktion som program använder för att exponera sina objekt för utvecklingsverktyg, makrospråk och andra program som stöder Automation. Till exempel kan Microsoft Outlook exponera objekt för att skicka och ta emot e-post, för schemaläggning och för kontakt- och uppgiftshantering.
Genom att använda Word Automation (server) kan vi använda Delphi (klient) för att dynamiskt skapa ett nytt dokument, lägga till lite text vi vill stavkontrolla och sedan få Word att kontrollera stavningen. Om vi håller minimalt med Microsoft Word kanske våra användare aldrig får veta det! Tack vare Microsoft Words OLE-gränssnitt kan vi ta en sida resa från Delphi och titta på sätt att fuska när vi utvecklar vår version av Notepad-redigeraren :)
Det finns bara ett problem;) Användare av applikationen måste ha Word installerat. Men låt inte detta stoppa dig.
För att fullständigt behärska användningen av automatisering i dina applikationer måste du naturligtvis ha detaljerad arbetskunskap om de applikationer du integrerar - i detta fall MS Word.
För att dina "Office" -program ska fungera måste användaren äga applikationen som fungerar som Automationsserver. I vårt fall måste MS Word installeras på användarens maskin.
02
av 07
Ansluter till Word: "Hello Word" Early Binding vs. Sen bindning
Det finns flera huvudsteg och tre huvudsakliga sätt att automatisera Word från Delphi.
Delphi> = 5 - Office XX-serverkomponenter
TWordApplication
TWordDocument
Delphi 3,4 - tidig bindning
Skriv in bibliotek
För att använda Words typbibliotek i Delphi (version 3 eller 4), välj Project | Importera menyn Typbibliotek... och välj filen msword8.olb som finns i Microsoft Office: s "Office" -katalog. Detta skapar filen "Word_TLB.pas", som är en översättning av objektbiblioteket för objekt. Inkludera Word_TLB i användarlistan för alla enheter som kommer åt Word-egenskaper eller -metoder. Att hänvisa till Word-metoder med typbiblioteket kallas tidig bindning.
Delphi 2 - Late Binding
Sen bindning
bör undvikas, om möjligt, eftersom det är mycket lättare och snabbare att använda typbibliotek - kompilatorn hjälper till med att fånga fel i källan. Vid användning av sent bindande förklaras Word för att vara en variabel av typen Variant. Detta betyder speciellt än att ringa metoder och komma åt egenskaper du måste veta vad de är.
04
av 07
Stavekontrollprojektet - TWordApplication, TWordDocument

För att bygga ett stavkontrollprojekt behöver vi två former: en används för att redigera texten och den andra för att se stavförslag... men låt oss gå från början.
Starta Delphi. Skapa ett nytt projekt med ett tomt formulär (form1, som standard). Detta kommer att vara huvudformen i stavningskontrollen med MS Word-projektet. Lägg till ett TMemo (Standardflik) och två TButtons till formen. Lägg till lite text i minnet som fyller egenskapen Lines. Naturligtvis med några typfel. Välj fliken Servrar och lägg till TWordApplication och TWordDocument till formen. Ändra namnet på TWordApplication-komponenten från WordApplication1 till WordApp, WordDocument1 till WordDoc.
TWordApplication, TWordDocument
Den publicerade egendomen ConnectKind används för att kontrollera om vi ansluter till en nyligen lanserad Word-instans eller till en befintlig instans som redan körs. Ställ ConnectKind på ckRunningInstance.
När vi öppnar eller skapar en fil i Word, skapar vi ett dokumentobjekt. En vanlig uppgift när du använder automatisering av Word är att ange ett område i ett dokument och sedan göra något med det, till exempel infoga text och stavkontrollera det. Ett objekt som representerar ett sammanhängande område i ett dokument kallas Range.
05
av 07
Stavekontrollprojektet - Stavekontroll / ersätt

Tanken är att gå igenom texten i memo och analysera den i rymdavgränsade ord. För varje ord kallar vi MS Word för stavkontroll. Words automatiseringsmodell innehåller SpellingErrors-metoden som låter dig kontrollera stavningen av text som finns i något intervall.
Område definieras för att endast innehålla det ord som just har analyserats. SpellingErrors-metoden returnerar en samling felstavade ord. Om denna samling innehåller mer än nollord går vi vidare. Ett samtal till GetSpellingSuggestions-metoden, som skickar in det felstavade ordet, fyller en SpellingSuggestions-samling av föreslagna ersättningsord.
Vi skickar denna samling till stavningscheckformuläret. Det är den andra formen i vårt projekt.
För att lägga till ett nytt formulär i ett projekt använder du File | Ny form. Låt det ha namnet "frSpellCheck". Lägg till tre TBitBtn-komponenter på det här formuläret. Två EditBox-er och en ListBox. Notera de tre mer etiketterna. Etiketten "Inte i ordlista" är "ansluten" med redigeringsrutan edNID. EdNID visar helt enkelt det felstavade ordet. I listrutan lbSuggestions listas objekten i SpellingSuggestions-samlingen. Det valda stavförslaget placeras i redigeringsrutan edReplaceWith.
De tre bitknapparna används för att avbryta stavningskontrollen, ignorera det aktuella ordet och för att ändra det felstavade ordet med det i redigeringsrutan edReplaceWith. Egenskapen BitBtn-komponenter ModalResult används när man hänvisar till vad användaren har klickat på. Knappen "Ignorera" har sin ModalResult-egenskap inställd på mrIgnore, "Change" to mrOk och "Cancel" till mrAbort.
FrSpellCheck har en offentlig strängvariabel som heter sReplacedWord. Denna variabel returnerar texten i edReplaceWith när användaren trycker på knappen "Ändra".
07
av 07
Ordbok? Ordbok!

Som en bonus har projektet koden att använda Word's Thesaurus. Att använda tesaurusen är ganska lättare. Vi analyserar inte texten, för det valda ordet kallas CheckSynonyms-metoden. Den här metoden visar sin egen markeringsdialogruta. När ett nytt ord har valts, används innehållet i Word Documents Range för att ersätta det ursprungliga ordet.