Dans les applications pratiques, l'auteur a constaté que le contenu du rapport change rarement, mais que son format de police et sa mise en page changent souvent, et parfois les utilisateurs ne souhaitent pas modifier le contenu réel de la base de données mais souhaitent modifier le contenu du rapport pour certains besoins. Si vous utilisez ReportSmith, vous pouvez résoudre le premier problème, mais vous ne pouvez rien faire pour le second, et son interface est en anglais, ce qui ne convient pas aux utilisateurs. Si vous utilisez le composant de rapport TQReport dans la version 3.0, aucun des deux ne peut être résolu en temps réel et le code d'origine doit être modifié et recompilé avant de pouvoir être utilisé. L'utilisation de Word et Excel peut complètement surmonter les inconvénients ci-dessus. L'implémentation spécifique est la suivante (en prenant l'implémentation de Word comme exemple) :
Utilisez d'abord Word pour modifier le format du rapport, présenter le format, remplacer les éléments de données à afficher par des champs de formulaire et les nommer. Ici, nous supposons temporairement qu'il existe des champs de formulaire Item1 et Item2 (tous deux de type texte), enregistrez ce document en tant que fichier modèle Exemple.dot, puis procédez comme suit :
1) Exécutez Delphi3, ajoutez un composant TDdeClientCov dans le composant Système défini sur Form1, nommez-le DdeExample, définissez son ConnectMode sur ddeManual (mode manuel) ; définissez DdeService sur '(WinWord)' ; définissez Serviceapplication sur 'WinWord'' ;
2) Écrivez un processus personnalisé pour activer Word, comme suit :
PRocédure Tform1.WordActive(Cmds: TStrings);
var
WordPath : chaîne ;
commencer
if(not DdeExample.OpenLink) then {déterminer s'il est lié dynamiquement}
commencer
si(FindWindow('OpusApp', nil)=0) alors
commencer
WordPath := 'C:msofficewinword';
si(WordPath=') alors
ShowMessage('Le mot chinois n'est pas installé ou le chemin n'est pas défini, veuillez installer et définir la version chinoise de Word.')
sinon commencer
DdeExample.ServiceApplication := WordPath+'Winword.exe';
if(DdeExample.OpenLink) then {si la macro-commande a été liée dynamiquement}
DdeExample.ExecuteMacroLines (Cmds, False)
autre
ShowMessage('Impossible de démarrer la version chinoise de Word !');
DdeExample.ServiceApplication := 'WinWord.exe';
fin;
fin
sinon commencez {si la macro-commande a été liée dynamiquement}
DdeExample.ExecuteMacroLines(Cmds,False);
fin;
fin
autre
DdeExample.ExecuteMacroLines(Cmds,false);
fin;
Ajoutez ce qui suit à la zone de déclaration privée :
procédure ActiveWord(Cmds: TStrings);
3) Ajoutez un bouton Button1 à Form1 et écrivez le code suivant dans son événement onclick :
procédure TForm1.Button1Click(Expéditeur : TObject);
var
Cmds : TStringList ; {Créer une commande}
TempItem1,TempItem2 : chaîne ;
commencer
cmds:=TStringList.Create;
cmds.Clear;
TempItem1:='Élément de données un';
TempItem2:='Élément de données deux';
avec Cmds faire
commencer
Clair;
Add('[FileNew.Template ="Example.Dot″]');{Ouvrir le fichier modèle Exemple.Dot}
Ajouter('[AppMaximize]');{Document Maximize}
Add('[SetFormResult "Item1",″'+TempItem1+'″]');{Transmettre les données TempItem1 au champ de formulaire Item1}
Add('[SetFormResult "Item2","'+TempItem2+'"]);{Transmettre les données TempItem2 au champ de formulaire Item2}
fin;
WordActive(DdeExample,Cmds);{Appeler le processus personnalisé}
Cmds.Free ; {Version Cmds}
fin;
Exécutez ce programme, cliquez sur Bouton1, vous pouvez constater que Word est démarré et deux éléments de données apparaissent à l'écran : élément de données un ; élément de données deux. Enfin, vous pouvez modifier à volonté le format et les données de ce rapport, car ce rapport n'a rien à voir avec l'application spécifique.
Dans cet exemple, le mot chinois 6 ou le mot chinois 7 est utilisé. Étant donné que les macro-commandes de Word97 ont été modifiées en instructions Visual Basic, si vous souhaitez utiliser Word97 pour l'implémenter, veuillez modifier les macro-commandes dans les codes correspondants.
Ceci est un exemple simple. Vous pouvez utiliser la fonction d'enregistrement de macros de Word pour enregistrer plus de macros (telles que la génération automatique de tableaux, le remplissage de texte, la modification de polices et d'autres commandes de macro), les connecter à diverses tables de la base de données et les ajouter. à Cmds à votre tour, vous pouvez réaliser les fonctions plus complexes dont vous avez besoin.