Verificação ortográfica do código Delphi usando o MS Word Automation

01

de 07

O que é automação (OLE)? O que é o servidor de automação? O que é o Automation Client?

Suponha que você esteja desenvolvendo um editor de HTML como Kit HTML. Como qualquer outro editor de texto, seu aplicativo deve conter algum tipo de sistema de verificação ortográfica. Por que comprar componentes de verificação ortográfica ou escrevê-los do zero quando você pode usar facilmente o MS Word?

Automação OLE

uma aplicação pode controlar outra

cliente de automação

servidor de automação

A automação (também conhecida como automação OLE) é um recurso que os programas usam para expor seus objetos a ferramentas de desenvolvimento, linguagens de macro e outros programas que oferecem suporte à automação. Por exemplo, o Microsoft Outlook pode expor objetos para envio e recebimento de email, agendamento e gerenciamento de contatos e tarefas.

Ao usar o Word Automation (servidor), podemos usar o Delphi (cliente) para criar dinamicamente um novo documento, adicionar algum texto que desejamos a verificação ortográfica e solicitar que o Word verifique a ortografia. Se mantivermos o Microsoft Word minimizado, nossos usuários poderão nunca saber! Graças à interface OLE do Microsoft Word, podemos fazer uma viagem lateral do Delphi e procurar maneiras de trapacear ao desenvolver nossa versão do editor do Bloco de notas :)

instagram viewer

Há apenas uma falha;) Os usuários do aplicativo precisam ter o Word instalado. Mas não deixe isso parar você.

Obviamente, para dominar completamente o uso da automação em seus aplicativos, você deve ter um conhecimento de trabalho detalhado dos aplicativos que estão integrando - nesse caso, o MS Word.

Para que seus programas "Office" funcionem, o usuário deve possuir o aplicativo que age como o servidor de automação. No nosso caso, o MS Word deve estar instalado na máquina do usuário.

02

de 07

Conectando-se ao Word: vinculação antecipada "Hello Word" vs. Ligação tardia

Existem várias etapas principais e três maneiras principais de automatizar o Word a partir do Delphi.

Delphi> = 5 - Componentes do Office XX Server

TWordApplication

TWordDocument

Delphi 3,4 - Ligação antecipada

Bibliotecas de tipos

Para usar a biblioteca de tipos do Word no Delphi (versão 3 ou 4), selecione a opção Projeto | Clique no menu Importar biblioteca de tipos… e escolha o arquivo msword8.olb localizado no diretório "Office" do Microsoft Office. Isso criará o arquivo "Word_TLB.pas", que é a tradução pascal do objeto da biblioteca de tipos. Incluir Word_TLB na lista de usos de qualquer unidade que acessará propriedades ou métodos do Word. Referenciar métodos do Word usando a biblioteca de tipos é chamado ligação antecipada.

Delphi 2 - vinculação tardia

Ligação tardia

deve ser evitado, se possível, já que é muito mais fácil e rápido usar bibliotecas de tipos - o compilador ajuda capturando erros na fonte. Ao usar a ligação tardia, o Word é declarado uma variável do tipo Variant. Isso significa, em particular, que para chamar métodos e acessar propriedades, você deve saber o que são.

04

de 07

O projeto de verificação ortográfica - TWordApplication, TWordDocument

O Projeto Feitiço em Tempo de Design
O Projeto Feitiço em Tempo de Design.

Para criar um projeto de verificação ortográfica, precisaremos de dois formulários: um usado para editar o texto e o outro para ver as sugestões de ortografia... mas vamos desde o começo.

Inicie o Delphi. Crie um novo projeto com um formulário em branco (formulário1, por padrão). Este será o formulário principal na verificação ortográfica com o projeto MS Word. Adicione um TMemo (Guia Padrão) e dois TButtons para o formulário. Adicione algum texto ao Memorando preenchendo a propriedade Linhas. Claro, com alguns erros de digitação. Selecione a guia Servidores e adicione TWordApplication e TWordDocument para o formulário. Altere o nome do componente TWordApplication de WordApplication1 para WordApp, WordDocument1 para WordDoc.

TWordApplication, TWordDocument

A propriedade publicada ConnectKind é usado para controlar se nos conectamos a uma instância do Word recém-iniciada ou a uma instância existente que já está em execução. Defina ConnectKind como ckRunningInstance.

Quando abrimos ou criamos um arquivo no Word, criamos um objeto de documento. Uma tarefa comum ao usar a automação do Word é especificar uma área em um documento e fazer algo com ele, como inserir texto e verificação ortográfica. Um objeto que representa uma área contígua em um documento é chamado de Intervalo.

05

de 07

O Projeto Verificação Ortográfica - Verificação Ortográfica / Substituir

GetSpellingSuggestions em tempo de design
GetSpellingSuggestions em tempo de design.

A idéia é percorrer o texto no memorando e analisá-lo em palavras delimitadas pelo espaço. Para cada palavra, chamamos MS Word para verificação ortográfica. O modelo de automação do Word contém o método SpellingErrors que permite verificar a ortografia do texto contido em algum intervalo.

O intervalo é definido para conter apenas a palavra analisada. O método SpellingErrors retorna uma coleção de palavras com erros ortográficos. Se essa coleção contiver mais que zero palavras, seguiremos em frente. Uma chamada para o método GetSpellingSuggestions, transmitindo a palavra incorreta, preenche uma coleção SpellingSuggestions de palavras de substituição sugeridas.

Passamos essa coleção para o formulário SpellCheck. Essa é a segunda forma em nosso projeto.

Para adicionar um novo formulário a um projeto, use Arquivo | Nova forma. Deixe que ele tenha o nome 'frSpellCheck'. Adicione três componentes TBitBtn neste formulário. Dois EditBox-es e um ListBox. Observe os mais três rótulos. O rótulo "Não está no dicionário" está "conectado" à caixa de edição edNID. O edNID simplesmente exibe a palavra incorreta. A caixa de listagem lbSuggestions listará os itens na coleção SpellingSuggestions. A sugestão de ortografia selecionada é colocada na caixa de edição edReplaceWith.

Os três BitButtons são usados ​​para cancelar a verificação ortográfica, ignorar a palavra atual e alterar a palavra incorreta com a da caixa de edição edReplaceWith. A propriedade ModalResult dos componentes BitBtn é usada quando se refere ao que o usuário clicou. O botão "Ignorar" tem sua propriedade ModalResult definida como mrIgnore, "Alterar" para mrOk e "Cancelar" para mrAbort.

O frSpellCheck possui uma variável de cadeia pública chamada sReplacedWord. Essa variável retorna o texto no edReplaceWith quando o usuário pressiona o botão "Alterar".

07

de 07

Thesaurus? Thesaurus!

Como bônus, o projeto tem o código para usar Dicionário de sinônimos da palavra. Usar o dicionário de sinônimos é bastante mais fácil. Não analisamos o texto; para a palavra selecionada, o método CheckSynonym é chamado. Este método exibe sua própria caixa de diálogo de seleção. Depois que uma nova palavra é selecionada, o conteúdo do intervalo de documentos do Word é usado para substituir a palavra original.

instagram story viewer