Utilisez Delphi4.0 pour contrôler directement Word97
N° : QA003053
Date de création : 15 juin 2000 Date de dernière modification : 15 juin 2000
Catégorie:
article :
Résumé : Les amis qui ont joué à PowerBuilder doivent savoir que la technologie la plus importante de PB est sa technologie DataWindow. Il est très pratique de l'utiliser pour concevoir des formulaires, traiter la saisie de données et concevoir des rapports. Cependant, la fonction de prise en charge des rapports de Delphi est bien inférieure à celle de PB. La version professionnelle de Delphi inclut QuickReport, mais il s'agit d'un ensemble de composants de rapport sous licence par QSD AS (une société norvégienne). Bien entendu, nous pouvons également utiliser des outils de reporting externes, tels que ReportSmith ou Cristal Report. Cependant, les contrôles sont un peu complexes et il y a un manque d'intégration entre eux et Delphi.
Lorsque nous développions la version en ligne du « Système de gestion des documents officiels », nous avons essayé différentes méthodes pour l'impression des documents officiels. Notre exigence est d'imprimer un document officiel ordinaire au format de document officiel, et l'utilisateur peut effectuer un contrôle simple sur sa composition. Xiaohui a d'abord essayé d'utiliser QuickReport, mais l'effet a été très insatisfaisant, notamment en termes de prise en charge de certains formats chinois. Plus tard, Xiaohui en était tellement obsédé qu'il a simplement écrit le programme d'impression à la main sans s'appuyer sur des outils de conception, ce qui était dommage. Les compétences de Xiaohui n'étaient pas assez bonnes et il ne pouvait pas continuer à jouer à mi-chemin de l'écriture, il a donc dû trouver un autre moyen. Il se trouve qu'une copie de "China Computer News" est arrivée ce jour-là, et il y avait un article sur la façon d'utiliser Excel en VB. Xiaohui a pensé : Pourquoi ne pas utiliser Delphi pour envoyer les données vers Word et laisser Word terminer le travail d'édition et de composition ? Pour parler franchement, il utilise la technologie d’automatisation OLE.
Xiaohui a essayé et l'effet s'est avéré bon. ——Bien que pour un programmeur, le programme qu'il écrit doit être connecté à l'application de quelqu'un d'autre pour réaliser pleinement ses propres fonctions, c'est comme insérer un canard dans un troupeau de poulets, et il y a toujours quelque chose dans son cœur. Cependant, en raison des tâches de développement serrées, le réalisateur est venu le presser toutes les trois ou quatre fois. Même si cela a fini par être un peu indescriptible, Xiaohui s'en fichait. D'accord, sans plus tarder, voyons comment Xiaohui y est parvenu——
Lien : http://www.xiaohui.com
Modérateur : Parce que le lien d'origine a expiré. Nous fournissons le texte original ici :
1. Préface
Les amis qui ont joué à PowerBuilder doivent savoir que la technologie la plus importante de PB est sa technologie DataWindow. Il est très pratique de l'utiliser pour concevoir des formulaires, traiter la saisie de données et concevoir des rapports. Cependant, la fonction de prise en charge des rapports de Delphi est bien inférieure à celle de PB. La version professionnelle de Delphi inclut QuickReport, mais il s'agit d'un ensemble de composants de rapport sous licence par QSD AS (une société norvégienne). Bien entendu, nous pouvons également utiliser des outils de reporting externes, tels que ReportSmith ou Cristal Report. Cependant, les contrôles sont un peu complexes et il y a un manque d'intégration entre eux et Delphi.
Lorsque nous développions la version en ligne du « Système de gestion des documents officiels », nous avons essayé différentes méthodes pour l'impression des documents officiels. Notre exigence est d'imprimer un document officiel ordinaire au format de document officiel, et l'utilisateur peut effectuer un contrôle simple sur sa composition. Xiaohui a d'abord essayé d'utiliser QuickReport, mais l'effet a été très insatisfaisant, notamment en termes de prise en charge de certains formats chinois. Plus tard, Xiaohui en était tellement obsédé qu'il a simplement écrit le programme d'impression à la main sans s'appuyer sur des outils de conception, ce qui était dommage. Les compétences de Xiaohui n'étaient pas assez bonnes et il ne pouvait pas continuer à jouer à mi-chemin de l'écriture, il a donc dû trouver un autre moyen. Il se trouve qu'une copie de "China Computer News" est arrivée ce jour-là, et il y avait un article sur la façon d'utiliser Excel en VB. Xiaohui a pensé : Pourquoi ne pas utiliser Delphi pour envoyer les données vers Word et laisser Word terminer le travail d'édition et de composition ? Pour parler franchement, il utilise la technologie d’automatisation OLE.
Xiaohui a essayé et l'effet s'est avéré bon. ——Bien que pour un programmeur, le programme qu'il écrit doit être connecté à l'application de quelqu'un d'autre pour réaliser pleinement ses propres fonctions, c'est comme insérer un canard dans un troupeau de poulets, et il y a toujours quelque chose dans son cœur. Cependant, en raison des tâches de développement serrées, le réalisateur est venu le presser toutes les trois ou quatre fois. Même si cela a fini par être un peu indescriptible, Xiaohui s'en fichait. D'accord, sans plus tarder, voyons comment Xiaohui y est parvenu——
2. Conception du formulaire
Pour parler franchement, c’est en fait très simple. Xiaohui a créé un exemple de programme simple ici :
1. Définissez le Font.name de Form1 sur « Songti » et Font.size sur 12 ;
2. Placez cinq contrôles tLable, label1-labe5, en séquence sur le formulaire. Leurs propriétés de légende sont « numéro de document », « titre », « unité de réception », « texte » et « unité d'envoi ».
3. Placez cinq contrôles d'édition : tEdit, tEdit, tEdit, tMemo et tEdit en séquence sur le formulaire. Leurs attributs de nom sont respectivement : ED_WenHao, ED_BiaoTi, ED_ShouWenDanWei, ED_ZhenWen et ED_FaWenDanWei.
4. Placez deux contrôles tButton en séquence sur le formulaire. Leurs attributs de nom sont Btn_PRintToWord et btn_Quit, et leurs attributs Caption sont respectivement 'Print' et 'Exit'.
Pour le format de conception du formulaire, veuillez vous référer à l'image ci-jointe à la fin de cet article.
3. Conception des codes
Le segment du programme est le suivant :
unité Unité1 ;
interface
utilise
Windows, messages, SysUtils, classes, graphiques, contrôles, formulaires, boîtes de dialogue,
StdCtrls,OleCtnrs,ComObj ;
taper
TForm1 = classe(TForm)
Étiquette1 : TLabel ;
Étiquette2 : TLabel ;
Étiquette3 : TLabel ;
Étiquette4 : TLabel ;
Étiquette5 : TLabel ;
ED_WenHao : TEdit ;
ED_BiaoTi : TEdit ;
ED_ShouWenDanWei : TEdit ;
ED_ZhenWen : TMémo ;
ED_FaWenDanWei : TEdit ;
Btn_PrintToWord : TButton ;
Btn_Quit : TButton ;
procédure Btn_PrintToWordClick(Expéditeur : TObject);
procédure Btn_QuitClick(Expéditeur : TObject);
privé
{Déclarations privées}
publique
{Déclarations publiques}
fin;
var
Formulaire1 : TForm1 ;
mise en œuvre
{$R *.DFM}
//Démarrer : les données sont envoyées à l'événement Word
procédure TForm1.Btn_PrintToWordClick(Expéditeur : TObject);
VAR
VarWord : Variante ;// utilisé lors de la création de WORD
commencer
essayer
// 1. Créez OleObject et connectez word97
VarWord:=CreateOleObject('word.basic');
// 2. Créez un nouveau fichier pour Word97
VarWord.FileNew;
// 3. Définir l'état de base de Word97
VarWord.ViewZoom75; //Définir le taux d'affichage à 75 %
VarWord.ViewPage; // Passage en mode d'affichage des pages
// 4. Envoyer les informations sur le contrôle de données actuel à Word97
// 4.1 Envoyer les données du numéro de document
VarWord.CenterPara; // Centré
Varword.font('宋体'); //Définir la police
VarWord.FontSize(14); //Définir la taille de la police
varword.insert(#13+#13+ ED_WenHao.Text+#13+#13+#13);
// 4.2 Envoyer les données d'en-tête
VarWord.font('HeiBi');
VarWord.Fontsize(16);
VarWord.insert( ED_BiaoTi.text+#13);
// 4.3 Envoyer les données de l'unité de réception
VarWord.LeftPara; //Aligné à gauche
VarWord.Font('宋体');
VarWord.fontSize(14);
VarWord.Insert(#13+ ED_ShouWenDanWei.Text+':'+#13);
// 4.5 Envoyer des données texte
VarWord.fontSize(14);
VarWord.Insert( ED_ZhenWen.Text+#13);
// 4.6 Envoyer les données de l'unité émettrice
VarWord.RightPara; //alignement à droite
VarWord.fontSize(14);
VarWord.Insert( ED_FaWenDanWei.Text+#13);
// 5 réglages finaux
VarWord.StartOfdocument; //Aller au début du document
VarWord.AppMaxiMize; //Définit la fenêtre pour maximiser
VarWord.AppShow; //Afficher l'application
sauf
showmessage('Échec de l'exécution de Microsoft Word !');
fin; //fin de l'essai
fin;
//fin : données envoyées à l'événement Word
//Démarrer : événement de fermeture de fenêtre
procédure TForm1.Btn_QuitClick(Expéditeur : TObject);
commencer
fermer;
fin;
//Fin : événement de fermeture de la fenêtre
fin.
// C'est la fin du programme principal
4. Remarques
1. Description
1. Comme il ne s'agit que d'un exemple de démonstration, il n'est pas connecté à la base de données d'arrière-plan. En fonctionnement réel, les contrôles tEdit et tMemo correspondants peuvent être remplacés par les contrôles tDBEdit et tDBMemo, et les contrôles tTable, tDataSource et autres peuvent être ajoutés pour se connecter. à la base de données.
2. Ce guide ne traite pas de la manière d'imprimer par lots.
3. Le programme est passé sous Pwin97, Delphi 4.0 Professional Edition et Chinese Word97.
4. Puisqu'il existe différentes versions de Word, Microsoft a converti certaines interfaces d'automatisation OLE dans chaque langue étrangère. Si vous utilisez d'autres versions de Word, ce programme risque de ne pas fonctionner correctement.
5. Vous pouvez obtenir les commandes de pilote correspondantes via les commandes de macro résumées dans l'aide de Word97 ; ou vous pouvez cliquer sur le menu [Outils] sous Word97 - cliquer sur [Personnaliser] - cliquer sur le bouton [Clavier] pour afficher les commandes Word affichées dans les catégories dans Mot97.
2. Avantages et inconvénients
1. Grâce à la technologie d'automatisation OLE, le travail de composition et d'impression des documents officiels est confié à Word, ce qui rend le contrôle plus pratique pour l'utilisateur final.
2. Dans Word97, si les données sont modifiées, elles ne peuvent pas être renvoyées au programme principal qui les a appelées et reflétées dans la base de données. C'est là tout l'inconvénient.
3. Cet exemple n'est qu'une application dans des circonstances particulières. Si vous souhaitez imprimer un grand nombre d'étiquettes de données et créer des tableaux, Xiaohui pense qu'il est plus flexible d'utiliser des rapports.
Source de l'article : Le parcours de Xiaohui en tant que programmeur .