Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Как использовать CHM Help файлы

Советы » Help файлы » Как использовать CHM Help файлы

unit

HtmlHelp; interface

uses

Windows, Graphics; const

HH_DISPLAY_TOPIC = $0000; HH_DISPLAY_TOC = $0001; HH_DISPLAY_INDEX = $0002; HH_DISPLAY_SEARCH = $0003; HH_SET_WIN_TYPE = $0004; HH_GET_WIN_TYPE = $0005; HH_GET_WIN_HANDLE = $0006; HH_GET_INFO_TYPES = $0007; HH_SET_INFO_TYPES = $0008; HH_SYNC = $0009; HH_ADD_NAV_UI = $000A; HH_ADD_BUTTON = $000B; HH_GETBROWSER_APP = $000C; HH_KEYWORD_LOOKUP = $000D; HH_DISPLAY_TEXT_POPUP = $000E; HH_HELP_CONTEXT = $000F; const

HHWIN_PROP_ONTOP = 2; HHWIN_PROP_NOTITLEBAR = 4; HHWIN_PROP_NODEF_STYLES = 8; HHWIN_PROP_NODEF_EXSTYLES = 16; HHWIN_PROP_TRI_PANE = 32; HHWIN_PROP_NOTB_TEXT = 64; HHWIN_PROP_POST_QUIT = 128; HHWIN_PROP_AUTO_SYNC = 256; HHWIN_PROP_TRACKING = 512; HHWIN_PROP_TAB_SEARCH = 1024; HHWIN_PROP_TAB_HISTORY = 2048; HHWIN_PROP_TAB_FAVORITES = 4096; HHWIN_PROP_CHANGE_TITLE = 8192; HHWIN_PROP_NAV_ONLY_WIN = 16384; HHWIN_PROP_NO_TOOLBAR = 32768; const

HHWIN_PARAM_PROPERTIES = 2; HHWIN_PARAM_STYLES = 4; HHWIN_PARAM_EXSTYLES = 8; HHWIN_PARAM_RECT = 16; HHWIN_PARAM_NAV_WIDTH = 32; HHWIN_PARAM_SHOWSTATE = 64; HHWIN_PARAM_INFOTYPES = 128; HHWIN_PARAM_TB_FLAGS = 256; HHWIN_PARAM_EXPANSION = 512; HHWIN_PARAM_TABPOS = 1024; HHWIN_PARAM_TABORDER = 2048; HHWIN_PARAM_HISTORY_COUNT = 4096; HHWIN_PARAM_CUR_TAB = 8192; const

HHWIN_BUTTON_EXPAND = 2; HHWIN_BUTTON_BACK = 4; HHWIN_BUTTON_FORWARD = 8; HHWIN_BUTTON_STOP = 16; HHWIN_BUTTON_REFRESH = 32; HHWIN_BUTTON_HOME = 64; HHWIN_BUTTON_BROWSE_FWD = 128; HHWIN_BUTTON_BROWSE_BCK = 256; HHWIN_BUTTON_NOTES = 512; HHWIN_BUTTON_CONTENTS = 1024; HHWIN_BUTTON_SYNC = 2048; HHWIN_BUTTON_OPTIONS = 4096; HHWIN_BUTTON_PRINT = 8192; HHWIN_BUTTON_INDEX = 16384; HHWIN_BUTTON_SEARCH = 32768; HHWIN_BUTTON_HISTORY = 65536; HHWIN_BUTTON_FAVORITES = 131072; HHWIN_BUTTON_JUMP1 = 262144; HHWIN_BUTTON_JUMP2 = 524288; HHWIN_BUTTON_ZOOM = HHWIN_Button_Jump2 * 2; HHWIN_BUTTON_TOC_NEXT = HHWIN_Button_Zoom * 2; HHWIN_BUTTON_TOC_PREV = HHWIN_Button_Toc_Next * 2; const

HHWIN_DEF_Buttons = HHWIN_Button_Expand or

HHWIN_Button_Back or

HHWIN_Button_Options or

HHWIN_Button_Print; const

IDTB_EXPAND = 200; IDTB_CONTRACT = 201; IDTB_STOP = 202; IDTB_REFRESH = 203; IDTB_BACK = 204; IDTB_HOME = 205; IDTB_SYNC = 206; IDTB_PRINT = 207; IDTB_OPTIONS = 208; IDTB_FORWARD = 209; IDTB_NOTES = 210; IDTB_BROWSE_FWD = 211; IDTB_BROWSE_BACK = 212; IDTB_CONTENTS = 213; IDTB_INDEX = 214; IDTB_SEARCH = 215; IDTB_HISTORY = 216; IDTB_FAVORITES = 217; IDTB_JUMP1 = 218; IDTB_JUMP2 = 219; IDTB_CUSTOMIZE = 221; IDTB_ZOOM = 222; IDTB_TOC_NEXT = 223; IDTB_TOC_PREV = 224; const

HHN_First = Cardinal(-860); HHN_Last = Cardinal(-879); HHN_NavComplete = HHN_First - 0; HHN_Track = HHN_First - 1; type

HHN_Notify = record

hdr: Pointer; pszUrl: PWideChar; end

; HH_Popup = record

cbStruct: Integer; hinst: THandle; idString: Cardinal; pszText: PChar; pt: TPoint; clrForeground: TColor; clrBackground: TColor; rcMargins: TRect; pszFont: PChar; end

; HH_AKLINK = record

cbStruct: Integer; fReserved: bool; pszKeywords: PChar; pszUrl: PChar; pszMsgText: PChar; pszMsgTitle: PChar; pszWindow: PChar; fIndexOnFail: bool; end

; type

HHWin_NavTypes = (HHWIN_NAVTYPE_TOC, HHWIN_NAVTYPE_INDEX, HHWIN_NAVTYPE_SEARCH, HHWIN_NAVTYPE_HISTORY, HHWIN_NAVTYPE_FAVOURITES); type

HH_InfoType = Longint; PHH_InfoType = ^HH_InfoType; type

HHWin_NavTabs = (HHWIN_NavTab_Top, HHWIN_NavTab_Left, HHWIN_NavTab_Bottom); const

HH_Max_Tabs = 19; type

HH_Tabs = (HH_TAB_CONTENTS, HH_TAB_INDEX, HH_TAB_SEARCH, HH_TAB_HISTORY, HH_TAB_FAVORITES ); const

HH_FTS_DEFAULT_PROXIMITY = (-1); type

HH_FTS_Query = record

cbStruct: Integer; fUniCodeStrings: bool; pszSearchQuery: PChar; iProximity: Longint; fStemmedSearch: bool; fTitleOnly: bool; fExecute: bool; pszWindow: PChar; end

; type

HH_WinType = record

cbStruct: Integer; fUniCodeStrings: bool; pszType: PChar; fsValidMembers: Longint; fsWinProperties: Longint; pszCaption: PChar; dwStyles: Longint; dwExStyles: Longint; rcWindowPos: TRect; nShowState: Integer; hwndHelp: THandle; hwndCaller: THandle; paInfoTypes: ^HH_InfoType; hwndToolbar: THandle; hwndNavigation: THandle; hwndHTML: THandle; iNavWidth: Integer; rcHTML: TRect; pszToc: PChar; pszIndex: PChar; pszFile: PChar; pszHome: PChar; fsToolbarFlags: Longint; fNotExpanded: bool; curNavType: Integer; tabPos: Integer; idNotify: Integer; TabOrder: array

[0..HH_Max_Tabs + 1] of

Byte; cHistory: Integer; pszJump1: PChar; pszJump2: PChar; pszUrlJump1: PChar; pszUrlJump2: PChar; rcMinSize: TRect; end

; PHH_WinType = ^HH_WinType; type

HHACTTYpes = (HHACT_TAB_CONTENTS, HHACT_TAB_INDEX, HHACT_TAB_SEARCH, HHACT_TAB_HISTORY, HHACT_TAB_FAVORITES, HHACT_EXPAND, HHACT_CONTRACT, HHACT_BACK, HHACT_FORWARD, HHACT_STOP, HHACT_REFRESH, HHACT_HOME, HHACT_SYNC, HHACT_OPTIONS, HHACT_PRINT, HHACT_HIGHLIGHT, HHACT_CUSTOMIZE, HHACT_JUMP1, HHACT_JUMP2, HHACT_ZOOM, HHACT_TOC_NEXT, HHACT_TOC_PREV, HHACT_NOTES, HHACT_LAST_ENUM ); type

HHNTRACK = record

hdr: TNMHDR; pszCurUrl: PWideChar; idAction: Integer; phhWinType: ^HH_WinType; end

; PHHNTRACK = ^HHNTRACK; HHNNAVCOMPLETE = record

hdr: TNMHDR; pszUrl: PChar; end

; PHHNNAVCOMPLETE = ^HHNNAVCOMPLETE; type

THtmlHelpA = function

(hwndCaller: THandle; pszFile: PChar; uCommand: Cardinal; dwData: Longint): THandle; stdCall

; THtmlHelpW = function

(hwndCaller: THandle; pszFile: PChar; uCommand: Cardinal; dwData: Longint): THandle; stdCall

; function

HH(hwndCaller: THandle; pszFile: PChar; uCommand: Cardinal; dwData: Longint): THandle; function

HtmlHelpInstalled: Boolean; implementation

const

ATOM_HTMLHELP_API_ANSI = #14#0; ATOM_HTMLHELP_API_UNICODE = #15#0; var

HtmlHelpA: THtmlHelpA; OCXHandle: THandle; function

HH; begin

Result := 0; if

(Assigned(HtmlHelpA)) then

begin

Result := HtmlHelpA(hwndCaller, pszFile, uCommand, dwData); end

; end

; function

HtmlHelpInstalled: Boolean; begin

Result := (Assigned(HtmlHelpA)); end

; initialization

begin

HtmlHelpA := nil

; OCXHandle := LoadLibrary('HHCtrl.OCX'); if

(OCXHandle <> 0) then

begin

HtmlHelpA := GetProcAddress(OCXHandle, 'HtmlHelpA'); end

; end

; finalization

begin

if

(OCXHandle <> 0) then

FreeLibrary(OCXHandle); end

; end

. //----------------------------------------------- unit

Unit1; {....} implementation

uses

HtmlHelp; const

HH_HELP_CONTEXT = $F; MYHELP_FILE = 'DualHelp.chm' + Chr(0); var

RetCode: LongInt; {$R *.DFM} procedure

TForm1.FormKeyUp(Sender: TObject; var

Key: Word; Shift: TShiftState); begin

if

Key = vk_f1 then

begin

if

HtmlHelpInstalled = True then

begin

RetCode := HH(Form1.Handle, PChar(MYHELP_FILE), HH_HELP_CONTEXT, ActiveControl.HelpContext); Key := 0; //eat it! end

else

helpfile := 'hhtest.hlp'; end

; end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com