Utilice Delphi4.0 para controlar directamente Word97
No.: QA003053
Fecha de creación: 15 de junio de 2000 Fecha de última modificación: 15 de junio de 2000
Categoría:
artículo :
Resumen: Los amigos que han jugado PowerBuilder deben saber que la tecnología más importante de PB es su tecnología DataWindow. Es muy conveniente usarla para diseñar formularios, procesar el ingreso de datos y diseñar informes. Sin embargo, la función de soporte de informes de Delphi es mucho menor que la de PB. La versión profesional de Delphi incluye QuickReport, pero es una colección de componentes de informes con licencia de QSD AS (una empresa noruega). Por supuesto, también podemos utilizar herramientas de informes externas, como ReportSmith o Cristal Report. Sin embargo, los controles son un poco complejos y falta integración entre ellos y Delphi.
Cuando estábamos desarrollando la versión en línea del "Sistema de gestión de documentos oficiales", probamos diferentes métodos al imprimir documentos oficiales. Nuestro requisito es imprimir un documento oficial ordinario en formato de documento oficial, y el usuario puede realizar un control simple sobre su composición. Xiaohui intentó usar QuickReport por primera vez, pero el efecto fue muy insatisfactorio, especialmente en términos de soporte para algunos formatos chinos. Más tarde, Xiaohui estaba tan obsesionado con él que simplemente escribió el programa de impresión a mano sin depender de herramientas de diseño, lo cual fue una lástima. Las habilidades de Xiaohui no eran lo suficientemente buenas y no podía seguir jugando cuando estaba a la mitad de escribir, por lo que tuvo que encontrar otra manera. Sucedió que ese día llegó una copia de "China Computer News" y había un artículo sobre cómo usar Excel en VB. Xiaohui pensó: ¿Por qué no utilizar Delphi para enviar los datos a Word y dejar que Word complete el trabajo de edición y composición tipográfica? Para decirlo sin rodeos, utiliza tecnología de automatización OLE.
Xiaohui lo intentó y el efecto resultó estar bien. ——Aunque para un programador, el programa que escribe debe estar conectado a la aplicación de otra persona para realizar plenamente sus propias funciones, es como insertar un pato en una bandada de pollos, y siempre hay algo en su corazón. Sin embargo, debido a las apretadas tareas de desarrollo, el director vino a instarlo cada tres o cuatro veces. Aunque terminó siendo un poco anodino, a Xiaohui no le importaba nada. Bien, sin más preámbulos, echemos un vistazo a cómo Xiaohui lo logró——
Enlace: http://www.xiaohui.com
Moderador: Porque el enlace original ha caducado. Os dejamos el texto original aquí:
1. Prefacio
Los amigos que han jugado PowerBuilder deben saber que la tecnología más importante de PB es su tecnología DataWindow. Es muy conveniente usarla para diseñar formularios, procesar el ingreso de datos y diseñar informes. Sin embargo, la función de soporte de informes de Delphi es mucho menor que la de PB. La versión profesional de Delphi incluye QuickReport, pero es una colección de componentes de informes con licencia de QSD AS (una empresa noruega). Por supuesto, también podemos utilizar herramientas de informes externas, como ReportSmith o Cristal Report. Sin embargo, los controles son un poco complejos y falta integración entre ellos y Delphi.
Cuando estábamos desarrollando la versión en línea del "Sistema de gestión de documentos oficiales", probamos diferentes métodos al imprimir documentos oficiales. Nuestro requisito es imprimir un documento oficial ordinario en formato de documento oficial, y el usuario puede realizar un control simple sobre su composición. Xiaohui intentó usar QuickReport por primera vez, pero el efecto fue muy insatisfactorio, especialmente en términos de soporte para algunos formatos chinos. Más tarde, Xiaohui estaba tan obsesionado con él que simplemente escribió el programa de impresión a mano sin depender de herramientas de diseño, lo cual fue una lástima. Las habilidades de Xiaohui no eran lo suficientemente buenas y no podía seguir jugando cuando estaba a la mitad de escribir, por lo que tuvo que encontrar otra manera. Sucedió que ese día llegó una copia de "China Computer News" y había un artículo sobre cómo usar Excel en VB. Xiaohui pensó: ¿Por qué no utilizar Delphi para enviar los datos a Word y dejar que Word complete el trabajo de edición y composición tipográfica? Para decirlo sin rodeos, utiliza tecnología de automatización OLE.
Xiaohui lo intentó y el efecto resultó estar bien. ——Aunque para un programador, el programa que escribe debe estar conectado a la aplicación de otra persona para realizar plenamente sus propias funciones, es como insertar un pato en una bandada de pollos, y siempre hay algo en su corazón. Sin embargo, debido a las apretadas tareas de desarrollo, el director vino a instarlo cada tres o cuatro veces. Aunque terminó siendo un poco anodino, a Xiaohui no le importaba nada. Bien, sin más preámbulos, echemos un vistazo a cómo Xiaohui lo logró——
2. Diseño de formularios
Para decirlo sin rodeos, en realidad es muy simple. Xiaohui hizo un programa de muestra simple aquí:
1. Establezca el nombre de fuente de Form1 en 'Songti' y el tamaño de fuente en 12;
2. Coloque cinco controles tLable, etiqueta1-etiqueta5, en secuencia en el formulario. Sus propiedades de título son 'número de documento', 'título', 'unidad receptora', 'texto' y 'unidad emisora'.
3. Coloque cinco controles de edición: tEdit, tEdit, tEdit, tMemo y tEdit en secuencia en el formulario. Sus atributos de nombre son: ED_WenHao, ED_BiaoTi, ED_ShouWenDanWei, ED_ZhenWen y ED_FaWenDanWei respectivamente.
4. Coloque dos controles tButton en secuencia en el formulario. Sus atributos de nombre son Btn_PRintToWord y btn_Quit, y sus atributos de Título son 'Imprimir' y 'Salir' respectivamente.
Para conocer el formato de diseño del formulario, consulte la imagen adjunta al final de este artículo.
3. Diseño de código
El segmento del programa es el siguiente:
unidad Unidad1;
interfaz
usos
Windows, Mensajes, SysUtils, Clases, Gráficos, Controles, Formularios, Cuadros de diálogo,
StdCtrls,OleCtnrs,ComObj;
tipo
TForm1 = clase(TForm)
Etiqueta1: TLabel;
Etiqueta2: TLabel;
Etiqueta3: TLabel;
Etiqueta4: TLabel;
Etiqueta5: TLabel;
ED_WenHao: TEdit;
ED_BiaoTi: TEdit;
ED_ShouWenDanWei: TEdit;
ED_ZhenWen: TMemo;
ED_FaWenDanWei: TEdit;
Btn_PrintToWord: TButton;
Btn_Salir: TButton;
procedimiento Btn_PrintToWordClick (Remitente: TObject);
procedimiento Btn_QuitClick (Remitente: TObject);
privado
{Declaraciones privadas}
público
{Declaraciones públicas}
fin;
var
Formulario1: TForm1;
implementación
{$R *.DFM}
//Inicio: los datos se envían al evento de palabra
procedimiento TForm1.Btn_PrintToWordClick(Remitente: TObject);
var
VarWord: Variante;// usado al crear WORD
comenzar
intentar
// 1. Crea OleObject y conecta word97
VarWord:=CreateOleObject('palabra.basic');
// 2. Crea un nuevo archivo para Word97
VarWord.FileNew;
// 3. Establecer el estado básico de Word97
VarWord.ViewZoom75; //Establece la proporción de visualización al 75%
VarWord.ViewPage; //Cambiar al modo de visualización de página
// 4. Envía la información del control de datos actual a Word97
// 4.1 Enviar datos del número de documento
VarWord.CenterPara; //Centrado
Varword.font('宋体'); //Establece la fuente
VarWord.FontSize(14); //Establece el tamaño de fuente
varword.insert(#13+#13+ ED_WenHao.Text+#13+#13+#13);
// 4.2 Enviar datos de encabezado
VarWord.font('HeiBi');
VarWord.Fontsize(16);
VarWord.insert( ED_BiaoTi.text+#13);
// 4.3 Enviar los datos de la unidad receptora
VarWord.LeftPara; //Alineado a la izquierda
VarWord.Font('宋体');
VarWord.fontSize(14);
VarWord.Insert(#13+ ED_ShouWenDanWei.Text+':'+#13);
// 4.5 Enviar datos de texto
VarWord.fontSize(14);
VarWord.Insert( ED_ZhenWen.Text+#13);
// 4.6 Enviar datos de la unidad emisora
VarWord.RightPara; //alineación a la derecha
VarWord.fontSize(14);
VarWord.Insert( ED_FaWenDanWei.Text+#13);
// 5 configuraciones finales
VarWord.StartOfdocument; //Ir al principio del documento
VarWord.AppMaxiMize; //Establece la ventana para maximizar
VarWord.AppShow; //Mostrar aplicación
excepto
showmessage('¡Error al ejecutar Microsoft Word!');
fin; //fin del intento
fin;
//fin: datos enviados al evento de palabra
//Inicio: evento de cierre de ventana
procedimiento TForm1.Btn_QuitClick(Remitente: TObject);
comenzar
cerca;
fin;
//Fin: evento de cierre de ventana
fin.
// Este es el final del programa principal
4. Notas
1. Descripción
1. Debido a que es solo un ejemplo de demostración, no está conectado a la base de datos en segundo plano. En la operación real, los controles tEdit y tMemo correspondientes se pueden reemplazar con controles tDBEdit y tDBMemo, y se pueden agregar tTable, tDataSource y otros controles para conectarse. a la base de datos.
2. Esta guía no considera cómo imprimir por lotes.
3. El programa se aprobó bajo Pwin97, Delphi 4.0 Professional Edition y Chinese Word97.
4. Dado que existen diferentes versiones de Word, Microsoft ha convertido algunas interfaces de automatización OLE en cada idioma extranjero. Si utiliza otras versiones de Word, es posible que este programa se ejecute incorrectamente.
5. Puede obtener los comandos del controlador correspondientes a través de los comandos macro resumidos en la ayuda de Word97 o puede hacer clic en el menú [Herramientas] en Word97 - hacer clic en [Personalizar] - hacer clic en el botón [Teclado] para ver los comandos de Word mostrados en categorías en Palabra97.
2. Ventajas y desventajas
1. A través de la tecnología de automatización OLE, el trabajo de composición tipográfica e impresión de documentos oficiales se transfiere a Word, lo que hace que el control sea más conveniente para el usuario final.
2. En Word97, si se modifican los datos, no se pueden enviar de regreso al programa principal que los llamó y se reflejó en la base de datos. Ése es el inconveniente.
3. Este ejemplo es solo una aplicación en circunstancias especiales. Si desea imprimir una gran cantidad de etiquetas de datos y crear tablas, Xiaohui cree que es más flexible utilizar informes.
Fuente del artículo: El viaje de Xiaohui como programador .