Delphi 프로그램과 Chm 도움말 간의 연결을 간단하게 구현 작성자: Li Xin [email protected] QQ: 1348513 Chm 형식 도움말은 windows98 이후에만 등장한 새로운 형식으로, .hlp 형식에 비해 편집 방법이 더 간단하고 더 풍부합니다. 제도법. Chm 제작 도구를 통해 웹 페이지 파일을 컴파일하여 얻으므로 이론적으로는 도움말 파일을 웹 페이지만큼 아름답게 만들 수 있습니다. 가장 간단한 제작 방법: 먼저 FronPage를 사용하여 도움말 파일을 만든 다음 HTMLHelpWorkshop을 사용하여 컴파일하여 *.chm 도움말 파일을 얻습니다. HTMLHelpWorkshop은 Microsoft 웹사이트에서 다운로드할 수 있습니다. 응용프로그램의 도움말은 상황별 도움말과 비상황별 도움말로 나눌 수 있습니다. 상황에 따라 다르다는 것은 사용자가 F1 키를 누른 후 현재 초점을 맞춘 개체(예: 양식, 텍스트 상자, 드롭다운 목록 상자)와 관련된 도움말 화면이 개체마다 표시된다는 의미입니다. 비연관 도움말은 프로그램의 아무 곳에서나 F1 키를 누르면 동일한 도움말 화면이 나타남을 의미합니다. 델파이에서 이 두 가지 방법과 간단한 구현 방법에 대해 이야기해 보겠습니다. 1. 비연관 chm 도움말 델파이에서는 다음과 같이 ShellExecute 함수를 통해 chm 도움말 파일을 직접 호출할 수 있습니다.
.......var HWndHelp:Hwnd; i:integer;begin //도움말 창이 이미 있는지 확인합니다. HWndHelp:=FindWindow(nil,conHelpTitle); if HwndHelp<>0 then //있는 경우 SendMessage( HwndHelp ,WM_CLOSE,0,0) i:=ShellExecute(핸들, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal); if i<>42 then Showmessage('help.chm 도움말 파일이 손상되었습니다!');end; chm Delphi에서 상황에 맞는 chm 도움말을 구현하려면 Windows 시스템 디렉토리 System32 아래의 HHCTRL.OCX 컨트롤에서 HtmlHelpA 함수를 호출하면 됩니다. 다음 단계가 필요합니다. 1. 해당 컨트롤의 HelpContext 속성을 설정합니다. 예를 들어, 기본 양식 frmMain::10100, 텍스트 상자 edtInput: 10101, 대화 상자 dlgReport: 10200, 콤보 목록 상자 cbReportEdit: 102012, HtmlHelpA 함수 함수 HtmlHelpA(hwndcaller:Longint; lpHelpFile:string; wCommand: Longint;dwData :string): HWND;stdcall; 외부 'hhctrl.ocx'3 F1 키 응답 //공개 함수 ShowChmHelp는 다른 도움말 화면을 표시합니다. PRocedure ShowChmHelp(sTopic:string); var i:integer;begin i:=HtmlHelpA(application.Handle,Pchar(ExePath+'/help.chm'),HH_DISPLAY_TOPIC,sTopic); i=0인 경우 Showmessage(' help. chm 도움말 파일이 손상되었습니다. '); 종료; TfrmMain.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;begin case Data of 10100: ShowChmHelp(frmMain.htm); 10101: ShowChmHelp('edtInput.htm');… else ShowChmHelp(default. htm'); 끝;끝;함수 TdlgReport.FormHelp(명령: Word; 데이터: 정수; var CallHelp: Boolean): Boolean;10200의 사례 데이터 시작: ShowChmHelp('dlgReport.htm');10201: ShowChmHelp(cbReportEdit.htm');… else ShowChmHelp(기본값) .htm'); 끝;끝;