استخدم Delphi4.0 للتحكم مباشرة في Word97
رقم: QA003053
تاريخ الإنشاء: 15 يونيو 2000 تاريخ آخر تعديل: 15 يونيو 2000
فئة:
شرط :
ملخص: يجب أن يعرف الأصدقاء الذين لعبوا PowerBuilder أن أهم تقنية في PB هي تقنية DataWindow الخاصة بها، ومن السهل جدًا استخدامها لتصميم النماذج ومعالجة إدخال البيانات وتصميم التقارير. ومع ذلك، فإن وظيفة دعم التقارير في دلفي أقل بكثير من وظيفة PB. تتضمن النسخة الاحترافية من دلفي QuickReport، ولكنها عبارة عن مجموعة من مكونات التقرير المرخصة من قبل QSD AS (شركة نرويجية). بالطبع، يمكننا أيضًا استخدام أدوات إعداد التقارير الخارجية، مثل ReportSmith أو Cristal Report. ومع ذلك، فإن عناصر التحكم معقدة بعض الشيء وهناك نقص في التكامل بينها وبين دلفي.
عندما كنا نعمل على تطوير النسخة الإلكترونية من "نظام إدارة الوثائق الرسمية"، جربنا طرقًا مختلفة عند طباعة المستندات الرسمية. متطلبنا هو طباعة مستند رسمي عادي بتنسيق مستند رسمي، ويمكن للمستخدم إجراء بعض التحكم البسيط في تنضيده. حاول Xiaohui لأول مرة استخدام QuickReport، لكن التأثير كان غير مرضٍ للغاية، خاصة فيما يتعلق بدعم بعض التنسيقات الصينية. لاحقًا، كان Xiaohui مهووسًا به لدرجة أنه كتب برنامج الطباعة يدويًا دون الاعتماد على أدوات التصميم، وهو أمر مؤسف. لم تكن مهارات Xiaohui جيدة بما فيه الكفاية، ولم يتمكن من مواصلة اللعب عندما كان في منتصف الكتابة، لذلك كان عليه أن يجد طريقة أخرى. وحدث أن جاءت نسخة من "China Computer News" في ذلك اليوم، وكان هناك مقال حول كيفية استخدام Excel في VB. فكر Xiaohui: لماذا لا تستخدم دلفي لإرسال البيانات إلى Word، وتدع Word يكمل أعمال التحرير والتنضيد؟ وبعبارة صريحة، فإنه يستخدم تقنية أتمتة OLE.
لقد جربها Xiaohui وتبين أن التأثير جيد. —— على الرغم من أنه بالنسبة للمبرمج، يجب أن يكون البرنامج الذي يكتبه مرتبطًا بتطبيق شخص آخر لتحقيق وظائفه بشكل كامل، إلا أن الأمر يشبه إدخال بطة في قطيع من الدجاج، وهناك دائمًا شيء ما في قلبه. ومع ذلك، نظرًا لمهام التطوير الضيقة، جاء المدير لحثه كل ثلاث أو أربع مرات على الرغم من أن الأمر انتهى به الأمر إلى حد ما، إلا أن Xiaohui لم يكن يهتم كثيرًا. حسنًا، دون مزيد من اللغط، دعونا نلقي نظرة على كيفية تحقيق Xiaohui لذلك ——
الرابط: http://www.xiaohui.com
المشرف: لأن الرابط الأصلي قد انتهت صلاحيته. ونقدم النص الأصلي هنا:
1. المقدمة
يجب أن يعرف الأصدقاء الذين لعبوا PowerBuilder أن أهم تقنية في PB هي تقنية DataWindow الخاصة بها، ومن السهل جدًا استخدامها لتصميم النماذج ومعالجة إدخال البيانات وتصميم التقارير. ومع ذلك، فإن وظيفة دعم التقارير في دلفي أقل بكثير من وظيفة PB. تتضمن النسخة الاحترافية من دلفي QuickReport، ولكنها عبارة عن مجموعة من مكونات التقرير المرخصة من قبل QSD AS (شركة نرويجية). بالطبع، يمكننا أيضًا استخدام أدوات إعداد التقارير الخارجية، مثل ReportSmith أو Cristal Report. ومع ذلك، فإن عناصر التحكم معقدة بعض الشيء وهناك نقص في التكامل بينها وبين دلفي.
عندما كنا نعمل على تطوير النسخة الإلكترونية من "نظام إدارة الوثائق الرسمية"، جربنا طرقًا مختلفة عند طباعة المستندات الرسمية. متطلبنا هو طباعة مستند رسمي عادي بتنسيق مستند رسمي، ويمكن للمستخدم إجراء بعض التحكم البسيط في تنضيده. حاول Xiaohui لأول مرة استخدام QuickReport، لكن التأثير كان غير مرضٍ للغاية، خاصة فيما يتعلق بدعم بعض التنسيقات الصينية. لاحقًا، كان Xiaohui مهووسًا به لدرجة أنه كتب برنامج الطباعة يدويًا دون الاعتماد على أدوات التصميم، وهو أمر مؤسف. لم تكن مهارات Xiaohui جيدة بما فيه الكفاية، ولم يتمكن من مواصلة اللعب عندما كان في منتصف الكتابة، لذلك كان عليه أن يجد طريقة أخرى. وحدث أن جاءت نسخة من "China Computer News" في ذلك اليوم، وكان هناك مقال حول كيفية استخدام Excel في VB. فكر Xiaohui: لماذا لا تستخدم دلفي لإرسال البيانات إلى Word، وتدع Word يكمل أعمال التحرير والتنضيد؟ وبعبارة صريحة، فإنه يستخدم تقنية التشغيل الآلي OLE.
لقد جربها Xiaohui وتبين أن التأثير جيد. —— على الرغم من أنه بالنسبة للمبرمج، يجب أن يكون البرنامج الذي يكتبه مرتبطًا بتطبيق شخص آخر لتحقيق وظائفه بشكل كامل، إلا أن الأمر يشبه إدخال بطة في قطيع من الدجاج، وهناك دائمًا شيء ما في قلبه. ومع ذلك، نظرًا لمهام التطوير الضيقة، جاء المدير لحثه كل ثلاث أو أربع مرات على الرغم من أن الأمر انتهى به الأمر إلى حد ما، إلا أن Xiaohui لم يكن يهتم كثيرًا. حسنًا، دون مزيد من اللغط، دعونا نلقي نظرة على كيفية تحقيق Xiaohui لذلك ——
2. تصميم النموذج
وبصراحة، الأمر في الواقع بسيط للغاية. قام Xiaohui بعمل نموذج بسيط للبرنامج هنا:
1. قم بتعيين اسم الخط الخاص بـ Form1 إلى "Songti" وحجم الخط إلى 12؛
2. ضع خمسة عناصر تحكم tLable، label1-labe5، بالتسلسل في النموذج. وخصائص التسميات التوضيحية الخاصة بها هي "رقم المستند"، و"العنوان"، و"وحدة الاستلام"، و"النص"، و"وحدة الإرسال".
3. ضع خمسة عناصر تحكم في التحرير: tEdit، وtEdit، وtEdit، وtMemo، وtEdit بالتسلسل في النموذج. سمات أسمائهم هي: ED_WenHao، وED_BiaoTi، وED_ShouWenDanWei، وED_ZhenWen، وED_FaWenDanWei على التوالي.
4. ضع عنصري تحكم tButton بالتسلسل في النموذج، وسمات الاسم الخاصة بهما هي Btn_PRintToWord وbtn_Quit، وسمات التسمية التوضيحية الخاصة بهما هي "Print" و"Exit" على التوالي.
للتعرف على شكل تصميم النموذج يرجى الرجوع إلى الصورة المرفقة في نهاية هذه المقالة.
3. تصميم الكود
شريحة البرنامج هي كما يلي:
الوحدة 1؛
واجهة
الاستخدامات
Windows، الرسائل، SysUtils، الفئات، الرسومات، عناصر التحكم، النماذج، مربعات الحوار،
StdCtrls,OleCtnrs,ComObj;
يكتب
TForm1 = الفئة (TForm)
التسمية 1: TLabel؛
التسمية 2: TLabel؛
التسمية 3: TLabel؛
Label4: TLabel؛
التسمية 5: TLabel؛
ED_WenHao: TEdit;
ED_BiaoTi: TEdit;
ED_ShouWenDanWei: TEdit;
ED_ZhenWen: TMMemo;
ED_FaWenDanWei: TEdit;
Btn_PrintToWord: TButton؛
Btn_Quit: TButton;
الإجراء Btn_PrintToWordClick(Sender: TObject);
الإجراء Btn_QuitClick(Sender: TObject);
خاص
{تصريحات خاصة}
عام
{التصريحات العامة}
نهاية؛
فار
Form1: TForm1؛
تطبيق
{$R *.DFM}
//ابدأ: يتم إرسال البيانات إلى حدث Word
الإجراء TForm1.Btn_PrintToWordClick(Sender: TObject);
فار
VarWord: متغير؛// يستخدم عند إنشاء الكلمة
يبدأ
يحاول
// 1. أنشئ OleObject وقم بتوصيل word97
VarWord:=CreateOleObject('word.basic');
// 2. قم بإنشاء ملف جديد لـ Word97
VarWord.FileNew;
// 3. قم بتعيين الحالة الأساسية لـ Word97
VarWord.ViewZoom75; // اضبط نسبة العرض على 75%
VarWord.ViewPage; // التغيير إلى وضع عرض الصفحة
// 4. أرسل المعلومات المتعلقة بعنصر تحكم البيانات الحالي إلى Word97
// 4.1 إرسال بيانات رقم المستند
VarWord.CenterPara;
Varword.font('宋体');
VarWord.FontSize(14);//تعيين حجم الخط
varword.insert(#13+#13+ ED_WenHao.Text+#13+#13+#13);
// 4.2 إرسال بيانات الرأس
VarWord.font('HeiBi');
VarWord.Fontsize(16);
VarWord.insert( ED_BiaoTi.text+#13);
// 4.3 إرسال بيانات وحدة الاستقبال
VarWord.LeftPara; //محاذاة إلى اليسار
VarWord.Font('宋体');
VarWord.fontSize(14);
VarWord.Insert(#13+ ED_ShouWenDanWei.Text+':'+#13);
// 4.5 إرسال البيانات النصية
VarWord.fontSize(14);
VarWord.Insert( ED_ZhenWen.Text+#13);
// 4.6 إرسال بيانات الوحدة
VarWord.RightPara؛ // المحاذاة الصحيحة
VarWord.fontSize(14);
VarWord.Insert( ED_FaWenDanWei.Text+#13);
// 5 الإعدادات النهائية
VarWord.StartOfdocument; //انتقل إلى بداية المستند
VarWord.AppMaxiMize; // اضبط النافذة لتكبيرها
VarWord.AppShow;//إظهار التطبيق
يستثني
showmessage("فشل تشغيل Microsoft Word!");
النهاية؛ // نهاية المحاولة
نهاية؛
// النهاية: البيانات المرسلة إلى حدث Word
//ابدأ: حدث إغلاق النافذة
الإجراء TForm1.Btn_QuitClick(Sender: TObject);
يبدأ
يغلق؛
نهاية؛
// النهاية: حدث إغلاق النافذة
نهاية.
// هذه نهاية البرنامج الرئيسي
4. ملاحظات
1. الوصف
1. نظرًا لأنه مجرد مثال توضيحي، فهو غير متصل بقاعدة بيانات الخلفية. في التشغيل الفعلي، يمكن استبدال عناصر التحكم tEdit وtMemo المقابلة بعناصر تحكم tDBEdit وtDBMemo، ويمكن إضافة tTable وtDataSource وعناصر تحكم أخرى للاتصال. إلى قاعدة البيانات.
2. لا يتناول هذا الدليل كيفية الطباعة المجمعة.
3. تم تمرير البرنامج تحت Pwin97، Delphi 4.0 Professional Edition، وWord97 الصيني.
4. نظرًا لوجود إصدارات مختلفة من Word، قامت Microsoft بتحويل بعض واجهات أتمتة OLE في كل لغة أجنبية. إذا كنت تستخدم إصدارات أخرى من Word، فقد يعمل هذا البرنامج بشكل غير صحيح.
5. يمكنك الحصول على أوامر برنامج التشغيل المقابلة من خلال أوامر الماكرو الملخصة في تعليمات word97 أو يمكنك النقر فوق القائمة [أدوات] ضمن Word97 - انقر فوق [تخصيص] - انقر فوق الزر [لوحة المفاتيح] لعرض أوامر Word المعروضة في فئات في كلمة97.
2. المزايا والعيوب
1. من خلال تقنية التشغيل الآلي OLE، يتم تسليم أعمال التنضيد والطباعة للمستندات الرسمية إلى Word، مما يجعل التحكم أكثر ملاءمة للمستخدم النهائي.
2. في Word97، إذا تم تعديل البيانات، فلا يمكن إعادتها إلى البرنامج الرئيسي الذي استدعاها وانعكست في قاعدة البيانات. وهذا هو الإزعاج منه.
3. هذا المثال هو مجرد تطبيق في ظل ظروف خاصة، إذا كنت ترغب في طباعة عدد كبير من تسميات البيانات وإنشاء الجداول، يعتقد Xiaohui أن استخدام التقارير أكثر مرونة.
مصدر المقال: رحلة Xiaohui كمبرمج .