01
de 07
¿Qué es la automatización (OLE)? ¿Qué es el servidor de automatización? ¿Qué es el cliente de automatización?
Supongamos que está desarrollando un editor HTML como Kit HTML. Como cualquier otro editor de texto, su aplicación debe contener algún tipo de sistema de corrección ortográfica. ¿Por qué comprar componentes de corrección ortográfica o escribirlos desde cero cuando puede usar fácilmente MS Word?
Automatización OLE
una aplicación puede controlar a otra
cliente de automatización
servidor de automatización
La automatización (también conocida como Automatización OLE) es una característica que los programas usan para exponer sus objetos a herramientas de desarrollo, lenguajes macro y otros programas que admiten la automatización. Por ejemplo, Microsoft Outlook puede exponer objetos para enviar y recibir correo electrónico, para programar y para administrar contactos y tareas.
Al usar Word Automation (servidor), podemos usar Delphi (cliente) para crear dinámicamente un nuevo documento, agregar algo de texto que queremos revisar y luego Word debe revisar la ortografía. Si mantenemos Microsoft Word minimizado, ¡nuestros usuarios nunca lo sabrán! Gracias a la interfaz OLE de Microsoft Word, podemos hacer un viaje secundario desde Delphi y buscar formas de hacer trampa al desarrollar nuestra versión del editor de Bloc de notas :)
Solo hay un problema técnico;) Los usuarios de la aplicación necesitan tener instalado Word. Pero no dejes que esto te detenga.
Por supuesto, para dominar completamente el uso de la automatización en sus aplicaciones, debe tener un conocimiento detallado de las aplicaciones que está integrando, en este caso, MS Word.
Para que sus programas "Office" funcionen, el usuario debe ser propietario de la aplicación que actúa como servidor de Automatización. En nuestro caso, MS Word debe instalarse en la máquina del usuario.
02
de 07
Conexión a Word: "Hello Word" Enlace temprano vs. Enlace tardío
Hay varios pasos principales y tres formas principales de automatizar Word desde Delphi.
Delphi> = 5 - Componentes del servidor Office XX
TWordApplication
TWordDocument
Delphi 3,4 - Enlace temprano
Bibliotecas de tipos
Para usar la biblioteca de tipos de Word en Delphi (versión 3 o 4) seleccione el Proyecto | Menú Importar biblioteca de tipos... y elija el archivo msword8.olb ubicado en el directorio "Office" de Microsoft Office. Esto creará el archivo "Word_TLB.pas", que es la traducción pascal de objetos de la biblioteca de tipos. Incluir Word_TLB en la lista de usos de cualquier unidad que accederá a las propiedades o métodos de Word. Hacer referencia a los métodos de Word utilizando la biblioteca de tipos se llama unión temprana.
Delphi 2 - Enlace tardío
Enlace tardío
debe evitarse, si es posible, ya que es mucho más fácil y rápido usar bibliotecas de tipos: el compilador ayuda detectando errores en la fuente. Cuando se usa el enlace tardío, Word se declara como una variable de tipo Variant. Esto en particular significa que para llamar a métodos y acceder a propiedades debe saber cuáles son.
04
de 07
El proyecto de corrección ortográfica: TWordApplication, TWordDocument
Para construir un proyecto de corrección ortográfica necesitaremos dos formas: una utilizada para editar el texto y la otra para ver las sugerencias de ortografía... pero, vamos desde el principio.
Inicia Delphi. Cree un nuevo proyecto con un formulario en blanco (formulario1, por defecto). Esta será la forma principal en el corrector ortográfico con el proyecto de MS Word. Agrega uno TMemo (Pestaña Estándar) y dos TButtons a la forma. Agregue texto a la nota que llena la propiedad Líneas. Por supuesto, con algunos errores tipográficos. Seleccione la pestaña Servidores y agregue TWordApplication y TWordDocument a la forma. Cambie el nombre del componente TWordApplication de WordApplication1 a WordApp, WordDocument1 a WordDoc.
TWordApplication, TWordDocument
La propiedad publicada. ConnectKind se usa para controlar si nos conectamos a una instancia de Word recién lanzada o a una instancia existente que ya se está ejecutando. Establezca ConnectKind en ckRunningInstance.
Cuando abrimos o creamos un archivo en Word, creamos un objeto Documento. Una tarea común cuando se usa la automatización de Word es especificar un área en un documento y luego hacer algo con él, como insertar texto y revisar la ortografía. Un objeto que representa un área contigua en un documento se llama Rango.
05
de 07
The Spell Check Project - Corrector ortográfico / Reemplazar
La idea es recorrer el texto del Memo y analizarlo en palabras delimitadas por espacios. Para cada palabra, llamamos a MS Word para revisar la ortografía. El modelo de automatización de Word contiene el método SpellingErrors que le permite verificar la ortografía del texto contenido en algunos Range.
El rango se define para contener solo la palabra que se acaba de analizar. El método SpellingErrors devuelve una colección de palabras mal escritas. Si esta colección contiene más de cero palabras, seguimos adelante. Una llamada al método GetSpellingSuggestions, que pasa la palabra mal escrita, llena una colección de palabras de reemplazo sugeridas de SpellingSuggestions.
Pasamos esta colección al formulario SpellCheck. Esa es la segunda forma en nuestro proyecto.
Para agregar un nuevo formulario a un proyecto, use Archivo | Nueva forma. Deje que tenga el nombre 'frSpellCheck'. Agregue tres componentes TBitBtn en este formulario. Dos EditBox-es y un ListBox. Tenga en cuenta las tres etiquetas más. La etiqueta "No en el diccionario" está "conectada" con el cuadro de edición edNID. El edNID simplemente muestra la palabra mal escrita. El cuadro de lista lbSuggestions enumerará los elementos de la colección SpellingSuggestions. La sugerencia de ortografía seleccionada se coloca en el cuadro de edición edReplaceWith.
Los tres BitButtons se usan para cancelar la corrección ortográfica, ignorar la palabra actual y cambiar la palabra mal escrita con la que está en el cuadro de edición edReplaceWith. La propiedad ModalResult de los componentes BitBtn se usa cuando se hace referencia a lo que el usuario ha hecho clic. El botón "Ignorar" tiene su propiedad ModalResult establecida en mrIgnore, "Cambiar" a mrOk y "Cancelar" a mrAbort.
FrSpellCheck tiene una variable de cadena pública llamada sReplacedWord. Esta variable devuelve el texto en edReplaceWith cuando el usuario presiona el botón "Cambiar".
07
de 07
¿Tesauro? ¡Tesauro!
Como beneficio adicional, el proyecto tiene el código para usar Diccionario de sinónimos de Word. Usar el tesauro es bastante más fácil. No analizamos el texto, para la palabra seleccionada se llama al método CheckSynónimos. Este método muestra su propio cuadro de diálogo de selección. Una vez que se selecciona una nueva palabra, el contenido del Rango de documentos de Word se usa para reemplazar la palabra original.