ในการใช้งานจริง ผู้เขียนพบว่าเนื้อหาของรายงานไม่ค่อยเปลี่ยนแปลง แต่รูปแบบแบบอักษรและเค้าโครงมักจะเปลี่ยนแปลง และบางครั้งผู้ใช้ไม่ต้องการแก้ไขเนื้อหาจริงของฐานข้อมูล แต่ต้องการเปลี่ยนเนื้อหารายงานสำหรับความต้องการบางอย่าง หากคุณใช้ ReportSmith คุณสามารถแก้ไขปัญหาเดิมได้ แต่คุณไม่สามารถทำอะไรกับปัญหาหลังได้ และอินเทอร์เฟซเป็นภาษาอังกฤษ ซึ่งไม่เหมาะสำหรับผู้ใช้ หากคุณใช้ส่วนประกอบรายงาน TQReport ใน 3.0 จะไม่สามารถแก้ไขได้แบบเรียลไทม์ และโค้ดต้นฉบับจะต้องได้รับการแก้ไขและคอมไพล์ใหม่ก่อนจึงจะสามารถใช้งานได้ การใช้ Word และ Excel สามารถเอาชนะข้อบกพร่องข้างต้นได้อย่างสมบูรณ์ การใช้งานเฉพาะมีดังนี้ (การใช้ Word เป็นตัวอย่าง):
ขั้นแรก ให้ใช้ Word เพื่อแก้ไขรูปแบบรายงาน จัดวางรูปแบบ แทนที่รายการข้อมูลที่จะส่งออกด้วยฟิลด์แบบฟอร์ม และตั้งชื่อ ในที่นี้เราจะถือว่ามีฟิลด์แบบฟอร์ม Item1 และ Item2 (ทั้งสองประเภทข้อความ) ให้บันทึกเอกสารนี้เป็นไฟล์เทมเพลต Example.dot จากนั้นดำเนินการดังนี้:
1) เรียกใช้ Delphi3 เพิ่มส่วนประกอบ TDdeClientCov ในองค์ประกอบของระบบที่ตั้งค่าเป็น Form1 ตั้งชื่อเป็น DdeExample ตั้งค่า ConnectMode เป็น ddeManual (โหมดแมนนวล) ตั้งค่า DdeService เป็น '(WinWord)'; ตั้งค่า Serviceapplication เป็น 'WinWord'
2) เขียนกระบวนการที่กำหนดเองเพื่อเปิดใช้งาน Word ดังนี้:
กระบวนการ Tform1.WordActive (Cmds: TStrings);
var
WordPath: สตริง;
เริ่ม
ถ้า (ไม่ใช่ DdeExample.OpenLink) ดังนั้น {พิจารณาว่ามีการเชื่อมโยงแบบไดนามิกหรือไม่}
เริ่ม
if(FindWindow('OpusApp', nil)=0) แล้ว
เริ่ม
WordPath := 'C:msofficewinword';
if(WordPath=') แล้ว
ShowMessage('ไม่ได้ติดตั้ง Word ภาษาจีนหรือไม่ได้ตั้งค่าเส้นทาง โปรดติดตั้งและตั้งค่า Word เวอร์ชันภาษาจีน')
เริ่มอย่างอื่น
DdeExample.ServiceApplication := WordPath+'Winword.exe';
if(DdeExample.OpenLink) ดังนั้น {หากคำสั่งมาโครได้รับการเชื่อมโยงแบบไดนามิก}
DdeExample.ExecuteMacroLines(Cmds,False)
อื่น
ShowMessage('ไม่สามารถเริ่ม Word เวอร์ชันภาษาจีนได้!');
DdeExample.ServiceApplication := 'WinWord.exe';
จบ;
จบ
อย่างอื่นเริ่มต้น{หากคำสั่งมาโครได้รับการเชื่อมโยงแบบไดนามิก}
DdeExample.ExecuteMacroLines (Cmds, เท็จ);
จบ;
จบ
อื่น
DdeExample.ExecuteMacroLines (Cmds เท็จ);
จบ;
เพิ่มสิ่งต่อไปนี้ลงในพื้นที่การประกาศส่วนตัว:
ขั้นตอน ActiveWord (Cmds: TStrings);
3) เพิ่มปุ่ม Button1 ให้กับ Form1 และเขียนโค้ดต่อไปนี้ในเหตุการณ์ onclick:
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var
Cmds:TStringList; {สร้าง Cmds}
TempItem1,TempItem2:สตริง;
เริ่ม
cmds:=TStringList.สร้าง;
cmds.ชัดเจน;
TempItem1:='รายการข้อมูลหนึ่ง';
TempItem2:='รายการข้อมูลที่สอง';
ด้วย Cmds ทำ
เริ่ม
ชัดเจน;
เพิ่ม('[FileNew.Template ="Example.Dot″]');{เปิดไฟล์เทมเพลต Example.Dot}
เพิ่ม('[AppMaximize]');{เอกสารขยายใหญ่สุด}
เพิ่ม('[SetFormResult"Item1",″'+TempItem1+''"]');{ส่งข้อมูล TempItem1 ไปยังฟอร์มฟิลด์ Item1}
เพิ่ม('[SetFormResult "Item2","'+TempItem2+'"]);{ส่งผ่านข้อมูล TempItem2 ไปยังแบบฟอร์มฟิลด์ Item2}
จบ;
WordActive (DdeExample, Cmds); {เรียกกระบวนการที่กำหนดเอง}
Cmds.Free;{release Cmds}
จบ;
เรียกใช้โปรแกรมนี้ คลิก Button1 คุณจะพบว่า Word เริ่มทำงานแล้ว และรายการข้อมูลสองรายการปรากฏบนหน้าจอ: รายการข้อมูลรายการข้อมูลที่สอง สุดท้ายนี้ คุณสามารถแก้ไขรูปแบบและข้อมูลของรายงานนี้ได้ตามต้องการ เนื่องจากรายงานนี้ไม่เกี่ยวข้องกับแอปพลิเคชันใดโดยเฉพาะ
ในตัวอย่างนี้ ใช้ภาษาจีน Word6 หรือภาษาจีน Word7 เนื่องจากคำสั่งแมโครของ Word97 ได้ถูกเปลี่ยนเป็นคำสั่ง Visual Basic แล้ว หากคุณต้องการใช้ Word97 เพื่อใช้งาน โปรดเปลี่ยนคำสั่งแมโครเป็นรหัสที่เกี่ยวข้อง
นี่คือตัวอย่างง่ายๆ คุณสามารถใช้ฟังก์ชันการบันทึกแมโครของ Word เพื่อบันทึกแมโครเพิ่มเติม (เช่น การสร้างตารางอัตโนมัติ การเติมข้อความ การเปลี่ยนแบบอักษร และคำสั่งแมโครอื่นๆ) และเชื่อมต่อกับตารางต่างๆ ในฐานข้อมูล และเพิ่มเข้าไป ไปที่ Cmds คุณจะได้ฟังก์ชั่นที่ซับซ้อนมากขึ้นตามที่คุณต้องการ