Controllo ortografico dal codice Delphi tramite MS Word Automation

01

del 07

Che cos'è l'automazione (OLE)? Che cos'è Automation Server? Che cos'è il client di automazione?

Supponiamo che tu stia sviluppando un editor HTML come Kit HTML. Come qualsiasi altro editor testuale, l'applicazione dovrebbe contenere una sorta di sistema di controllo ortografico. Perché acquistare componenti per il controllo ortografico o scriverli da zero quando è possibile utilizzare facilmente MS Word?

Automazione OLE

un'applicazione può controllarne un'altra

client di automazione

server di automazione

L'automazione (nota anche come automazione OLE) è una funzionalità utilizzata dai programmi per esporre i propri oggetti a strumenti di sviluppo, linguaggi macro e altri programmi che supportano l'automazione. Ad esempio, Microsoft Outlook può esporre oggetti per l'invio e la ricezione di posta elettronica, per la pianificazione e per la gestione di contatti e attività.

Usando Word Automation (server), possiamo usare Delphi (client) per creare dinamicamente un nuovo documento, aggiungere un po 'di testo che vogliamo fare il controllo ortografico e quindi far controllare Word all'ortografia. Se manteniamo Microsoft Word minimizzato, i nostri utenti potrebbero non saperlo mai! Grazie all'interfaccia OLE di Microsoft Word, possiamo fare un giro laterale da Delphi e cercare modi per imbrogliare durante lo sviluppo della nostra versione dell'editor Notepad :)

instagram viewer

C'è solo un problema tecnico;) Gli utenti dell'applicazione devono avere Word installato. Ma non lasciare che questo ti fermi.

Ovviamente, per padroneggiare pienamente l'uso dell'Automazione nelle tue applicazioni, devi avere una conoscenza operativa dettagliata delle applicazioni che stai integrando - in questo caso MS Word.

Affinché i programmi "Office" funzionino, l'utente deve possedere l'applicazione che si comporta come un server di automazione. Nel nostro caso MS Word deve essere installato sul computer dell'utente.

02

del 07

Connessione a Word: "Hello Word" Early Binding vs. Rilegatura tardiva

Esistono diversi passaggi principali e tre modi principali per automatizzare Word da Delphi.

Delphi> = 5 - Componenti del server Office XX

TWordApplication

TWordDocument

Delfi 3,4 - Early Binding

Digitare le librerie

Per utilizzare la libreria dei tipi di Word in Delphi (versione 3 o 4) selezionare Progetto | Importa libreria dei tipi... dal menu e scegli il file msword8.olb che si trova nella directory "Office" di Microsoft Office. Questo creerà il file "Word_TLB.pas" che è la traduzione pascal dell'oggetto della libreria dei tipi. Includere Word_TLB nell'elenco degli usi di qualsiasi unità che accederà alle proprietà o ai metodi di Word. Viene chiamato il riferimento ai metodi di Word mediante la libreria dei tipi rilegatura precoce.

Delphi 2 - Late Binding

Rilegatura tardiva

dovrebbe essere evitato, se possibile, poiché è molto più facile e veloce usare le librerie dei tipi - il compilatore aiuta a rilevare errori nel sorgente. Quando si utilizza l'associazione tardiva, Word viene dichiarata come variabile di tipo Variant. Questo in particolare significa che per chiamare i metodi e accedere alle proprietà devi sapere quali sono.

04

del 07

Il progetto di controllo ortografico - TWordApplication, TWordDocument

The Spell Project in Design-Time
The Spell Project in Design-Time.

Per costruire un progetto di controllo ortografico avremo bisogno di due moduli: uno usato per modificare il testo e l'altro per vedere i suggerimenti ortografici... ma andiamo dall'inizio.

Avvia Delphi. Crea un nuovo progetto con un modulo vuoto (form1, per impostazione predefinita). Questa sarà la forma principale nel controllo ortografico con il progetto MS Word. Aggiungi uno TMemo (Scheda Standard) e due TButtons al modulo. Aggiungi del testo al Memo riempiendo la proprietà Linee. Certo, con alcuni errori di battitura. Seleziona la scheda Server e aggiungi TWordApplication e TWordDocument al modulo. Modificare il nome del componente TWordApplication da WordApplication1 a WordApp, WordDocument1 a WordDoc.

TWordApplication, TWordDocument

La proprietà pubblicata ConnectKind viene utilizzato per controllare se ci connettiamo a un'istanza di Word appena lanciata o a un'istanza esistente che è già in esecuzione. Impostare ConnectKind su ckRunningInstance.

Quando apriamo o creiamo un file in Word, creiamo un oggetto Document. Un compito comune quando si utilizza l'automazione di Word è specificare un'area in un documento e quindi fare qualcosa con esso, come inserire testo e controllare l'ortografia. Un oggetto che rappresenta un'area contigua in un documento è chiamato Range.

05

del 07

Il progetto Controllo ortografico - Controllo ortografico / Sostituisci

GetSpellingSuggestions in fase di progettazione
GetSpellingSuggestions in fase di progettazione.

L'idea è di scorrere il testo nel Memo e analizzarlo in parole delimitate da spazio. Per ogni parola, chiamiamo MS Word per controllare l'ortografia. Il modello di automazione di Word contiene il metodo SpellingErrors che consente di controllare l'ortografia del testo contenuto in un intervallo.

L'intervallo è definito per contenere solo la parola appena analizzata. Il metodo SpellingErrors restituisce una raccolta di parole errate. Se questa raccolta contiene più di zero parole, andiamo avanti. Una chiamata al metodo GetSpellingSuggestions, passando la parola digitata in modo errato, riempie una raccolta SpellingSuggestions di parole di sostituzione suggerite.

Passiamo questa raccolta al modulo SpellCheck. Questa è la seconda forma nel nostro progetto.

Per aggiungere un nuovo modulo a un progetto usa File | Nuovo modulo. Lascia che abbia il nome 'frSpellCheck'. Aggiungi tre componenti TBitBtn in questo modulo. Due EditBox e un ListBox. Nota le altre tre etichette. L'etichetta "Non nel dizionario" è "connessa" con la casella di modifica edNID. L'edNID mostra semplicemente la parola errata. La casella di riepilogo lbSuggestions elenca gli elementi nella raccolta SpellingSuggestions. Il suggerimento ortografico selezionato viene inserito nella casella di modifica edReplaceWith.

I tre BitButton vengono utilizzati per annullare il controllo ortografico, ignorare la parola corrente e modificare la parola errata con quella nella casella di modifica edReplaceWith. La proprietà ModalResult dei componenti BitBtn viene utilizzata quando si fa riferimento a ciò su cui l'utente ha fatto clic. Il pulsante "Ignora" ha la proprietà ModalResult impostata su mrIgnore, "Modifica" su mrOk e "Annulla" su mrAbort.

FrSpellCheck ha una variabile di stringa pubblica chiamata sReplacedWord. Questa variabile restituisce il testo in edReplaceWith quando l'utente preme il pulsante "Modifica".

07

del 07

Thesaurus? Thesaurus!

Come bonus, il progetto ha il codice da usare Dizionario dei sinonimi di Word. L'uso del thesaurus è abbastanza più semplice. Non analizziamo il testo, per la parola selezionata viene chiamato il metodo CheckSynonym. Questo metodo visualizza la propria finestra di selezione. Dopo aver selezionato una nuova parola, il contenuto dell'intervallo di documenti di Word viene utilizzato per sostituire la parola originale.

instagram story viewer