تنفيذ بسيط للارتباط بين برنامج دلفي ومساعدة Chm المؤلف: Li Xin [email protected] QQ: 1348513 مساعدة تنسيق Chm هي صيغة جديدة ظهرت فقط بعد windows98. بالمقارنة مع صيغة .hlp، فهي تتمتع بطريقة تحرير أبسط وأكثر ثراء الرسومات. يتم الحصول عليه عن طريق تجميع ملفات صفحات الويب من خلال أداة إنتاج Chm، لذلك من الناحية النظرية يمكنك جعل ملف المساعدة جميلًا مثل صفحة الويب. أبسط طريقة إنتاج: استخدم FronPage أولاً لإنشاء ملف التعليمات، ثم استخدم HTMLHelpWorkshop لتجميعه للحصول على ملف التعليمات *.chm. يمكن تنزيل HTMLHelpWorkshop من موقع Microsoft الإلكتروني. يمكن تقسيم المساعدة في التطبيقات إلى أنواع حساسة للسياق وغير سياقية. حساسة للسياق تعني أنه بعد أن يضغط المستخدم على المفتاح F1، تظهر شاشة تعليمات تتعلق بالكائن الذي يتم التركيز عليه حاليًا (مثل نموذج أو مربع نص أو مربع قائمة منسدلة) تظهر تعليمات مختلفة لكائنات مختلفة. المساعدة غير الترابطية تعني أنه بعد الضغط على المفتاح F1 في أي مكان في البرنامج، تظهر نفس شاشة المساعدة. دعونا نتحدث عن هاتين الطريقتين وطرق التنفيذ البسيطة في دلفي. 1. تعليمات آلية تبادل المعلومات غير المرتبطة في دلفي، يمكنك استدعاء ملف تعليمات آلية تبادل المعلومات مباشرة من خلال وظيفة ShellExecute، كما يلي:
.......var HWndHelp:Hwnd; i:integer;begin //تحقق مما إذا كانت نافذة المساعدة موجودة بالفعلHWndHelp:=FindWindow(nil,conHelpTitle); HwndHelp ,WM_CLOSE,0,0); 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); إذا كان i<>42 فإن Showmessage('help.chm ملف التعليمات تالف!');end; chm لتطبيق تعليمات chm الحساسة للسياق في دلفي، يمكنك استدعاء الدالة HtmlHelpA في عنصر التحكم HHCTRL.OCX ضمن دليل نظام Windows System32. الخطوات التالية مطلوبة: 1. قم بتعيين خاصية HelpContext لعنصر التحكم ذي الصلة. على سبيل المثال، النموذج الرئيسي frmMain::10100، ومربع النص edtInput: 10101، ومربع الحوار dlgReport: 10200، ومربع قائمة التحرير والسرد cbReportEdit: 102012، قم بتعريف وظيفة وظيفة HtmlHelpA HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand: Longint;dwData :سلسلة): HWND;stdcall; استجابة مفتاح 'hhctrl.ocx'3 F1 خارجية // الوظيفة العامة ShowChmHelp تعرض شاشات تعليمات مختلفة. PROcedure ShowChmHelp(sTopic:string);begin i:=HtmlHelpA(application.Handle,Pchar(ExePath+'/help.chm'),HH_DISPLAY_TOPIC,sTopic); ملف تعليمات chm تالف!'); end;end;....function TfrmMain.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;بيانات حالة البدء 10100: ShowChmHelp(frmMain.htm); 10101: ShowChmHelp('edtInput.htm');... else ShowChmHelp(default. htm'); نهاية; نهاية; وظيفة TdlgReport.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;بيانات حالة البدء 10200: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');... else ShowChmHelp(افتراضي) .htm');نهاية;نهاية;