Dalam penerapan praktis, penulis menemukan bahwa isi laporan jarang berubah, namun format font dan tata letaknya sering berubah, dan terkadang pengguna tidak ingin mengubah isi database yang sebenarnya tetapi ingin mengubah isi laporan untuk kebutuhan tertentu. Jika Anda menggunakan ReportSmith, Anda dapat menyelesaikan masalah sebelumnya, tetapi Anda tidak dapat berbuat apa-apa terhadap masalah terakhir, dan antarmukanya dalam bahasa Inggris, yang tidak cocok untuk pengguna. Jika Anda menggunakan komponen laporan TQReport di 3.0, tidak ada yang dapat diselesaikan secara real-time, dan kode asli harus dimodifikasi dan dikompilasi ulang sebelum dapat digunakan. Penggunaan Word dan Excel dapat sepenuhnya mengatasi kekurangan di atas. Implementasi spesifiknya adalah sebagai berikut (mengambil implementasi Word sebagai contoh):
Pertama-tama gunakan Word untuk mengedit format laporan, menata format, mengganti item data yang akan dihasilkan dengan bidang formulir, dan memberi nama. Di sini kita berasumsi sementara bahwa ada bidang formulir Item1 dan Item2 (keduanya bertipe teks), simpan dokumen ini sebagai file templat Contoh.dot, lalu lanjutkan sebagai berikut:
1) Jalankan Delphi3, tambahkan komponen TDdeClientCov di komponen Sistem yang disetel ke Form1, beri nama DdeExample, setel ConnectMode ke ddeManual (mode manual); setel DdeService ke '(WinWord)';
2) Tulis proses khusus untuk mengaktifkan Word, sebagai berikut:
Prosedur Tform1.WordActive(Cmds: TStrings);
var
Jalur Kata: String;
mulai
if(bukan DdeExample.OpenLink) maka {tentukan apakah tertaut secara dinamis}
mulai
if(FindWindow('OpusApp', nil)=0) lalu
mulai
WordPath := 'C:msofficewinword';
jika(WordPath=') maka
ShowMessage('Word berbahasa Mandarin tidak diinstal atau jalurnya tidak disetel, silakan instal dan atur Word versi Mandarin.')
yang lain dimulai
DdeExample.ServiceApplication := WordPath+'Winword.exe';
if(DdeExample.OpenLink) maka {jika perintah makro telah ditautkan secara dinamis}
DdeExample.ExecuteMacroLines(Cmds,False)
kalau tidak
ShowMessage('Tidak dapat memulai Word versi Cina!');
DdeExample.ServiceApplication := 'WinWord.exe';
akhir;
akhir
else mulai{jika perintah makro telah ditautkan secara dinamis}
DdeExample.ExecuteMacroLines(Cmds,False);
akhir;
akhir
kalau tidak
DdeExample.ExecuteMacroLines(Cmds,false);
akhir;
Tambahkan yang berikut ini ke area deklarasi pribadi:
prosedur ActiveWord(Cmds: TStrings);
3) Tambahkan tombol Button1 ke Form1 dan tulis kode berikut di event onclick-nya:
prosedur TForm1.Button1Click(Pengirim: TObject);
var
Cmds:TStringList;{Buat Cmds}
TempItem1,TempItem2:String;
mulai
cmds:=TStringList.Buat;
cmds.Hapus;
TempItem1:='Data item satu';
TempItem2:='Data item kedua';
dengan Cmds lakukan
mulai
Jernih;
Tambah('[FileNew.Template ="Contoh.Dot″]');{Buka file templat Contoh.Dot}
Tambahkan('[AppMaximize]');{Maksimalkan Dokumen}
Add('[SetFormResult "Item1",″'+TempItem1+'″]');{Teruskan data TempItem1 ke kolom formulir Item1}
Add('[SetFormResult "Item2","'+TempItem2+'"]);{Teruskan data TempItem2 ke kolom formulir Item2}
akhir;
WordActive(DdeExample,Cmds);{Panggil proses kustom}
Cmds.Gratis;{Lepaskan Cmds}
akhir;
Jalankan program ini, klik Button1, Anda dapat menemukan bahwa Word dimulai, dan dua item data muncul di layar: item data satu; Terakhir, Anda dapat mengubah format dan data laporan ini sesuka hati, karena laporan ini tidak ada hubungannya dengan aplikasi spesifik.
Dalam contoh ini, Word6 berbahasa Mandarin atau Word7 berbahasa Mandarin digunakan. Karena perintah makro Word97 telah diubah menjadi pernyataan Visual Basic, jika Anda ingin menggunakan Word97 untuk mengimplementasikannya, silakan ubah perintah makro menjadi kode yang sesuai.
Ini adalah contoh sederhana. Anda bisa menggunakan fungsi perekaman makro Word untuk merekam lebih banyak makro (seperti membuat tabel secara otomatis, mengisi teks, mengubah font, dan perintah makro lainnya), dan menghubungkannya dengan berbagai tabel di database, dan menambahkannya. ke Cmds secara bergantian.