Use Delphi4.0 para controlar diretamente o Word97
Nº: QA003053
Data de criação: 15 de junho de 2000 Data da última modificação: 15 de junho de 2000
Categoria:
artigo :
Resumo: Amigos que jogaram PowerBuilder devem saber que a tecnologia mais importante em PB é a tecnologia DataWindow. É muito conveniente usá-la para projetar formulários, processar entrada de dados e criar relatórios. No entanto, a função de suporte a relatórios do Delphi é muito menor que a do PB. A versão profissional do Delphi inclui QuickReport, mas é uma coleção de componentes de relatórios licenciados pela QSD AS (uma empresa norueguesa). Claro, também podemos usar ferramentas de relatórios externos, como ReportSmith ou Cristal Report. Porém, os controles são um pouco complexos e falta integração entre eles e o Delphi.
Quando estávamos desenvolvendo a versão online do “Sistema de Gestão de Documentos Oficiais”, tentamos diferentes métodos na impressão de documentos oficiais. Nossa exigência é imprimir um documento oficial comum em formato de documento oficial, e o usuário pode realizar alguns controles simples em sua composição. Xiaohui tentou primeiro usar o QuickReport, mas o efeito foi muito insatisfatório, especialmente em termos de suporte para alguns formatos chineses. Mais tarde, Xiaohui ficou tão obcecado por ele que simplesmente escreveu o programa de impressão à mão, sem depender de ferramentas de design, o que foi uma pena. As habilidades de Xiaohui não eram boas o suficiente e ele não conseguia continuar jogando quando estava na metade da escrita, então teve que encontrar outro caminho. Aconteceu que naquele dia chegou uma cópia do "China Computer News" e havia um artigo sobre como usar o Excel em VB. Xiaohui pensou: Por que não usar o Delphi para enviar os dados para o Word e deixar o Word concluir o trabalho de edição e composição? Para ser franco, ele usa tecnologia de automação OLE.
Xiaohui tentou e o efeito acabou sendo bom. ——Embora para um programador o programa que ele escreve deva estar conectado ao aplicativo de outra pessoa para realizar plenamente suas próprias funções, é como inserir um pato em um bando de galinhas, e sempre há algo em seu coração. No entanto, devido às difíceis tarefas de desenvolvimento, o diretor passou a instá-lo a cada três ou quatro vezes. Embora tenha acabado sendo um pouco indefinido, Xiaohui não se importava. Ok, sem mais delongas, vamos dar uma olhada em como Xiaohui conseguiu isso——
Link: http://www.xiaohui.com
Moderador: Porque o link original expirou. Fornecemos o texto original aqui:
1. Prefácio
Amigos que jogaram PowerBuilder devem saber que a tecnologia mais importante em PB é a tecnologia DataWindow. É muito conveniente usá-la para projetar formulários, processar entrada de dados e criar relatórios. No entanto, a função de suporte a relatórios do Delphi é muito menor que a do PB. A versão profissional do Delphi inclui QuickReport, mas é uma coleção de componentes de relatórios licenciados pela QSD AS (uma empresa norueguesa). Claro, também podemos usar ferramentas de relatórios externos, como ReportSmith ou Cristal Report. Porém, os controles são um pouco complexos e falta integração entre eles e o Delphi.
Quando estávamos desenvolvendo a versão online do “Sistema de Gestão de Documentos Oficiais”, tentamos diferentes métodos na impressão de documentos oficiais. Nossa exigência é imprimir um documento oficial comum em formato de documento oficial, e o usuário pode realizar alguns controles simples em sua composição. Xiaohui tentou primeiro usar o QuickReport, mas o efeito foi muito insatisfatório, especialmente em termos de suporte para alguns formatos chineses. Mais tarde, Xiaohui ficou tão obcecado por ele que simplesmente escreveu o programa de impressão à mão, sem depender de ferramentas de design, o que foi uma pena. As habilidades de Xiaohui não eram boas o suficiente e ele não conseguia continuar jogando quando estava na metade da escrita, então teve que encontrar outro caminho. Aconteceu que naquele dia chegou uma cópia do "China Computer News" e havia um artigo sobre como usar o Excel em VB. Xiaohui pensou: Por que não usar o Delphi para enviar os dados para o Word e deixar o Word concluir o trabalho de edição e composição? Para ser franco, ele usa tecnologia de automação OLE.
Xiaohui tentou e o efeito acabou sendo bom. ——Embora para um programador, o programa que ele escreve deva estar conectado ao aplicativo de outra pessoa para realizar plenamente suas próprias funções, é como inserir um pato em um bando de galinhas, e sempre há algo em seu coração. No entanto, devido às difíceis tarefas de desenvolvimento, o diretor passou a instá-lo a cada três ou quatro vezes. Embora tenha acabado sendo um pouco indefinido, Xiaohui não se importava. Ok, sem mais delongas, vamos dar uma olhada em como Xiaohui conseguiu isso——
2. Design de formulário
Para ser franco, na verdade é muito simples. Xiaohui fez um programa de exemplo simples aqui:
1. Defina Font.name do Form1 como 'Songti' e Font.size como 12;
2. Coloque cinco controles tLable, label1-labe5, em sequência no formulário. Suas propriedades de legenda são 'número do documento', 'título', 'unidade receptora', 'texto' e 'unidade emissora'.
3. Coloque cinco controles de edição: tEdit, tEdit, tEdit, tMemo e tEdit em sequência no formulário. Seus atributos de nome são: ED_WenHao, ED_BiaoTi, ED_ShouWenDanWei, ED_ZhenWen e ED_FaWenDanWei respectivamente.
4. Coloque dois controles tButton em sequência no formulário. Seus atributos de nome são Btn_PRintToWord e btn_Quit, e seus atributos de legenda são 'Print' e 'Exit' respectivamente.
Para o formato de design do formulário, consulte a imagem anexada no final deste artigo.
3. Design de código
O segmento do programa é o seguinte:
unidade Unidade1;
interface
usa
Windows, Mensagens, SysUtils, Classes, Gráficos, Controles, Formulários, Diálogos,
StdCtrls,OleCtnrs,ComObj;
tipo
TForm1 = classe(TForm)
Rótulo1: TLabel;
Etiqueta2: TLabel;
Rótulo3: TLabel;
Etiqueta4: TLabel;
Rótulo5: TLabel;
ED_WenHao: TEdit;
ED_BiaoTi: TEdit;
ED_ShouWenDanWei: TEdit;
ED_ZhenWen: TMemo;
ED_FaWenDanWei: TEdit;
Btn_PrintToWord: TButton;
Btn_Quit: TButton;
procedimento Btn_PrintToWordClick(Remetente: TObject);
procedimento Btn_QuitClick(Remetente: TObject);
privado
{Declarações privadas}
público
{Declarações públicas}
fim;
var
Formulário1: TForm1;
implementação
{$R *.DFM}
//Iniciar: Os dados são enviados para o evento word
procedimento TForm1.Btn_PrintToWordClick(Sender: TObject);
vAR
VarWord: Variant;// usado ao criar WORD
começar
tentar
// 1. Crie OleObject e conecte word97
VarWord:=CreateOleObject('palavra.basic');
// 2. Crie um novo arquivo para Word97
VarWord.FileNew;
// 3. Defina o status básico do Word97
VarWord.ViewZoom75; //Define a proporção de exibição para 75%
VarWord.ViewPage; //Alterar para modo de exibição de página
// 4. Envia as informações do controle de dados atual para o Word97
// 4.1 Enviar dados do número do documento
VarWord.CenterPara; //Centrado
Varword.font('宋体'); //Definir a fonte
VarWord.FontSize(14); //Definir o tamanho da fonte
varword.insert(#13+#13+ ED_WenHao.Text+#13+#13+#13);
// 4.2 Envia dados de cabeçalho
VarWord.font('HeiBi');
VarWord.Fontsize(16);
VarWord.insert( ED_BiaoTi.text+#13);
// 4.3 Envia os dados da unidade receptora
VarWord.LeftPara; //alinhamento à esquerda
VarWord.Font('宋体');
VarWord.fontSize(14);
VarWord.Insert(#13+ ED_ShouWenDanWei.Text+':'+#13);
// 4.5 Enviar dados de texto
VarWord.fontSize(14);
VarWord.Insert(ED_ZhenWen.Text+#13);
// 4.6 Envia dados da unidade emissora
VarWord.RightPara; //alinhamento à direita
VarWord.fontSize(14);
VarWord.Insert(ED_FaWenDanWei.Text+#13);
// 5 configurações finais
VarWord.StartOfdocument; //Vá para o início do documento
VarWord.AppMaxiMize; //Define a janela para maximizar
VarWord.AppShow; //Mostrar aplicativo
exceto
showmessage('Falha ao executar o Microsoft Word!');
fim; //fim da tentativa
fim;
//fim: dados enviados para evento word
//Iniciar: evento de fechamento da janela
procedimento TForm1.Btn_QuitClick(Remetente: TObject);
começar
fechar;
fim;
//Fim: evento de fechamento da janela
fim.
//Este é o fim do programa principal
4. Notas
1. Descrição
1. Por ser apenas um exemplo de demonstração, ele não está conectado ao banco de dados em segundo plano. Na operação real, os controles tEdit e tMemo correspondentes podem ser substituídos pelos controles tDBEdit e tDBMemo, e tTable, tDataSource e outros controles podem ser adicionados para conectar. para o banco de dados.
2. Este guia não considera como imprimir em lote.
3. O programa é aprovado em Pwin97, Delphi 4.0 Professional Edition e Chinese Word97.
4. Como existem diferentes versões do Word, a Microsoft converteu algumas interfaces de automação OLE em cada idioma estrangeiro. Se você usar outras versões do Word, este programa poderá funcionar incorretamente.
5. Você pode obter os comandos do driver correspondentes através dos comandos de macro resumidos na ajuda do word97 ou pode clicar no menu [Ferramentas] no Word97 - clique em [Personalizar] - clique no botão [Teclado] para visualizar os comandos do Word exibidos em categorias; Palavra97.
2. Vantagens e Desvantagens
1. Através da tecnologia de automação OLE, o trabalho de composição e impressão de documentos oficiais é entregue ao Word, o que torna o controle mais conveniente para o usuário final.
2. No Word97, se os dados forem modificados, eles não poderão ser enviados de volta ao programa principal que os chamou e refletidos no banco de dados. Essa é a inconveniência disso.
3. Este exemplo é apenas um aplicativo em circunstâncias especiais. Se você deseja imprimir um grande número de etiquetas de dados e criar tabelas, Xiaohui acha que é mais flexível usar relatórios.
Fonte do artigo: A jornada de Xiaohui como programador .