In praktischen Anwendungen stellte der Autor fest, dass sich der Inhalt des Berichts selten ändert, das Schriftartformat und das Layout jedoch häufig geändert werden und Benutzer manchmal nicht den tatsächlichen Inhalt der Datenbank ändern möchten, sondern den Berichtsinhalt für bestimmte Anforderungen ändern möchten. Wenn Sie ReportSmith verwenden, können Sie das erstere Problem lösen, aber Sie können nichts gegen das letztere tun, und die Benutzeroberfläche ist auf Englisch, was für Benutzer nicht geeignet ist. Wenn Sie die TQReport-Berichtskomponente in 3.0 verwenden, kann keines von beiden in Echtzeit gelöst werden und der Originalcode muss geändert und neu kompiliert werden, bevor er verwendet werden kann. Durch die Verwendung von Word und Excel können die oben genannten Mängel vollständig behoben werden. Die spezifische Implementierung ist wie folgt (am Beispiel der Word-Implementierung):
Bearbeiten Sie zunächst mit Word das Berichtsformat, gestalten Sie das Format, ersetzen Sie die auszugebenden Datenelemente durch Formularfelder und benennen Sie sie. Hier gehen wir vorübergehend davon aus, dass die Formularfelder Item1 und Item2 (beide Texttyp) vorhanden sind, speichern dieses Dokument als Vorlagendatei Beispiel.dot und gehen dann wie folgt vor:
1) Führen Sie Delphi3 aus, fügen Sie eine TDdeClientCov-Komponente in der auf Form1 festgelegten Systemkomponente hinzu, nennen Sie sie DdeExample, setzen Sie ihren ConnectMode auf „ddeManual“ (manueller Modus); setzen Sie „Serviceapplication“ auf „WinWord“.
2) Schreiben Sie einen benutzerdefinierten Prozess zum Aktivieren von Word wie folgt:
PROcedure Tform1.WordActive(Cmds: TStrings);
var
WordPath: String;
beginnen
if(not DdeExample.OpenLink) then {Bestimmen Sie, ob es dynamisch verknüpft ist}
beginnen
if(FindWindow('OpusApp', nil)=0) then
beginnen
WordPath := 'C:msofficewinword';
if(WordPath=') dann
ShowMessage('Chinesisches Word ist nicht installiert oder der Pfad ist nicht festgelegt. Bitte installieren und legen Sie die chinesische Version von Word fest.')
sonst beginnen
DdeExample.ServiceApplication := WordPath+'Winword.exe';
if(DdeExample.OpenLink) then {wenn der Makrobefehl dynamisch verknüpft wurde}
DdeExample.ExecuteMacroLines(Cmds,False)
anders
ShowMessage('Die chinesische Version von Word kann nicht gestartet werden!');
DdeExample.ServiceApplication := 'WinWord.exe';
Ende;
Ende
else begin{wenn der Makrobefehl dynamisch verknüpft wurde}
DdeExample.ExecuteMacroLines(Cmds,False);
Ende;
Ende
anders
DdeExample.ExecuteMacroLines(Cmds,false);
Ende;
Fügen Sie dem privaten Deklarationsbereich Folgendes hinzu:
procedure ActiveWord(Cmds: TStrings);
3) Fügen Sie eine Schaltfläche Button1 zu Form1 hinzu und schreiben Sie den folgenden Code in sein onclick-Ereignis:
procedure TForm1.Button1Click(Sender: TObject);
var
Cmds:TStringList;{Cmds erstellen}
TempItem1,TempItem2:String;
beginnen
cmds:=TStringList.Create;
cmds.Clear;
TempItem1:='Datenelement eins';
TempItem2:='Datenelement zwei';
mit Cmds tun
beginnen
Klar;
Add('[FileNew.Template ="Example.Dot″]');{Vorlagendatei example.Dot öffnen}
Add('[AppMaximize]');{Document Maximize}
Add('[SetFormResult "Item1",″'+TempItem1+'″]');{Daten TempItem1 an Formularfeld Item1 übergeben}
Add('[SetFormResult "Item2",'+TempItem2+'"]);{Daten TempItem2 an Formularfeld Item2 übergeben}
Ende;
WordActive(DdeExample,Cmds);{Benutzerdefinierten Prozess aufrufen}
Cmds.Free;{Release Cmds}
Ende;
Führen Sie dieses Programm aus, klicken Sie auf Button1. Sie können feststellen, dass Word gestartet ist und zwei Datenelemente auf dem Bildschirm angezeigt werden: Datenelement eins und Datenelement zwei. Schließlich können Sie das Format und die Daten dieses Berichts nach Belieben ändern, da dieser Bericht nichts mit der spezifischen Anwendung zu tun hat.
In diesem Beispiel wird Chinese Word6 oder Chinese Word7 verwendet. Da die Makrobefehle von Word97 in Visual Basic-Anweisungen geändert wurden, ändern Sie bitte die Makrobefehle in die entsprechenden Codes, wenn Sie Word97 zur Implementierung verwenden möchten.
Dies ist ein einfaches Beispiel. Sie können die Makroaufzeichnungsfunktion von Word verwenden, um weitere Makros aufzuzeichnen (z. B. das automatische Generieren von Tabellen, das Füllen von Text, das Ändern von Schriftarten und andere Makrobefehle) und diese mit verschiedenen Tabellen in der Datenbank zu verbinden und hinzuzufügen zu Cmds wiederum können Sie komplexere Funktionen erreichen, die Sie benötigen.