/xe2/src/Winapi.CommCtrl.pas

http://delphi-miranda-plugins.googlecode.com/ · Pascal · 12956 lines · 7518 code · 1552 blank · 3886 comment · 45 complexity · 0d6793d6bb3b75118e3bd23f612ebbff MD5 · raw file

  1. {*******************************************************}
  2. { }
  3. { Delphi Runtime Library }
  4. { }
  5. { File: CommCtrl.h }
  6. { Copyright (c) Microsoft Corporation. }
  7. { All Rights Reserved. }
  8. { }
  9. { Translator: Embarcadero Technologies, Inc. }
  10. { Copyright(c) 1995-2011 Embarcadero Technologies, Inc. }
  11. { }
  12. {*******************************************************}
  13. {*******************************************************}
  14. { Win32 Common Controls Interface Unit }
  15. {*******************************************************}
  16. unit Winapi.CommCtrl;
  17. {$ALIGN ON}
  18. {$MINENUMSIZE 4}
  19. {$WEAKPACKAGEUNIT}
  20. { _WIN32_IE >= 0x0300 }
  21. { _WIN32_IE >= 0x0400 }
  22. { _WIN32_IE >= 0x0500 }
  23. { _WIN32_IE >= 0x0600 }
  24. { _WIN32_WINNT >= 0x0501 }
  25. { _WIN32_WINNT >= 0x0600 }
  26. { NTDDI_VERSION >= NTDDI_WIN7 }
  27. interface
  28. (*$HPPEMIT '' *)
  29. (*$HPPEMIT '#include <CommCtrl.h>' *)
  30. (*$HPPEMIT '' *)
  31. { Although the COMMCTRL unit requires the ActiveX unit, COMMCTRL.HPP does }
  32. { not require Winapi.ActiveX.hpp to compile. Hence the $NOINCLUDE directive. }
  33. uses Winapi.Messages, Winapi.Windows;
  34. { From prsht.h -- Interface for the Windows Property Sheet Pages }
  35. const
  36. {$EXTERNALSYM MAXPROPPAGES}
  37. MAXPROPPAGES = 100;
  38. {$EXTERNALSYM PSP_DEFAULT}
  39. PSP_DEFAULT = $00000000;
  40. {$EXTERNALSYM PSP_DLGINDIRECT}
  41. PSP_DLGINDIRECT = $00000001;
  42. {$EXTERNALSYM PSP_USEHICON}
  43. PSP_USEHICON = $00000002;
  44. {$EXTERNALSYM PSP_USEICONID}
  45. PSP_USEICONID = $00000004;
  46. {$EXTERNALSYM PSP_USETITLE}
  47. PSP_USETITLE = $00000008;
  48. {$EXTERNALSYM PSP_RTLREADING}
  49. PSP_RTLREADING = $00000010;
  50. {$EXTERNALSYM PSP_HASHELP}
  51. PSP_HASHELP = $00000020;
  52. {$EXTERNALSYM PSP_USEREFPARENT}
  53. PSP_USEREFPARENT = $00000040;
  54. {$EXTERNALSYM PSP_USECALLBACK}
  55. PSP_USECALLBACK = $00000080;
  56. {$EXTERNALSYM PSP_PREMATURE}
  57. PSP_PREMATURE = $00000400;
  58. {$EXTERNALSYM PSP_HIDEHEADER}
  59. PSP_HIDEHEADER = $00000800;
  60. {$EXTERNALSYM PSP_USEHEADERTITLE}
  61. PSP_USEHEADERTITLE = $00001000;
  62. {$EXTERNALSYM PSP_USEHEADERSUBTITLE}
  63. PSP_USEHEADERSUBTITLE = $00002000;
  64. {$EXTERNALSYM PSP_USEFUSIONCONTEXT}
  65. PSP_USEFUSIONCONTEXT = $00004000;
  66. {$EXTERNALSYM PSPCB_ADDREF}
  67. PSPCB_ADDREF = 0;
  68. {$EXTERNALSYM PSPCB_RELEASE}
  69. PSPCB_RELEASE = 1;
  70. {$EXTERNALSYM PSPCB_CREATE}
  71. PSPCB_CREATE = 2;
  72. {$EXTERNALSYM PSH_DEFAULT}
  73. PSH_DEFAULT = $00000000;
  74. {$EXTERNALSYM PSH_PROPTITLE}
  75. PSH_PROPTITLE = $00000001;
  76. {$EXTERNALSYM PSH_USEHICON}
  77. PSH_USEHICON = $00000002;
  78. {$EXTERNALSYM PSH_USEICONID}
  79. PSH_USEICONID = $00000004;
  80. {$EXTERNALSYM PSH_PROPSHEETPAGE}
  81. PSH_PROPSHEETPAGE = $00000008;
  82. {$EXTERNALSYM PSH_WIZARDHASFINISH}
  83. PSH_WIZARDHASFINISH = $00000010;
  84. {$EXTERNALSYM PSH_MULTILINETABS}
  85. PSH_MULTILINETABS = $00000010;
  86. {$EXTERNALSYM PSH_WIZARD}
  87. PSH_WIZARD = $00000020;
  88. {$EXTERNALSYM PSH_USEPSTARTPAGE}
  89. PSH_USEPSTARTPAGE = $00000040;
  90. {$EXTERNALSYM PSH_NOAPPLYNOW}
  91. PSH_NOAPPLYNOW = $00000080;
  92. {$EXTERNALSYM PSH_USECALLBACK}
  93. PSH_USECALLBACK = $00000100;
  94. {$EXTERNALSYM PSH_HASHELP}
  95. PSH_HASHELP = $00000200;
  96. {$EXTERNALSYM PSH_MODELESS}
  97. PSH_MODELESS = $00000400;
  98. {$EXTERNALSYM PSH_RTLREADING}
  99. PSH_RTLREADING = $00000800;
  100. {$EXTERNALSYM PSH_WIZARDCONTEXTHELP}
  101. PSH_WIZARDCONTEXTHELP = $00001000;
  102. {$EXTERNALSYM PSH_WIZARD97}
  103. // PSH_WIZARD97 = $00002000; { IExplorer 4.x only}
  104. PSH_WIZARD97 = $01000000;
  105. {$EXTERNALSYM PSH_WATERMARK}
  106. PSH_WATERMARK = $00008000;
  107. {$EXTERNALSYM PSH_USEHBMWATERMARK}
  108. PSH_USEHBMWATERMARK = $00010000; // user pass in a hbmWatermark instead of pszbmWatermark
  109. {$EXTERNALSYM PSH_USEHPLWATERMARK}
  110. PSH_USEHPLWATERMARK = $00020000; //
  111. {$EXTERNALSYM PSH_STRETCHWATERMARK}
  112. PSH_STRETCHWATERMARK = $00040000; // stretchwatermark also applies for the header
  113. {$EXTERNALSYM PSH_HEADER}
  114. PSH_HEADER = $00080000;
  115. {$EXTERNALSYM PSH_USEHBMHEADER}
  116. PSH_USEHBMHEADER = $00100000;
  117. {$EXTERNALSYM PSH_USEPAGELANG}
  118. PSH_USEPAGELANG = $00200000; // use frame dialog template matched to page
  119. { new flags for wizard-lite _WIN32_IE >= 0x0500 - IExplorer 5.0+ }
  120. {$EXTERNALSYM PSH_WIZARD_LITE}
  121. PSH_WIZARD_LITE = $00400000;
  122. {$EXTERNALSYM PSH_NOCONTEXTHELP}
  123. PSH_NOCONTEXTHELP = $02000000;
  124. {$EXTERNALSYM PSCB_INITIALIZED}
  125. PSCB_INITIALIZED = 1;
  126. {$EXTERNALSYM PSCB_PRECREATE}
  127. PSCB_PRECREATE = 2;
  128. {$EXTERNALSYM PSN_FIRST}
  129. PSN_FIRST = 0 - 200;
  130. {$EXTERNALSYM PSN_LAST}
  131. PSN_LAST = 0 - 299;
  132. {$EXTERNALSYM PSN_SETACTIVE}
  133. PSN_SETACTIVE = PSN_FIRST - 0;
  134. {$EXTERNALSYM PSN_KILLACTIVE}
  135. PSN_KILLACTIVE = PSN_FIRST - 1;
  136. {$EXTERNALSYM PSN_APPLY}
  137. PSN_APPLY = PSN_FIRST - 2;
  138. {$EXTERNALSYM PSN_RESET}
  139. PSN_RESET = PSN_FIRST - 3;
  140. {$EXTERNALSYM PSN_HELP}
  141. PSN_HELP = PSN_FIRST - 5;
  142. {$EXTERNALSYM PSN_WIZBACK}
  143. PSN_WIZBACK = PSN_FIRST - 6;
  144. {$EXTERNALSYM PSN_WIZNEXT}
  145. PSN_WIZNEXT = PSN_FIRST - 7;
  146. {$EXTERNALSYM PSN_WIZFINISH}
  147. PSN_WIZFINISH = PSN_FIRST - 8;
  148. {$EXTERNALSYM PSN_QUERYCANCEL}
  149. PSN_QUERYCANCEL = PSN_FIRST - 9;
  150. {$EXTERNALSYM PSN_GETOBJECT}
  151. PSN_GETOBJECT = PSN_FIRST - 10;
  152. { _WIN32_IE >= 0x0500 - IExplorer 5.0+ }
  153. {$EXTERNALSYM PSN_TRANSLATEACCELERATOR}
  154. PSN_TRANSLATEACCELERATOR= PSN_FIRST - 12;
  155. {$EXTERNALSYM PSN_QUERYINITIALFOCUS}
  156. PSN_QUERYINITIALFOCUS = PSN_FIRST - 13;
  157. {$EXTERNALSYM PSNRET_NOERROR}
  158. PSNRET_NOERROR = 0;
  159. {$EXTERNALSYM PSNRET_INVALID}
  160. PSNRET_INVALID = 1;
  161. {$EXTERNALSYM PSNRET_INVALID_NOCHANGEPAGE}
  162. PSNRET_INVALID_NOCHANGEPAGE = 2;
  163. {$EXTERNALSYM PSNRET_MESSAGEHANDLED}
  164. PSNRET_MESSAGEHANDLED = 3;
  165. {$EXTERNALSYM PSM_SETCURSEL}
  166. PSM_SETCURSEL = WM_USER + 101;
  167. {$EXTERNALSYM PSM_REMOVEPAGE}
  168. PSM_REMOVEPAGE = WM_USER + 102;
  169. {$EXTERNALSYM PSM_ADDPAGE}
  170. PSM_ADDPAGE = WM_USER + 103;
  171. {$EXTERNALSYM PSM_CHANGED}
  172. PSM_CHANGED = WM_USER + 104;
  173. {$EXTERNALSYM PSM_RESTARTWINDOWS}
  174. PSM_RESTARTWINDOWS = WM_USER + 105;
  175. {$EXTERNALSYM PSM_REBOOTSYSTEM}
  176. PSM_REBOOTSYSTEM = WM_USER + 106;
  177. {$EXTERNALSYM PSM_CANCELTOCLOSE}
  178. PSM_CANCELTOCLOSE = WM_USER + 107;
  179. {$EXTERNALSYM PSM_QUERYSIBLINGS}
  180. PSM_QUERYSIBLINGS = WM_USER + 108;
  181. {$EXTERNALSYM PSM_UNCHANGED}
  182. PSM_UNCHANGED = WM_USER + 109;
  183. {$EXTERNALSYM PSM_APPLY}
  184. PSM_APPLY = WM_USER + 110;
  185. {$EXTERNALSYM PSM_SETTITLEA}
  186. PSM_SETTITLEA = WM_USER + 111;
  187. {$EXTERNALSYM PSM_SETTITLEW}
  188. PSM_SETTITLEW = WM_USER + 120;
  189. {$IFDEF UNICODE}
  190. {$EXTERNALSYM PSM_SETTITLE}
  191. PSM_SETTITLE = PSM_SETTITLEW;
  192. {$ELSE}
  193. {$EXTERNALSYM PSM_SETTITLE}
  194. PSM_SETTITLE = PSM_SETTITLEA;
  195. {$ENDIF}
  196. {$EXTERNALSYM PSM_SETWIZBUTTONS}
  197. PSM_SETWIZBUTTONS = WM_USER + 112;
  198. {$EXTERNALSYM PSM_PRESSBUTTON}
  199. PSM_PRESSBUTTON = WM_USER + 113;
  200. {$EXTERNALSYM PSM_SETCURSELID}
  201. PSM_SETCURSELID = WM_USER + 114;
  202. {$EXTERNALSYM PSM_SETFINISHTEXTA}
  203. PSM_SETFINISHTEXTA = WM_USER + 115;
  204. {$EXTERNALSYM PSM_SETFINISHTEXTW}
  205. PSM_SETFINISHTEXTW = WM_USER + 121;
  206. {$IFDEF UNICODE}
  207. {$EXTERNALSYM PSM_SETFINISHTEXT}
  208. PSM_SETFINISHTEXT = PSM_SETFINISHTEXTW;
  209. {$ELSE}
  210. {$EXTERNALSYM PSM_SETFINISHTEXT}
  211. PSM_SETFINISHTEXT = PSM_SETFINISHTEXTA;
  212. {$ENDIF}
  213. {$EXTERNALSYM PSM_GETTABCONTROL}
  214. PSM_GETTABCONTROL = WM_USER + 116;
  215. {$EXTERNALSYM PSM_ISDIALOGMESSAGE}
  216. PSM_ISDIALOGMESSAGE = WM_USER + 117;
  217. {$EXTERNALSYM PSM_GETCURRENTPAGEHWND}
  218. PSM_GETCURRENTPAGEHWND = WM_USER + 118;
  219. {$EXTERNALSYM PSM_INSERTPAGE}
  220. PSM_INSERTPAGE = WM_USER + 119;
  221. { _WIN32_IE >= 0x0500 IExplorer 5.0+ }
  222. {$EXTERNALSYM PSM_SETHEADERTITLEA}
  223. PSM_SETHEADERTITLEA = WM_USER + 125;
  224. {$EXTERNALSYM PSM_SETHEADERTITLEW}
  225. PSM_SETHEADERTITLEW = WM_USER + 126;
  226. {$IFDEF UNICODE}
  227. {$EXTERNALSYM PSM_SETHEADERTITLE}
  228. PSM_SETHEADERTITLE = PSM_SETHEADERTITLEW;
  229. {$ELSE}
  230. {$EXTERNALSYM PSM_SETHEADERTITLE}
  231. PSM_SETHEADERTITLE = PSM_SETHEADERTITLEA;
  232. {$ENDIF}
  233. {$EXTERNALSYM PSM_SETHEADERSUBTITLEA}
  234. PSM_SETHEADERSUBTITLEA = WM_USER + 127;
  235. {$EXTERNALSYM PSM_SETHEADERSUBTITLEW}
  236. PSM_SETHEADERSUBTITLEW = WM_USER + 128;
  237. {$IFDEF UNICODE}
  238. {$EXTERNALSYM PSM_SETHEADERSUBTITLE}
  239. PSM_SETHEADERSUBTITLE = PSM_SETHEADERSUBTITLEW;
  240. {$ELSE}
  241. {$EXTERNALSYM PSM_SETHEADERSUBTITLE}
  242. PSM_SETHEADERSUBTITLE = PSM_SETHEADERSUBTITLEA;
  243. {$ENDIF}
  244. {$EXTERNALSYM PSM_HWNDTOINDEX}
  245. PSM_HWNDTOINDEX = WM_USER + 129;
  246. {$EXTERNALSYM PSM_INDEXTOHWND}
  247. PSM_INDEXTOHWND = WM_USER + 130;
  248. {$EXTERNALSYM PSM_PAGETOINDEX}
  249. PSM_PAGETOINDEX = WM_USER + 131;
  250. {$EXTERNALSYM PSM_INDEXTOPAGE}
  251. PSM_INDEXTOPAGE = WM_USER + 132;
  252. {$EXTERNALSYM PSM_IDTOINDEX}
  253. PSM_IDTOINDEX = WM_USER + 133;
  254. {$EXTERNALSYM PSM_INDEXTOID}
  255. PSM_INDEXTOID = WM_USER + 134;
  256. {$EXTERNALSYM PSM_GETRESULT}
  257. PSM_GETRESULT = WM_USER + 135;
  258. {$EXTERNALSYM PSM_RECALCPAGESIZES}
  259. PSM_RECALCPAGESIZES = WM_USER + 136;
  260. { _WIN32_WINNT >= 0x0600 Windows Vista+ }
  261. { Only UNICODE }
  262. {$EXTERNALSYM PSM_SETNEXTTEXTW}
  263. PSM_SETNEXTTEXTW = WM_USER + 137;
  264. {$EXTERNALSYM PSM_SETNEXTTEXT}
  265. PSM_SETNEXTTEXT = PSM_SETNEXTTEXTW;
  266. {$EXTERNALSYM PSWIZB_SHOW}
  267. PSWIZB_SHOW = 0;
  268. {$EXTERNALSYM PSWIZB_RESTORE}
  269. PSWIZB_RESTORE = 1;
  270. {$EXTERNALSYM PSM_SHOWWIZBUTTONS}
  271. PSM_SHOWWIZBUTTONS = WM_USER + 138;
  272. {$EXTERNALSYM PSM_ENABLEWIZBUTTONS}
  273. PSM_ENABLEWIZBUTTONS = WM_USER + 139;
  274. {$EXTERNALSYM PSM_SETBUTTONTEXTW}
  275. PSM_SETBUTTONTEXTW = WM_USER + 140;
  276. {$EXTERNALSYM PSM_SETBUTTONTEXT}
  277. PSM_SETBUTTONTEXT = PSM_SETBUTTONTEXTW;
  278. {$EXTERNALSYM PSWIZB_BACK}
  279. PSWIZB_BACK = $00000001;
  280. {$EXTERNALSYM PSWIZB_NEXT}
  281. PSWIZB_NEXT = $00000002;
  282. {$EXTERNALSYM PSWIZB_FINISH}
  283. PSWIZB_FINISH = $00000004;
  284. {$EXTERNALSYM PSWIZB_DISABLEDFINISH}
  285. PSWIZB_DISABLEDFINISH = $00000008;
  286. {$EXTERNALSYM PSBTN_BACK}
  287. PSBTN_BACK = 0;
  288. {$EXTERNALSYM PSBTN_NEXT}
  289. PSBTN_NEXT = 1;
  290. {$EXTERNALSYM PSBTN_FINISH}
  291. PSBTN_FINISH = 2;
  292. {$EXTERNALSYM PSBTN_OK}
  293. PSBTN_OK = 3;
  294. {$EXTERNALSYM PSBTN_APPLYNOW}
  295. PSBTN_APPLYNOW = 4;
  296. {$EXTERNALSYM PSBTN_CANCEL}
  297. PSBTN_CANCEL = 5;
  298. {$EXTERNALSYM PSBTN_HELP}
  299. PSBTN_HELP = 6;
  300. {$EXTERNALSYM PSBTN_MAX}
  301. PSBTN_MAX = 6;
  302. {$EXTERNALSYM ID_PSRESTARTWINDOWS}
  303. ID_PSRESTARTWINDOWS = 2;
  304. {$EXTERNALSYM ID_PSREBOOTSYSTEM}
  305. ID_PSREBOOTSYSTEM = ID_PSRESTARTWINDOWS or 1;
  306. {$EXTERNALSYM WIZ_CXDLG}
  307. WIZ_CXDLG = 276;
  308. {$EXTERNALSYM WIZ_CYDLG}
  309. WIZ_CYDLG = 140;
  310. {$EXTERNALSYM WIZ_CXBMP}
  311. WIZ_CXBMP = 80;
  312. {$EXTERNALSYM WIZ_BODYX}
  313. WIZ_BODYX = 92;
  314. {$EXTERNALSYM WIZ_BODYCX}
  315. WIZ_BODYCX = 184;
  316. {$EXTERNALSYM PROP_SM_CXDLG}
  317. PROP_SM_CXDLG = 212;
  318. {$EXTERNALSYM PROP_SM_CYDLG}
  319. PROP_SM_CYDLG = 188;
  320. {$EXTERNALSYM PROP_MED_CXDLG}
  321. PROP_MED_CXDLG = 227;
  322. {$EXTERNALSYM PROP_MED_CYDLG}
  323. PROP_MED_CYDLG = 215;
  324. {$EXTERNALSYM PROP_LG_CXDLG}
  325. PROP_LG_CXDLG = 252;
  326. {$EXTERNALSYM PROP_LG_CYDLG}
  327. PROP_LG_CYDLG = 218;
  328. type
  329. HPropSheetPage = Pointer;
  330. PPropSheetPageA = ^TPropSheetPageA;
  331. PPropSheetPageW = ^TPropSheetPageW;
  332. PPropSheetPage = PPropSheetPageW;
  333. {$EXTERNALSYM LPFNPSPCALLBACKA}
  334. LPFNPSPCALLBACKA = function(Wnd: HWND; Msg: Integer {UINT};
  335. PPSP: PPropSheetPageA): Integer {UINT} stdcall;
  336. {$EXTERNALSYM LPFNPSPCALLBACKW}
  337. LPFNPSPCALLBACKW = function(Wnd: HWND; Msg: Integer {UINT};
  338. PPSP: PPropSheetPageW): Integer {UINT} stdcall;
  339. {$EXTERNALSYM LPFNPSPCALLBACK}
  340. LPFNPSPCALLBACK = LPFNPSPCALLBACKW;
  341. TFNPSPCallbackA = LPFNPSPCALLBACKA;
  342. TFNPSPCallbackW = LPFNPSPCALLBACKW;
  343. TFNPSPCallback = TFNPSPCallbackW;
  344. {$EXTERNALSYM _PROPSHEETPAGEA}
  345. _PROPSHEETPAGEA = record
  346. dwSize: DWORD;
  347. dwFlags: DWORD;
  348. hInstance: HINST;
  349. case Integer of
  350. 0: (
  351. pszTemplate: PAnsiChar);
  352. 1: (
  353. pResource: PDlgTemplate;
  354. case Integer of
  355. 0: (
  356. hIcon: HICON);
  357. 1: (
  358. pszIcon: PAnsiChar;
  359. pszTitle: PAnsiChar;
  360. pfnDlgProc: TFNDlgProc;
  361. lParam: LPARAM;
  362. pfnCallback: TFNPSPCallbackA;
  363. pcRefParent: PInteger; // PUINT
  364. pszHeaderTitle: PAnsiChar; // this is displayed in the header
  365. pszHeaderSubTitle: PAnsiChar; //
  366. hActCtx: THandle; // Windows 5.1 or newer
  367. case Integer of // Windows 6.0 or newer
  368. 0: (
  369. hbmHeader: HBITMAP);
  370. 1: (
  371. pszbmHeader: PAnsiChar);
  372. )
  373. );
  374. end;
  375. {$EXTERNALSYM _PROPSHEETPAGEW}
  376. _PROPSHEETPAGEW = record
  377. dwSize: DWORD;
  378. dwFlags: DWORD;
  379. hInstance: HINST;
  380. case Integer of
  381. 0: (
  382. pszTemplate: PWideChar);
  383. 1: (
  384. pResource: PDlgTemplate;
  385. case Integer of
  386. 0: (
  387. hIcon: HICON);
  388. 1: (
  389. pszIcon: PWideChar;
  390. pszTitle: PWideChar;
  391. pfnDlgProc: TFNDlgProc;
  392. lParam: LPARAM;
  393. pfnCallback: TFNPSPCallbackW;
  394. pcRefParent: PInteger; // PUINT
  395. pszHeaderTitle: PWideChar; // this is displayed in the header
  396. pszHeaderSubTitle: PWideChar; //
  397. hActCtx: THandle; // Windows 5.1 or newer
  398. case Integer of // Windows 6.0 or newer
  399. 0: (
  400. hbmHeader: HBITMAP);
  401. 1: (
  402. pszbmHeader: PAnsiChar);
  403. )
  404. );
  405. end;
  406. {$EXTERNALSYM _PROPSHEETPAGE}
  407. _PROPSHEETPAGE = _PROPSHEETPAGEW;
  408. TPropSheetPageA = _PROPSHEETPAGEA;
  409. TPropSheetPageW = _PROPSHEETPAGEW;
  410. TPropSheetPage = TPropSheetPageW;
  411. {$EXTERNALSYM PROPSHEETPAGEA}
  412. PROPSHEETPAGEA = _PROPSHEETPAGEA;
  413. {$EXTERNALSYM PROPSHEETPAGEW}
  414. PROPSHEETPAGEW = _PROPSHEETPAGEW;
  415. {$EXTERNALSYM PROPSHEETPAGE}
  416. PROPSHEETPAGE = PROPSHEETPAGEW;
  417. {$EXTERNALSYM PFNPROPSHEETCALLBACK}
  418. PFNPROPSHEETCALLBACK = function(Wnd: HWND; Msg: Integer {UINT};
  419. LParam: LPARAM): Integer {UINT} stdcall;
  420. TFNPropSheetCallback = PFNPROPSHEETCALLBACK;
  421. PPropSheetHeaderA = ^TPropSheetHeaderA;
  422. PPropSheetHeaderW = ^TPropSheetHeaderW;
  423. PPropSheetHeader = PPropSheetHeaderW;
  424. {$EXTERNALSYM _PROPSHEETHEADERA}
  425. _PROPSHEETHEADERA = record
  426. dwSize: DWORD;
  427. dwFlags: DWORD;
  428. hwndParent: HWND;
  429. hInstance: HINST;
  430. case Integer of
  431. 0: (
  432. hIcon: HICON);
  433. 1: (
  434. pszIcon: PAnsiChar;
  435. pszCaption: PAnsiChar;
  436. nPages: Integer; // UINT
  437. case Integer of
  438. 0: (
  439. nStartPage: Integer);
  440. 1: (
  441. pStartPage: PAnsiChar;
  442. case Integer of
  443. 0: (
  444. ppsp: PPropSheetPageA);
  445. 1: (
  446. phpage: HPROPSHEETPAGE;
  447. pfnCallback: TFNPropSheetCallback;
  448. case Integer of
  449. 0: (
  450. hbmWatermark: HBITMAP);
  451. 1: (
  452. pszbmWatermark: PAnsiChar;
  453. hplWatermark: HPALETTE;
  454. // Header bitmap shares the palette with watermark
  455. case Integer of
  456. 0: (
  457. hbmHeader: HBITMAP);
  458. 1: (
  459. pszbmHeader: PAnsiChar)))));
  460. end;
  461. {$EXTERNALSYM _PROPSHEETHEADERW}
  462. _PROPSHEETHEADERW = record
  463. dwSize: DWORD;
  464. dwFlags: DWORD;
  465. hwndParent: HWND;
  466. hInstance: HINST;
  467. case Integer of
  468. 0: (
  469. hIcon: HICON);
  470. 1: (
  471. pszIcon: PWideChar;
  472. pszCaption: PWideChar;
  473. nPages: Integer; // UINT
  474. case Integer of
  475. 0: (
  476. nStartPage: Integer);
  477. 1: (
  478. pStartPage: PWideChar;
  479. case Integer of
  480. 0: (
  481. ppsp: PPropSheetPageW);
  482. 1: (
  483. phpage: HPROPSHEETPAGE;
  484. pfnCallback: TFNPropSheetCallback;
  485. case Integer of
  486. 0: (
  487. hbmWatermark: HBITMAP);
  488. 1: (
  489. pszbmWatermark: PWideChar;
  490. hplWatermark: HPALETTE;
  491. // Header bitmap shares the palette with watermark
  492. case Integer of
  493. 0: (
  494. hbmHeader: HBITMAP);
  495. 1: (
  496. pszbmHeader: PWideChar)))));
  497. end;
  498. {$EXTERNALSYM _PROPSHEETHEADER}
  499. _PROPSHEETHEADER = _PROPSHEETHEADERW;
  500. TPropSheetHeaderA = _PROPSHEETHEADERA;
  501. TPropSheetHeaderW = _PROPSHEETHEADERW;
  502. TPropSheetHeader = TPropSheetHeaderW;
  503. {$EXTERNALSYM LPFNADDPROPSHEETPAGE}
  504. LPFNADDPROPSHEETPAGE = function(hPSP: HPropSheetPage;
  505. lParam: LPARAM): BOOL stdcall;
  506. TFNAddPropSheetPage = LPFNADDPROPSHEETPAGE;
  507. {$EXTERNALSYM LPFNADDPROPSHEETPAGES}
  508. LPFNADDPROPSHEETPAGES = function(lpvoid: Pointer; pfn: TFNAddPropSheetPage;
  509. lParam: LPARAM): BOOL stdcall;
  510. TFNAddPropSheetPages = LPFNADDPROPSHEETPAGES;
  511. {$EXTERNALSYM CreatePropertySheetPage}
  512. function CreatePropertySheetPage(var PSP: TPropSheetPage): HPropSheetPage; stdcall;
  513. {$EXTERNALSYM CreatePropertySheetPageA}
  514. function CreatePropertySheetPageA(var PSP: TPropSheetPageA): HPropSheetPage; stdcall;
  515. {$EXTERNALSYM CreatePropertySheetPageW}
  516. function CreatePropertySheetPageW(var PSP: TPropSheetPageW): HPropSheetPage; stdcall;
  517. {$EXTERNALSYM DestroyPropertySheetPage}
  518. function DestroyPropertySheetPage(hPSP: HPropSheetPage): BOOL; stdcall;
  519. {$EXTERNALSYM PropertySheet}
  520. function PropertySheet(var PSH: TPropSheetHeader): Integer; stdcall;
  521. {$EXTERNALSYM PropertySheetA}
  522. function PropertySheetA(var PSH: TPropSheetHeaderA): Integer; stdcall;
  523. {$EXTERNALSYM PropertySheetW}
  524. function PropertySheetW(var PSH: TPropSheetHeaderW): Integer; stdcall;
  525. { From commctrl.h }
  526. type
  527. {$EXTERNALSYM tagINITCOMMONCONTROLSEX}
  528. tagINITCOMMONCONTROLSEX = record
  529. dwSize: DWORD; // size of this structure
  530. dwICC: DWORD; // flags indicating which classes to be initialized
  531. end;
  532. PInitCommonControlsEx = ^TInitCommonControlsEx;
  533. TInitCommonControlsEx = tagINITCOMMONCONTROLSEX;
  534. const
  535. {$EXTERNALSYM ICC_LISTVIEW_CLASSES}
  536. ICC_LISTVIEW_CLASSES = $00000001; // listview, header
  537. {$EXTERNALSYM ICC_TREEVIEW_CLASSES}
  538. ICC_TREEVIEW_CLASSES = $00000002; // treeview, tooltips
  539. {$EXTERNALSYM ICC_BAR_CLASSES}
  540. ICC_BAR_CLASSES = $00000004; // toolbar, statusbar, trackbar, tooltips
  541. {$EXTERNALSYM ICC_TAB_CLASSES}
  542. ICC_TAB_CLASSES = $00000008; // tab, tooltips
  543. {$EXTERNALSYM ICC_UPDOWN_CLASS}
  544. ICC_UPDOWN_CLASS = $00000010; // updown
  545. {$EXTERNALSYM ICC_PROGRESS_CLASS}
  546. ICC_PROGRESS_CLASS = $00000020; // progress
  547. {$EXTERNALSYM ICC_HOTKEY_CLASS}
  548. ICC_HOTKEY_CLASS = $00000040; // hotkey
  549. {$EXTERNALSYM ICC_ANIMATE_CLASS}
  550. ICC_ANIMATE_CLASS = $00000080; // animate
  551. {$EXTERNALSYM ICC_WIN95_CLASSES}
  552. ICC_WIN95_CLASSES = $000000FF;
  553. {$EXTERNALSYM ICC_DATE_CLASSES}
  554. ICC_DATE_CLASSES = $00000100; // month picker, date picker, time picker, updown
  555. {$EXTERNALSYM ICC_USEREX_CLASSES}
  556. ICC_USEREX_CLASSES = $00000200; // comboex
  557. {$EXTERNALSYM ICC_COOL_CLASSES}
  558. ICC_COOL_CLASSES = $00000400; // rebar (coolbar) control
  559. {$EXTERNALSYM ICC_INTERNET_CLASSES}
  560. ICC_INTERNET_CLASSES = $00000800;
  561. {$EXTERNALSYM ICC_PAGESCROLLER_CLASS}
  562. ICC_PAGESCROLLER_CLASS = $00001000; // page scroller
  563. {$EXTERNALSYM ICC_NATIVEFNTCTL_CLASS}
  564. ICC_NATIVEFNTCTL_CLASS = $00002000; // native font control
  565. { For Windows >= XP }
  566. {$EXTERNALSYM ICC_STANDARD_CLASSES}
  567. ICC_STANDARD_CLASSES = $00004000;
  568. {$EXTERNALSYM ICC_LINK_CLASS}
  569. ICC_LINK_CLASS = $00008000;
  570. {$EXTERNALSYM InitCommonControls}
  571. procedure InitCommonControls; stdcall;
  572. {$EXTERNALSYM InitCommonControlsEx}
  573. function InitCommonControlsEx(var ICC: TInitCommonControlsEx): Bool; { Re-defined below }
  574. const
  575. {$EXTERNALSYM IMAGE_BITMAP}
  576. IMAGE_BITMAP = 0;
  577. const
  578. {$EXTERNALSYM ODT_HEADER}
  579. ODT_HEADER = 100;
  580. {$EXTERNALSYM ODT_TAB}
  581. ODT_TAB = 101;
  582. {$EXTERNALSYM ODT_LISTVIEW}
  583. ODT_LISTVIEW = 102;
  584. { ====== Ranges for control message IDs ======================= }
  585. const
  586. {$EXTERNALSYM LVM_FIRST}
  587. LVM_FIRST = $1000; { ListView messages }
  588. {$EXTERNALSYM TV_FIRST}
  589. TV_FIRST = $1100; { TreeView messages }
  590. {$EXTERNALSYM HDM_FIRST}
  591. HDM_FIRST = $1200; { Header messages }
  592. {$EXTERNALSYM TCM_FIRST}
  593. TCM_FIRST = $1300; { Tab control messages }
  594. {$EXTERNALSYM PGM_FIRST}
  595. PGM_FIRST = $1400; { Pager control messages }
  596. { For Windows >= XP }
  597. {$EXTERNALSYM ECM_FIRST}
  598. ECM_FIRST = $1500; { Edit control messages }
  599. {$EXTERNALSYM BCM_FIRST}
  600. BCM_FIRST = $1600; { Button control messages }
  601. {$EXTERNALSYM CBM_FIRST}
  602. CBM_FIRST = $1700; { Combobox control messages }
  603. {$EXTERNALSYM CCM_FIRST}
  604. CCM_FIRST = $2000; { Common control shared messages }
  605. {$EXTERNALSYM CCM_LAST}
  606. CCM_LAST = CCM_FIRST + $200;
  607. {$EXTERNALSYM CCM_SETBKCOLOR}
  608. CCM_SETBKCOLOR = CCM_FIRST + 1; // lParam is bkColor
  609. type
  610. {$EXTERNALSYM tagCOLORSCHEME}
  611. tagCOLORSCHEME = record
  612. dwSize: DWORD;
  613. clrBtnHighlight: COLORREF; // highlight color
  614. clrBtnShadow: COLORREF; // shadow color
  615. end;
  616. PColorScheme = ^TColorScheme;
  617. TColorScheme = tagCOLORSCHEME;
  618. const
  619. {$EXTERNALSYM CCM_SETCOLORSCHEME}
  620. CCM_SETCOLORSCHEME = CCM_FIRST + 2; // lParam is color scheme
  621. {$EXTERNALSYM CCM_GETCOLORSCHEME}
  622. CCM_GETCOLORSCHEME = CCM_FIRST + 3; // fills in COLORSCHEME pointed to by lParam
  623. {$EXTERNALSYM CCM_GETDROPTARGET}
  624. CCM_GETDROPTARGET = CCM_FIRST + 4;
  625. {$EXTERNALSYM CCM_SETUNICODEFORMAT}
  626. CCM_SETUNICODEFORMAT = CCM_FIRST + 5;
  627. {$EXTERNALSYM CCM_GETUNICODEFORMAT}
  628. CCM_GETUNICODEFORMAT = CCM_FIRST + 6;
  629. {$EXTERNALSYM CCM_SETVERSION}
  630. CCM_SETVERSION = CCM_FIRST + $7;
  631. {$EXTERNALSYM CCM_GETVERSION}
  632. CCM_GETVERSION = CCM_FIRST + $8;
  633. {$EXTERNALSYM CCM_SETNOTIFYWINDOW}
  634. CCM_SETNOTIFYWINDOW = CCM_FIRST + $9; { wParam == hwndParent. }
  635. { For Windows >= XP }
  636. {$EXTERNALSYM CCM_SETWINDOWTHEME}
  637. CCM_SETWINDOWTHEME = CCM_FIRST + $B;
  638. {$EXTERNALSYM CCM_DPISCALE}
  639. CCM_DPISCALE = CCM_FIRST + $C; { wParam == Awareness }
  640. {$EXTERNALSYM INFOTIPSIZE}
  641. INFOTIPSIZE = 1024; // for tooltips
  642. { ====== WM_NOTIFY codes (NMHDR.code values) ================== }
  643. const
  644. {$EXTERNALSYM NM_FIRST}
  645. NM_FIRST = 0- 0; { generic to all controls }
  646. {$EXTERNALSYM NM_LAST}
  647. NM_LAST = 0- 99;
  648. {$EXTERNALSYM LVN_FIRST}
  649. LVN_FIRST = 0-100; { listview }
  650. {$EXTERNALSYM LVN_LAST}
  651. LVN_LAST = 0-199;
  652. {$EXTERNALSYM HDN_FIRST}
  653. HDN_FIRST = 0-300; { header }
  654. {$EXTERNALSYM HDN_LAST}
  655. HDN_LAST = 0-399;
  656. {$EXTERNALSYM TVN_FIRST}
  657. TVN_FIRST = 0-400; { treeview }
  658. {$EXTERNALSYM TVN_LAST}
  659. TVN_LAST = 0-499;
  660. {$EXTERNALSYM TTN_FIRST}
  661. TTN_FIRST = 0-520; { tooltips }
  662. {$EXTERNALSYM TTN_LAST}
  663. TTN_LAST = 0-549;
  664. {$EXTERNALSYM TCN_FIRST}
  665. TCN_FIRST = 0-550; { tab control }
  666. {$EXTERNALSYM TCN_LAST}
  667. TCN_LAST = 0-580;
  668. { Shell reserved (0-580) - (0-589) }
  669. {$EXTERNALSYM CDN_FIRST}
  670. CDN_FIRST = 0-601; { common dialog (new) }
  671. {$EXTERNALSYM CDN_LAST}
  672. CDN_LAST = 0-699;
  673. {$EXTERNALSYM TBN_FIRST}
  674. TBN_FIRST = 0-700; { toolbar }
  675. {$EXTERNALSYM TBN_LAST}
  676. TBN_LAST = 0-720;
  677. {$EXTERNALSYM UDN_FIRST}
  678. UDN_FIRST = 0-721; { updown }
  679. {$EXTERNALSYM UDN_LAST}
  680. UDN_LAST = 0-729;
  681. { _WIN32_IE >= 0x0300 - IExplorer 3.0+ }
  682. {$EXTERNALSYM DTN_FIRST}
  683. DTN_FIRST = 0-740; { datetimepick }
  684. {$EXTERNALSYM DTN_LAST}
  685. DTN_LAST = 0-745; { DTN_FIRST - 5 }
  686. {$EXTERNALSYM MCN_FIRST}
  687. MCN_FIRST = 0-746; { monthcal }
  688. {$EXTERNALSYM MCN_LAST}
  689. MCN_LAST = 0-752; { MCN_FIRST - 6 }
  690. {$EXTERNALSYM DTN_FIRST2}
  691. DTN_FIRST2 = 0-753; { datetimepick2 }
  692. {$EXTERNALSYM DTN_LAST2}
  693. DTN_LAST2 = 0-799;
  694. {$EXTERNALSYM CBEN_FIRST}
  695. CBEN_FIRST = 0-800; { combo box ex }
  696. {$EXTERNALSYM CBEN_LAST}
  697. CBEN_LAST = 0-830;
  698. {$EXTERNALSYM RBN_FIRST}
  699. RBN_FIRST = 0-831; { coolbar }
  700. {$EXTERNALSYM RBN_LAST}
  701. RBN_LAST = 0-859;
  702. { _WIN32_IE >= 0x0400 - IExplorer 4.0+ }
  703. {$EXTERNALSYM IPN_FIRST}
  704. IPN_FIRST = 0-860; { internet address }
  705. {$EXTERNALSYM IPN_LAST}
  706. IPN_LAST = 0-879; { internet address }
  707. {$EXTERNALSYM SBN_FIRST}
  708. SBN_FIRST = 0-880; { status bar }
  709. {$EXTERNALSYM SBN_LAST}
  710. SBN_LAST = 0-899;
  711. {$EXTERNALSYM PGN_FIRST}
  712. PGN_FIRST = 0-900; { Pager Control }
  713. {$EXTERNALSYM PGN_LAST}
  714. PGN_LAST = 0-950;
  715. { _WIN32_IE >= 0x0500 - IExplorer 5.0+ }
  716. {$EXTERNALSYM WMN_FIRST}
  717. WMN_FIRST = 0-1000;
  718. {$EXTERNALSYM WMN_LAST}
  719. WMN_LAST = 0-1200;
  720. { _WIN32_WINNT >= 0x0501 Windows >= XP }
  721. {$EXTERNALSYM BCN_FIRST}
  722. BCN_FIRST = 0-1250;
  723. {$EXTERNALSYM BCN_LAST}
  724. BCN_LAST = 0-1350;
  725. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  726. {$EXTERNALSYM TRBN_FIRST}
  727. TRBN_FIRST = 0-1501; { trackbar }
  728. {$EXTERNALSYM TRBN_LAST}
  729. TRBN_LAST = 0-1519;
  730. {$EXTERNALSYM MSGF_COMMCTRL_BEGINDRAG}
  731. MSGF_COMMCTRL_BEGINDRAG = $4200;
  732. {$EXTERNALSYM MSGF_COMMCTRL_SIZEHEADER}
  733. MSGF_COMMCTRL_SIZEHEADER = $4201;
  734. {$EXTERNALSYM MSGF_COMMCTRL_DRAGSELECT}
  735. MSGF_COMMCTRL_DRAGSELECT = $4202;
  736. {$EXTERNALSYM MSGF_COMMCTRL_TOOLBARCUST}
  737. MSGF_COMMCTRL_TOOLBARCUST = $4203;
  738. { ====== Generic WM_NOTIFY notification codes ================= }
  739. const
  740. {$EXTERNALSYM NM_OUTOFMEMORY}
  741. NM_OUTOFMEMORY = NM_FIRST-1;
  742. {$EXTERNALSYM NM_CLICK}
  743. NM_CLICK = NM_FIRST-2;
  744. {$EXTERNALSYM NM_DBLCLK}
  745. NM_DBLCLK = NM_FIRST-3;
  746. {$EXTERNALSYM NM_RETURN}
  747. NM_RETURN = NM_FIRST-4;
  748. {$EXTERNALSYM NM_RCLICK}
  749. NM_RCLICK = NM_FIRST-5;
  750. {$EXTERNALSYM NM_RDBLCLK}
  751. NM_RDBLCLK = NM_FIRST-6;
  752. {$EXTERNALSYM NM_SETFOCUS}
  753. NM_SETFOCUS = NM_FIRST-7;
  754. {$EXTERNALSYM NM_KILLFOCUS}
  755. NM_KILLFOCUS = NM_FIRST-8;
  756. { _WIN32_IE >= 0x0300 IExplorer 3.0+ }
  757. {$EXTERNALSYM NM_CUSTOMDRAW}
  758. NM_CUSTOMDRAW = NM_FIRST-12;
  759. {$EXTERNALSYM NM_HOVER}
  760. NM_HOVER = NM_FIRST-13;
  761. { _WIN32_IE >= 0x0400 IExplorer 4.0+ }
  762. {$EXTERNALSYM NM_NCHITTEST}
  763. NM_NCHITTEST = NM_FIRST-14; // uses NMMOUSE struct
  764. {$EXTERNALSYM NM_KEYDOWN}
  765. NM_KEYDOWN = NM_FIRST-15; // uses NMKEY struct
  766. {$EXTERNALSYM NM_RELEASEDCAPTURE}
  767. NM_RELEASEDCAPTURE = NM_FIRST-16;
  768. {$EXTERNALSYM NM_SETCURSOR}
  769. NM_SETCURSOR = NM_FIRST-17; // uses NMMOUSE struct
  770. {$EXTERNALSYM NM_CHAR}
  771. NM_CHAR = NM_FIRST-18; // uses NMCHAR struct
  772. { _WIN32_IE >= 0x0401 IExplorer 4.01+ }
  773. {$EXTERNALSYM NM_TOOLTIPSCREATED}
  774. NM_TOOLTIPSCREATED = NM_FIRST-19; { notify of when the tooltips window is create }
  775. { _WIN32_IE >= 0x0500 IExplorer 5.0+ }
  776. {$EXTERNALSYM NM_LDOWN}
  777. NM_LDOWN = NM_FIRST-20;
  778. {$EXTERNALSYM NM_RDOWN}
  779. NM_RDOWN = NM_FIRST-21;
  780. {$EXTERNALSYM NM_THEMECHANGED}
  781. NM_THEMECHANGED = NM_FIRST-22;
  782. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  783. {$EXTERNALSYM NM_FONTCHANGED}
  784. NM_FONTCHANGED = NM_FIRST-23;
  785. {$EXTERNALSYM NM_CUSTOMTEXT}
  786. NM_CUSTOMTEXT = NM_FIRST-24; { uses NMCUSTOMTEXT struct }
  787. {$EXTERNALSYM NM_TVSTATEIMAGECHANGING}
  788. NM_TVSTATEIMAGECHANGING = NM_FIRST-24; { uses NMTVSTATEIMAGECHANGING struct, defined after HTREEITEM }
  789. type
  790. {$EXTERNALSYM tagNMMOUSE}
  791. tagNMMOUSE = record
  792. hdr: TNMHdr;
  793. dwItemSpec: DWORD_PTR;
  794. dwItemData: DWORD_PTR;
  795. pt: TPoint;
  796. dwHitInfo: LPARAM; // any specifics about where on the item or control the mouse is
  797. end;
  798. PNMMouse = ^TNMMouse;
  799. TNMMouse = tagNMMOUSE;
  800. PNMClick = ^TNMClick;
  801. TNMClick = tagNMMOUSE;
  802. // Generic structure to request an object of a specific type.
  803. {$EXTERNALSYM tagNMOBJECTNOTIFY}
  804. tagNMOBJECTNOTIFY = record
  805. hdr: TNMHdr;
  806. iItem: Integer;
  807. piid: PGUID;
  808. pObject: Pointer; // IUnknown
  809. hResult: HRESULT;
  810. dwFlags: DWORD; // control specific flags (hints as to where in iItem it hit)
  811. end;
  812. PNMObjectNotify = ^TNMObjectNotify;
  813. TNMObjectNotify = tagNMOBJECTNOTIFY;
  814. // Generic structure for a key
  815. {$EXTERNALSYM tagNMKEY}
  816. tagNMKEY = record
  817. hdr: TNMHdr;
  818. nVKey: UINT;
  819. uFlags: UINT;
  820. end;
  821. PNMKey = ^TNMKey;
  822. TNMKey = tagNMKEY;
  823. // Generic structure for a character
  824. {$EXTERNALSYM tagNMCHAR}
  825. tagNMCHAR = record
  826. hdr: TNMHdr;
  827. ch: UINT;
  828. dwItemPrev: DWORD; // Item previously selected
  829. dwItemNext: DWORD; // Item to be selected
  830. end;
  831. PNMChar = ^TNMChar;
  832. TNMChar = tagNMCHAR;
  833. { For IE >= 0x0600 }
  834. { $EXTERNALSYM tagNMCUSTOMTEXT}
  835. tagNMCUSTOMTEXT = record
  836. hdr: NMHDR;
  837. hDC: HDC;
  838. lpString: LPCWSTR;
  839. nCount: Integer;
  840. lpRect: PRect;
  841. uFormat: UINT;
  842. fLink: BOOL;
  843. end;
  844. PNMCustomText = ^TNMCustomText;
  845. TNMCustomText = tagNMCUSTOMTEXT;
  846. { ==================== CUSTOM DRAW ========================================== }
  847. const
  848. // custom draw return flags
  849. // values under 0x00010000 are reserved for global custom draw values.
  850. // above that are for specific controls
  851. {$EXTERNALSYM CDRF_DODEFAULT}
  852. CDRF_DODEFAULT = $00000000;
  853. {$EXTERNALSYM CDRF_NEWFONT}
  854. CDRF_NEWFONT = $00000002;
  855. {$EXTERNALSYM CDRF_SKIPDEFAULT}
  856. CDRF_SKIPDEFAULT = $00000004;
  857. {$EXTERNALSYM CDRF_DOERASE}
  858. CDRF_DOERASE = $00000008; { draw the background }
  859. {$EXTERNALSYM CDRF_SKIPPOSTPAINT}
  860. CDRF_SKIPPOSTPAINT = $00000100; { don't draw the focus rect }
  861. {$EXTERNALSYM CDRF_NOTIFYPOSTPAINT}
  862. CDRF_NOTIFYPOSTPAINT = $00000010;
  863. {$EXTERNALSYM CDRF_NOTIFYITEMDRAW}
  864. CDRF_NOTIFYITEMDRAW = $00000020;
  865. { _WIN32_IE >= 0x0400 IExplorer 4.0+ }
  866. {$EXTERNALSYM CDRF_NOTIFYSUBITEMDRAW}
  867. CDRF_NOTIFYSUBITEMDRAW = $00000020; // flags are the same, we can distinguish by context
  868. {$EXTERNALSYM CDRF_NOTIFYPOSTERASE}
  869. CDRF_NOTIFYPOSTERASE = $00000040;
  870. // drawstage flags
  871. // values under = $00010000 are reserved for global custom draw values.
  872. // above that are for specific controls
  873. {$EXTERNALSYM CDDS_PREPAINT}
  874. CDDS_PREPAINT = $00000001;
  875. {$EXTERNALSYM CDDS_POSTPAINT}
  876. CDDS_POSTPAINT = $00000002;
  877. {$EXTERNALSYM CDDS_PREERASE}
  878. CDDS_PREERASE = $00000003;
  879. {$EXTERNALSYM CDDS_POSTERASE}
  880. CDDS_POSTERASE = $00000004;
  881. // the = $000010000 bit means it's individual item specific
  882. {$EXTERNALSYM CDDS_ITEM}
  883. CDDS_ITEM = $00010000;
  884. {$EXTERNALSYM CDDS_ITEMPREPAINT}
  885. CDDS_ITEMPREPAINT = CDDS_ITEM or CDDS_PREPAINT;
  886. {$EXTERNALSYM CDDS_ITEMPOSTPAINT}
  887. CDDS_ITEMPOSTPAINT = CDDS_ITEM or CDDS_POSTPAINT;
  888. {$EXTERNALSYM CDDS_ITEMPREERASE}
  889. CDDS_ITEMPREERASE = CDDS_ITEM or CDDS_PREERASE;
  890. {$EXTERNALSYM CDDS_ITEMPOSTERASE}
  891. CDDS_ITEMPOSTERASE = CDDS_ITEM or CDDS_POSTERASE;
  892. {$EXTERNALSYM CDDS_SUBITEM}
  893. CDDS_SUBITEM = $00020000;
  894. // itemState flags
  895. {$EXTERNALSYM CDIS_SELECTED}
  896. CDIS_SELECTED = $0001;
  897. {$EXTERNALSYM CDIS_GRAYED}
  898. CDIS_GRAYED = $0002;
  899. {$EXTERNALSYM CDIS_DISABLED}
  900. CDIS_DISABLED = $0004;
  901. {$EXTERNALSYM CDIS_CHECKED}
  902. CDIS_CHECKED = $0008;
  903. {$EXTERNALSYM CDIS_FOCUS}
  904. CDIS_FOCUS = $0010;
  905. {$EXTERNALSYM CDIS_DEFAULT}
  906. CDIS_DEFAULT = $0020;
  907. {$EXTERNALSYM CDIS_HOT}
  908. CDIS_HOT = $0040;
  909. {$EXTERNALSYM CDIS_MARKED}
  910. CDIS_MARKED = $0080;
  911. {$EXTERNALSYM CDIS_INDETERMINATE}
  912. CDIS_INDETERMINATE = $0100;
  913. { For Windows >= XP }
  914. {$EXTERNALSYM CDIS_SHOWKEYBOARDCUES}
  915. CDIS_SHOWKEYBOARDCUES = $0200;
  916. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  917. {$EXTERNALSYM CDIS_NEARHOT}
  918. CDIS_NEARHOT = $0400;
  919. {$EXTERNALSYM CDIS_OTHERSIDEHOT}
  920. CDIS_OTHERSIDEHOT = $0800;
  921. {$EXTERNALSYM CDIS_DROPHILITED}
  922. CDIS_DROPHILITED = $1000;
  923. type
  924. {$EXTERNALSYM tagNMCUSTOMDRAWINFO}
  925. tagNMCUSTOMDRAWINFO = record
  926. hdr: TNMHdr;
  927. dwDrawStage: DWORD;
  928. hdc: HDC;
  929. rc: TRect;
  930. dwItemSpec: DWORD_PTR; // this is control specific, but it's how to specify an item. valid only with CDDS_ITEM bit set
  931. uItemState: UINT;
  932. lItemlParam: LPARAM;
  933. end;
  934. PNMCustomDraw = ^TNMCustomDraw;
  935. TNMCustomDraw = tagNMCUSTOMDRAWINFO;
  936. {$EXTERNALSYM tagNMTTCUSTOMDRAW}
  937. tagNMTTCUSTOMDRAW = record
  938. nmcd: TNMCustomDraw;
  939. uDrawFlags: UINT;
  940. end;
  941. PNMTTCustomDraw = ^TNMTTCustomDraw;
  942. TNMTTCustomDraw = tagNMTTCUSTOMDRAW;
  943. {$EXTERNALSYM tagNMCUSTOMSPLITRECTINFO}
  944. tagNMCUSTOMSPLITRECTINFO = record
  945. hdr: TNMHdr;
  946. rcClient: TRect;
  947. rcButton: TRect;
  948. rcSplit: TRect;
  949. end;
  950. PNMCustomSplitRectInfo = ^TNMCustomSplitRectInfo;
  951. TNMCustomSplitRectInfo = tagNMCUSTOMSPLITRECTINFO;
  952. const
  953. {$EXTERNALSYM NM_GETCUSTOMSPLITRECT}
  954. NM_GETCUSTOMSPLITRECT = BCN_FIRST + $0003;
  955. { ====== IMAGE LIST =========================================== }
  956. const
  957. {$EXTERNALSYM CLR_NONE}
  958. CLR_NONE = $FFFFFFFF;
  959. {$EXTERNALSYM CLR_DEFAULT}
  960. CLR_DEFAULT = $FF000000;
  961. type
  962. {$EXTERNALSYM HIMAGELIST}
  963. HIMAGELIST = THandle;
  964. {$EXTERNALSYM _IMAGELISTDRAWPARAMS}
  965. _IMAGELISTDRAWPARAMS = record
  966. cbSize: DWORD;
  967. himl: HIMAGELIST;
  968. i: Integer;
  969. hdcDst: HDC;
  970. x: Integer;
  971. y: Integer;
  972. cx: Integer;
  973. cy: Integer;
  974. xBitmap: Integer; // x offest from the upperleft of bitmap
  975. yBitmap: Integer; // y offset from the upperleft of bitmap
  976. rgbBk: COLORREF;
  977. rgbFg: COLORREF;
  978. fStyle: UINT;
  979. dwRop: DWORD;
  980. { For IE >= 0x0501 }
  981. fState: DWORD;
  982. Frame: DWORD;
  983. crEffect: COLORREF;
  984. end;
  985. PImageListDrawParams = ^TImageListDrawParams;
  986. TImageListDrawParams = _IMAGELISTDRAWPARAMS;
  987. const
  988. {$EXTERNALSYM ILC_MASK}
  989. ILC_MASK = $0001;
  990. {$EXTERNALSYM ILC_COLOR}
  991. ILC_COLOR = $0000;
  992. {$EXTERNALSYM ILC_COLORDDB}
  993. ILC_COLORDDB = $00FE;
  994. {$EXTERNALSYM ILC_COLOR4}
  995. ILC_COLOR4 = $0004;
  996. {$EXTERNALSYM ILC_COLOR8}
  997. ILC_COLOR8 = $0008;
  998. {$EXTERNALSYM ILC_COLOR16}
  999. ILC_COLOR16 = $0010;
  1000. {$EXTERNALSYM ILC_COLOR24}
  1001. ILC_COLOR24 = $0018;
  1002. {$EXTERNALSYM ILC_COLOR32}
  1003. ILC_COLOR32 = $0020;
  1004. {$EXTERNALSYM ILC_PALETTE}
  1005. ILC_PALETTE = $0800;
  1006. { _WIN32_WINNT >= 0x0501 Windows >= XP }
  1007. {$EXTERNALSYM ILC_MIRROR}
  1008. ILC_MIRROR = $00002000; { Mirror the icons contained, if the process is mirrored }
  1009. {$EXTERNALSYM ILC_PERITEMMIRROR}
  1010. ILC_PERITEMMIRROR = $00008000; { Causes the mirroring code to mirror each item when inserting a set of images, verses the whole strip }
  1011. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1012. {$EXTERNALSYM ILC_ORIGINALSIZE}
  1013. ILC_ORIGINALSIZE = $00010000; { Imagelist should accept smaller than set images and apply OriginalSize based on image added }
  1014. {$EXTERNALSYM ILC_HIGHQUALITYSCALE}
  1015. ILC_HIGHQUALITYSCALE = $00020000; { Imagelist should enable use of the high quality scaler. }
  1016. {$EXTERNALSYM ImageList_Create}
  1017. function ImageList_Create(CX, CY: Integer; Flags: UINT;
  1018. Initial, Grow: Integer): HIMAGELIST; stdcall;
  1019. {$EXTERNALSYM ImageList_Destroy}
  1020. function ImageList_Destroy(ImageList: HIMAGELIST): Bool; stdcall;
  1021. {$EXTERNALSYM ImageList_GetImageCount}
  1022. function ImageList_GetImageCount(ImageList: HIMAGELIST): Integer; stdcall;
  1023. {$EXTERNALSYM ImageList_SetImageCount}
  1024. function ImageList_SetImageCount(himl: HIMAGELIST; uNewCount: UINT): Integer; stdcall;
  1025. {$EXTERNALSYM ImageList_Add}
  1026. function ImageList_Add(ImageList: HIMAGELIST; Image, Mask: HBitmap): Integer; stdcall;
  1027. {$EXTERNALSYM ImageList_ReplaceIcon}
  1028. function ImageList_ReplaceIcon(ImageList: HIMAGELIST; Index: Integer;
  1029. Icon: HIcon): Integer; stdcall;
  1030. {$EXTERNALSYM ImageList_SetBkColor}
  1031. function ImageList_SetBkColor(ImageList: HIMAGELIST; ClrBk: TColorRef): TColorRef; stdcall;
  1032. {$EXTERNALSYM ImageList_GetBkColor}
  1033. function ImageList_GetBkColor(ImageList: HIMAGELIST): TColorRef; stdcall;
  1034. {$EXTERNALSYM ImageList_SetOverlayImage}
  1035. function ImageList_SetOverlayImage(ImageList: HIMAGELIST; Image: Integer;
  1036. Overlay: Integer): Bool; stdcall;
  1037. {$EXTERNALSYM ImageList_AddIcon}
  1038. function ImageList_AddIcon(ImageList: HIMAGELIST; Icon: HIcon): Integer; inline;
  1039. const
  1040. {$EXTERNALSYM ILD_NORMAL}
  1041. ILD_NORMAL = $0000;
  1042. {$EXTERNALSYM ILD_TRANSPARENT}
  1043. ILD_TRANSPARENT = $0001;
  1044. {$EXTERNALSYM ILD_MASK}
  1045. ILD_MASK = $0010;
  1046. {$EXTERNALSYM ILD_IMAGE}
  1047. ILD_IMAGE = $0020;
  1048. {$EXTERNALSYM ILD_ROP}
  1049. ILD_ROP = $0040;
  1050. {$EXTERNALSYM ILD_BLEND25}
  1051. ILD_BLEND25 = $0002;
  1052. {$EXTERNALSYM ILD_BLEND50}
  1053. ILD_BLEND50 = $0004;
  1054. {$EXTERNALSYM ILD_OVERLAYMASK}
  1055. ILD_OVERLAYMASK = $0F00;
  1056. {$EXTERNALSYM ILD_PRESERVEALPHA}
  1057. ILD_PRESERVEALPHA = $00001000; // This preserves the alpha channel in dest
  1058. {$EXTERNALSYM ILD_SCALE}
  1059. ILD_SCALE = $00002000; // Causes the image to be scaled to cx, cy instead of clipped
  1060. {$EXTERNALSYM ILD_DPISCALE}
  1061. ILD_DPISCALE = $00004000;
  1062. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1063. {$EXTERNALSYM ILD_ASYNC}
  1064. ILD_ASYNC = $00008000;
  1065. {$EXTERNALSYM IndexToOverlayMask}
  1066. function IndexToOverlayMask(Index: Integer): Integer; inline;
  1067. const
  1068. {$EXTERNALSYM ILD_SELECTED}
  1069. ILD_SELECTED = ILD_BLEND50;
  1070. {$EXTERNALSYM ILD_FOCUS}
  1071. ILD_FOCUS = ILD_BLEND25;
  1072. {$EXTERNALSYM ILD_BLEND}
  1073. ILD_BLEND = ILD_BLEND50;
  1074. {$EXTERNALSYM CLR_HILIGHT}
  1075. CLR_HILIGHT = CLR_DEFAULT;
  1076. {$EXTERNALSYM ILS_NORMAL}
  1077. ILS_NORMAL = $00000000;
  1078. {$EXTERNALSYM ILS_GLOW}
  1079. ILS_GLOW = $00000001;
  1080. {$EXTERNALSYM ILS_SHADOW}
  1081. ILS_SHADOW = $00000002;
  1082. {$EXTERNALSYM ILS_SATURATE}
  1083. ILS_SATURATE = $00000004;
  1084. {$EXTERNALSYM ILS_ALPHA}
  1085. ILS_ALPHA = $00000008;
  1086. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1087. {$EXTERNALSYM ILGT_NORMAL}
  1088. ILGT_NORMAL = $00000000;
  1089. {$EXTERNALSYM ILGT_ASYNC}
  1090. ILGT_ASYNC = $00000001;
  1091. {$EXTERNALSYM ImageList_Draw}
  1092. function ImageList_Draw(ImageList: HIMAGELIST; Index: Integer;
  1093. Dest: HDC; X, Y: Integer; Style: UINT): Bool; stdcall;
  1094. const
  1095. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1096. {$EXTERNALSYM HBITMAP_CALLBACK}
  1097. HBITMAP_CALLBACK = HBITMAP(-1); // only for SparseImageList
  1098. {$EXTERNALSYM ImageList_Replace}
  1099. function ImageList_Replace(ImageList: HIMAGELIST; Index: Integer;
  1100. Image, Mask: HBitmap): Bool; stdcall;
  1101. {$EXTERNALSYM ImageList_AddMasked}
  1102. function ImageList_AddMasked(ImageList: HIMAGELIST; Image: HBitmap;
  1103. Mask: TColorRef): Integer; stdcall;
  1104. {$EXTERNALSYM ImageList_DrawEx}
  1105. function ImageList_DrawEx(ImageList: HIMAGELIST; Index: Integer;
  1106. Dest: HDC; X, Y, DX, DY: Integer; Bk, Fg: TColorRef; Style: UINT): Bool; stdcall;
  1107. {$EXTERNALSYM ImageList_DrawIndirect}
  1108. function ImageList_DrawIndirect(pimldp: PImageListDrawParams): Bool; stdcall;
  1109. {$EXTERNALSYM ImageList_Remove}
  1110. function ImageList_Remove(ImageList: HIMAGELIST; Index: Integer): Bool; stdcall;
  1111. {$EXTERNALSYM ImageList_GetIcon}
  1112. function ImageList_GetIcon(ImageList: HIMAGELIST; Index: Integer;
  1113. Flags: UINT): HIcon; stdcall;
  1114. {$EXTERNALSYM ImageList_LoadImage}
  1115. function ImageList_LoadImage(Instance: HINST; Bmp: PWideChar; CX, Grow: Integer;
  1116. Mask: TColorRef; pType, Flags: UINT): HIMAGELIST; stdcall;
  1117. {$EXTERNALSYM ImageList_LoadImageA}
  1118. function ImageList_LoadImageA(Instance: HINST; Bmp: PAnsiChar; CX, Grow: Integer;
  1119. Mask: TColorRef; pType, Flags: UINT): HIMAGELIST; stdcall;
  1120. {$EXTERNALSYM ImageList_LoadImageW}
  1121. function ImageList_LoadImageW(Instance: HINST; Bmp: PWideChar; CX, Grow: Integer;
  1122. Mask: TColorRef; pType, Flags: UINT): HIMAGELIST; stdcall;
  1123. const
  1124. { _WIN32_IE >= 0x0300 IExplorer 3.0+ }
  1125. {$EXTERNALSYM ILCF_MOVE}
  1126. ILCF_MOVE = $00000000;
  1127. {$EXTERNALSYM ILCF_SWAP}
  1128. ILCF_SWAP = $00000001;
  1129. {$EXTERNALSYM ImageList_Copy}
  1130. function ImageList_Copy(himlDst: HIMAGELIST; iDst: Integer; himlSrc: HIMAGELIST;
  1131. Src: Integer; uFlags: UINT): Bool; stdcall;
  1132. {$EXTERNALSYM ImageList_BeginDrag}
  1133. function ImageList_BeginDrag(ImageList: HIMAGELIST; Track: Integer;
  1134. XHotSpot, YHotSpot: Integer): Bool; stdcall;
  1135. {$EXTERNALSYM ImageList_EndDrag}
  1136. function ImageList_EndDrag: Bool; stdcall;
  1137. {$EXTERNALSYM ImageList_DragEnter}
  1138. function ImageList_DragEnter(LockWnd: HWnd; X, Y: Integer): Bool; stdcall;
  1139. {$EXTERNALSYM ImageList_DragLeave}
  1140. function ImageList_DragLeave(LockWnd: HWnd): Bool; stdcall;
  1141. {$EXTERNALSYM ImageList_DragMove}
  1142. function ImageList_DragMove(X, Y: Integer): Bool; stdcall;
  1143. {$EXTERNALSYM ImageList_SetDragCursorImage}
  1144. function ImageList_SetDragCursorImage(ImageList: HIMAGELIST; Drag: Integer;
  1145. XHotSpot, YHotSpot: Integer): Bool; stdcall;
  1146. {$EXTERNALSYM ImageList_DragShowNolock}
  1147. function ImageList_DragShowNolock(Show: Bool): Bool; stdcall;
  1148. {$EXTERNALSYM ImageList_GetDragImage}
  1149. function ImageList_GetDragImage(Point, HotSpot: PPoint): HIMAGELIST; overload; stdcall;
  1150. {$EXTERNALSYM ImageList_GetDragImage}
  1151. function ImageList_GetDragImage(Point: PPoint; out HotSpot: TPoint): HIMAGELIST; overload; stdcall;
  1152. { macros }
  1153. {$EXTERNALSYM ImageList_RemoveAll}
  1154. procedure ImageList_RemoveAll(ImageList: HIMAGELIST); inline;
  1155. {$EXTERNALSYM ImageList_ExtractIcon}
  1156. function ImageList_ExtractIcon(Instance: HINST; ImageList: HIMAGELIST;
  1157. Image: Integer): HIcon; inline;
  1158. {$EXTERNALSYM ImageList_LoadBitmap}
  1159. function ImageList_LoadBitmap(Instance: HINST; Bmp: PWideChar;
  1160. CX, Grow: Integer; MasK: TColorRef): HIMAGELIST;
  1161. {$EXTERNALSYM ImageList_LoadBitmapA}
  1162. function ImageList_LoadBitmapA(Instance: HINST; Bmp: PAnsiChar;
  1163. CX, Grow: Integer; MasK: TColorRef): HIMAGELIST;
  1164. {$EXTERNALSYM ImageList_LoadBitmapW}
  1165. function ImageList_LoadBitmapW(Instance: HINST; Bmp: PWideChar;
  1166. CX, Grow: Integer; MasK: TColorRef): HIMAGELIST;
  1167. const
  1168. { _WIN32_WINNT >= 0x0501 Windows >= XP }
  1169. {$EXTERNALSYM ILP_NORMAL}
  1170. ILP_NORMAL = 0; { Writes or reads the stream using new sematics for this version of comctl32 }
  1171. {$EXTERNALSYM ILP_DOWNLEVEL}
  1172. ILP_DOWNLEVEL = 1; { Write or reads the stream using downlevel sematics. }
  1173. type
  1174. PImageInfo = ^TImageInfo;
  1175. {$EXTERNALSYM _IMAGEINFO}
  1176. _IMAGEINFO = record
  1177. hbmImage: HBitmap;
  1178. hbmMask: HBitmap;
  1179. Unused1: Integer;
  1180. Unused2: Integer;
  1181. rcImage: TRect;
  1182. end;
  1183. TImageInfo = _IMAGEINFO;
  1184. {$EXTERNALSYM IMAGEINFO}
  1185. IMAGEINFO = _IMAGEINFO;
  1186. {$EXTERNALSYM ImageList_GetIconSize}
  1187. function ImageList_GetIconSize(ImageList: HIMAGELIST; var CX, CY: Integer): Bool; stdcall;
  1188. {$EXTERNALSYM ImageList_SetIconSize}
  1189. function ImageList_SetIconSize(ImageList: HIMAGELIST; CX, CY: Integer): Bool; stdcall;
  1190. {$EXTERNALSYM ImageList_GetImageInfo}
  1191. function ImageList_GetImageInfo(ImageList: HIMAGELIST; Index: Integer;
  1192. var ImageInfo: TImageInfo): Bool; stdcall;
  1193. {$EXTERNALSYM ImageList_Merge}
  1194. function ImageList_Merge(ImageList1: HIMAGELIST; Index1: Integer;
  1195. ImageList2: HIMAGELIST; Index2: Integer; DX, DY: Integer): HIMAGELIST; stdcall;
  1196. {$EXTERNALSYM ImageList_Duplicate}
  1197. function ImageList_Duplicate(himl: HIMAGELIST): HIMAGELIST; stdcall;
  1198. {$EXTERNALSYM HIMAGELIST_QueryInterface}
  1199. function HIMAGELIST_QueryInterface(himl: HIMAGELIST; const riid: TGUID;
  1200. var ppv: Pointer): HResult;
  1201. { ====== HEADER CONTROL ========================== }
  1202. const
  1203. {$EXTERNALSYM WC_HEADER}
  1204. WC_HEADER = 'SysHeader32';
  1205. {$EXTERNALSYM HDS_HORZ}
  1206. HDS_HORZ = $0000;
  1207. {$EXTERNALSYM HDS_BUTTONS}
  1208. HDS_BUTTONS = $0002;
  1209. {$EXTERNALSYM HDS_HOTTRACK}
  1210. HDS_HOTTRACK = $0004;
  1211. {$EXTERNALSYM HDS_HIDDEN}
  1212. HDS_HIDDEN = $0008;
  1213. {$EXTERNALSYM HDS_DRAGDROP}
  1214. HDS_DRAGDROP = $0040;
  1215. {$EXTERNALSYM HDS_FULLDRAG}
  1216. HDS_FULLDRAG = $0080;
  1217. {$EXTERNALSYM HDS_FILTERBAR}
  1218. HDS_FILTERBAR = $0100;
  1219. { _WIN32_WINNT >= 0x0501 Windows >= XP }
  1220. {$EXTERNALSYM HDS_FLAT}
  1221. HDS_FLAT = $0200;
  1222. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1223. {$EXTERNALSYM HDS_CHECKBOXES}
  1224. HDS_CHECKBOXES = $0400;
  1225. {$EXTERNALSYM HDS_NOSIZING}
  1226. HDS_NOSIZING = $0800;
  1227. {$EXTERNALSYM HDS_OVERFLOW}
  1228. HDS_OVERFLOW = $1000;
  1229. { _WIN32_IE >= 0x0500 IExplorer 5.0+ }
  1230. {$EXTERNALSYM HDFT_ISSTRING}
  1231. HDFT_ISSTRING = $0000; // HD_ITEM.pvFilter points to a HD_TEXTFILTER
  1232. {$EXTERNALSYM HDFT_ISNUMBER}
  1233. HDFT_ISNUMBER = $0001; // HD_ITEM.pvFilter points to a INT
  1234. {$EXTERNALSYM HDFT_ISDATE}
  1235. HDFT_ISDATE = $0002; // HD_ITEM.pvFilter points to a DWORD (dos date)
  1236. {$EXTERNALSYM HDFT_HASNOVALUE}
  1237. HDFT_HASNOVALUE = $8000; // clear the filter, by setting this bit
  1238. type
  1239. PHDTextFilterA = ^THDTextFilterA;
  1240. PHDTextFilterW = ^THDTextFilterW;
  1241. PHDTextFilter = PHDTextFilterW;
  1242. {$EXTERNALSYM _HD_TEXTFILTERA}
  1243. _HD_TEXTFILTERA = record
  1244. pszText: PAnsiChar; // [in] pointer to the buffer containing the filter (ANSI/UNICODE)
  1245. cchTextMax: Integer; // [in] max size of buffer/edit control buffer
  1246. end;
  1247. {$EXTERNALSYM _HD_TEXTFILTERW}
  1248. _HD_TEXTFILTERW = record
  1249. pszText: PWideChar; // [in] pointer to the buffer containing the filter (ANSI/UNICODE)
  1250. cchTextMax: Integer; // [in] max size of buffer/edit control buffer
  1251. end;
  1252. {$EXTERNALSYM _HD_TEXTFILTER}
  1253. _HD_TEXTFILTER = _HD_TEXTFILTERW;
  1254. THDTextFilterA = _HD_TEXTFILTERA;
  1255. THDTextFilterW = _HD_TEXTFILTERW;
  1256. THDTextFilter = THDTextFilterW;
  1257. {$EXTERNALSYM HD_TEXTFILTERA}
  1258. HD_TEXTFILTERA = _HD_TEXTFILTERA;
  1259. {$EXTERNALSYM HD_TEXTFILTERW}
  1260. HD_TEXTFILTERW = _HD_TEXTFILTERW;
  1261. {$EXTERNALSYM HD_TEXTFILTER}
  1262. HD_TEXTFILTER = HD_TEXTFILTERW;
  1263. PHDItemA = ^THDItemA;
  1264. PHDItemW = ^THDItemW;
  1265. PHDItem = PHDItemW;
  1266. {$EXTERNALSYM _HD_ITEMA}
  1267. _HD_ITEMA = record
  1268. Mask: UINT;
  1269. cxy: Integer;
  1270. pszText: PAnsiChar;
  1271. hbm: HBITMAP;
  1272. cchTextMax: Integer;
  1273. fmt: Integer;
  1274. lParam: LPARAM;
  1275. iImage: Integer; // index of bitmap in ImageList
  1276. iOrder: Integer; // where to draw this item
  1277. { For IE >= 0x0500 }
  1278. &type: UINT; // [in] filter type (defined what pvFilter is a pointer to)
  1279. pvFilter: Pointer; // [in] filter data see above
  1280. { For Windows >= Vista }
  1281. state: UINT;
  1282. end;
  1283. {$EXTERNALSYM _HD_ITEMW}
  1284. _HD_ITEMW = record
  1285. Mask: UINT;
  1286. cxy: Integer;
  1287. pszText: PWideChar;
  1288. hbm: HBITMAP;
  1289. cchTextMax: Integer;
  1290. fmt: Integer;
  1291. lParam: LPARAM;
  1292. iImage: Integer; // index of bitmap in ImageList
  1293. iOrder: Integer; // where to draw this item
  1294. { For IE >= 0x0500 }
  1295. &type: UINT; // [in] filter type (defined what pvFilter is a pointer to)
  1296. pvFilter: Pointer; // [in] filter data see above
  1297. { For Windows >= Vista }
  1298. state: UINT;
  1299. end;
  1300. {$EXTERNALSYM _HD_ITEM}
  1301. _HD_ITEM = _HD_ITEMW;
  1302. THDItemA = _HD_ITEMA;
  1303. THDItemW = _HD_ITEMW;
  1304. THDItem = THDItemW;
  1305. {$EXTERNALSYM HD_ITEMA}
  1306. HD_ITEMA = _HD_ITEMA;
  1307. {$EXTERNALSYM HD_ITEMW}
  1308. HD_ITEMW = _HD_ITEMW;
  1309. {$EXTERNALSYM HD_ITEM}
  1310. HD_ITEM = HD_ITEMW;
  1311. const
  1312. {$EXTERNALSYM HDI_WIDTH}
  1313. HDI_WIDTH = $0001;
  1314. {$EXTERNALSYM HDI_HEIGHT}
  1315. HDI_HEIGHT = HDI_WIDTH;
  1316. {$EXTERNALSYM HDI_TEXT}
  1317. HDI_TEXT = $0002;
  1318. {$EXTERNALSYM HDI_FORMAT}
  1319. HDI_FORMAT = $0004;
  1320. {$EXTERNALSYM HDI_LPARAM}
  1321. HDI_LPARAM = $0008;
  1322. {$EXTERNALSYM HDI_BITMAP}
  1323. HDI_BITMAP = $0010;
  1324. {$EXTERNALSYM HDI_IMAGE}
  1325. HDI_IMAGE = $0020;
  1326. {$EXTERNALSYM HDI_DI_SETITEM}
  1327. HDI_DI_SETITEM = $0040;
  1328. {$EXTERNALSYM HDI_ORDER}
  1329. HDI_ORDER = $0080;
  1330. { _WIN32_IE >= 0x0500 IE >= 0x0500 }
  1331. {$EXTERNALSYM HDI_FILTER}
  1332. HDI_FILTER = $0100;
  1333. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1334. {$EXTERNALSYM HDI_STATE}
  1335. HDI_STATE = $0200;
  1336. { HDF_ flags are shared with the listview control (LVCFMT_ flags) }
  1337. {$EXTERNALSYM HDF_LEFT}
  1338. HDF_LEFT = $0000; { Same as LVCFMT_LEFT }
  1339. {$EXTERNALSYM HDF_RIGHT}
  1340. HDF_RIGHT = $0001; { Same as LVCFMT_RIGHT }
  1341. {$EXTERNALSYM HDF_CENTER}
  1342. HDF_CENTER = $0002; { Same as LVCFMT_CENTER }
  1343. {$EXTERNALSYM HDF_JUSTIFYMASK}
  1344. HDF_JUSTIFYMASK = $0003; { Same as LVCFMT_JUSTIFYMASK }
  1345. {$EXTERNALSYM HDF_RTLREADING}
  1346. HDF_RTLREADING = $0004; { Same as LVCFMT_LEFT }
  1347. {$EXTERNALSYM HDF_BITMAP}
  1348. HDF_BITMAP = $2000;
  1349. {$EXTERNALSYM HDF_STRING}
  1350. HDF_STRING = $4000;
  1351. {$EXTERNALSYM HDF_OWNERDRAW}
  1352. HDF_OWNERDRAW = $8000; { Same as LVCFMT_COL_HAS_IMAGES }
  1353. {$EXTERNALSYM HDF_IMAGE}
  1354. HDF_IMAGE = $0800; { Same as LVCFMT_IMAGE }
  1355. {$EXTERNALSYM HDF_BITMAP_ON_RIGHT}
  1356. HDF_BITMAP_ON_RIGHT = $1000; { Same as LVCFMT_BITMAP_ON_RIGHT }
  1357. { _WIN32_WINNT >= 0x0501 Windows >= XP }
  1358. {$EXTERNALSYM HDF_SORTUP}
  1359. HDF_SORTUP = $0400;
  1360. {$EXTERNALSYM HDF_SORTDOWN}
  1361. HDF_SORTDOWN = $0200;
  1362. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1363. {$EXTERNALSYM HDF_CHECKBOX}
  1364. HDF_CHECKBOX = $0040;
  1365. {$EXTERNALSYM HDF_CHECKED}
  1366. HDF_CHECKED = $0080;
  1367. {$EXTERNALSYM HDF_FIXEDWIDTH}
  1368. HDF_FIXEDWIDTH = $0100; { Can't resize the column; same as LVCFMT_FIXED_WIDTH }
  1369. {$EXTERNALSYM HDF_SPLITBUTTON}
  1370. HDF_SPLITBUTTON = $1000000; { Column is a split button; same as LVCFMT_SPLITBUTTON }
  1371. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1372. {$EXTERNALSYM HDIS_FOCUSED}
  1373. HDIS_FOCUSED = $00000001;
  1374. {$EXTERNALSYM HDM_GETITEMCOUNT}
  1375. HDM_GETITEMCOUNT = HDM_FIRST + 0;
  1376. {$EXTERNALSYM Header_GetItemCount}
  1377. function Header_GetItemCount(Header: HWnd): Integer; inline;
  1378. const
  1379. {$EXTERNALSYM HDM_INSERTITEMW}
  1380. HDM_INSERTITEMW = HDM_FIRST + 10;
  1381. {$EXTERNALSYM HDM_INSERTITEMA}
  1382. HDM_INSERTITEMA = HDM_FIRST + 1;
  1383. {$IFDEF UNICODE}
  1384. {$EXTERNALSYM HDM_INSERTITEM}
  1385. HDM_INSERTITEM = HDM_INSERTITEMW;
  1386. {$ELSE}
  1387. {$EXTERNALSYM HDM_INSERTITEM}
  1388. HDM_INSERTITEM = HDM_INSERTITEMA;
  1389. {$ENDIF}
  1390. {$EXTERNALSYM Header_InsertItem}
  1391. function Header_InsertItem(Header: HWnd; Index: Integer;
  1392. const Item: THDItem): Integer; inline;
  1393. {$EXTERNALSYM Header_InsertItemA}
  1394. function Header_InsertItemA(Header: HWnd; Index: Integer;
  1395. const Item: THDItemA): Integer; inline;
  1396. {$EXTERNALSYM Header_InsertItemW}
  1397. function Header_InsertItemW(Header: HWnd; Index: Integer;
  1398. const Item: THDItemW): Integer; inline;
  1399. const
  1400. {$EXTERNALSYM HDM_DELETEITEM}
  1401. HDM_DELETEITEM = HDM_FIRST + 2;
  1402. {$EXTERNALSYM Header_DeleteItem}
  1403. function Header_DeleteItem(Header: HWnd; Index: Integer): Bool; inline;
  1404. const
  1405. {$EXTERNALSYM HDM_GETITEMW}
  1406. HDM_GETITEMW = HDM_FIRST + 11;
  1407. {$EXTERNALSYM HDM_GETITEMA}
  1408. HDM_GETITEMA = HDM_FIRST + 3;
  1409. {$IFDEF UNICODE}
  1410. {$EXTERNALSYM HDM_GETITEM}
  1411. HDM_GETITEM = HDM_GETITEMW;
  1412. {$ELSE}
  1413. {$EXTERNALSYM HDM_GETITEM}
  1414. HDM_GETITEM = HDM_GETITEMA;
  1415. {$ENDIF}
  1416. {$EXTERNALSYM Header_GetItem}
  1417. function Header_GetItem(Header: HWnd; Index: Integer;
  1418. var Item: THDItem): Bool; inline;
  1419. {$EXTERNALSYM Header_GetItemA}
  1420. function Header_GetItemA(Header: HWnd; Index: Integer;
  1421. var Item: THDItemA): Bool; inline;
  1422. {$EXTERNALSYM Header_GetItemW}
  1423. function Header_GetItemW(Header: HWnd; Index: Integer;
  1424. var Item: THDItemW): Bool; inline;
  1425. const
  1426. {$EXTERNALSYM HDM_SETITEMA}
  1427. HDM_SETITEMA = HDM_FIRST + 4;
  1428. {$EXTERNALSYM HDM_SETITEMW}
  1429. HDM_SETITEMW = HDM_FIRST + 12;
  1430. {$IFDEF UNICODE}
  1431. {$EXTERNALSYM HDM_SETITEM}
  1432. HDM_SETITEM = HDM_SETITEMW;
  1433. {$ELSE}
  1434. {$EXTERNALSYM HDM_SETITEM}
  1435. HDM_SETITEM = HDM_SETITEMA;
  1436. {$ENDIF}
  1437. {$EXTERNALSYM Header_SetItem}
  1438. function Header_SetItem(Header: HWnd; Index: Integer; const Item: THDItem): Bool; inline;
  1439. {$EXTERNALSYM Header_SetItemA}
  1440. function Header_SetItemA(Header: HWnd; Index: Integer; const Item: THDItemA): Bool; inline;
  1441. {$EXTERNALSYM Header_SetItemW}
  1442. function Header_SetItemW(Header: HWnd; Index: Integer; const Item: THDItemW): Bool; inline;
  1443. type
  1444. PHDLayout = ^THDLayout;
  1445. {$EXTERNALSYM _HD_LAYOUT}
  1446. _HD_LAYOUT = record
  1447. Rect: ^TRect;
  1448. WindowPos: PWindowPos;
  1449. end;
  1450. THDLayout = _HD_LAYOUT;
  1451. {$EXTERNALSYM HD_LAYOUT}
  1452. HD_LAYOUT = _HD_LAYOUT;
  1453. const
  1454. {$EXTERNALSYM HDM_LAYOUT}
  1455. HDM_LAYOUT = HDM_FIRST + 5;
  1456. {$EXTERNALSYM Header_Layout}
  1457. function Header_Layout(Header: HWnd; Layout: PHDLayout): Bool; inline;
  1458. const
  1459. {$EXTERNALSYM HHT_NOWHERE}
  1460. HHT_NOWHERE = $0001;
  1461. {$EXTERNALSYM HHT_ONHEADER}
  1462. HHT_ONHEADER = $0002;
  1463. {$EXTERNALSYM HHT_ONDIVIDER}
  1464. HHT_ONDIVIDER = $0004;
  1465. {$EXTERNALSYM HHT_ONDIVOPEN}
  1466. HHT_ONDIVOPEN = $0008;
  1467. {$EXTERNALSYM HHT_ABOVE}
  1468. HHT_ABOVE = $0100;
  1469. {$EXTERNALSYM HHT_BELOW}
  1470. HHT_BELOW = $0200;
  1471. {$EXTERNALSYM HHT_TORIGHT}
  1472. HHT_TORIGHT = $0400;
  1473. {$EXTERNALSYM HHT_TOLEFT}
  1474. HHT_TOLEFT = $0800;
  1475. { _WIN32_WINNT >= 0x0600 Windows >= Vista }
  1476. {$EXTERNALSYM HHT_ONITEMSTATEICON}
  1477. HHT_ONITEMSTATEICON = $1000;
  1478. {$EXTERNALSYM HHT_ONDROPDOWN}
  1479. HHT_ONDROPDOWN = $2000;
  1480. {$EXTERNALSYM HHT_ONOVERFLOW}
  1481. HHT_ONOVERFLOW = $4000;
  1482. type
  1483. PHDHitTestInfo = ^THDHitTestInfo;
  1484. {$EXTERNALSYM _HD_HITTESTINFO}
  1485. _HD_HITTESTINFO = record
  1486. Point: TPoint;
  1487. Flags: UINT;
  1488. Item: Integer;
  1489. end;
  1490. THDHitTestInfo = _HD_HITTESTINFO;
  1491. {$EXTERNALSYM HD_HITTESTINFO}
  1492. HD_HITTESTINFO = _HD_HITTESTINFO;
  1493. const
  1494. HDSIL_NORMAL = 0;
  1495. {$EXTERNALSYM HDSIL_NORMAL}
  1496. HDSIL_STATE = 1;
  1497. {$EXTERNALSYM HDSIL_STATE}
  1498. {$EXTERNALSYM HDM_HITTEST}
  1499. HDM_HITTEST = HDM_FIRST + 6;
  1500. {$EXTERNALSYM HDM_GETITEMRECT}
  1501. HDM_GETITEMRECT = HDM_FIRST + 7;
  1502. {$EXTERNALSYM HDM_SETIMAGELIST}
  1503. HDM_SETIMAGELIST = HDM_FIRST + 8;
  1504. {$EXTERNALSYM HDM_GETIMAGELIST}
  1505. HDM_GETIMAGELIST = HDM_FIRST + 9;
  1506. {$EXTERNALSYM HDM_ORDERTOINDEX}
  1507. HDM_ORDERTOINDEX = HDM_FIRST + 15;
  1508. {$EXTERNALSYM HDM_CREATEDRAGIMAGE}
  1509. HDM_CREATEDRAGIMAGE = HDM_FIRST + 16; // wparam = which item = by index;
  1510. {$EXTERNALSYM HDM_GETORDERARRAY}
  1511. HDM_GETORDERARRAY = HDM_FIRST + 17;
  1512. {$EXTERNALSYM HDM_SETORDERARRAY}
  1513. HDM_SETORDERARRAY = HDM_FIRST + 18;
  1514. {$EXTERNALSYM HDM_SETHOTDIVIDER}
  1515. HDM_SETHOTDIVIDER = HDM_FIRST + 19;
  1516. {$EXTERNALSYM HDM_SETUNICODEFORMAT}
  1517. HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  1518. {$EXTERNALSYM HDM_GETUNICODEFORMAT}
  1519. HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  1520. { For IE >= 0x0500 }
  1521. {$EXTERNALSYM HDM_SETBITMAPMARGIN}
  1522. HDM_SETBITMAPMARGIN = HDM_FIRST + 20;
  1523. {$EXTERNALSYM HDM_GETBITMAPMARGIN}
  1524. HDM_GETBITMAPMARGIN = HDM_FIRST + 21;
  1525. {$EXTERNALSYM HDM_SETFILTERCHANGETIMEOUT}
  1526. HDM_SETFILTERCHANGETIMEOUT = HDM_FIRST + 22;
  1527. {$EXTERNALSYM HDM_EDITFILTER}
  1528. HDM_EDITFILTER = HDM_FIRST + 23;
  1529. {$EXTERNALSYM HDM_CLEARFILTER}
  1530. HDM_CLEARFILTER = HDM_FIRST + 24;
  1531. { For Windows >= 0x0600 }
  1532. // Not currently implemented
  1533. //{$EXTERNALSYM HDM_TRANSLATEACCELERATOR}
  1534. //HDM_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR;
  1535. { For Windows >= Vista}
  1536. {$EXTERNALSYM HDM_GETITEMDROPDOWNRECT}
  1537. HDM_GETITEMDROPDOWNRECT = HDM_FIRST + 25; // rect of item's drop down button
  1538. {$EXTERNALSYM HDM_GETOVERFLOWRECT}
  1539. HDM_GETOVERFLOWRECT = HDM_FIRST + 26; // rect of overflow button
  1540. {$EXTERNALSYM HDM_GETFOCUSEDITEM}
  1541. HDM_GETFOCUSEDITEM = HDM_FIRST + 27;
  1542. {$EXTERNALSYM HDM_SETFOCUSEDITEM}
  1543. HDM_SETFOCUSEDITEM = HDM_FIRST + 28;
  1544. {$EXTERNALSYM Header_GetItemRect}
  1545. function Header_GetItemRect(hwnd: HWND; iItem: Integer; lprc: PRect): BOOL; inline;
  1546. {$EXTERNALSYM Header_SetImageList}
  1547. function Header_SetImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST; inline;
  1548. {$EXTERNALSYM Header_GetImageList}
  1549. function Header_GetImageList(hwnd: HWND): HIMAGELIST; inline;
  1550. {$EXTERNALSYM Header_OrderToIndex}
  1551. function Header_OrderToIndex(hwnd: HWND; i: Integer): Integer; inline
  1552. {$EXTERNALSYM Header_CreateDragImage}
  1553. function Header_CreateDragImage(hwnd: HWND; i: Integer): HIMAGELIST; inline;
  1554. {$EXTERNALSYM Header_GetOrderArray}
  1555. function Header_GetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): BOOL; inline;
  1556. {$EXTERNALSYM Header_SetOrderArray}
  1557. function Header_SetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): BOOL; inline;
  1558. // lparam = int array of size HDM_GETITEMCOUNT
  1559. // the array specifies the order that all items should be displayed.
  1560. // e.g. { 2, 0, 1}
  1561. // says the index 2 item should be shown in the 0ths position
  1562. // index 0 should be shown in the 1st position
  1563. // index 1 should be shown in the 2nd position
  1564. {$EXTERNALSYM Header_SetHotDivider}
  1565. function Header_SetHotDivider(hwnd: HWND; fPos: BOOL; dw: DWORD): Integer; inline;
  1566. // convenience message for external dragdrop
  1567. // wParam = BOOL specifying whether the lParam is a dwPos of the cursor
  1568. // position or the index of which divider to hotlight
  1569. // lParam = depends on wParam (-1 and wParm = FALSE turns off hotlight)
  1570. {$EXTERNALSYM Header_SetUnicodeFormat}
  1571. function Header_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL; inline;
  1572. {$EXTERNALSYM Header_GetUnicodeFormat}
  1573. function Header_GetUnicodeFormat(hwnd: HWND): BOOL; inline;
  1574. { For IE >= 0x0500 }
  1575. {$EXTERNALSYM Header_SetBitmapMargin}
  1576. function Header_SetBitmapMargin(hwnd: HWND; iWidth: Integer): Integer; inline;
  1577. {$EXTERNALSYM Header_GetBitmapMargin}
  1578. function Header_GetBitmapMargin(hwnd: HWND): Integer; inline;
  1579. {$EXTERNALSYM Header_SetFilterChangeTimeout}
  1580. function Header_SetFilterChangeTimeout(hwnd: HWND; i: Integer): Integer; inline;
  1581. {$EXTERNALSYM Header_EditFilter}
  1582. function Header_EditFilter(hwnd: HWND; i: Integer; fDiscardChanges: BOOL): Integer; inline;
  1583. {$EXTERNALSYM Header_ClearFilter}
  1584. function Header_ClearFilter(hwnd: HWND; i: Integer): Integer; inline;
  1585. {$EXTERNALSYM Header_ClearAllFilters}
  1586. function Header_ClearAllFilters(hwnd: HWND): Integer; inline;
  1587. { For Windows >= Vista}
  1588. {$EXTERNALSYM Header_GetItemDropDownRect}
  1589. function Header_GetItemDropDownRect(hwnd: HWND; iItem: Integer; var lprc: TRect): BOOL; inline;
  1590. {$EXTERNALSYM Header_GetOverflowRect}
  1591. function Header_GetOverflowRect(hwnd: HWND; var lprc: TRect): BOOL; inline;
  1592. {$EXTERNALSYM Header_GetFocusedItem}
  1593. function Header_GetFocusedItem(hwnd: HWND): Integer; inline;
  1594. {$EXTERNALSYM Header_SetFocusedItem}
  1595. function Header_SetFocusedItem(hwnd: HWND; iItem: Integer): BOOL; inline;
  1596. const
  1597. {$EXTERNALSYM HDN_ITEMCHANGINGA}
  1598. HDN_ITEMCHANGINGA = HDN_FIRST-0;
  1599. {$EXTERNALSYM HDN_ITEMCHANGEDA}
  1600. HDN_ITEMCHANGEDA = HDN_FIRST-1;
  1601. {$EXTERNALSYM HDN_ITEMCLICKA}
  1602. HDN_ITEMCLICKA = HDN_FIRST-2;
  1603. {$EXTERNALSYM HDN_ITEMDBLCLICKA}
  1604. HDN_ITEMDBLCLICKA = HDN_FIRST-3;
  1605. {$EXTERNALSYM HDN_DIVIDERDBLCLICKA}
  1606. HDN_DIVIDERDBLCLICKA = HDN_FIRST-5;
  1607. {$EXTERNALSYM HDN_BEGINTRACKA}
  1608. HDN_BEGINTRACKA = HDN_FIRST-6;
  1609. {$EXTERNALSYM HDN_ENDTRACKA}
  1610. HDN_ENDTRACKA = HDN_FIRST-7;
  1611. {$EXTERNALSYM HDN_TRACKA}
  1612. HDN_TRACKA = HDN_FIRST-8;
  1613. {$EXTERNALSYM HDN_GETDISPINFOA}
  1614. HDN_GETDISPINFOA = HDN_FIRST-9;
  1615. {$EXTERNALSYM HDN_BEGINDRAG}
  1616. HDN_BEGINDRAG = HDN_FIRST-10;
  1617. {$EXTERNALSYM HDN_ENDDRAG}
  1618. HDN_ENDDRAG = HDN_FIRST-11;
  1619. { For IE >= 0x0500 }
  1620. {$EXTERNALSYM HDN_FILTERCHANGE}
  1621. HDN_FILTERCHANGE = HDN_FIRST-12;
  1622. {$EXTERNALSYM HDN_FILTERBTNCLICK}
  1623. HDN_FILTERBTNCLICK = HDN_FIRST-13;
  1624. { For IE >= 0x0600 }
  1625. {$EXTERNALSYM HDN_BEGINFILTEREDIT}
  1626. HDN_BEGINFILTEREDIT = HDN_FIRST-14;
  1627. {$EXTERNALSYM HDN_ENDFILTEREDIT}
  1628. HDN_ENDFILTEREDIT = HDN_FIRST-15;
  1629. { For Windows >= Vista }
  1630. {$EXTERNALSYM HDN_ITEMSTATEICONCLICK}
  1631. HDN_ITEMSTATEICONCLICK = HDN_FIRST-16;
  1632. {$EXTERNALSYM HDN_ITEMKEYDOWN}
  1633. HDN_ITEMKEYDOWN = HDN_FIRST-17;
  1634. {$EXTERNALSYM HDN_DROPDOWN}
  1635. HDN_DROPDOWN = HDN_FIRST-18;
  1636. {$EXTERNALSYM HDN_OVERFLOWCLICK}
  1637. HDN_OVERFLOWCLICK = HDN_FIRST-19;
  1638. {$EXTERNALSYM HDN_ITEMCHANGINGW}
  1639. HDN_ITEMCHANGINGW = HDN_FIRST-20;
  1640. {$EXTERNALSYM HDN_ITEMCHANGEDW}
  1641. HDN_ITEMCHANGEDW = HDN_FIRST-21;
  1642. {$EXTERNALSYM HDN_ITEMCLICKW}
  1643. HDN_ITEMCLICKW = HDN_FIRST-22;
  1644. {$EXTERNALSYM HDN_ITEMDBLCLICKW}
  1645. HDN_ITEMDBLCLICKW = HDN_FIRST-23;
  1646. {$EXTERNALSYM HDN_DIVIDERDBLCLICKW}
  1647. HDN_DIVIDERDBLCLICKW = HDN_FIRST-25;
  1648. {$EXTERNALSYM HDN_BEGINTRACKW}
  1649. HDN_BEGINTRACKW = HDN_FIRST-26;
  1650. {$EXTERNALSYM HDN_ENDTRACKW}
  1651. HDN_ENDTRACKW = HDN_FIRST-27;
  1652. {$EXTERNALSYM HDN_TRACKW}
  1653. HDN_TRACKW = HDN_FIRST-28;
  1654. {$EXTERNALSYM HDN_GETDISPINFOW}
  1655. HDN_GETDISPINFOW = HDN_FIRST-29;
  1656. {$IFDEF UNICODE}
  1657. {$EXTERNALSYM HDN_ITEMCHANGING}
  1658. HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
  1659. {$EXTERNALSYM HDN_ITEMCHANGED}
  1660. HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
  1661. {$EXTERNALSYM HDN_ITEMCLICK}
  1662. HDN_ITEMCLICK = HDN_ITEMCLICKW;
  1663. {$EXTERNALSYM HDN_ITEMDBLCLICK}
  1664. HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
  1665. {$EXTERNALSYM HDN_DIVIDERDBLCLICK}
  1666. HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
  1667. {$EXTERNALSYM HDN_BEGINTRACK}
  1668. HDN_BEGINTRACK = HDN_BEGINTRACKW;
  1669. {$EXTERNALSYM HDN_ENDTRACK}
  1670. HDN_ENDTRACK = HDN_ENDTRACKW;
  1671. {$EXTERNALSYM HDN_TRACK}
  1672. HDN_TRACK = HDN_TRACKW;
  1673. {$EXTERNALSYM HDN_GETDISPINFO}
  1674. HDN_GETDISPINFO = HDN_GETDISPINFOW;
  1675. {$ELSE}
  1676. {$EXTERNALSYM HDN_ITEMCHANGING}
  1677. HDN_ITEMCHANGING = HDN_ITEMCHANGINGA;
  1678. {$EXTERNALSYM HDN_ITEMCHANGED}
  1679. HDN_ITEMCHANGED = HDN_ITEMCHANGEDA;
  1680. {$EXTERNALSYM HDN_ITEMCLICK}
  1681. HDN_ITEMCLICK = HDN_ITEMCLICKA;
  1682. {$EXTERNALSYM HDN_ITEMDBLCLICK}
  1683. HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA;
  1684. {$EXTERNALSYM HDN_DIVIDERDBLCLICK}
  1685. HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
  1686. {$EXTERNALSYM HDN_BEGINTRACK}
  1687. HDN_BEGINTRACK = HDN_BEGINTRACKA;
  1688. {$EXTERNALSYM HDN_ENDTRACK}
  1689. HDN_ENDTRACK = HDN_ENDTRACKA;
  1690. {$EXTERNALSYM HDN_TRACK}
  1691. HDN_TRACK = HDN_TRACKA;
  1692. {$EXTERNALSYM HDN_GETDISPINFO}
  1693. HDN_GETDISPINFO = HDN_GETDISPINFOA;
  1694. {$ENDIF}
  1695. type
  1696. {$EXTERNALSYM tagNMHEADERA}
  1697. tagNMHEADERA = record
  1698. Hdr: TNMHdr;
  1699. Item: Integer;
  1700. Button: Integer;
  1701. PItem: PHDItemA;
  1702. end;
  1703. {$EXTERNALSYM tagNMHEADERW}
  1704. tagNMHEADERW = record
  1705. Hdr: TNMHdr;
  1706. Item: Integer;
  1707. Button: Integer;
  1708. PItem: PHDItemW;
  1709. end;
  1710. {$EXTERNALSYM tagNMHEADER}
  1711. tagNMHEADER = tagNMHEADERW;
  1712. {$EXTERNALSYM HD_NOTIFYA}
  1713. HD_NOTIFYA = tagNMHEADERA;
  1714. {$EXTERNALSYM HD_NOTIFYW}
  1715. HD_NOTIFYW = tagNMHEADERW;
  1716. {$EXTERNALSYM HD_NOTIFY}
  1717. HD_NOTIFY = HD_NOTIFYW;
  1718. PHDNotifyA = ^THDNotifyA;
  1719. PHDNotifyW = ^THDNotifyW;
  1720. PHDNotify = PHDNotifyW;
  1721. THDNotifyA = tagNMHEADERA;
  1722. THDNotifyW = tagNMHEADERW;
  1723. THDNotify = THDNotifyW;
  1724. {$EXTERNALSYM tagNMHDDISPINFOA}
  1725. tagNMHDDISPINFOA = record
  1726. hdr: TNMHdr;
  1727. iItem: Integer;
  1728. mask: UINT;
  1729. pszText: PAnsiChar;
  1730. cchTextMax: Integer;
  1731. iImage: Integer;
  1732. lParam: LPARAM;
  1733. end;
  1734. {$EXTERNALSYM tagNMHDDISPINFOW}
  1735. tagNMHDDISPINFOW = record
  1736. hdr: TNMHdr;
  1737. iItem: Integer;
  1738. mask: UINT;
  1739. pszText: PWideChar;
  1740. cchTextMax: Integer;
  1741. iImage: Integer;
  1742. lParam: LPARAM;
  1743. end;
  1744. {$EXTERNALSYM tagNMHDDISPINFO}
  1745. tagNMHDDISPINFO = tagNMHDDISPINFOW;
  1746. PNMHDispInfoA = ^TNMHDispInfoA;
  1747. PNMHDispInfoW = ^TNMHDispInfoW;
  1748. PNMHDispInfo = PNMHDispInfoW;
  1749. TNMHDispInfoA = tagNMHDDISPINFOA;
  1750. TNMHDispInfoW = tagNMHDDISPINFOW;
  1751. TNMHDispInfo = TNMHDispInfoW;
  1752. {$EXTERNALSYM tagNMHDFILTERBTNCLICK}
  1753. tagNMHDFILTERBTNCLICK = record
  1754. hdr: NMHDR;
  1755. iItem: Integer;
  1756. rc: TRect;
  1757. end;
  1758. PNMHDFilterBtnClick = ^TNMHDFilterBtnClick;
  1759. TNMHDFilterBtnClick = tagNMHDFILTERBTNCLICK;
  1760. { ====== TOOLBAR CONTROL =================== }
  1761. const
  1762. {$EXTERNALSYM TOOLBARCLASSNAME}
  1763. TOOLBARCLASSNAME = 'ToolbarWindow32';
  1764. type
  1765. PTBButton = ^TTBButton;
  1766. {$EXTERNALSYM _TBBUTTON}
  1767. _TBBUTTON = record
  1768. iBitmap: Integer;
  1769. idCommand: Integer;
  1770. fsState: Byte;
  1771. fsStyle: Byte;
  1772. {$IFDEF CPUX64}
  1773. bReserved: array[1..6] of Byte; // padding for alignment
  1774. {$ELSE}
  1775. bReserved: array[1..2] of Byte; // padding for alignment
  1776. {$ENDIF}
  1777. dwData: DWORD_PTR;
  1778. iString: INT_PTR;
  1779. end;
  1780. TTBButton = _TBBUTTON;
  1781. PColorMap = ^TColorMap;
  1782. {$EXTERNALSYM _COLORMAP}
  1783. _COLORMAP = record
  1784. cFrom: TColorRef;
  1785. cTo: TColorRef;
  1786. end;
  1787. TColorMap = _COLORMAP;
  1788. {$EXTERNALSYM COLORMAP}
  1789. COLORMAP = _COLORMAP;
  1790. {$EXTERNALSYM CreateToolBarEx}
  1791. function CreateToolBarEx(Wnd: HWnd; ws: DWORD; ID: UINT;
  1792. Bitmaps: Integer; BMInst: HINST; BMID: UIntPtr; Buttons: PTBButton;
  1793. NumButtons: Integer; dxButton, dyButton: Integer;
  1794. dxBitmap, dyBitmap: Integer; StructSize: UINT): HWnd; stdcall;
  1795. {$EXTERNALSYM CreateMappedBitmap}
  1796. function CreateMappedBitmap(Instance: HINST; Bitmap: IntPtr;
  1797. Flags: UINT; ColorMap: PColorMap; NumMaps: Integer): HBitmap; stdcall;
  1798. const
  1799. {$EXTERNALSYM CMB_MASKED}
  1800. CMB_MASKED = $02;
  1801. {$EXTERNALSYM TBSTATE_CHECKED}
  1802. TBSTATE_CHECKED = $01;
  1803. {$EXTERNALSYM TBSTATE_PRESSED}
  1804. TBSTATE_PRESSED = $02;
  1805. {$EXTERNALSYM TBSTATE_ENABLED}
  1806. TBSTATE_ENABLED = $04;
  1807. {$EXTERNALSYM TBSTATE_HIDDEN}
  1808. TBSTATE_HIDDEN = $08;
  1809. {$EXTERNALSYM TBSTATE_INDETERMINATE}
  1810. TBSTATE_INDETERMINATE = $10;
  1811. {$EXTERNALSYM TBSTATE_WRAP}
  1812. TBSTATE_WRAP = $20;
  1813. {$EXTERNALSYM TBSTATE_ELLIPSES}
  1814. TBSTATE_ELLIPSES = $40;
  1815. {$EXTERNALSYM TBSTATE_MARKED}
  1816. TBSTATE_MARKED = $80;
  1817. {$EXTERNALSYM TBSTYLE_BUTTON}
  1818. TBSTYLE_BUTTON = $00;
  1819. {$EXTERNALSYM TBSTYLE_SEP}
  1820. TBSTYLE_SEP = $01;
  1821. {$EXTERNALSYM TBSTYLE_CHECK}
  1822. TBSTYLE_CHECK = $02;
  1823. {$EXTERNALSYM TBSTYLE_GROUP}
  1824. TBSTYLE_GROUP = $04;
  1825. {$EXTERNALSYM TBSTYLE_CHECKGROUP}
  1826. TBSTYLE_CHECKGROUP = TBSTYLE_GROUP or TBSTYLE_CHECK;
  1827. {$EXTERNALSYM TBSTYLE_DROPDOWN}
  1828. TBSTYLE_DROPDOWN = $08;
  1829. {$EXTERNALSYM TBSTYLE_AUTOSIZE}
  1830. TBSTYLE_AUTOSIZE = $0010; // automatically calculate the cx of the button
  1831. {$EXTERNALSYM TBSTYLE_NOPREFIX}
  1832. TBSTYLE_NOPREFIX = $0020; // if this button should not have accel prefix
  1833. {$EXTERNALSYM TBSTYLE_TOOLTIPS}
  1834. TBSTYLE_TOOLTIPS = $0100;
  1835. {$EXTERNALSYM TBSTYLE_WRAPABLE}
  1836. TBSTYLE_WRAPABLE = $0200;
  1837. {$EXTERNALSYM TBSTYLE_ALTDRAG}
  1838. TBSTYLE_ALTDRAG = $0400;
  1839. {$EXTERNALSYM TBSTYLE_FLAT}
  1840. TBSTYLE_FLAT = $0800;
  1841. {$EXTERNALSYM TBSTYLE_LIST}
  1842. TBSTYLE_LIST = $1000;
  1843. {$EXTERNALSYM TBSTYLE_CUSTOMERASE}
  1844. TBSTYLE_CUSTOMERASE = $2000;
  1845. {$EXTERNALSYM TBSTYLE_REGISTERDROP}
  1846. TBSTYLE_REGISTERDROP = $4000;
  1847. {$EXTERNALSYM TBSTYLE_TRANSPARENT}
  1848. TBSTYLE_TRANSPARENT = $8000;
  1849. {$EXTERNALSYM TBSTYLE_EX_DRAWDDARROWS}
  1850. TBSTYLE_EX_DRAWDDARROWS = $00000001;
  1851. { For IE >= 0x0500 }
  1852. {$EXTERNALSYM BTNS_BUTTON}
  1853. BTNS_BUTTON = TBSTYLE_BUTTON;
  1854. {$EXTERNALSYM BTNS_SEP}
  1855. BTNS_SEP = TBSTYLE_SEP;
  1856. {$EXTERNALSYM BTNS_CHECK}
  1857. BTNS_CHECK = TBSTYLE_CHECK;
  1858. {$EXTERNALSYM BTNS_GROUP}
  1859. BTNS_GROUP = TBSTYLE_GROUP;
  1860. {$EXTERNALSYM BTNS_CHECKGROUP}
  1861. BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP;
  1862. {$EXTERNALSYM BTNS_DROPDOWN}
  1863. BTNS_DROPDOWN = TBSTYLE_DROPDOWN;
  1864. {$EXTERNALSYM BTNS_AUTOSIZE}
  1865. BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE;
  1866. {$EXTERNALSYM BTNS_NOPREFIX}
  1867. BTNS_NOPREFIX = TBSTYLE_NOPREFIX;
  1868. { For IE >= 0x0501 }
  1869. {$EXTERNALSYM BTNS_SHOWTEXT}
  1870. BTNS_SHOWTEXT = $0040; // ignored unless TBSTYLE_EX_MIXEDBUTTONS is set
  1871. { For IE >= 0x0500 }
  1872. {$EXTERNALSYM BTNS_WHOLEDROPDOWN}
  1873. BTNS_WHOLEDROPDOWN = $0080; // draw drop-down arrow, but without split arrow section
  1874. { For IE >= 0x0501 }
  1875. {$EXTERNALSYM TBSTYLE_EX_MIXEDBUTTONS}
  1876. TBSTYLE_EX_MIXEDBUTTONS = $00000008;
  1877. {$EXTERNALSYM TBSTYLE_EX_HIDECLIPPEDBUTTONS}
  1878. TBSTYLE_EX_HIDECLIPPEDBUTTONS = $00000010; // don't show partially obscured buttons
  1879. { For Windows >= XP }
  1880. {$EXTERNALSYM TBSTYLE_EX_DOUBLEBUFFER}
  1881. TBSTYLE_EX_DOUBLEBUFFER = $00000080; // Double Buffer the toolbar
  1882. type
  1883. // Custom Draw Structure
  1884. {$EXTERNALSYM _NMTBCUSTOMDRAW}
  1885. _NMTBCUSTOMDRAW = record
  1886. nmcd: TNMCustomDraw;
  1887. hbrMonoDither: HBRUSH;
  1888. hbrLines: HBRUSH; // For drawing lines on buttons
  1889. hpenLines: HPEN; // For drawing lines on buttons
  1890. clrText: COLORREF; // Color of text
  1891. clrMark: COLORREF; // Color of text bk when marked. (only if TBSTATE_MARKED)
  1892. clrTextHighlight: COLORREF; // Color of text when highlighted
  1893. clrBtnFace: COLORREF; // Background of the button
  1894. clrBtnHighlight: COLORREF; // 3D highlight
  1895. clrHighlightHotTrack: COLORREF; // In conjunction with fHighlightHotTrack
  1896. // will cause button to highlight like a menu
  1897. rcText: TRect; // Rect for text
  1898. nStringBkMode: Integer;
  1899. nHLStringBkMode: Integer;
  1900. iListGap: Integer;
  1901. end;
  1902. PNMTBCustomDraw = ^TNMTBCustomDraw;
  1903. TNMTBCustomDraw = _NMTBCUSTOMDRAW;
  1904. const
  1905. // Toolbar custom draw return flags
  1906. {$EXTERNALSYM TBCDRF_NOEDGES}
  1907. TBCDRF_NOEDGES = $00010000; // Don't draw button edges
  1908. {$EXTERNALSYM TBCDRF_HILITEHOTTRACK}
  1909. TBCDRF_HILITEHOTTRACK = $00020000; // Use color of the button bk when hottracked
  1910. {$EXTERNALSYM TBCDRF_NOOFFSET}
  1911. TBCDRF_NOOFFSET = $00040000; // Don't offset button if pressed
  1912. {$EXTERNALSYM TBCDRF_NOMARK}
  1913. TBCDRF_NOMARK = $00080000; // Don't draw default highlight of image/text for TBSTATE_MARKED
  1914. {$EXTERNALSYM TBCDRF_NOETCHEDEFFECT}
  1915. TBCDRF_NOETCHEDEFFECT = $00100000; // Don't draw etched effect for disabled items
  1916. { For IE >= 0x0500 }
  1917. {$EXTERNALSYM TBCDRF_BLENDICON}
  1918. TBCDRF_BLENDICON = $00200000; // Use ILD_BLEND50 on the icon image
  1919. {$EXTERNALSYM TBCDRF_NOBACKGROUND}
  1920. TBCDRF_NOBACKGROUND = $00400000; // Use ILD_BLEND50 on the icon image
  1921. { For Windows >= Vista }
  1922. {$EXTERNALSYM TBCDRF_USECDCOLORS}
  1923. TBCDRF_USECDCOLORS = $00800000; // Use CustomDrawColors to RenderText regardless of VisualStyle
  1924. {$EXTERNALSYM TB_ENABLEBUTTON}
  1925. TB_ENABLEBUTTON = WM_USER + 1;
  1926. {$EXTERNALSYM TB_CHECKBUTTON}
  1927. TB_CHECKBUTTON = WM_USER + 2;
  1928. {$EXTERNALSYM TB_PRESSBUTTON}
  1929. TB_PRESSBUTTON = WM_USER + 3;
  1930. {$EXTERNALSYM TB_HIDEBUTTON}
  1931. TB_HIDEBUTTON = WM_USER + 4;
  1932. {$EXTERNALSYM TB_INDETERMINATE}
  1933. TB_INDETERMINATE = WM_USER + 5;
  1934. {$EXTERNALSYM TB_MARKBUTTON}
  1935. TB_MARKBUTTON = WM_USER + 6;
  1936. {$EXTERNALSYM TB_ISBUTTONENABLED}
  1937. TB_ISBUTTONENABLED = WM_USER + 9;
  1938. {$EXTERNALSYM TB_ISBUTTONCHECKED}
  1939. TB_ISBUTTONCHECKED = WM_USER + 10;
  1940. {$EXTERNALSYM TB_ISBUTTONPRESSED}
  1941. TB_ISBUTTONPRESSED = WM_USER + 11;
  1942. {$EXTERNALSYM TB_ISBUTTONHIDDEN}
  1943. TB_ISBUTTONHIDDEN = WM_USER + 12;
  1944. {$EXTERNALSYM TB_ISBUTTONINDETERMINATE}
  1945. TB_ISBUTTONINDETERMINATE = WM_USER + 13;
  1946. {$EXTERNALSYM TB_ISBUTTONHIGHLIGHTED}
  1947. TB_ISBUTTONHIGHLIGHTED = WM_USER + 14;
  1948. {$EXTERNALSYM TB_SETSTATE}
  1949. TB_SETSTATE = WM_USER + 17;
  1950. {$EXTERNALSYM TB_GETSTATE}
  1951. TB_GETSTATE = WM_USER + 18;
  1952. {$EXTERNALSYM TB_ADDBITMAP}
  1953. TB_ADDBITMAP = WM_USER + 19;
  1954. type
  1955. PTBAddBitmap = ^TTBAddBitmap;
  1956. {$EXTERNALSYM tagTBADDBITMAP}
  1957. tagTBADDBITMAP = record
  1958. hInst: HINST;
  1959. nID: UIntPtr;
  1960. end;
  1961. TTBAddBitmap = tagTBADDBITMAP;
  1962. {$EXTERNALSYM TBADDBITMAP}
  1963. TBADDBITMAP = tagTBADDBITMAP;
  1964. const
  1965. {$EXTERNALSYM HINST_COMMCTRL}
  1966. HINST_COMMCTRL = THandle(-1);
  1967. {$EXTERNALSYM IDB_STD_SMALL_COLOR}
  1968. IDB_STD_SMALL_COLOR = 0;
  1969. {$EXTERNALSYM IDB_STD_LARGE_COLOR}
  1970. IDB_STD_LARGE_COLOR = 1;
  1971. {$EXTERNALSYM IDB_VIEW_SMALL_COLOR}
  1972. IDB_VIEW_SMALL_COLOR = 4;
  1973. {$EXTERNALSYM IDB_VIEW_LARGE_COLOR}
  1974. IDB_VIEW_LARGE_COLOR = 5;
  1975. {$EXTERNALSYM IDB_HIST_SMALL_COLOR}
  1976. IDB_HIST_SMALL_COLOR = 8;
  1977. {$EXTERNALSYM IDB_HIST_LARGE_COLOR}
  1978. IDB_HIST_LARGE_COLOR = 9;
  1979. {$EXTERNALSYM IDB_HIST_NORMAL}
  1980. IDB_HIST_NORMAL = 12;
  1981. {$EXTERNALSYM IDB_HIST_HOT}
  1982. IDB_HIST_HOT = 13;
  1983. {$EXTERNALSYM IDB_HIST_DISABLED}
  1984. IDB_HIST_DISABLED = 14;
  1985. {$EXTERNALSYM IDB_HIST_PRESSED}
  1986. IDB_HIST_PRESSED = 15;
  1987. { icon indexes for standard bitmap }
  1988. {$EXTERNALSYM STD_CUT}
  1989. STD_CUT = 0;
  1990. {$EXTERNALSYM STD_COPY}
  1991. STD_COPY = 1;
  1992. {$EXTERNALSYM STD_PASTE}
  1993. STD_PASTE = 2;
  1994. {$EXTERNALSYM STD_UNDO}
  1995. STD_UNDO = 3;
  1996. {$EXTERNALSYM STD_REDOW}
  1997. STD_REDOW = 4;
  1998. {$EXTERNALSYM STD_DELETE}
  1999. STD_DELETE = 5;
  2000. {$EXTERNALSYM STD_FILENEW}
  2001. STD_FILENEW = 6;
  2002. {$EXTERNALSYM STD_FILEOPEN}
  2003. STD_FILEOPEN = 7;
  2004. {$EXTERNALSYM STD_FILESAVE}
  2005. STD_FILESAVE = 8;
  2006. {$EXTERNALSYM STD_PRINTPRE}
  2007. STD_PRINTPRE = 9;
  2008. {$EXTERNALSYM STD_PROPERTIES}
  2009. STD_PROPERTIES = 10;
  2010. {$EXTERNALSYM STD_HELP}
  2011. STD_HELP = 11;
  2012. {$EXTERNALSYM STD_FIND}
  2013. STD_FIND = 12;
  2014. {$EXTERNALSYM STD_REPLACE}
  2015. STD_REPLACE = 13;
  2016. {$EXTERNALSYM STD_PRINT}
  2017. STD_PRINT = 14;
  2018. { icon indexes for standard view bitmap }
  2019. {$EXTERNALSYM VIEW_LARGEICONS}
  2020. VIEW_LARGEICONS = 0;
  2021. {$EXTERNALSYM VIEW_SMALLICONS}
  2022. VIEW_SMALLICONS = 1;
  2023. {$EXTERNALSYM VIEW_LIST}
  2024. VIEW_LIST = 2;
  2025. {$EXTERNALSYM VIEW_DETAILS}
  2026. VIEW_DETAILS = 3;
  2027. {$EXTERNALSYM VIEW_SORTNAME}
  2028. VIEW_SORTNAME = 4;
  2029. {$EXTERNALSYM VIEW_SORTSIZE}
  2030. VIEW_SORTSIZE = 5;
  2031. {$EXTERNALSYM VIEW_SORTDATE}
  2032. VIEW_SORTDATE = 6;
  2033. {$EXTERNALSYM VIEW_SORTTYPE}
  2034. VIEW_SORTTYPE = 7;
  2035. {$EXTERNALSYM VIEW_PARENTFOLDER}
  2036. VIEW_PARENTFOLDER = 8;
  2037. {$EXTERNALSYM VIEW_NETCONNECT}
  2038. VIEW_NETCONNECT = 9;
  2039. {$EXTERNALSYM VIEW_NETDISCONNECT}
  2040. VIEW_NETDISCONNECT = 10;
  2041. {$EXTERNALSYM VIEW_NEWFOLDER}
  2042. VIEW_NEWFOLDER = 11;
  2043. {$EXTERNALSYM VIEW_VIEWMENU}
  2044. VIEW_VIEWMENU = 12;
  2045. { icon indexes for history bitmap }
  2046. {$EXTERNALSYM HIST_BACK}
  2047. HIST_BACK = 0;
  2048. {$EXTERNALSYM HIST_FORWARD}
  2049. HIST_FORWARD = 1;
  2050. {$EXTERNALSYM HIST_FAVORITES}
  2051. HIST_FAVORITES = 2;
  2052. {$EXTERNALSYM HIST_ADDTOFAVORITES}
  2053. HIST_ADDTOFAVORITES = 3;
  2054. {$EXTERNALSYM HIST_VIEWTREE}
  2055. HIST_VIEWTREE = 4;
  2056. {$EXTERNALSYM TB_ADDBUTTONSA}
  2057. TB_ADDBUTTONSA = WM_USER + 20;
  2058. {$EXTERNALSYM TB_INSERTBUTTONA}
  2059. TB_INSERTBUTTONA = WM_USER + 21;
  2060. {$EXTERNALSYM TB_DELETEBUTTON}
  2061. TB_DELETEBUTTON = WM_USER + 22;
  2062. {$EXTERNALSYM TB_GETBUTTON}
  2063. TB_GETBUTTON = WM_USER + 23;
  2064. {$EXTERNALSYM TB_BUTTONCOUNT}
  2065. TB_BUTTONCOUNT = WM_USER + 24;
  2066. {$EXTERNALSYM TB_COMMANDTOINDEX}
  2067. TB_COMMANDTOINDEX = WM_USER + 25;
  2068. type
  2069. PTBSaveParamsA = ^TTBSaveParamsA;
  2070. PTBSaveParamsW = ^TTBSaveParamsW;
  2071. PTBSaveParams = PTBSaveParamsW;
  2072. {$EXTERNALSYM tagTBSAVEPARAMSA}
  2073. tagTBSAVEPARAMSA = record
  2074. hkr: HKEY;
  2075. pszSubKey: PAnsiChar;
  2076. pszValueName: PAnsiChar;
  2077. end;
  2078. {$EXTERNALSYM tagTBSAVEPARAMSW}
  2079. tagTBSAVEPARAMSW = record
  2080. hkr: HKEY;
  2081. pszSubKey: PWideChar;
  2082. pszValueName: PWideChar;
  2083. end;
  2084. {$EXTERNALSYM tagTBSAVEPARAMS}
  2085. tagTBSAVEPARAMS = tagTBSAVEPARAMSW;
  2086. TTBSaveParamsA = tagTBSAVEPARAMSA;
  2087. TTBSaveParamsW = tagTBSAVEPARAMSW;
  2088. TTBSaveParams = TTBSaveParamsW;
  2089. {$EXTERNALSYM TBSAVEPARAMSA}
  2090. TBSAVEPARAMSA = tagTBSAVEPARAMSA;
  2091. {$EXTERNALSYM TBSAVEPARAMSW}
  2092. TBSAVEPARAMSW = tagTBSAVEPARAMSW;
  2093. {$EXTERNALSYM TBSAVEPARAMS}
  2094. TBSAVEPARAMS = TBSAVEPARAMSW;
  2095. const
  2096. {$EXTERNALSYM TB_SAVERESTOREA}
  2097. TB_SAVERESTOREA = WM_USER + 26;
  2098. {$EXTERNALSYM TB_ADDSTRINGA}
  2099. TB_ADDSTRINGA = WM_USER + 28;
  2100. {$EXTERNALSYM TB_GETBUTTONTEXTA}
  2101. TB_GETBUTTONTEXTA = WM_USER + 45;
  2102. {$EXTERNALSYM TBN_GETBUTTONINFOA}
  2103. TBN_GETBUTTONINFOA = TBN_FIRST-0;
  2104. {$EXTERNALSYM TB_SAVERESTOREW}
  2105. TB_SAVERESTOREW = WM_USER + 76;
  2106. {$EXTERNALSYM TB_ADDSTRINGW}
  2107. TB_ADDSTRINGW = WM_USER + 77;
  2108. {$EXTERNALSYM TB_GETBUTTONTEXTW}
  2109. TB_GETBUTTONTEXTW = WM_USER + 75;
  2110. {$EXTERNALSYM TBN_GETBUTTONINFOW}
  2111. TBN_GETBUTTONINFOW = TBN_FIRST-20;
  2112. {$IFDEF UNICODE}
  2113. {$EXTERNALSYM TB_SAVERESTORE}
  2114. TB_SAVERESTORE = TB_SAVERESTOREW;
  2115. {$EXTERNALSYM TB_ADDSTRING}
  2116. TB_ADDSTRING = TB_ADDSTRINGW;
  2117. {$EXTERNALSYM TB_GETBUTTONTEXT}
  2118. TB_GETBUTTONTEXT = TB_GETBUTTONTEXTW;
  2119. {$EXTERNALSYM TBN_GETBUTTONINFO}
  2120. TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
  2121. {$ELSE}
  2122. {$EXTERNALSYM TB_SAVERESTORE}
  2123. TB_SAVERESTORE = TB_SAVERESTOREA;
  2124. {$EXTERNALSYM TB_ADDSTRING}
  2125. TB_ADDSTRING = TB_ADDSTRINGA;
  2126. {$EXTERNALSYM TB_GETBUTTONTEXT}
  2127. TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
  2128. {$EXTERNALSYM TBN_GETBUTTONINFO}
  2129. TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
  2130. {$ENDIF}
  2131. {$EXTERNALSYM TB_CUSTOMIZE}
  2132. TB_CUSTOMIZE = WM_USER + 27;
  2133. {$EXTERNALSYM TB_GETITEMRECT}
  2134. TB_GETITEMRECT = WM_USER + 29;
  2135. {$EXTERNALSYM TB_BUTTONSTRUCTSIZE}
  2136. TB_BUTTONSTRUCTSIZE = WM_USER + 30;
  2137. {$EXTERNALSYM TB_SETBUTTONSIZE}
  2138. TB_SETBUTTONSIZE = WM_USER + 31;
  2139. {$EXTERNALSYM TB_SETBITMAPSIZE}
  2140. TB_SETBITMAPSIZE = WM_USER + 32;
  2141. {$EXTERNALSYM TB_AUTOSIZE}
  2142. TB_AUTOSIZE = WM_USER + 33;
  2143. {$EXTERNALSYM TB_GETTOOLTIPS}
  2144. TB_GETTOOLTIPS = WM_USER + 35;
  2145. {$EXTERNALSYM TB_SETTOOLTIPS}
  2146. TB_SETTOOLTIPS = WM_USER + 36;
  2147. {$EXTERNALSYM TB_SETPARENT}
  2148. TB_SETPARENT = WM_USER + 37;
  2149. {$EXTERNALSYM TB_SETROWS}
  2150. TB_SETROWS = WM_USER + 39;
  2151. {$EXTERNALSYM TB_GETROWS}
  2152. TB_GETROWS = WM_USER + 40;
  2153. {$EXTERNALSYM TB_SETCMDID}
  2154. TB_SETCMDID = WM_USER + 42;
  2155. {$EXTERNALSYM TB_CHANGEBITMAP}
  2156. TB_CHANGEBITMAP = WM_USER + 43;
  2157. {$EXTERNALSYM TB_GETBITMAP}
  2158. TB_GETBITMAP = WM_USER + 44;
  2159. {$EXTERNALSYM TB_REPLACEBITMAP}
  2160. TB_REPLACEBITMAP = WM_USER + 46;
  2161. {$EXTERNALSYM TB_SETINDENT}
  2162. TB_SETINDENT = WM_USER + 47;
  2163. {$EXTERNALSYM TB_SETIMAGELIST}
  2164. TB_SETIMAGELIST = WM_USER + 48;
  2165. {$EXTERNALSYM TB_GETIMAGELIST}
  2166. TB_GETIMAGELIST = WM_USER + 49;
  2167. {$EXTERNALSYM TB_LOADIMAGES}
  2168. TB_LOADIMAGES = WM_USER + 50;
  2169. {$EXTERNALSYM TB_GETRECT}
  2170. TB_GETRECT = WM_USER + 51; { wParam is the Cmd instead of index }
  2171. {$EXTERNALSYM TB_SETHOTIMAGELIST}
  2172. TB_SETHOTIMAGELIST = WM_USER + 52;
  2173. {$EXTERNALSYM TB_GETHOTIMAGELIST}
  2174. TB_GETHOTIMAGELIST = WM_USER + 53;
  2175. {$EXTERNALSYM TB_SETDISABLEDIMAGELIST}
  2176. TB_SETDISABLEDIMAGELIST = WM_USER + 54;
  2177. {$EXTERNALSYM TB_GETDISABLEDIMAGELIST}
  2178. TB_GETDISABLEDIMAGELIST = WM_USER + 55;
  2179. {$EXTERNALSYM TB_SETSTYLE}
  2180. TB_SETSTYLE = WM_USER + 56;
  2181. {$EXTERNALSYM TB_GETSTYLE}
  2182. TB_GETSTYLE = WM_USER + 57;
  2183. {$EXTERNALSYM TB_GETBUTTONSIZE}
  2184. TB_GETBUTTONSIZE = WM_USER + 58;
  2185. {$EXTERNALSYM TB_SETBUTTONWIDTH}
  2186. TB_SETBUTTONWIDTH = WM_USER + 59;
  2187. {$EXTERNALSYM TB_SETMAXTEXTROWS}
  2188. TB_SETMAXTEXTROWS = WM_USER + 60;
  2189. {$EXTERNALSYM TB_GETTEXTROWS}
  2190. TB_GETTEXTROWS = WM_USER + 61;
  2191. {$EXTERNALSYM TB_GETOBJECT}
  2192. TB_GETOBJECT = WM_USER + 62; // wParam == IID, lParam void **ppv
  2193. {$EXTERNALSYM TB_GETHOTITEM}
  2194. TB_GETHOTITEM = WM_USER + 71;
  2195. {$EXTERNALSYM TB_SETHOTITEM}
  2196. TB_SETHOTITEM = WM_USER + 72; // wParam == iHotItem
  2197. {$EXTERNALSYM TB_SETANCHORHIGHLIGHT}
  2198. TB_SETANCHORHIGHLIGHT = WM_USER + 73; // wParam == TRUE/FALSE
  2199. {$EXTERNALSYM TB_GETANCHORHIGHLIGHT}
  2200. TB_GETANCHORHIGHLIGHT = WM_USER + 74;
  2201. {$EXTERNALSYM TB_MAPACCELERATORA}
  2202. TB_MAPACCELERATORA = WM_USER + 78; // wParam == ch, lParam int * pidBtn
  2203. type
  2204. {$EXTERNALSYM TBINSERTMARK}
  2205. TBINSERTMARK = record
  2206. iButton: Integer;
  2207. dwFlags: DWORD;
  2208. end;
  2209. PTBInsertMark = ^TTBInsertMark;
  2210. TTBInsertMark = TBINSERTMARK;
  2211. const
  2212. {$EXTERNALSYM TBIMHT_AFTER}
  2213. TBIMHT_AFTER = $00000001; // TRUE = insert After iButton, otherwise before
  2214. {$EXTERNALSYM TBIMHT_BACKGROUND}
  2215. TBIMHT_BACKGROUND = $00000002; // TRUE iff missed buttons completely
  2216. {$EXTERNALSYM TB_GETINSERTMARK}
  2217. TB_GETINSERTMARK = WM_USER + 79; // lParam == LPTBINSERTMARK
  2218. {$EXTERNALSYM TB_SETINSERTMARK}
  2219. TB_SETINSERTMARK = WM_USER + 80; // lParam == LPTBINSERTMARK
  2220. {$EXTERNALSYM TB_INSERTMARKHITTEST}
  2221. TB_INSERTMARKHITTEST = WM_USER + 81; // wParam == LPPOINT lParam == LPTBINSERTMARK
  2222. {$EXTERNALSYM TB_MOVEBUTTON}
  2223. TB_MOVEBUTTON = WM_USER + 82;
  2224. {$EXTERNALSYM TB_GETMAXSIZE}
  2225. TB_GETMAXSIZE = WM_USER + 83; // lParam == LPSIZE
  2226. {$EXTERNALSYM TB_SETEXTENDEDSTYLE}
  2227. TB_SETEXTENDEDSTYLE = WM_USER + 84; // For TBSTYLE_EX_*
  2228. {$EXTERNALSYM TB_GETEXTENDEDSTYLE}
  2229. TB_GETEXTENDEDSTYLE = WM_USER + 85; // For TBSTYLE_EX_*
  2230. {$EXTERNALSYM TB_GETPADDING}
  2231. TB_GETPADDING = WM_USER + 86;
  2232. {$EXTERNALSYM TB_SETPADDING}
  2233. TB_SETPADDING = WM_USER + 87;
  2234. {$EXTERNALSYM TB_SETINSERTMARKCOLOR}
  2235. TB_SETINSERTMARKCOLOR = WM_USER + 88;
  2236. {$EXTERNALSYM TB_GETINSERTMARKCOLOR}
  2237. TB_GETINSERTMARKCOLOR = WM_USER + 89;
  2238. {$EXTERNALSYM TB_SETCOLORSCHEME}
  2239. TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME; // lParam is color scheme
  2240. {$EXTERNALSYM TB_GETCOLORSCHEME}
  2241. TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME; // fills in COLORSCHEME pointed to by lParam
  2242. {$EXTERNALSYM TB_SETUNICODEFORMAT}
  2243. TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  2244. {$EXTERNALSYM TB_GETUNICODEFORMAT}
  2245. TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  2246. {$EXTERNALSYM TB_MAPACCELERATORW}
  2247. TB_MAPACCELERATORW = WM_USER + 90; // wParam == ch, lParam int * pidBtn
  2248. {$IFDEF UNICODE}
  2249. {$EXTERNALSYM TB_MAPACCELERATOR}
  2250. TB_MAPACCELERATOR = TB_MAPACCELERATORW;
  2251. {$ELSE}
  2252. {$EXTERNALSYM TB_MAPACCELERATOR}
  2253. TB_MAPACCELERATOR = TB_MAPACCELERATORA;
  2254. {$ENDIF}
  2255. type
  2256. {$EXTERNALSYM TBREPLACEBITMAP}
  2257. TBREPLACEBITMAP = record
  2258. hInstOld: HINST;
  2259. nIDOld: UINT_PTR;
  2260. hInstNew: HINST;
  2261. nIDNew: UINT_PTR;
  2262. nButtons: Integer;
  2263. end;
  2264. PTBReplaceBitmap = ^TTBReplaceBitmap;
  2265. TTBReplaceBitmap = TBREPLACEBITMAP;
  2266. const
  2267. {$EXTERNALSYM TBBF_LARGE}
  2268. TBBF_LARGE = $0001;
  2269. {$EXTERNALSYM TB_GETBITMAPFLAGS}
  2270. TB_GETBITMAPFLAGS = WM_USER + 41;
  2271. {$EXTERNALSYM TBIF_IMAGE}
  2272. TBIF_IMAGE = $00000001;
  2273. {$EXTERNALSYM TBIF_TEXT}
  2274. TBIF_TEXT = $00000002;
  2275. {$EXTERNALSYM TBIF_STATE}
  2276. TBIF_STATE = $00000004;
  2277. {$EXTERNALSYM TBIF_STYLE}
  2278. TBIF_STYLE = $00000008;
  2279. {$EXTERNALSYM TBIF_LPARAM}
  2280. TBIF_LPARAM = $00000010;
  2281. {$EXTERNALSYM TBIF_COMMAND}
  2282. TBIF_COMMAND = $00000020;
  2283. {$EXTERNALSYM TBIF_SIZE}
  2284. TBIF_SIZE = $00000040;
  2285. {$EXTERNALSYM TBIF_BYINDEX}
  2286. TBIF_BYINDEX = $80000000;
  2287. type
  2288. {$EXTERNALSYM TBBUTTONINFOA}
  2289. TBBUTTONINFOA = record
  2290. cbSize: UINT;
  2291. dwMask: DWORD;
  2292. idCommand: Integer;
  2293. iImage: Integer;
  2294. fsState: Byte;
  2295. fsStyle: Byte;
  2296. cx: Word;
  2297. lParam: DWORD_PTR;
  2298. pszText: PAnsiChar;
  2299. cchText: Integer;
  2300. end;
  2301. {$EXTERNALSYM TBBUTTONINFOW}
  2302. TBBUTTONINFOW = record
  2303. cbSize: UINT;
  2304. dwMask: DWORD;
  2305. idCommand: Integer;
  2306. iImage: Integer;
  2307. fsState: Byte;
  2308. fsStyle: Byte;
  2309. cx: Word;
  2310. lParam: DWORD_PTR;
  2311. pszText: PWideChar;
  2312. cchText: Integer;
  2313. end;
  2314. {$EXTERNALSYM TBBUTTONINFO}
  2315. TBBUTTONINFO = TBBUTTONINFOW;
  2316. PTBButtonInfoA = ^TTBButtonInfoA;
  2317. PTBButtonInfoW = ^TTBButtonInfoW;
  2318. PTBButtonInfo = PTBButtonInfoW;
  2319. TTBButtonInfoA = TBBUTTONINFOA;
  2320. TTBButtonInfoW = TBBUTTONINFOW;
  2321. TTBButtonInfo = TTBButtonInfoW;
  2322. const
  2323. // BUTTONINFO APIs do NOT support the string pool.
  2324. {$EXTERNALSYM TB_GETBUTTONINFOW}
  2325. TB_GETBUTTONINFOW = WM_USER + 63;
  2326. {$EXTERNALSYM TB_SETBUTTONINFOW}
  2327. TB_SETBUTTONINFOW = WM_USER + 64;
  2328. {$EXTERNALSYM TB_GETBUTTONINFOA}
  2329. TB_GETBUTTONINFOA = WM_USER + 65;
  2330. {$EXTERNALSYM TB_SETBUTTONINFOA}
  2331. TB_SETBUTTONINFOA = WM_USER + 66;
  2332. {$IFDEF UNICODE}
  2333. {$EXTERNALSYM TB_GETBUTTONINFO}
  2334. TB_GETBUTTONINFO = TB_GETBUTTONINFOW;
  2335. {$EXTERNALSYM TB_SETBUTTONINFO}
  2336. TB_SETBUTTONINFO = TB_SETBUTTONINFOW;
  2337. {$ELSE}
  2338. {$EXTERNALSYM TB_GETBUTTONINFO}
  2339. TB_GETBUTTONINFO = TB_GETBUTTONINFOA;
  2340. {$EXTERNALSYM TB_SETBUTTONINFO}
  2341. TB_SETBUTTONINFO = TB_SETBUTTONINFOA;
  2342. {$ENDIF}
  2343. {$EXTERNALSYM TB_INSERTBUTTONW}
  2344. TB_INSERTBUTTONW = WM_USER + 67;
  2345. {$EXTERNALSYM TB_ADDBUTTONSW}
  2346. TB_ADDBUTTONSW = WM_USER + 68;
  2347. {$EXTERNALSYM TB_HITTEST}
  2348. TB_HITTEST = WM_USER + 69;
  2349. // New post Win95/NT4 for InsertButton and AddButton. if iString member
  2350. // is a pointer to a string, it will be handled as a string like listview
  2351. // = although LPSTR_TEXTCALLBACK is not supported;.
  2352. {$IFDEF UNICODE}
  2353. {$EXTERNALSYM TB_INSERTBUTTON}
  2354. TB_INSERTBUTTON = TB_INSERTBUTTONW;
  2355. {$EXTERNALSYM TB_ADDBUTTONS}
  2356. TB_ADDBUTTONS = TB_ADDBUTTONSW;
  2357. {$ELSE}
  2358. {$EXTERNALSYM TB_INSERTBUTTON}
  2359. TB_INSERTBUTTON = TB_INSERTBUTTONA;
  2360. {$EXTERNALSYM TB_ADDBUTTONS}
  2361. TB_ADDBUTTONS = TB_ADDBUTTONSA;
  2362. {$ENDIF}
  2363. {$EXTERNALSYM TB_SETDRAWTEXTFLAGS}
  2364. TB_SETDRAWTEXTFLAGS = WM_USER + 70; // wParam == mask lParam == bit values
  2365. {$EXTERNALSYM TB_GETSTRINGW}
  2366. TB_GETSTRINGW = WM_USER + 91;
  2367. {$EXTERNALSYM TB_GETSTRINGA}
  2368. TB_GETSTRINGA = WM_USER + 92;
  2369. {$EXTERNALSYM TB_GETSTRING}
  2370. {$IFDEF UNICODE}
  2371. TB_GETSTRING = TB_GETSTRINGW;
  2372. {$ELSE}
  2373. TB_GETSTRING = TB_GETSTRINGA;
  2374. {$ENDIF}
  2375. {$EXTERNALSYM TB_SETHOTITEM2}
  2376. TB_SETHOTITEM2 = WM_USER + 94; // wParam == iHotItem, lParam = dwFlags
  2377. {$EXTERNALSYM TB_SETLISTGAP}
  2378. TB_SETLISTGAP = WM_USER + 96;
  2379. {$EXTERNALSYM TB_GETIMAGELISTCOUNT}
  2380. TB_GETIMAGELISTCOUNT = WM_USER + 98;
  2381. {$EXTERNALSYM TB_GETIDEALSIZE}
  2382. TB_GETIDEALSIZE = WM_USER + 99; // wParam == fHeight, lParam = psize
  2383. { For Windows >= XP }
  2384. {$EXTERNALSYM TBMF_PAD}
  2385. TBMF_PAD = $00000001;
  2386. {$EXTERNALSYM TBMF_BARPAD}
  2387. TBMF_BARPAD = $00000002;
  2388. {$EXTERNALSYM TBMF_BUTTONSPACING}
  2389. TBMF_BUTTONSPACING = $00000004;
  2390. type
  2391. { For Windows >= XP }
  2392. { $EXTERNALSYM TBMETRICSA}
  2393. TBMETRICSA = record
  2394. cbSize: UINT;
  2395. dwMask: DWORD;
  2396. cxPad: Integer; { PAD }
  2397. cyPad: Integer;
  2398. cxBarPad: Integer;{ BARPAD }
  2399. cyBarPad: Integer;
  2400. cxButtonSpacing: Integer;{ BUTTONSPACING }
  2401. cyButtonSpacing: Integer;
  2402. end;
  2403. { $EXTERNALSYM TBMETRICSW}
  2404. TBMETRICSW = record
  2405. cbSize: UINT;
  2406. dwMask: DWORD;
  2407. cxPad: Integer; { PAD }
  2408. cyPad: Integer;
  2409. cxBarPad: Integer;{ BARPAD }
  2410. cyBarPad: Integer;
  2411. cxButtonSpacing: Integer;{ BUTTONSPACING }
  2412. cyButtonSpacing: Integer;
  2413. end;
  2414. {$EXTERNALSYM TBMETRICS}
  2415. TBMETRICS = TBMETRICSW;
  2416. PTBMetricsA = ^TTBMetricsA;
  2417. PTBMetricsW = ^TTBMetricsW;
  2418. PTBMetrics = PTBMetricsW;
  2419. TTBMetricsA = TBMETRICSA;
  2420. TTBMetricsW = TBMETRICSW;
  2421. TTBMetrics = TTBMetricsW;
  2422. const
  2423. { For Windows >= XP }
  2424. {$EXTERNALSYM TB_GETMETRICS}
  2425. TB_GETMETRICS = WM_USER + 101;
  2426. {$EXTERNALSYM TB_SETMETRICS}
  2427. TB_SETMETRICS = WM_USER + 102;
  2428. { _WIN32_WINNT >= 0x600 Windows >= Vista }
  2429. {$EXTERNALSYM TB_GETITEMDROPDOWNRECT}
  2430. TB_GETITEMDROPDOWNRECT = WM_USER + 103; // Rect of item's drop down button
  2431. {$EXTERNALSYM TB_SETPRESSEDIMAGELIST}
  2432. TB_SETPRESSEDIMAGELIST = WM_USER + 104;
  2433. {$EXTERNALSYM TB_GETPRESSEDIMAGELIST}
  2434. TB_GETPRESSEDIMAGELIST = WM_USER + 105;
  2435. { _WIN32_WINNT >= 0x0501 Windows >= XP }
  2436. {$EXTERNALSYM TB_SETWINDOWTHEME}
  2437. TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  2438. const
  2439. {$EXTERNALSYM TBN_BEGINDRAG}
  2440. TBN_BEGINDRAG = TBN_FIRST-1;
  2441. {$EXTERNALSYM TBN_ENDDRAG}
  2442. TBN_ENDDRAG = TBN_FIRST-2;
  2443. {$EXTERNALSYM TBN_BEGINADJUST}
  2444. TBN_BEGINADJUST = TBN_FIRST-3;
  2445. {$EXTERNALSYM TBN_ENDADJUST}
  2446. TBN_ENDADJUST = TBN_FIRST-4;
  2447. {$EXTERNALSYM TBN_RESET}
  2448. TBN_RESET = TBN_FIRST-5;
  2449. {$EXTERNALSYM TBN_QUERYINSERT}
  2450. TBN_QUERYINSERT = TBN_FIRST-6;
  2451. {$EXTERNALSYM TBN_QUERYDELETE}
  2452. TBN_QUERYDELETE = TBN_FIRST-7;
  2453. {$EXTERNALSYM TBN_TOOLBARCHANGE}
  2454. TBN_TOOLBARCHANGE = TBN_FIRST-8;
  2455. {$EXTERNALSYM TBN_CUSTHELP}
  2456. TBN_CUSTHELP = TBN_FIRST-9;
  2457. {$EXTERNALSYM TBN_DROPDOWN}
  2458. TBN_DROPDOWN = TBN_FIRST-10;
  2459. {$EXTERNALSYM TBN_CLOSEUP}
  2460. TBN_CLOSEUP = TBN_FIRST-11;
  2461. {$EXTERNALSYM TBN_GETOBJECT}
  2462. TBN_GETOBJECT = TBN_FIRST-12;
  2463. {$EXTERNALSYM TBN_RESTORE}
  2464. TBN_RESTORE = TBN_FIRST-21;
  2465. {$EXTERNALSYM TBN_SAVE}
  2466. TBN_SAVE = TBN_FIRST-22;
  2467. type
  2468. // Structure for TBN_HOTITEMCHANGE notification
  2469. {$EXTERNALSYM tagNMTBHOTITEM}
  2470. tagNMTBHOTITEM = record
  2471. hdr: TNMHdr;
  2472. idOld: Integer;
  2473. idNew: Integer;
  2474. dwFlags: DWORD; // HICF_*
  2475. end;
  2476. PNMTBHotItem = ^TNMTBHotItem;
  2477. TNMTBHotItem = tagNMTBHOTITEM;
  2478. const
  2479. // Hot item change flags
  2480. {$EXTERNALSYM HICF_OTHER}
  2481. HICF_OTHER = $00000000;
  2482. {$EXTERNALSYM HICF_MOUSE}
  2483. HICF_MOUSE = $00000001; // Triggered by mouse
  2484. {$EXTERNALSYM HICF_ARROWKEYS}
  2485. HICF_ARROWKEYS = $00000002; // Triggered by arrow keys
  2486. {$EXTERNALSYM HICF_ACCELERATOR}
  2487. HICF_ACCELERATOR = $00000004; // Triggered by accelerator
  2488. {$EXTERNALSYM HICF_DUPACCEL}
  2489. HICF_DUPACCEL = $00000008; // This accelerator is not unique
  2490. {$EXTERNALSYM HICF_ENTERING}
  2491. HICF_ENTERING = $00000010; // idOld is invalid
  2492. {$EXTERNALSYM HICF_LEAVING}
  2493. HICF_LEAVING = $00000020; // idNew is invalid
  2494. {$EXTERNALSYM HICF_RESELECT}
  2495. HICF_RESELECT = $00000040; // hot item reselected
  2496. {$EXTERNALSYM TBN_HOTITEMCHANGE}
  2497. TBN_HOTITEMCHANGE = TBN_FIRST - 13;
  2498. {$EXTERNALSYM TBN_DRAGOUT}
  2499. TBN_DRAGOUT = TBN_FIRST - 14; // this is sent when the user clicks down on a button then drags off the button
  2500. {$EXTERNALSYM TBN_DELETINGBUTTON}
  2501. TBN_DELETINGBUTTON = TBN_FIRST - 15; // uses TBNOTIFY
  2502. {$EXTERNALSYM TBN_GETDISPINFOA}
  2503. TBN_GETDISPINFOA = TBN_FIRST - 16; // This is sent when the toolbar needs some display information
  2504. {$EXTERNALSYM TBN_GETDISPINFOW}
  2505. TBN_GETDISPINFOW = TBN_FIRST - 17; // This is sent when the toolbar needs some display information
  2506. {$EXTERNALSYM TBN_GETINFOTIPA}
  2507. TBN_GETINFOTIPA = TBN_FIRST - 18;
  2508. {$EXTERNALSYM TBN_GETINFOTIPW}
  2509. TBN_GETINFOTIPW = TBN_FIRST - 19;
  2510. {$EXTERNALSYM TBN_INITCUSTOMIZE}
  2511. TBN_INITCUSTOMIZE = TBN_FIRST - 23;
  2512. {$EXTERNALSYM TBNRF_HIDEHELP}
  2513. TBNRF_HIDEHELP = $00000001;
  2514. {$EXTERNALSYM TBNRF_ENDCUSTOMIZE}
  2515. TBNRF_ENDCUSTOMIZE = $00000002;
  2516. {$EXTERNALSYM TBN_WRAPHOTITEM}
  2517. TBN_WRAPHOTITEM = TBN_FIRST - 24;
  2518. {$EXTERNALSYM TBN_DUPACCELERATOR}
  2519. TBN_DUPACCELERATOR = TBN_FIRST - 25;
  2520. {$EXTERNALSYM TBN_WRAPACCELERATOR}
  2521. TBN_WRAPACCELERATOR = TBN_FIRST - 26;
  2522. {$EXTERNALSYM TBN_DRAGOVER}
  2523. TBN_DRAGOVER = TBN_FIRST - 27;
  2524. {$EXTERNALSYM TBN_MAPACCELERATOR}
  2525. TBN_MAPACCELERATOR = TBN_FIRST - 28;
  2526. type
  2527. {$EXTERNALSYM tagNMTBSAVE}
  2528. tagNMTBSAVE = record
  2529. hdr: TNMHdr;
  2530. pData: PDWORD;
  2531. pCurrent: PDWORD;
  2532. cbData: UINT;
  2533. iItem: Integer;
  2534. cButtons: Integer;
  2535. tbButton: TTBButton;
  2536. end;
  2537. PNMTBSave = ^TNMTBSave;
  2538. TNMTBSave = tagNMTBSAVE;
  2539. {$EXTERNALSYM tagNMTBRESTORE}
  2540. tagNMTBRESTORE = record
  2541. hdr: TNMHdr;
  2542. pData: PDWORD;
  2543. pCurrent: PDWORD;
  2544. cbData: UINT;
  2545. iItem: Integer;
  2546. cButtons: Integer;
  2547. cbBytesPerRecord: Integer;
  2548. tbButton: TTBButton;
  2549. end;
  2550. PNMTBRestore = ^TNMTBRestore;
  2551. TNMTBRestore = tagNMTBRESTORE;
  2552. {$EXTERNALSYM tagNMTBGETINFOTIPA}
  2553. tagNMTBGETINFOTIPA = record
  2554. hdr: TNMHdr;
  2555. pszText: PAnsiChar;
  2556. cchTextMax: Integer;
  2557. iItem: Integer;
  2558. lParam: LPARAM;
  2559. end;
  2560. {$EXTERNALSYM tagNMTBGETINFOTIPW}
  2561. tagNMTBGETINFOTIPW = record
  2562. hdr: TNMHdr;
  2563. pszText: PWideChar;
  2564. cchTextMax: Integer;
  2565. iItem: Integer;
  2566. lParam: LPARAM;
  2567. end;
  2568. {$EXTERNALSYM tagNMTBGETINFOTIP}
  2569. tagNMTBGETINFOTIP = tagNMTBGETINFOTIPW;
  2570. PNMTBGetInfoTipA = ^TNMTBGetInfoTipA;
  2571. PNMTBGetInfoTipW = ^TNMTBGetInfoTipW;
  2572. PNMTBGetInfoTip = PNMTBGetInfoTipW;
  2573. TNMTBGetInfoTipA = tagNMTBGETINFOTIPA;
  2574. TNMTBGetInfoTipW = tagNMTBGETINFOTIPW;
  2575. TNMTBGetInfoTip = TNMTBGetInfoTipW;
  2576. const
  2577. {$EXTERNALSYM TBNF_IMAGE}
  2578. TBNF_IMAGE = $00000001;
  2579. {$EXTERNALSYM TBNF_TEXT}
  2580. TBNF_TEXT = $00000002;
  2581. {$EXTERNALSYM TBNF_DI_SETITEM}
  2582. TBNF_DI_SETITEM = $10000000;
  2583. type
  2584. {$EXTERNALSYM NMTBDISPINFOA}
  2585. NMTBDISPINFOA = record
  2586. hdr: TNMHdr;
  2587. dwMask: DWORD; // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  2588. idCommand: Integer; // [in] id of button we're requesting info for
  2589. lParam: DWORD_PTR; // [in] lParam of button
  2590. iImage: Integer; // [out] image index
  2591. pszText: PAnsiChar; // [out] new text for item
  2592. cchText: Integer; // [in] size of buffer pointed to by pszText
  2593. end;
  2594. {$EXTERNALSYM NMTBDISPINFOW}
  2595. NMTBDISPINFOW = record
  2596. hdr: TNMHdr;
  2597. dwMask: DWORD; // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  2598. idCommand: Integer; // [in] id of button we're requesting info for
  2599. lParam: DWORD_PTR; // [in] lParam of button
  2600. iImage: Integer; // [out] image index
  2601. pszText: PWideChar; // [out] new text for item
  2602. cchText: Integer; // [in] size of buffer pointed to by pszText
  2603. end;
  2604. {$EXTERNALSYM NMTBDISPINFO}
  2605. NMTBDISPINFO = NMTBDISPINFOW;
  2606. PNMTBDispInfoA = ^TNMTBDispInfoA;
  2607. PNMTBDispInfoW = ^TNMTBDispInfoW;
  2608. PNMTBDispInfo = PNMTBDispInfoW;
  2609. TNMTBDispInfoA = NMTBDISPINFOA;
  2610. TNMTBDispInfoW = NMTBDISPINFOW;
  2611. TNMTBDispInfo = TNMTBDispInfoW;
  2612. const
  2613. // Return codes for TBN_DROPDOWN
  2614. {$EXTERNALSYM TBDDRET_DEFAULT}
  2615. TBDDRET_DEFAULT = 0;
  2616. {$EXTERNALSYM TBDDRET_NODEFAULT}
  2617. TBDDRET_NODEFAULT = 1;
  2618. {$EXTERNALSYM TBDDRET_TREATPRESSED}
  2619. TBDDRET_TREATPRESSED = 2; // Treat as a standard press button
  2620. type
  2621. {$EXTERNALSYM tagNMTOOLBARA}
  2622. tagNMTOOLBARA = record
  2623. hdr: TNMHdr;
  2624. iItem: Integer;
  2625. tbButton: TTBButton;
  2626. cchText: Integer;
  2627. pszText: PAnsiChar;
  2628. rcButon: TRect;
  2629. end;
  2630. {$EXTERNALSYM tagNMTOOLBARW}
  2631. tagNMTOOLBARW = record
  2632. hdr: TNMHdr;
  2633. iItem: Integer;
  2634. tbButton: TTBButton;
  2635. cchText: Integer;
  2636. pszText: PWideChar;
  2637. rcButon: TRect;
  2638. end;
  2639. {$EXTERNALSYM tagNMTOOLBAR}
  2640. tagNMTOOLBAR = tagNMTOOLBARW;
  2641. PNMToolBarA = ^TNMToolBarA;
  2642. PNMToolBarW = ^TNMToolBarW;
  2643. PNMToolBar = PNMToolBarW;
  2644. TNMToolBarA = tagNMTOOLBARA;
  2645. TNMToolBarW = tagNMTOOLBARW;
  2646. TNMToolBar = TNMToolBarW;
  2647. { ====== REBAR CONTROL =================== }
  2648. const
  2649. {$EXTERNALSYM REBARCLASSNAME}
  2650. REBARCLASSNAME = 'ReBarWindow32';
  2651. type
  2652. {$EXTERNALSYM tagREBARINFO}
  2653. tagREBARINFO = record
  2654. cbSize: UINT;
  2655. fMask: UINT;
  2656. himl: HIMAGELIST;
  2657. end;
  2658. PReBarInfo = ^TReBarInfo;
  2659. TReBarInfo = tagREBARINFO;
  2660. const
  2661. {$EXTERNALSYM RBIM_IMAGELIST}
  2662. RBIM_IMAGELIST = $00000001;
  2663. {$EXTERNALSYM RBS_TOOLTIPS}
  2664. RBS_TOOLTIPS = $00000100;
  2665. {$EXTERNALSYM RBS_VARHEIGHT}
  2666. RBS_VARHEIGHT = $00000200;
  2667. {$EXTERNALSYM RBS_BANDBORDERS}
  2668. RBS_BANDBORDERS = $00000400;
  2669. {$EXTERNALSYM RBS_FIXEDORDER}
  2670. RBS_FIXEDORDER = $00000800;
  2671. {$EXTERNALSYM RBS_REGISTERDROP}
  2672. RBS_REGISTERDROP = $00001000;
  2673. {$EXTERNALSYM RBS_AUTOSIZE}
  2674. RBS_AUTOSIZE = $00002000;
  2675. {$EXTERNALSYM RBS_VERTICALGRIPPER}
  2676. RBS_VERTICALGRIPPER = $00004000; // this always has the vertical gripper (default for horizontal mode)
  2677. {$EXTERNALSYM RBS_DBLCLKTOGGLE}
  2678. RBS_DBLCLKTOGGLE = $00008000;
  2679. {$EXTERNALSYM RBBS_BREAK}
  2680. RBBS_BREAK = $00000001; // break to new line
  2681. {$EXTERNALSYM RBBS_FIXEDSIZE}
  2682. RBBS_FIXEDSIZE = $00000002; // band can't be sized
  2683. {$EXTERNALSYM RBBS_CHILDEDGE}
  2684. RBBS_CHILDEDGE = $00000004; // edge around top and bottom of child window
  2685. {$EXTERNALSYM RBBS_HIDDEN}
  2686. RBBS_HIDDEN = $00000008; // don't show
  2687. {$EXTERNALSYM RBBS_NOVERT}
  2688. RBBS_NOVERT = $00000010; // don't show when vertical
  2689. {$EXTERNALSYM RBBS_FIXEDBMP}
  2690. RBBS_FIXEDBMP = $00000020; // bitmap doesn't move during band resize
  2691. {$EXTERNALSYM RBBS_VARIABLEHEIGHT}
  2692. RBBS_VARIABLEHEIGHT = $00000040; // allow autosizing of this child vertically
  2693. {$EXTERNALSYM RBBS_GRIPPERALWAYS}
  2694. RBBS_GRIPPERALWAYS = $00000080; // always show the gripper
  2695. {$EXTERNALSYM RBBS_NOGRIPPER}
  2696. RBBS_NOGRIPPER = $00000100; // never show the gripper
  2697. { For IE >= 0x0500 }
  2698. {$EXTERNALSYM RBBS_USECHEVRON}
  2699. RBBS_USECHEVRON = $00000200; { display drop-down button for this band if it's sized smaller than ideal width }
  2700. { For IE >= 0x0501 }
  2701. {$EXTERNALSYM RBBS_HIDETITLE}
  2702. RBBS_HIDETITLE = $00000400; { keep band title hidden }
  2703. {$EXTERNALSYM RBBS_TOPALIGN}
  2704. RBBS_TOPALIGN = $00000800; { keep band in top row }
  2705. {$EXTERNALSYM RBBIM_STYLE}
  2706. RBBIM_STYLE = $00000001;
  2707. {$EXTERNALSYM RBBIM_COLORS}
  2708. RBBIM_COLORS = $00000002;
  2709. {$EXTERNALSYM RBBIM_TEXT}
  2710. RBBIM_TEXT = $00000004;
  2711. {$EXTERNALSYM RBBIM_IMAGE}
  2712. RBBIM_IMAGE = $00000008;
  2713. {$EXTERNALSYM RBBIM_CHILD}
  2714. RBBIM_CHILD = $00000010;
  2715. {$EXTERNALSYM RBBIM_CHILDSIZE}
  2716. RBBIM_CHILDSIZE = $00000020;
  2717. {$EXTERNALSYM RBBIM_SIZE}
  2718. RBBIM_SIZE = $00000040;
  2719. {$EXTERNALSYM RBBIM_BACKGROUND}
  2720. RBBIM_BACKGROUND = $00000080;
  2721. {$EXTERNALSYM RBBIM_ID}
  2722. RBBIM_ID = $00000100;
  2723. {$EXTERNALSYM RBBIM_IDEALSIZE}
  2724. RBBIM_IDEALSIZE = $00000200;
  2725. {$EXTERNALSYM RBBIM_LPARAM}
  2726. RBBIM_LPARAM = $00000400;
  2727. {$EXTERNALSYM RBBIM_HEADERSIZE}
  2728. RBBIM_HEADERSIZE = $00000800; // control the size of the header
  2729. { For Windows >= Vista }
  2730. {$EXTERNALSYM RBBIM_CHEVRONLOCATION}
  2731. RBBIM_CHEVRONLOCATION = $00001000;
  2732. {$EXTERNALSYM RBBIM_CHEVRONSTATE}
  2733. RBBIM_CHEVRONSTATE = $00002000;
  2734. type
  2735. {$EXTERNALSYM tagREBARBANDINFOA}
  2736. tagREBARBANDINFOA = record
  2737. cbSize: UINT;
  2738. fMask: UINT;
  2739. fStyle: UINT;
  2740. clrFore: TColorRef;
  2741. clrBack: TColorRef;
  2742. lpText: PAnsiChar;
  2743. cch: UINT;
  2744. iImage: Integer;
  2745. hwndChild: HWnd;
  2746. cxMinChild: UINT;
  2747. cyMinChild: UINT;
  2748. cx: UINT;
  2749. hbmBack: HBitmap;
  2750. wID: UINT;
  2751. cyChild: UINT;
  2752. cyMaxChild: UINT;
  2753. cyIntegral: UINT;
  2754. cxIdeal: UINT;
  2755. lParam: LPARAM;
  2756. cxHeader: UINT;
  2757. rcChevronLocation: TRect; // the rect is in client co-ord wrt hwndChild
  2758. uChevronState: UINT; // STATE_SYSTEM_*
  2759. end;
  2760. {$EXTERNALSYM tagREBARBANDINFOW}
  2761. tagREBARBANDINFOW = record
  2762. cbSize: UINT;
  2763. fMask: UINT;
  2764. fStyle: UINT;
  2765. clrFore: TColorRef;
  2766. clrBack: TColorRef;
  2767. lpText: PWideChar;
  2768. cch: UINT;
  2769. iImage: Integer;
  2770. hwndChild: HWnd;
  2771. cxMinChild: UINT;
  2772. cyMinChild: UINT;
  2773. cx: UINT;
  2774. hbmBack: HBitmap;
  2775. wID: UINT;
  2776. cyChild: UINT;
  2777. cyMaxChild: UINT;
  2778. cyIntegral: UINT;
  2779. cxIdeal: UINT;
  2780. lParam: LPARAM;
  2781. cxHeader: UINT;
  2782. rcChevronLocation: TRect; // the rect is in client co-ord wrt hwndChild
  2783. uChevronState: UINT; // STATE_SYSTEM_*
  2784. end;
  2785. {$EXTERNALSYM tagREBARBANDINFO}
  2786. tagREBARBANDINFO = tagREBARBANDINFOW;
  2787. PReBarBandInfoA = ^TReBarBandInfoA;
  2788. PReBarBandInfoW = ^TReBarBandInfoW;
  2789. PReBarBandInfo = PReBarBandInfoW;
  2790. TReBarBandInfoA = tagREBARBANDINFOA;
  2791. TReBarBandInfoW = tagREBARBANDINFOW;
  2792. TReBarBandInfo = TReBarBandInfoW;
  2793. const
  2794. {$EXTERNALSYM RB_INSERTBANDA}
  2795. RB_INSERTBANDA = WM_USER + 1;
  2796. {$EXTERNALSYM RB_DELETEBAND}
  2797. RB_DELETEBAND = WM_USER + 2;
  2798. {$EXTERNALSYM RB_GETBARINFO}
  2799. RB_GETBARINFO = WM_USER + 3;
  2800. {$EXTERNALSYM RB_SETBARINFO}
  2801. RB_SETBARINFO = WM_USER + 4;
  2802. RB_GETBANDINFO_PRE_IE4 = WM_USER + 5;
  2803. {$EXTERNALSYM RB_SETBANDINFOA}
  2804. RB_SETBANDINFOA = WM_USER + 6;
  2805. {$EXTERNALSYM RB_SETPARENT}
  2806. RB_SETPARENT = WM_USER + 7;
  2807. {$EXTERNALSYM RB_HITTEST}
  2808. RB_HITTEST = WM_USER + 8;
  2809. {$EXTERNALSYM RB_GETRECT}
  2810. RB_GETRECT = WM_USER + 9;
  2811. {$EXTERNALSYM RB_INSERTBANDW}
  2812. RB_INSERTBANDW = WM_USER + 10;
  2813. {$EXTERNALSYM RB_SETBANDINFOW}
  2814. RB_SETBANDINFOW = WM_USER + 11;
  2815. {$EXTERNALSYM RB_GETBANDCOUNT}
  2816. RB_GETBANDCOUNT = WM_USER + 12;
  2817. {$EXTERNALSYM RB_GETROWCOUNT}
  2818. RB_GETROWCOUNT = WM_USER + 13;
  2819. {$EXTERNALSYM RB_GETROWHEIGHT}
  2820. RB_GETROWHEIGHT = WM_USER + 14;
  2821. {$EXTERNALSYM RB_IDTOINDEX}
  2822. RB_IDTOINDEX = WM_USER + 16; // wParam == id
  2823. {$EXTERNALSYM RB_GETTOOLTIPS}
  2824. RB_GETTOOLTIPS = WM_USER + 17;
  2825. {$EXTERNALSYM RB_SETTOOLTIPS}
  2826. RB_SETTOOLTIPS = WM_USER + 18;
  2827. {$EXTERNALSYM RB_SETBKCOLOR}
  2828. RB_SETBKCOLOR = WM_USER + 19; // sets the default BK color
  2829. {$EXTERNALSYM RB_GETBKCOLOR}
  2830. RB_GETBKCOLOR = WM_USER + 20; // defaults to CLR_NONE
  2831. {$EXTERNALSYM RB_SETTEXTCOLOR}
  2832. RB_SETTEXTCOLOR = WM_USER + 21;
  2833. {$EXTERNALSYM RB_GETTEXTCOLOR}
  2834. RB_GETTEXTCOLOR = WM_USER + 22; // defaults to 0x00000000
  2835. {$EXTERNALSYM RB_SIZETORECT}
  2836. RB_SIZETORECT = WM_USER + 23; // resize the rebar/break bands and such to this rect (lparam;
  2837. { For Windows >= XP }
  2838. {$EXTERNALSYM RBSTR_CHANGERECT}
  2839. RBSTR_CHANGERECT = $0001; { flags for RB_SIZETORECT }
  2840. {$EXTERNALSYM RB_SETCOLORSCHEME}
  2841. RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME; { lParam is color scheme }
  2842. {$EXTERNALSYM RB_GETCOLORSCHEME}
  2843. RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME; { fills in COLORSCHEME pointed to by lParam }
  2844. // for manual drag control
  2845. // lparam == cursor pos
  2846. // -1 means do it yourself.
  2847. // -2 means use what you had saved before
  2848. {$EXTERNALSYM RB_BEGINDRAG}
  2849. RB_BEGINDRAG = WM_USER + 24;
  2850. {$EXTERNALSYM RB_ENDDRAG}
  2851. RB_ENDDRAG = WM_USER + 25;
  2852. {$EXTERNALSYM RB_DRAGMOVE}
  2853. RB_DRAGMOVE = WM_USER + 26;
  2854. {$EXTERNALSYM RB_GETBARHEIGHT}
  2855. RB_GETBARHEIGHT = WM_USER + 27;
  2856. {$EXTERNALSYM RB_GETBANDINFOW}
  2857. RB_GETBANDINFOW = WM_USER + 28;
  2858. {$EXTERNALSYM RB_GETBANDINFOA}
  2859. RB_GETBANDINFOA = WM_USER + 29;
  2860. {$EXTERNALSYM RB_MINIMIZEBAND}
  2861. RB_MINIMIZEBAND = WM_USER + 30;
  2862. {$EXTERNALSYM RB_MAXIMIZEBAND}
  2863. RB_MAXIMIZEBAND = WM_USER + 31;
  2864. {$EXTERNALSYM RB_GETDROPTARGET}
  2865. RB_GETDROPTARGET = CCM_GETDROPTARGET;
  2866. {$EXTERNALSYM RB_GETBANDBORDERS}
  2867. RB_GETBANDBORDERS = WM_USER + 34; // returns in lparam = lprc the amount of edges added to band wparam
  2868. {$EXTERNALSYM RB_SHOWBAND}
  2869. RB_SHOWBAND = WM_USER + 35; // show/hide band
  2870. {$EXTERNALSYM RB_SETPALETTE}
  2871. RB_SETPALETTE = WM_USER + 37;
  2872. {$EXTERNALSYM RB_GETPALETTE}
  2873. RB_GETPALETTE = WM_USER + 38;
  2874. {$EXTERNALSYM RB_MOVEBAND}
  2875. RB_MOVEBAND = WM_USER + 39;
  2876. {$EXTERNALSYM RB_SETUNICODEFORMAT}
  2877. RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  2878. {$EXTERNALSYM RB_GETUNICODEFORMAT}
  2879. RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  2880. { For Windows >= XP }
  2881. {$EXTERNALSYM RB_GETBANDMARGINS}
  2882. RB_GETBANDMARGINS = WM_USER + 40;
  2883. {$EXTERNALSYM RB_SETWINDOWTHEME}
  2884. RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  2885. { For Windows >= Vista }
  2886. {$EXTERNALSYM RB_SETEXTENDEDSTYLE}
  2887. RB_SETEXTENDEDSTYLE = WM_USER + 41;
  2888. {$EXTERNALSYM RB_GETEXTENDEDSTYLE}
  2889. RB_GETEXTENDEDSTYLE = WM_USER + 42;
  2890. { For IE >= 0x0500 }
  2891. {$EXTERNALSYM RB_PUSHCHEVRON}
  2892. RB_PUSHCHEVRON = WM_USER + 43;
  2893. { For Windows >= Vista }
  2894. {$EXTERNALSYM RB_SETBANDWIDTH}
  2895. RB_SETBANDWIDTH = WM_USER + 44; { set width for docked band }
  2896. {$IFDEF UNICODE}
  2897. {$EXTERNALSYM RB_INSERTBAND}
  2898. RB_INSERTBAND = RB_INSERTBANDW;
  2899. {$EXTERNALSYM RB_SETBANDINFO}
  2900. RB_SETBANDINFO = RB_SETBANDINFOW;
  2901. {$EXTERNALSYM RB_GETBANDINFO}
  2902. RB_GETBANDINFO = RB_GETBANDINFOW;
  2903. {$ELSE}
  2904. {$EXTERNALSYM RB_INSERTBAND}
  2905. RB_INSERTBAND = RB_INSERTBANDA;
  2906. {$EXTERNALSYM RB_SETBANDINFO}
  2907. RB_SETBANDINFO = RB_SETBANDINFOA;
  2908. {$EXTERNALSYM RB_GETBANDINFO}
  2909. RB_GETBANDINFO = RB_GETBANDINFOA;
  2910. {$ENDIF}
  2911. {$EXTERNALSYM RBN_HEIGHTCHANGE}
  2912. RBN_HEIGHTCHANGE = RBN_FIRST - 0;
  2913. {$EXTERNALSYM RBN_GETOBJECT}
  2914. RBN_GETOBJECT = RBN_FIRST - 1;
  2915. {$EXTERNALSYM RBN_LAYOUTCHANGED}
  2916. RBN_LAYOUTCHANGED = RBN_FIRST - 2;
  2917. {$EXTERNALSYM RBN_AUTOSIZE}
  2918. RBN_AUTOSIZE = RBN_FIRST - 3;
  2919. {$EXTERNALSYM RBN_BEGINDRAG}
  2920. RBN_BEGINDRAG = RBN_FIRST - 4;
  2921. {$EXTERNALSYM RBN_ENDDRAG}
  2922. RBN_ENDDRAG = RBN_FIRST - 5;
  2923. {$EXTERNALSYM RBN_DELETINGBAND}
  2924. RBN_DELETINGBAND = RBN_FIRST - 6; // Uses NMREBAR
  2925. {$EXTERNALSYM RBN_DELETEDBAND}
  2926. RBN_DELETEDBAND = RBN_FIRST - 7; // Uses NMREBAR
  2927. {$EXTERNALSYM RBN_CHILDSIZE}
  2928. RBN_CHILDSIZE = RBN_FIRST - 8;
  2929. { For IE >= 0x0500 }
  2930. {$EXTERNALSYM RBN_CHEVRONPUSHED}
  2931. RBN_CHEVRONPUSHED = RBN_FIRST - 10;
  2932. { For IE >= 0x0600 }
  2933. {$EXTERNALSYM RBN_SPLITTERDRAG}
  2934. RBN_SPLITTERDRAG = RBN_FIRST - 11;
  2935. { For IE >= 0x0500 }
  2936. {$EXTERNALSYM RBN_MINMAX}
  2937. RBN_MINMAX = RBN_FIRST - 21;
  2938. { For Windows >= XP }
  2939. {$EXTERNALSYM RBN_AUTOBREAK}
  2940. RBN_AUTOBREAK = RBN_FIRST - 22;
  2941. type
  2942. {$EXTERNALSYM tagNMREBARCHILDSIZE}
  2943. tagNMREBARCHILDSIZE = record
  2944. hdr: TNMHdr;
  2945. uBand: UINT;
  2946. wID: UINT;
  2947. rcChild: TRect;
  2948. rcBand: TRect;
  2949. end;
  2950. PNMReBarChildSize = ^TNMReBarChildSize;
  2951. TNMReBarChildSize = tagNMREBARCHILDSIZE;
  2952. {$EXTERNALSYM tagNMREBAR}
  2953. tagNMREBAR = record
  2954. hdr: TNMHdr;
  2955. dwMask: DWORD; // RBNM_*
  2956. uBand: UINT;
  2957. fStyle: UINT;
  2958. wID: UINT;
  2959. lParam: LPARAM;
  2960. end;
  2961. PNMReBar = ^TNMReBar;
  2962. TNMReBar = tagNMREBAR;
  2963. const
  2964. // Mask flags for NMREBAR
  2965. {$EXTERNALSYM RBNM_ID}
  2966. RBNM_ID = $00000001;
  2967. {$EXTERNALSYM RBNM_STYLE}
  2968. RBNM_STYLE = $00000002;
  2969. {$EXTERNALSYM RBNM_LPARAM}
  2970. RBNM_LPARAM = $00000004;
  2971. type
  2972. {$EXTERNALSYM tagNMRBAUTOSIZE}
  2973. tagNMRBAUTOSIZE = record
  2974. hdr: TNMHdr;
  2975. fChanged: BOOL;
  2976. rcTarget: TRect;
  2977. rcActual: TRect;
  2978. end;
  2979. PNMRBAutoSize = ^TNMRBAutoSize;
  2980. TNMRBAutoSize = tagNMRBAUTOSIZE;
  2981. { For IE >= 0x0500 }
  2982. {$EXTERNALSYM tagNMREBARCHEVRON}
  2983. tagNMREBARCHEVRON = record
  2984. hdr: NMHDR;
  2985. uBand: UINT;
  2986. wID: UINT;
  2987. lParam: LPARAM;
  2988. rc: TRect;
  2989. lParamNM: LPARAM;
  2990. end;
  2991. PNMReBarChevron = ^TNMReBarChevron;
  2992. TNMReBarChevron = tagNMREBARCHEVRON;
  2993. { For IE >= 0x0600 }
  2994. { $EXTERNALSYM tagNMREBARSPLITTER}
  2995. tagNMREBARSPLITTER = record
  2996. hdr: NMHDR;
  2997. rcSizing: TRect;
  2998. end;
  2999. PNMReBarSplitter = ^TNMReBarSplitter;
  3000. TNMReBarSplitter = tagNMREBARSPLITTER;
  3001. const
  3002. { For Windows >= XP }
  3003. {$EXTERNALSYM RBAB_AUTOSIZE}
  3004. RBAB_AUTOSIZE = $0001; { These are not flags and are all mutually exclusive }
  3005. {$EXTERNALSYM RBAB_ADDBAND}
  3006. RBAB_ADDBAND = $0002;
  3007. type
  3008. { $EXTERNALSYM tagNMREBARAUTOBREAK}
  3009. tagNMREBARAUTOBREAK = record
  3010. hdr: NMHDR;
  3011. uBand: UINT;
  3012. wID: UINT;
  3013. lParam: LPARAM;
  3014. uMsg: UINT;
  3015. fStyleCurrent: UINT;
  3016. fAutoBreak: BOOL;
  3017. end;
  3018. PNMReBarAutoBreak = ^TNMReBarAutoBreak;
  3019. TNMReBarAutoBreak = tagNMREBARAUTOBREAK;
  3020. const
  3021. {$EXTERNALSYM RBHT_NOWHERE}
  3022. RBHT_NOWHERE = $0001;
  3023. {$EXTERNALSYM RBHT_CAPTION}
  3024. RBHT_CAPTION = $0002;
  3025. {$EXTERNALSYM RBHT_CLIENT}
  3026. RBHT_CLIENT = $0003;
  3027. {$EXTERNALSYM RBHT_GRABBER}
  3028. RBHT_GRABBER = $0004;
  3029. { For IE >= 0x0500 }
  3030. {$EXTERNALSYM RBHT_CHEVRON}
  3031. RBHT_CHEVRON = $0008;
  3032. { For IE >= 0x0600 }
  3033. {$EXTERNALSYM RBHT_SPLITTER}
  3034. RBHT_SPLITTER = $0010;
  3035. type
  3036. {$EXTERNALSYM _RB_HITTESTINFO}
  3037. _RB_HITTESTINFO = record
  3038. pt: TPoint;
  3039. flags: UINT;
  3040. iBand: Integer;
  3041. end;
  3042. PRBHitTestInfo = ^TRBHitTestInfo;
  3043. TRBHitTestInfo = _RB_HITTESTINFO;
  3044. { ====== TOOLTIPS CONTROL ========================== }
  3045. const
  3046. {$EXTERNALSYM TOOLTIPS_CLASS}
  3047. TOOLTIPS_CLASS = 'tooltips_class32';
  3048. type
  3049. PToolInfoA = ^TToolInfoA;
  3050. PToolInfoW = ^TToolInfoW;
  3051. PToolInfo = PToolInfoW;
  3052. {$EXTERNALSYM tagTOOLINFOA}
  3053. tagTOOLINFOA = record
  3054. cbSize: UINT;
  3055. uFlags: UINT;
  3056. hwnd: HWND;
  3057. uId: UIntPtr;
  3058. Rect: TRect;
  3059. hInst: HINST;
  3060. lpszText: PAnsiChar;
  3061. lParam: LPARAM;
  3062. lpReserved: Pointer;
  3063. end;
  3064. {$EXTERNALSYM tagTOOLINFOW}
  3065. tagTOOLINFOW = record
  3066. cbSize: UINT;
  3067. uFlags: UINT;
  3068. hwnd: HWND;
  3069. uId: UIntPtr;
  3070. Rect: TRect;
  3071. hInst: HINST;
  3072. lpszText: PWideChar;
  3073. lParam: LPARAM;
  3074. lpReserved: Pointer;
  3075. end;
  3076. {$EXTERNALSYM tagTOOLINFO}
  3077. tagTOOLINFO = tagTOOLINFOW;
  3078. TToolInfoA = tagTOOLINFOA;
  3079. TToolInfoW = tagTOOLINFOW;
  3080. TToolInfo = TToolInfoW;
  3081. {$EXTERNALSYM TOOLINFOA}
  3082. TOOLINFOA = tagTOOLINFOA;
  3083. {$EXTERNALSYM TOOLINFOW}
  3084. TOOLINFOW = tagTOOLINFOW;
  3085. {$EXTERNALSYM TOOLINFO}
  3086. TOOLINFO = TOOLINFOW;
  3087. const
  3088. {$EXTERNALSYM TTS_ALWAYSTIP}
  3089. TTS_ALWAYSTIP = $01;
  3090. {$EXTERNALSYM TTS_NOPREFIX}
  3091. TTS_NOPREFIX = $02;
  3092. { For IE >= 0x0500 }
  3093. {$EXTERNALSYM TTS_NOANIMATE}
  3094. TTS_NOANIMATE = $10;
  3095. {$EXTERNALSYM TTS_NOFADE}
  3096. TTS_NOFADE = $20;
  3097. {$EXTERNALSYM TTS_BALLOON}
  3098. TTS_BALLOON = $40;
  3099. {$EXTERNALSYM TTS_CLOSE}
  3100. TTS_CLOSE = $80;
  3101. { For Windows >= Vista }
  3102. {$EXTERNALSYM TTS_USEVISUALSTYLE}
  3103. TTS_USEVISUALSTYLE = $100; // Use themed hyperlinks
  3104. {$EXTERNALSYM TTF_IDISHWND}
  3105. TTF_IDISHWND = $0001;
  3106. // Use this to center around trackpoint in trackmode
  3107. // -OR- to center around tool in normal mode.
  3108. // Use TTF_ABSOLUTE to place the tip exactly at the track coords when
  3109. // in tracking mode. TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
  3110. // to center the tip absolutely about the track point.
  3111. {$EXTERNALSYM TTF_CENTERTIP}
  3112. TTF_CENTERTIP = $0002;
  3113. {$EXTERNALSYM TTF_RTLREADING}
  3114. TTF_RTLREADING = $0004;
  3115. {$EXTERNALSYM TTF_SUBCLASS}
  3116. TTF_SUBCLASS = $0010;
  3117. {$EXTERNALSYM TTF_TRACK}
  3118. TTF_TRACK = $0020;
  3119. {$EXTERNALSYM TTF_ABSOLUTE}
  3120. TTF_ABSOLUTE = $0080;
  3121. {$EXTERNALSYM TTF_TRANSPARENT}
  3122. TTF_TRANSPARENT = $0100;
  3123. {$EXTERNALSYM TTF_PARSELINKS}
  3124. TTF_PARSELINKS = $1000; // For IE >= 0x0501
  3125. {$EXTERNALSYM TTF_DI_SETITEM}
  3126. TTF_DI_SETITEM = $8000; // valid only on the TTN_NEEDTEXT callback
  3127. {$EXTERNALSYM TTDT_AUTOMATIC}
  3128. TTDT_AUTOMATIC = 0;
  3129. {$EXTERNALSYM TTDT_RESHOW}
  3130. TTDT_RESHOW = 1;
  3131. {$EXTERNALSYM TTDT_AUTOPOP}
  3132. TTDT_AUTOPOP = 2;
  3133. {$EXTERNALSYM TTDT_INITIAL}
  3134. TTDT_INITIAL = 3;
  3135. // ToolTip Icons (Set with TTM_SETTITLE)
  3136. {$EXTERNALSYM TTI_NONE}
  3137. TTI_NONE = 0;
  3138. {$EXTERNALSYM TTI_INFO}
  3139. TTI_INFO = 1;
  3140. {$EXTERNALSYM TTI_WARNING}
  3141. TTI_WARNING = 2;
  3142. {$EXTERNALSYM TTI_ERROR}
  3143. TTI_ERROR = 3;
  3144. { For Windows >= Vista }
  3145. {$EXTERNALSYM TTI_INFO_LARGE}
  3146. TTI_INFO_LARGE = 4;
  3147. {$EXTERNALSYM TTI_WARNING_LARGE}
  3148. TTI_WARNING_LARGE = 5;
  3149. {$EXTERNALSYM TTI_ERROR_LARGE}
  3150. TTI_ERROR_LARGE = 6;
  3151. // Tool Tip Messages
  3152. {$EXTERNALSYM TTM_ACTIVATE}
  3153. TTM_ACTIVATE = WM_USER + 1;
  3154. {$EXTERNALSYM TTM_SETDELAYTIME}
  3155. TTM_SETDELAYTIME = WM_USER + 3;
  3156. {$EXTERNALSYM TTM_ADDTOOLA}
  3157. TTM_ADDTOOLA = WM_USER + 4;
  3158. {$EXTERNALSYM TTM_DELTOOLA}
  3159. TTM_DELTOOLA = WM_USER + 5;
  3160. {$EXTERNALSYM TTM_NEWTOOLRECTA}
  3161. TTM_NEWTOOLRECTA = WM_USER + 6;
  3162. {$EXTERNALSYM TTM_GETTOOLINFOA}
  3163. TTM_GETTOOLINFOA = WM_USER + 8;
  3164. {$EXTERNALSYM TTM_SETTOOLINFOA}
  3165. TTM_SETTOOLINFOA = WM_USER + 9;
  3166. {$EXTERNALSYM TTM_HITTESTA}
  3167. TTM_HITTESTA = WM_USER + 10;
  3168. {$EXTERNALSYM TTM_GETTEXTA}
  3169. TTM_GETTEXTA = WM_USER + 11;
  3170. {$EXTERNALSYM TTM_UPDATETIPTEXTA}
  3171. TTM_UPDATETIPTEXTA = WM_USER + 12;
  3172. {$EXTERNALSYM TTM_ENUMTOOLSA}
  3173. TTM_ENUMTOOLSA = WM_USER + 14;
  3174. {$EXTERNALSYM TTM_GETCURRENTTOOLA}
  3175. TTM_GETCURRENTTOOLA = WM_USER + 15;
  3176. {$EXTERNALSYM TTM_ADDTOOLW}
  3177. TTM_ADDTOOLW = WM_USER + 50;
  3178. {$EXTERNALSYM TTM_DELTOOLW}
  3179. TTM_DELTOOLW = WM_USER + 51;
  3180. {$EXTERNALSYM TTM_NEWTOOLRECTW}
  3181. TTM_NEWTOOLRECTW = WM_USER + 52;
  3182. {$EXTERNALSYM TTM_GETTOOLINFOW}
  3183. TTM_GETTOOLINFOW = WM_USER + 53;
  3184. {$EXTERNALSYM TTM_SETTOOLINFOW}
  3185. TTM_SETTOOLINFOW = WM_USER + 54;
  3186. {$EXTERNALSYM TTM_HITTESTW}
  3187. TTM_HITTESTW = WM_USER + 55;
  3188. {$EXTERNALSYM TTM_GETTEXTW}
  3189. TTM_GETTEXTW = WM_USER + 56;
  3190. {$EXTERNALSYM TTM_UPDATETIPTEXTW}
  3191. TTM_UPDATETIPTEXTW = WM_USER + 57;
  3192. {$EXTERNALSYM TTM_ENUMTOOLSW}
  3193. TTM_ENUMTOOLSW = WM_USER + 58;
  3194. {$EXTERNALSYM TTM_GETCURRENTTOOLW}
  3195. TTM_GETCURRENTTOOLW = WM_USER + 59;
  3196. {$EXTERNALSYM TTM_WINDOWFROMPOINT}
  3197. TTM_WINDOWFROMPOINT = WM_USER + 16;
  3198. {$EXTERNALSYM TTM_TRACKACTIVATE}
  3199. TTM_TRACKACTIVATE = WM_USER + 17; // wParam = TRUE/FALSE start end lparam = LPTOOLINFO
  3200. {$EXTERNALSYM TTM_TRACKPOSITION}
  3201. TTM_TRACKPOSITION = WM_USER + 18; // lParam = dwPos
  3202. {$EXTERNALSYM TTM_SETTIPBKCOLOR}
  3203. TTM_SETTIPBKCOLOR = WM_USER + 19;
  3204. {$EXTERNALSYM TTM_SETTIPTEXTCOLOR}
  3205. TTM_SETTIPTEXTCOLOR = WM_USER + 20;
  3206. {$EXTERNALSYM TTM_GETDELAYTIME}
  3207. TTM_GETDELAYTIME = WM_USER + 21;
  3208. {$EXTERNALSYM TTM_GETTIPBKCOLOR}
  3209. TTM_GETTIPBKCOLOR = WM_USER + 22;
  3210. {$EXTERNALSYM TTM_GETTIPTEXTCOLOR}
  3211. TTM_GETTIPTEXTCOLOR = WM_USER + 23;
  3212. {$EXTERNALSYM TTM_SETMAXTIPWIDTH}
  3213. TTM_SETMAXTIPWIDTH = WM_USER + 24;
  3214. {$EXTERNALSYM TTM_GETMAXTIPWIDTH}
  3215. TTM_GETMAXTIPWIDTH = WM_USER + 25;
  3216. {$EXTERNALSYM TTM_SETMARGIN}
  3217. TTM_SETMARGIN = WM_USER + 26; // lParam = lprc
  3218. {$EXTERNALSYM TTM_GETMARGIN}
  3219. TTM_GETMARGIN = WM_USER + 27; // lParam = lprc
  3220. {$EXTERNALSYM TTM_POP}
  3221. TTM_POP = WM_USER + 28;
  3222. {$EXTERNALSYM TTM_UPDATE}
  3223. TTM_UPDATE = WM_USER + 29;
  3224. { For IE >= 0X0500 }
  3225. {$EXTERNALSYM TTM_GETBUBBLESIZE}
  3226. TTM_GETBUBBLESIZE = WM_USER + 30;
  3227. {$EXTERNALSYM TTM_ADJUSTRECT}
  3228. TTM_ADJUSTRECT = WM_USER + 31;
  3229. {$EXTERNALSYM TTM_SETTITLEA}
  3230. TTM_SETTITLEA = WM_USER + 32; { wParam = TTI_*, lParam = char* szTitle }
  3231. {$EXTERNALSYM TTM_SETTITLEW}
  3232. TTM_SETTITLEW = WM_USER + 33; { wParam = TTI_*, lParam = wchar* szTitle }
  3233. { For Windows >= XP }
  3234. {$EXTERNALSYM TTM_POPUP}
  3235. TTM_POPUP = WM_USER + 34;
  3236. {$EXTERNALSYM TTM_GETTITLE}
  3237. TTM_GETTITLE = WM_USER + 35; { wParam = 0, lParam = TTGETTITLE* }
  3238. type
  3239. { For Windows >= XP }
  3240. { $EXTERNALSYM _TTGETTITLE}
  3241. _TTGETTITLE = record
  3242. dwSize: DWORD;
  3243. uTitleBitmap: UINT;
  3244. cch: UINT;
  3245. pszTitle: PWCHAR;
  3246. end;
  3247. PTTGetTitle = ^TTTGetTitle;
  3248. TTTGetTitle = _TTGETTITLE;
  3249. const
  3250. {$IFDEF UNICODE}
  3251. {$EXTERNALSYM TTM_ADDTOOL}
  3252. TTM_ADDTOOL = TTM_ADDTOOLW;
  3253. {$EXTERNALSYM TTM_DELTOOL}
  3254. TTM_DELTOOL = TTM_DELTOOLW;
  3255. {$EXTERNALSYM TTM_NEWTOOLRECT}
  3256. TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
  3257. {$EXTERNALSYM TTM_GETTOOLINFO}
  3258. TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
  3259. {$EXTERNALSYM TTM_SETTOOLINFO}
  3260. TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
  3261. {$EXTERNALSYM TTM_HITTEST}
  3262. TTM_HITTEST = TTM_HITTESTW;
  3263. {$EXTERNALSYM TTM_GETTEXT}
  3264. TTM_GETTEXT = TTM_GETTEXTW;
  3265. {$EXTERNALSYM TTM_UPDATETIPTEXT}
  3266. TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
  3267. {$EXTERNALSYM TTM_ENUMTOOLS}
  3268. TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
  3269. {$EXTERNALSYM TTM_GETCURRENTTOOL}
  3270. TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
  3271. {$ELSE}
  3272. {$EXTERNALSYM TTM_ADDTOOL}
  3273. TTM_ADDTOOL = TTM_ADDTOOLA;
  3274. {$EXTERNALSYM TTM_DELTOOL}
  3275. TTM_DELTOOL = TTM_DELTOOLA;
  3276. {$EXTERNALSYM TTM_NEWTOOLRECT}
  3277. TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
  3278. {$EXTERNALSYM TTM_GETTOOLINFO}
  3279. TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
  3280. {$EXTERNALSYM TTM_SETTOOLINFO}
  3281. TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
  3282. {$EXTERNALSYM TTM_HITTEST}
  3283. TTM_HITTEST = TTM_HITTESTA;
  3284. {$EXTERNALSYM TTM_GETTEXT}
  3285. TTM_GETTEXT = TTM_GETTEXTA;
  3286. {$EXTERNALSYM TTM_UPDATETIPTEXT}
  3287. TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
  3288. {$EXTERNALSYM TTM_ENUMTOOLS}
  3289. TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
  3290. {$EXTERNALSYM TTM_GETCURRENTTOOL}
  3291. TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
  3292. {$ENDIF}
  3293. { For IE >= 0X0500 }
  3294. {$EXTERNALSYM TTM_SETTITLE}
  3295. TTM_SETTITLE = TTM_SETTITLEW;
  3296. { For Windows >= XP }
  3297. {$EXTERNALSYM TTM_SETWINDOWTHEME}
  3298. TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  3299. {$EXTERNALSYM TTM_RELAYEVENT}
  3300. TTM_RELAYEVENT = WM_USER + 7; // Win7: wParam = GetMessageExtraInfo() when relaying WM_MOUSEMOVE
  3301. {$EXTERNALSYM TTM_GETTOOLCOUNT}
  3302. TTM_GETTOOLCOUNT = WM_USER +13;
  3303. type
  3304. PTTHitTestInfoA = ^TTTHitTestInfoA;
  3305. PTTHitTestInfoW = ^TTTHitTestInfoW;
  3306. PTTHitTestInfo = PTTHitTestInfoW;
  3307. {$EXTERNALSYM _TT_HITTESTINFOA}
  3308. _TT_HITTESTINFOA = record
  3309. hwnd: HWND;
  3310. pt: TPoint;
  3311. ti: TToolInfoA;
  3312. end;
  3313. {$EXTERNALSYM _TT_HITTESTINFOW}
  3314. _TT_HITTESTINFOW = record
  3315. hwnd: HWND;
  3316. pt: TPoint;
  3317. ti: TToolInfoW;
  3318. end;
  3319. {$EXTERNALSYM _TT_HITTESTINFO}
  3320. _TT_HITTESTINFO = _TT_HITTESTINFOW;
  3321. TTTHitTestInfoA = _TT_HITTESTINFOA;
  3322. TTTHitTestInfoW = _TT_HITTESTINFOW;
  3323. TTTHitTestInfo = TTTHitTestInfoW;
  3324. {$EXTERNALSYM TTHITTESTINFOA}
  3325. TTHITTESTINFOA = _TT_HITTESTINFOA;
  3326. {$EXTERNALSYM TTHITTESTINFOW}
  3327. TTHITTESTINFOW = _TT_HITTESTINFOW;
  3328. {$EXTERNALSYM TTHITTESTINFO}
  3329. TTHITTESTINFO = TTHITTESTINFOW;
  3330. const
  3331. {$EXTERNALSYM TTN_GETDISPINFOA}
  3332. TTN_GETDISPINFOA = TTN_FIRST - 0;
  3333. {$EXTERNALSYM TTN_NEEDTEXTA}
  3334. TTN_NEEDTEXTA = TTN_GETDISPINFOA;
  3335. {$EXTERNALSYM TTN_GETDISPINFOW}
  3336. TTN_GETDISPINFOW = TTN_FIRST - 10;
  3337. {$EXTERNALSYM TTN_NEEDTEXTW}
  3338. TTN_NEEDTEXTW = TTN_GETDISPINFOW;
  3339. {$IFDEF UNICODE}
  3340. {$EXTERNALSYM TTN_GETDISPINFO}
  3341. TTN_GETDISPINFO = TTN_GETDISPINFOW;
  3342. {$EXTERNALSYM TTN_NEEDTEXT}
  3343. TTN_NEEDTEXT = TTN_NEEDTEXTW;
  3344. {$ELSE}
  3345. {$EXTERNALSYM TTN_GETDISPINFO}
  3346. TTN_GETDISPINFO = TTN_GETDISPINFOA;
  3347. {$EXTERNALSYM TTN_NEEDTEXT}
  3348. TTN_NEEDTEXT = TTN_NEEDTEXTA;
  3349. {$ENDIF}
  3350. {$EXTERNALSYM TTN_SHOW}
  3351. TTN_SHOW = TTN_FIRST - 1;
  3352. {$EXTERNALSYM TTN_POP}
  3353. TTN_POP = TTN_FIRST - 2;
  3354. type
  3355. tagNMTTDISPINFOA = record
  3356. hdr: TNMHdr;
  3357. lpszText: PAnsiChar;
  3358. szText: array[0..79] of AnsiChar;
  3359. hinst: HINST;
  3360. uFlags: UINT;
  3361. lParam: LPARAM;
  3362. end;
  3363. // {$EXTERNALSYM tagNMTTDISPINFOA}
  3364. tagNMTTDISPINFOW = record
  3365. hdr: TNMHdr;
  3366. lpszText: PWideChar;
  3367. szText: array[0..79] of WideChar;
  3368. hinst: HINST;
  3369. uFlags: UINT;
  3370. lParam: LPARAM;
  3371. end;
  3372. // {$EXTERNALSYM tagNMTTDISPINFOW}
  3373. tagNMTTDISPINFO = tagNMTTDISPINFOW;
  3374. PNMTTDispInfoA = ^TNMTTDispInfoA;
  3375. PNMTTDispInfoW = ^TNMTTDispInfoW;
  3376. PNMTTDispInfo = PNMTTDispInfoW;
  3377. TNMTTDispInfoA = tagNMTTDISPINFOA;
  3378. TNMTTDispInfoW = tagNMTTDISPINFOW;
  3379. TNMTTDispInfo = TNMTTDispInfoW;
  3380. {$EXTERNALSYM tagTOOLTIPTEXTA}
  3381. tagTOOLTIPTEXTA = tagNMTTDISPINFOA;
  3382. {$EXTERNALSYM tagTOOLTIPTEXTW}
  3383. tagTOOLTIPTEXTW = tagNMTTDISPINFOW;
  3384. {$EXTERNALSYM tagTOOLTIPTEXT}
  3385. tagTOOLTIPTEXT = tagTOOLTIPTEXTW;
  3386. {$EXTERNALSYM TOOLTIPTEXTA}
  3387. TOOLTIPTEXTA = tagNMTTDISPINFOA;
  3388. {$EXTERNALSYM TOOLTIPTEXTW}
  3389. TOOLTIPTEXTW = tagNMTTDISPINFOW;
  3390. {$EXTERNALSYM TOOLTIPTEXT}
  3391. TOOLTIPTEXT = TOOLTIPTEXTW;
  3392. TToolTipTextA = tagNMTTDISPINFOA;
  3393. TToolTipTextW = tagNMTTDISPINFOW;
  3394. TToolTipText = TToolTipTextW;
  3395. PToolTipTextA = ^TToolTipTextA;
  3396. PToolTipTextW = ^TToolTipTextW;
  3397. PToolTipText = PToolTipTextW;
  3398. { ====== STATUS BAR CONTROL ================= }
  3399. const
  3400. {$EXTERNALSYM SBARS_SIZEGRIP}
  3401. SBARS_SIZEGRIP = $0100;
  3402. {$EXTERNALSYM DrawStatusText}
  3403. procedure DrawStatusText(hDC: HDC; lprc: PRect; pzsText: PWideChar;
  3404. uFlags: UINT); stdcall;
  3405. {$EXTERNALSYM DrawStatusTextA}
  3406. procedure DrawStatusTextA(hDC: HDC; lprc: PRect; pzsText: PAnsiChar;
  3407. uFlags: UINT); stdcall;
  3408. {$EXTERNALSYM DrawStatusTextW}
  3409. procedure DrawStatusTextW(hDC: HDC; lprc: PRect; pzsText: PWideChar;
  3410. uFlags: UINT); stdcall;
  3411. {$EXTERNALSYM CreateStatusWindow}
  3412. function CreateStatusWindow(Style: Longint; lpszText: PWideChar;
  3413. hwndParent: HWND; wID: UINT): HWND; stdcall;
  3414. {$EXTERNALSYM CreateStatusWindowA}
  3415. function CreateStatusWindowA(Style: Longint; lpszText: PAnsiChar;
  3416. hwndParent: HWND; wID: UINT): HWND; stdcall;
  3417. {$EXTERNALSYM CreateStatusWindowW}
  3418. function CreateStatusWindowW(Style: Longint; lpszText: PWideChar;
  3419. hwndParent: HWND; wID: UINT): HWND; stdcall;
  3420. const
  3421. {$EXTERNALSYM STATUSCLASSNAME}
  3422. STATUSCLASSNAME = 'msctls_statusbar32';
  3423. const
  3424. {$EXTERNALSYM SB_SETTEXTA}
  3425. SB_SETTEXTA = WM_USER+1;
  3426. {$EXTERNALSYM SB_GETTEXTA}
  3427. SB_GETTEXTA = WM_USER+2;
  3428. {$EXTERNALSYM SB_GETTEXTLENGTHA}
  3429. SB_GETTEXTLENGTHA = WM_USER+3;
  3430. {$EXTERNALSYM SB_SETTIPTEXTA}
  3431. SB_SETTIPTEXTA = WM_USER+16;
  3432. {$EXTERNALSYM SB_GETTIPTEXTA}
  3433. SB_GETTIPTEXTA = WM_USER+18;
  3434. {$EXTERNALSYM SB_SETTEXTW}
  3435. SB_SETTEXTW = WM_USER+11;
  3436. {$EXTERNALSYM SB_GETTEXTW}
  3437. SB_GETTEXTW = WM_USER+13;
  3438. {$EXTERNALSYM SB_GETTEXTLENGTHW}
  3439. SB_GETTEXTLENGTHW = WM_USER+12;
  3440. {$EXTERNALSYM SB_SETTIPTEXTW}
  3441. SB_SETTIPTEXTW = WM_USER+17;
  3442. {$EXTERNALSYM SB_GETTIPTEXTW}
  3443. SB_GETTIPTEXTW = WM_USER+19;
  3444. {$IFDEF UNICODE}
  3445. {$EXTERNALSYM SB_SETTEXT}
  3446. SB_SETTEXT = SB_SETTEXTW;
  3447. {$EXTERNALSYM SB_GETTEXT}
  3448. SB_GETTEXT = SB_GETTEXTW;
  3449. {$EXTERNALSYM SB_GETTEXTLENGTH}
  3450. SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
  3451. {$EXTERNALSYM SB_SETTIPTEXT}
  3452. SB_SETTIPTEXT = SB_SETTIPTEXTW;
  3453. {$EXTERNALSYM SB_GETTIPTEXT}
  3454. SB_GETTIPTEXT = SB_GETTIPTEXTW;
  3455. {$ELSE}
  3456. {$EXTERNALSYM SB_SETTEXT}
  3457. SB_SETTEXT = SB_SETTEXTA;
  3458. {$EXTERNALSYM SB_GETTEXT}
  3459. SB_GETTEXT = SB_GETTEXTA;
  3460. {$EXTERNALSYM SB_GETTEXTLENGTH}
  3461. SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
  3462. {$EXTERNALSYM SB_SETTIPTEXT}
  3463. SB_SETTIPTEXT = SB_SETTIPTEXTA;
  3464. {$EXTERNALSYM SB_GETTIPTEXT}
  3465. SB_GETTIPTEXT = SB_GETTIPTEXTA;
  3466. {$ENDIF}
  3467. {$EXTERNALSYM SB_SETPARTS}
  3468. SB_SETPARTS = WM_USER+4;
  3469. {$EXTERNALSYM SB_GETPARTS}
  3470. SB_GETPARTS = WM_USER+6;
  3471. {$EXTERNALSYM SB_GETBORDERS}
  3472. SB_GETBORDERS = WM_USER+7;
  3473. {$EXTERNALSYM SB_SETMINHEIGHT}
  3474. SB_SETMINHEIGHT = WM_USER+8;
  3475. {$EXTERNALSYM SB_SIMPLE}
  3476. SB_SIMPLE = WM_USER+9;
  3477. {$EXTERNALSYM SB_GETRECT}
  3478. SB_GETRECT = WM_USER + 10;
  3479. {$EXTERNALSYM SB_ISSIMPLE}
  3480. SB_ISSIMPLE = WM_USER+14;
  3481. {$EXTERNALSYM SB_SETICON}
  3482. SB_SETICON = WM_USER+15;
  3483. {$EXTERNALSYM SB_GETICON}
  3484. SB_GETICON = WM_USER+20;
  3485. {$EXTERNALSYM SB_SETUNICODEFORMAT}
  3486. SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  3487. {$EXTERNALSYM SB_GETUNICODEFORMAT}
  3488. SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  3489. {$EXTERNALSYM SBT_OWNERDRAW}
  3490. SBT_OWNERDRAW = $1000;
  3491. {$EXTERNALSYM SBT_NOBORDERS}
  3492. SBT_NOBORDERS = $0100;
  3493. {$EXTERNALSYM SBT_POPOUT}
  3494. SBT_POPOUT = $0200;
  3495. {$EXTERNALSYM SBT_RTLREADING}
  3496. SBT_RTLREADING = $0400;
  3497. {$EXTERNALSYM SBT_TOOLTIPS}
  3498. SBT_TOOLTIPS = $0800;
  3499. {$EXTERNALSYM SB_SETBKCOLOR}
  3500. SB_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
  3501. // status bar notifications
  3502. {$EXTERNALSYM SBN_SIMPLEMODECHANGE}
  3503. SBN_SIMPLEMODECHANGE = SBN_FIRST - 0;
  3504. { ====== MENU HELP ========================== }
  3505. {$EXTERNALSYM MenuHelp}
  3506. procedure MenuHelp(Msg: UINT; wParam: WPARAM; lParam: LPARAM;
  3507. hMainMenu: HMENU; hInst: THandle; hwndStatus: HWND; lpwIDs: PUINT); stdcall;
  3508. {$EXTERNALSYM ShowHideMenuCtl}
  3509. function ShowHideMenuCtl(hWnd: HWND; uFlags: UIntPtr; lpInfo: PINT): Bool; stdcall;
  3510. {$EXTERNALSYM GetEffectiveClientRect}
  3511. procedure GetEffectiveClientRect(hWnd: HWND; lprc: PRect; lpInfo: PINT); stdcall;
  3512. const
  3513. {$EXTERNALSYM MINSYSCOMMAND}
  3514. MINSYSCOMMAND = SC_SIZE;
  3515. { ====== TRACKBAR CONTROL =================== }
  3516. {$EXTERNALSYM TRACKBAR_CLASS}
  3517. TRACKBAR_CLASS = 'msctls_trackbar32';
  3518. const
  3519. {$EXTERNALSYM TBS_AUTOTICKS}
  3520. TBS_AUTOTICKS = $0001;
  3521. {$EXTERNALSYM TBS_VERT}
  3522. TBS_VERT = $0002;
  3523. {$EXTERNALSYM TBS_HORZ}
  3524. TBS_HORZ = $0000;
  3525. {$EXTERNALSYM TBS_TOP}
  3526. TBS_TOP = $0004;
  3527. {$EXTERNALSYM TBS_BOTTOM}
  3528. TBS_BOTTOM = $0000;
  3529. {$EXTERNALSYM TBS_LEFT}
  3530. TBS_LEFT = $0004;
  3531. {$EXTERNALSYM TBS_RIGHT}
  3532. TBS_RIGHT = $0000;
  3533. {$EXTERNALSYM TBS_BOTH}
  3534. TBS_BOTH = $0008;
  3535. {$EXTERNALSYM TBS_NOTICKS}
  3536. TBS_NOTICKS = $0010;
  3537. {$EXTERNALSYM TBS_ENABLESELRANGE}
  3538. TBS_ENABLESELRANGE = $0020;
  3539. {$EXTERNALSYM TBS_FIXEDLENGTH}
  3540. TBS_FIXEDLENGTH = $0040;
  3541. {$EXTERNALSYM TBS_NOTHUMB}
  3542. TBS_NOTHUMB = $0080;
  3543. {$EXTERNALSYM TBS_TOOLTIPS}
  3544. TBS_TOOLTIPS = $0100;
  3545. { For IE >= 0x0500 }
  3546. {$EXTERNALSYM TBS_REVERSED}
  3547. TBS_REVERSED = $0200; { Accessibility hint: the smaller number (usually the min value) means "high" and the larger number (usually the max value) means "low" }
  3548. { For IE >= 0x0501 }
  3549. {$EXTERNALSYM TBS_DOWNISLEFT}
  3550. TBS_DOWNISLEFT = $0400; { Down=Left and Up=Right (default is Down=Right and Up=Left) }
  3551. { For IE >= 0x0600 }
  3552. {$EXTERNALSYM TBS_NOTIFYBEFOREMOVE}
  3553. TBS_NOTIFYBEFOREMOVE = $0800; { Trackbar should notify parent before repositioning the slider due to user action (enables snapping) }
  3554. { For NTDDI_VERSION >= NTDDI_VISTA }
  3555. {$EXTERNALSYM TBS_TRANSPARENTBKGND}
  3556. TBS_TRANSPARENTBKGND = $1000; { Background is painted by the parent via WM_PRINTCLIENT }
  3557. {$EXTERNALSYM TBM_GETPOS}
  3558. TBM_GETPOS = WM_USER;
  3559. {$EXTERNALSYM TBM_GETRANGEMIN}
  3560. TBM_GETRANGEMIN = WM_USER+1;
  3561. {$EXTERNALSYM TBM_GETRANGEMAX}
  3562. TBM_GETRANGEMAX = WM_USER+2;
  3563. {$EXTERNALSYM TBM_GETTIC}
  3564. TBM_GETTIC = WM_USER+3;
  3565. {$EXTERNALSYM TBM_SETTIC}
  3566. TBM_SETTIC = WM_USER+4;
  3567. {$EXTERNALSYM TBM_SETPOS}
  3568. TBM_SETPOS = WM_USER+5;
  3569. {$EXTERNALSYM TBM_SETRANGE}
  3570. TBM_SETRANGE = WM_USER+6;
  3571. {$EXTERNALSYM TBM_SETRANGEMIN}
  3572. TBM_SETRANGEMIN = WM_USER+7;
  3573. {$EXTERNALSYM TBM_SETRANGEMAX}
  3574. TBM_SETRANGEMAX = WM_USER+8;
  3575. {$EXTERNALSYM TBM_CLEARTICS}
  3576. TBM_CLEARTICS = WM_USER+9;
  3577. {$EXTERNALSYM TBM_SETSEL}
  3578. TBM_SETSEL = WM_USER+10;
  3579. {$EXTERNALSYM TBM_SETSELSTART}
  3580. TBM_SETSELSTART = WM_USER+11;
  3581. {$EXTERNALSYM TBM_SETSELEND}
  3582. TBM_SETSELEND = WM_USER+12;
  3583. {$EXTERNALSYM TBM_GETPTICS}
  3584. TBM_GETPTICS = WM_USER+14;
  3585. {$EXTERNALSYM TBM_GETTICPOS}
  3586. TBM_GETTICPOS = WM_USER+15;
  3587. {$EXTERNALSYM TBM_GETNUMTICS}
  3588. TBM_GETNUMTICS = WM_USER+16;
  3589. {$EXTERNALSYM TBM_GETSELSTART}
  3590. TBM_GETSELSTART = WM_USER+17;
  3591. {$EXTERNALSYM TBM_GETSELEND}
  3592. TBM_GETSELEND = WM_USER+18;
  3593. {$EXTERNALSYM TBM_CLEARSEL}
  3594. TBM_CLEARSEL = WM_USER+19;
  3595. {$EXTERNALSYM TBM_SETTICFREQ}
  3596. TBM_SETTICFREQ = WM_USER+20;
  3597. {$EXTERNALSYM TBM_SETPAGESIZE}
  3598. TBM_SETPAGESIZE = WM_USER+21;
  3599. {$EXTERNALSYM TBM_GETPAGESIZE}
  3600. TBM_GETPAGESIZE = WM_USER+22;
  3601. {$EXTERNALSYM TBM_SETLINESIZE}
  3602. TBM_SETLINESIZE = WM_USER+23;
  3603. {$EXTERNALSYM TBM_GETLINESIZE}
  3604. TBM_GETLINESIZE = WM_USER+24;
  3605. {$EXTERNALSYM TBM_GETTHUMBRECT}
  3606. TBM_GETTHUMBRECT = WM_USER+25;
  3607. {$EXTERNALSYM TBM_GETCHANNELRECT}
  3608. TBM_GETCHANNELRECT = WM_USER+26;
  3609. {$EXTERNALSYM TBM_SETTHUMBLENGTH}
  3610. TBM_SETTHUMBLENGTH = WM_USER+27;
  3611. {$EXTERNALSYM TBM_GETTHUMBLENGTH}
  3612. TBM_GETTHUMBLENGTH = WM_USER+28;
  3613. {$EXTERNALSYM TBM_SETTOOLTIPS}
  3614. TBM_SETTOOLTIPS = WM_USER+29;
  3615. {$EXTERNALSYM TBM_GETTOOLTIPS}
  3616. TBM_GETTOOLTIPS = WM_USER+30;
  3617. {$EXTERNALSYM TBM_SETTIPSIDE}
  3618. TBM_SETTIPSIDE = WM_USER+31;
  3619. // TrackBar Tip Side flags
  3620. {$EXTERNALSYM TBTS_TOP}
  3621. TBTS_TOP = 0;
  3622. {$EXTERNALSYM TBTS_LEFT}
  3623. TBTS_LEFT = 1;
  3624. {$EXTERNALSYM TBTS_BOTTOM}
  3625. TBTS_BOTTOM = 2;
  3626. {$EXTERNALSYM TBTS_RIGHT}
  3627. TBTS_RIGHT = 3;
  3628. {$EXTERNALSYM TBM_SETBUDDY}
  3629. TBM_SETBUDDY = WM_USER+32; // wparam = BOOL fLeft; (or right)
  3630. {$EXTERNALSYM TBM_GETBUDDY}
  3631. TBM_GETBUDDY = WM_USER+33; // wparam = BOOL fLeft; (or right)
  3632. {$EXTERNALSYM TBM_SETPOSNOTIFY}
  3633. TBM_SETPOSNOTIFY = WM_USER+34;
  3634. {$EXTERNALSYM TBM_SETUNICODEFORMAT}
  3635. TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  3636. {$EXTERNALSYM TBM_GETUNICODEFORMAT}
  3637. TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  3638. {$EXTERNALSYM TB_LINEUP}
  3639. TB_LINEUP = 0;
  3640. {$EXTERNALSYM TB_LINEDOWN}
  3641. TB_LINEDOWN = 1;
  3642. {$EXTERNALSYM TB_PAGEUP}
  3643. TB_PAGEUP = 2;
  3644. {$EXTERNALSYM TB_PAGEDOWN}
  3645. TB_PAGEDOWN = 3;
  3646. {$EXTERNALSYM TB_THUMBPOSITION}
  3647. TB_THUMBPOSITION = 4;
  3648. {$EXTERNALSYM TB_THUMBTRACK}
  3649. TB_THUMBTRACK = 5;
  3650. {$EXTERNALSYM TB_TOP}
  3651. TB_TOP = 6;
  3652. {$EXTERNALSYM TB_BOTTOM}
  3653. TB_BOTTOM = 7;
  3654. {$EXTERNALSYM TB_ENDTRACK}
  3655. TB_ENDTRACK = 8;
  3656. // custom draw item specs
  3657. {$EXTERNALSYM TBCD_TICS}
  3658. TBCD_TICS = $0001;
  3659. {$EXTERNALSYM TBCD_THUMB}
  3660. TBCD_THUMB = $0002;
  3661. {$EXTERNALSYM TBCD_CHANNEL}
  3662. TBCD_CHANNEL = $0003;
  3663. { For Windows >= Vista }
  3664. {$EXTERNALSYM TRBN_THUMBPOSCHANGING}
  3665. TRBN_THUMBPOSCHANGING = TRBN_FIRST-1;
  3666. type
  3667. // Structure for Trackbar's TRBN_THUMBPOSCHANGING notification
  3668. {$EXTERNALSYM tagTRBTHUMBPOSCHANGING}
  3669. tagTRBTHUMBPOSCHANGING = record
  3670. hdr: TNMHdr;
  3671. dwPos: DWORD;
  3672. nReason: Integer;
  3673. end;
  3674. TNMTRBThumbPosChanging = tagTRBTHUMBPOSCHANGING;
  3675. { ====== DRAG LIST CONTROL ================== }
  3676. type
  3677. PDragListInfo = ^TDragListInfo;
  3678. {$EXTERNALSYM tagDRAGLISTINFO}
  3679. tagDRAGLISTINFO = record
  3680. uNotification: UINT;
  3681. hWnd: HWND;
  3682. ptCursor: TPoint;
  3683. end;
  3684. TDragListInfo = tagDRAGLISTINFO;
  3685. {$EXTERNALSYM DRAGLISTINFO}
  3686. DRAGLISTINFO = tagDRAGLISTINFO;
  3687. const
  3688. {$EXTERNALSYM DL_BEGINDRAG}
  3689. DL_BEGINDRAG = WM_USER+133;
  3690. {$EXTERNALSYM DL_DRAGGING}
  3691. DL_DRAGGING = WM_USER+134;
  3692. {$EXTERNALSYM DL_DROPPED}
  3693. DL_DROPPED = WM_USER+135;
  3694. {$EXTERNALSYM DL_CANCELDRAG}
  3695. DL_CANCELDRAG = WM_USER+136;
  3696. {$EXTERNALSYM DL_CURSORSET}
  3697. DL_CURSORSET = 0;
  3698. {$EXTERNALSYM DL_STOPCURSOR}
  3699. DL_STOPCURSOR = 1;
  3700. {$EXTERNALSYM DL_COPYCURSOR}
  3701. DL_COPYCURSOR = 2;
  3702. {$EXTERNALSYM DL_MOVECURSOR}
  3703. DL_MOVECURSOR = 3;
  3704. const
  3705. {$EXTERNALSYM DRAGLISTMSGSTRING}
  3706. DRAGLISTMSGSTRING = 'commctrl_DragListMsg';
  3707. {$EXTERNALSYM MakeDragList}
  3708. procedure MakeDragList(hLB: HWND); stdcall;
  3709. {$EXTERNALSYM DrawInsert}
  3710. procedure DrawInsert(hwndParent: HWND; hLB: HWND; nItem: Integer); stdcall;
  3711. {$EXTERNALSYM LBItemFromPt}
  3712. function LBItemFromPt(hLB: HWND; pt: TPoint; bAutoScroll: Bool): Integer; stdcall;
  3713. { ====== UPDOWN CONTROL ========================== }
  3714. const
  3715. {$EXTERNALSYM UPDOWN_CLASS}
  3716. UPDOWN_CLASS = 'msctls_updown32';
  3717. type
  3718. PUDAccel = ^TUDAccel;
  3719. {$EXTERNALSYM _UDACCEL}
  3720. _UDACCEL = record
  3721. nSec: UINT;
  3722. nInc: UINT;
  3723. end;
  3724. TUDAccel = _UDACCEL;
  3725. {$EXTERNALSYM UDACCEL}
  3726. UDACCEL = _UDACCEL;
  3727. const
  3728. {$EXTERNALSYM UD_MAXVAL}
  3729. UD_MAXVAL = $7fff;
  3730. {$EXTERNALSYM UD_MINVAL}
  3731. UD_MINVAL = -UD_MAXVAL;
  3732. {$EXTERNALSYM UDS_WRAP}
  3733. UDS_WRAP = $0001;
  3734. {$EXTERNALSYM UDS_SETBUDDYINT}
  3735. UDS_SETBUDDYINT = $0002;
  3736. {$EXTERNALSYM UDS_ALIGNRIGHT}
  3737. UDS_ALIGNRIGHT = $0004;
  3738. {$EXTERNALSYM UDS_ALIGNLEFT}
  3739. UDS_ALIGNLEFT = $0008;
  3740. {$EXTERNALSYM UDS_AUTOBUDDY}
  3741. UDS_AUTOBUDDY = $0010;
  3742. {$EXTERNALSYM UDS_ARROWKEYS}
  3743. UDS_ARROWKEYS = $0020;
  3744. {$EXTERNALSYM UDS_HORZ}
  3745. UDS_HORZ = $0040;
  3746. {$EXTERNALSYM UDS_NOTHOUSANDS}
  3747. UDS_NOTHOUSANDS = $0080;
  3748. {$EXTERNALSYM UDS_HOTTRACK}
  3749. UDS_HOTTRACK = $0100;
  3750. {$EXTERNALSYM UDM_SETRANGE}
  3751. UDM_SETRANGE = WM_USER+101;
  3752. {$EXTERNALSYM UDM_GETRANGE}
  3753. UDM_GETRANGE = WM_USER+102;
  3754. {$EXTERNALSYM UDM_SETPOS}
  3755. UDM_SETPOS = WM_USER+103;
  3756. {$EXTERNALSYM UDM_GETPOS}
  3757. UDM_GETPOS = WM_USER+104;
  3758. {$EXTERNALSYM UDM_SETBUDDY}
  3759. UDM_SETBUDDY = WM_USER+105;
  3760. {$EXTERNALSYM UDM_GETBUDDY}
  3761. UDM_GETBUDDY = WM_USER+106;
  3762. {$EXTERNALSYM UDM_SETACCEL}
  3763. UDM_SETACCEL = WM_USER+107;
  3764. {$EXTERNALSYM UDM_GETACCEL}
  3765. UDM_GETACCEL = WM_USER+108;
  3766. {$EXTERNALSYM UDM_SETBASE}
  3767. UDM_SETBASE = WM_USER+109;
  3768. {$EXTERNALSYM UDM_GETBASE}
  3769. UDM_GETBASE = WM_USER+110;
  3770. {$EXTERNALSYM UDM_SETRANGE32}
  3771. UDM_SETRANGE32 = WM_USER+111;
  3772. {$EXTERNALSYM UDM_GETRANGE32}
  3773. UDM_GETRANGE32 = WM_USER+112; // wParam & lParam are LPINT
  3774. {$EXTERNALSYM UDM_SETUNICODEFORMAT}
  3775. UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  3776. {$EXTERNALSYM UDM_GETUNICODEFORMAT}
  3777. UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  3778. {$EXTERNALSYM UDM_SETPOS32}
  3779. UDM_SETPOS32 = WM_USER+113;
  3780. {$EXTERNALSYM UDM_GETPOS32}
  3781. UDM_GETPOS32 = WM_USER+114;
  3782. {$EXTERNALSYM CreateUpDownControl}
  3783. function CreateUpDownControl(dwStyle: DWORD; X, Y, CX, CY: Integer;
  3784. hParent: HWND; nID: Integer; hInst: HINST; hBuddy: HWND;
  3785. nUpper, nLower, nPos: Integer): HWND; stdcall;
  3786. type
  3787. PNMUpDown = ^TNMUpDown;
  3788. {$EXTERNALSYM _NM_UPDOWN}
  3789. _NM_UPDOWN = record
  3790. hdr: TNMHDR;
  3791. iPos: Integer;
  3792. iDelta: Integer;
  3793. end;
  3794. TNMUpDown = _NM_UPDOWN;
  3795. {$EXTERNALSYM NM_UPDOWN}
  3796. NM_UPDOWN = _NM_UPDOWN;
  3797. const
  3798. {$EXTERNALSYM UDN_DELTAPOS}
  3799. UDN_DELTAPOS = UDN_FIRST - 1;
  3800. { ====== PROGRESS CONTROL ========================= }
  3801. const
  3802. {$EXTERNALSYM PROGRESS_CLASS}
  3803. PROGRESS_CLASS = 'msctls_progress32';
  3804. type
  3805. {$EXTERNALSYM PBRANGE}
  3806. PBRANGE = record
  3807. iLow: Integer;
  3808. iHigh: Integer;
  3809. end;
  3810. PPBRange = ^TPBRange;
  3811. TPBRange = PBRANGE;
  3812. const
  3813. {$EXTERNALSYM PBS_SMOOTH}
  3814. PBS_SMOOTH = 01;
  3815. {$EXTERNALSYM PBS_VERTICAL}
  3816. PBS_VERTICAL = 04;
  3817. {$EXTERNALSYM PBM_SETRANGE}
  3818. PBM_SETRANGE = WM_USER+1;
  3819. {$EXTERNALSYM PBM_SETPOS}
  3820. PBM_SETPOS = WM_USER+2;
  3821. {$EXTERNALSYM PBM_DELTAPOS}
  3822. PBM_DELTAPOS = WM_USER+3;
  3823. {$EXTERNALSYM PBM_SETSTEP}
  3824. PBM_SETSTEP = WM_USER+4;
  3825. {$EXTERNALSYM PBM_STEPIT}
  3826. PBM_STEPIT = WM_USER+5;
  3827. {$EXTERNALSYM PBM_SETRANGE32}
  3828. PBM_SETRANGE32 = WM_USER+6; // lParam = high, wParam = low
  3829. {$EXTERNALSYM PBM_GETRANGE}
  3830. PBM_GETRANGE = WM_USER+7; // lParam = PPBRange or Nil
  3831. // wParam = False: Result = high
  3832. // wParam = True: Result = low
  3833. {$EXTERNALSYM PBM_GETPOS}
  3834. PBM_GETPOS = WM_USER+8;
  3835. {$EXTERNALSYM PBM_SETBARCOLOR}
  3836. PBM_SETBARCOLOR = WM_USER+9; // lParam = bar color
  3837. {$EXTERNALSYM PBM_SETBKCOLOR}
  3838. PBM_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
  3839. { For Windows >= XP }
  3840. {$EXTERNALSYM PBS_MARQUEE}
  3841. PBS_MARQUEE = $08;
  3842. {$EXTERNALSYM PBM_SETMARQUEE}
  3843. PBM_SETMARQUEE = WM_USER+10;
  3844. { For Windows >= Vista }
  3845. {$EXTERNALSYM PBS_SMOOTHREVERSE}
  3846. PBS_SMOOTHREVERSE = $10;
  3847. { For Windows >= Vista }
  3848. {$EXTERNALSYM PBM_GETSTEP}
  3849. PBM_GETSTEP = WM_USER+13;
  3850. {$EXTERNALSYM PBM_GETBKCOLOR}
  3851. PBM_GETBKCOLOR = WM_USER+14;
  3852. {$EXTERNALSYM PBM_GETBARCOLOR}
  3853. PBM_GETBARCOLOR = WM_USER+15;
  3854. {$EXTERNALSYM PBM_SETSTATE}
  3855. PBM_SETSTATE = WM_USER+16; { wParam = PBST_[State] (NORMAL, ERROR, PAUSED) }
  3856. {$EXTERNALSYM PBM_GETSTATE}
  3857. PBM_GETSTATE = WM_USER+17;
  3858. { For Windows >= Vista }
  3859. {$EXTERNALSYM PBST_NORMAL}
  3860. PBST_NORMAL = $0001;
  3861. {$EXTERNALSYM PBST_ERROR}
  3862. PBST_ERROR = $0002;
  3863. {$EXTERNALSYM PBST_PAUSED}
  3864. PBST_PAUSED = $0003;
  3865. { ====== HOTKEY CONTROL ========================== }
  3866. const
  3867. {$EXTERNALSYM HOTKEYF_SHIFT}
  3868. HOTKEYF_SHIFT = $01;
  3869. {$EXTERNALSYM HOTKEYF_CONTROL}
  3870. HOTKEYF_CONTROL = $02;
  3871. {$EXTERNALSYM HOTKEYF_ALT}
  3872. HOTKEYF_ALT = $04;
  3873. {$EXTERNALSYM HOTKEYF_EXT}
  3874. HOTKEYF_EXT = $08;
  3875. {$EXTERNALSYM HKCOMB_NONE}
  3876. HKCOMB_NONE = $0001;
  3877. {$EXTERNALSYM HKCOMB_S}
  3878. HKCOMB_S = $0002;
  3879. {$EXTERNALSYM HKCOMB_C}
  3880. HKCOMB_C = $0004;
  3881. {$EXTERNALSYM HKCOMB_A}
  3882. HKCOMB_A = $0008;
  3883. {$EXTERNALSYM HKCOMB_SC}
  3884. HKCOMB_SC = $0010;
  3885. {$EXTERNALSYM HKCOMB_SA}
  3886. HKCOMB_SA = $0020;
  3887. {$EXTERNALSYM HKCOMB_CA}
  3888. HKCOMB_CA = $0040;
  3889. {$EXTERNALSYM HKCOMB_SCA}
  3890. HKCOMB_SCA = $0080;
  3891. {$EXTERNALSYM HKM_SETHOTKEY}
  3892. HKM_SETHOTKEY = WM_USER+1;
  3893. {$EXTERNALSYM HKM_GETHOTKEY}
  3894. HKM_GETHOTKEY = WM_USER+2;
  3895. {$EXTERNALSYM HKM_SETRULES}
  3896. HKM_SETRULES = WM_USER+3;
  3897. const
  3898. HOTKEYCLASS = 'msctls_hotkey32';
  3899. { ====== COMMON CONTROL STYLES ================ }
  3900. const
  3901. {$EXTERNALSYM CCS_TOP}
  3902. CCS_TOP = $00000001;
  3903. {$EXTERNALSYM CCS_NOMOVEY}
  3904. CCS_NOMOVEY = $00000002;
  3905. {$EXTERNALSYM CCS_BOTTOM}
  3906. CCS_BOTTOM = $00000003;
  3907. {$EXTERNALSYM CCS_NORESIZE}
  3908. CCS_NORESIZE = $00000004;
  3909. {$EXTERNALSYM CCS_NOPARENTALIGN}
  3910. CCS_NOPARENTALIGN = $00000008;
  3911. {$EXTERNALSYM CCS_ADJUSTABLE}
  3912. CCS_ADJUSTABLE = $00000020;
  3913. {$EXTERNALSYM CCS_NODIVIDER}
  3914. CCS_NODIVIDER = $00000040;
  3915. {$EXTERNALSYM CCS_VERT}
  3916. CCS_VERT = $00000080;
  3917. {$EXTERNALSYM CCS_LEFT}
  3918. CCS_LEFT = (CCS_VERT or CCS_TOP);
  3919. {$EXTERNALSYM CCS_RIGHT}
  3920. CCS_RIGHT = (CCS_VERT or CCS_BOTTOM);
  3921. {$EXTERNALSYM CCS_NOMOVEX}
  3922. CCS_NOMOVEX = (CCS_VERT or CCS_NOMOVEY);
  3923. // ====== SysLink control =========================================
  3924. const
  3925. { For Windows >= XP }
  3926. {$EXTERNALSYM INVALID_LINK_INDEX}
  3927. INVALID_LINK_INDEX = -1;
  3928. {$EXTERNALSYM MAX_LINKID_TEXT}
  3929. MAX_LINKID_TEXT = 48;
  3930. {$EXTERNALSYM L_MAX_URL_LENGTH}
  3931. L_MAX_URL_LENGTH = 2048 + 32 + length('://') + 1;
  3932. { For Windows >= XP }
  3933. {$EXTERNALSYM WC_LINK}
  3934. WC_LINK = 'SysLink';
  3935. { For Windows >= XP }
  3936. {$EXTERNALSYM LWS_TRANSPARENT}
  3937. LWS_TRANSPARENT = $0001;
  3938. {$EXTERNALSYM LWS_IGNORERETURN}
  3939. LWS_IGNORERETURN = $0002;
  3940. { For Windows >= Vista }
  3941. {$EXTERNALSYM LWS_NOPREFIX}
  3942. LWS_NOPREFIX = $0004;
  3943. {$EXTERNALSYM LWS_USEVISUALSTYLE}
  3944. LWS_USEVISUALSTYLE = $0008;
  3945. {$EXTERNALSYM LWS_USECUSTOMTEXT}
  3946. LWS_USECUSTOMTEXT = $0010;
  3947. {$EXTERNALSYM LWS_RIGHT}
  3948. LWS_RIGHT = $0020;
  3949. { For Windows >= XP }
  3950. {$EXTERNALSYM LIF_ITEMINDEX}
  3951. LIF_ITEMINDEX = $00000001;
  3952. {$EXTERNALSYM LIF_STATE}
  3953. LIF_STATE = $00000002;
  3954. {$EXTERNALSYM LIF_ITEMID}
  3955. LIF_ITEMID = $00000004;
  3956. {$EXTERNALSYM LIF_URL}
  3957. LIF_URL = $00000008;
  3958. { For Windows >= XP }
  3959. {$EXTERNALSYM LIS_FOCUSED}
  3960. LIS_FOCUSED = $00000001;
  3961. {$EXTERNALSYM LIS_ENABLED}
  3962. LIS_ENABLED = $00000002;
  3963. {$EXTERNALSYM LIS_VISITED}
  3964. LIS_VISITED = $00000004;
  3965. { For Windows >= Vista }
  3966. {$EXTERNALSYM LIS_HOTTRACK}
  3967. LIS_HOTTRACK = $00000008;
  3968. {$EXTERNALSYM LIS_DEFAULTCOLORS}
  3969. LIS_DEFAULTCOLORS = $00000010; // Don't use any custom text colors
  3970. type
  3971. { For Windows >= XP }
  3972. { $EXTERNALSYM tagLITEM}
  3973. tagLITEM = record
  3974. mask: UINT;
  3975. iLink: Integer;
  3976. state: UINT;
  3977. stateMask: UINT;
  3978. szID: packed array[0..MAX_LINKID_TEXT-1] of WCHAR;
  3979. szUrl: packed array[0..L_MAX_URL_LENGTH-1] of WCHAR;
  3980. end;
  3981. PLItem = ^TLItem;
  3982. TLItem = tagLITEM;
  3983. { For Windows >= XP }
  3984. { $EXTERNALSYM tagLHITTESTINFO}
  3985. tagLHITTESTINFO = record
  3986. pt: TPoint;
  3987. item: TLItem;
  3988. end;
  3989. PLHitTestInfo = ^TLHitTestInfo;
  3990. TLHitTestInfo = tagLHITTESTINFO;
  3991. { For Windows >= XP }
  3992. { $EXTERNALSYM tagNMLINK}
  3993. tagNMLINK = record
  3994. hdr: NMHDR;
  3995. item: TLItem;
  3996. end;
  3997. PNMLink = ^TNMLink;
  3998. TNMLink = tagNMLINK;
  3999. // SysLink notifications
  4000. // NM_CLICK // wParam: control ID, lParam: PNMLINK, ret: ignored.
  4001. // LinkWindow messages
  4002. const
  4003. { For Windows >= XP }
  4004. {$EXTERNALSYM LM_HITTEST}
  4005. LM_HITTEST = WM_USER+$300; // wParam: n/a, lparam: PLHITTESTINFO, ret: BOOL
  4006. {$EXTERNALSYM LM_GETIDEALHEIGHT}
  4007. LM_GETIDEALHEIGHT = WM_USER+$301; // wParam: cxMaxWidth, lparam: n/a, ret: cy
  4008. {$EXTERNALSYM LM_SETITEM}
  4009. LM_SETITEM = WM_USER+$302; // wParam: n/a, lparam: LITEM*, ret: BOOL
  4010. {$EXTERNALSYM LM_GETITEM}
  4011. LM_GETITEM = WM_USER+$303; // wParam: n/a, lparam: LITEM*, ret: BOOL
  4012. {$EXTERNALSYM LM_GETIDEALSIZE}
  4013. LM_GETIDEALSIZE = LM_GETIDEALHEIGHT; // wParam: cxMaxWidth, lparam: SIZE*, ret: cy
  4014. { ====== LISTVIEW CONTROL ====================== }
  4015. const
  4016. {$EXTERNALSYM WC_LISTVIEW}
  4017. WC_LISTVIEW = 'SysListView32';
  4018. const
  4019. { List View Styles }
  4020. {$EXTERNALSYM LVS_ICON}
  4021. LVS_ICON = $0000;
  4022. {$EXTERNALSYM LVS_REPORT}
  4023. LVS_REPORT = $0001;
  4024. {$EXTERNALSYM LVS_SMALLICON}
  4025. LVS_SMALLICON = $0002;
  4026. {$EXTERNALSYM LVS_LIST}
  4027. LVS_LIST = $0003;
  4028. {$EXTERNALSYM LVS_TYPEMASK}
  4029. LVS_TYPEMASK = $0003;
  4030. {$EXTERNALSYM LVS_SINGLESEL}
  4031. LVS_SINGLESEL = $0004;
  4032. {$EXTERNALSYM LVS_SHOWSELALWAYS}
  4033. LVS_SHOWSELALWAYS = $0008;
  4034. {$EXTERNALSYM LVS_SORTASCENDING}
  4035. LVS_SORTASCENDING = $0010;
  4036. {$EXTERNALSYM LVS_SORTDESCENDING}
  4037. LVS_SORTDESCENDING = $0020;
  4038. {$EXTERNALSYM LVS_SHAREIMAGELISTS}
  4039. LVS_SHAREIMAGELISTS = $0040;
  4040. {$EXTERNALSYM LVS_NOLABELWRAP}
  4041. LVS_NOLABELWRAP = $0080;
  4042. {$EXTERNALSYM LVS_AUTOARRANGE}
  4043. LVS_AUTOARRANGE = $0100;
  4044. {$EXTERNALSYM LVS_EDITLABELS}
  4045. LVS_EDITLABELS = $0200;
  4046. {$EXTERNALSYM LVS_OWNERDATA}
  4047. LVS_OWNERDATA = $1000;
  4048. {$EXTERNALSYM LVS_NOSCROLL}
  4049. LVS_NOSCROLL = $2000;
  4050. {$EXTERNALSYM LVS_TYPESTYLEMASK}
  4051. LVS_TYPESTYLEMASK = $FC00;
  4052. {$EXTERNALSYM LVS_ALIGNTOP}
  4053. LVS_ALIGNTOP = $0000;
  4054. {$EXTERNALSYM LVS_ALIGNLEFT}
  4055. LVS_ALIGNLEFT = $0800;
  4056. {$EXTERNALSYM LVS_ALIGNMASK}
  4057. LVS_ALIGNMASK = $0c00;
  4058. {$EXTERNALSYM LVS_OWNERDRAWFIXED}
  4059. LVS_OWNERDRAWFIXED = $0400;
  4060. {$EXTERNALSYM LVS_NOCOLUMNHEADER}
  4061. LVS_NOCOLUMNHEADER = $4000;
  4062. {$EXTERNALSYM LVS_NOSORTHEADER}
  4063. LVS_NOSORTHEADER = $8000;
  4064. { List View Extended Styles }
  4065. {$EXTERNALSYM LVS_EX_GRIDLINES}
  4066. LVS_EX_GRIDLINES = $00000001;
  4067. {$EXTERNALSYM LVS_EX_SUBITEMIMAGES}
  4068. LVS_EX_SUBITEMIMAGES = $00000002;
  4069. {$EXTERNALSYM LVS_EX_CHECKBOXES}
  4070. LVS_EX_CHECKBOXES = $00000004;
  4071. {$EXTERNALSYM LVS_EX_TRACKSELECT}
  4072. LVS_EX_TRACKSELECT = $00000008;
  4073. {$EXTERNALSYM LVS_EX_HEADERDRAGDROP}
  4074. LVS_EX_HEADERDRAGDROP = $00000010;
  4075. {$EXTERNALSYM LVS_EX_FULLROWSELECT}
  4076. LVS_EX_FULLROWSELECT = $00000020; // applies to report mode only
  4077. {$EXTERNALSYM LVS_EX_ONECLICKACTIVATE}
  4078. LVS_EX_ONECLICKACTIVATE = $00000040;
  4079. {$EXTERNALSYM LVS_EX_TWOCLICKACTIVATE}
  4080. LVS_EX_TWOCLICKACTIVATE = $00000080;
  4081. {$EXTERNALSYM LVS_EX_FLATSB}
  4082. LVS_EX_FLATSB = $00000100;
  4083. {$EXTERNALSYM LVS_EX_REGIONAL}
  4084. LVS_EX_REGIONAL = $00000200;
  4085. {$EXTERNALSYM LVS_EX_INFOTIP}
  4086. LVS_EX_INFOTIP = $00000400; // listview does InfoTips for you
  4087. {$EXTERNALSYM LVS_EX_UNDERLINEHOT}
  4088. LVS_EX_UNDERLINEHOT = $00000800;
  4089. {$EXTERNALSYM LVS_EX_UNDERLINECOLD}
  4090. LVS_EX_UNDERLINECOLD = $00001000;
  4091. {$EXTERNALSYM LVS_EX_MULTIWORKAREAS}
  4092. LVS_EX_MULTIWORKAREAS = $00002000;
  4093. { For IE >= 0x0500 }
  4094. {$EXTERNALSYM LVS_EX_LABELTIP}
  4095. LVS_EX_LABELTIP = $00004000; { listview unfolds partly hidden labels if it does not have infotip text }
  4096. {$EXTERNALSYM LVS_EX_BORDERSELECT}
  4097. LVS_EX_BORDERSELECT = $00008000; { border selection style instead of highlight }
  4098. { For Windows >= XP }
  4099. {$EXTERNALSYM LVS_EX_DOUBLEBUFFER}
  4100. LVS_EX_DOUBLEBUFFER = $00010000;
  4101. {$EXTERNALSYM LVS_EX_HIDELABELS}
  4102. LVS_EX_HIDELABELS = $00020000;
  4103. {$EXTERNALSYM LVS_EX_SINGLEROW}
  4104. LVS_EX_SINGLEROW = $00040000;
  4105. {$EXTERNALSYM LVS_EX_SNAPTOGRID}
  4106. LVS_EX_SNAPTOGRID = $00080000; { Icons automatically snap to grid. }
  4107. {$EXTERNALSYM LVS_EX_SIMPLESELECT}
  4108. LVS_EX_SIMPLESELECT = $00100000; { Also changes overlay rendering to top right for icon mode. }
  4109. { For Windows >= Vista }
  4110. {$EXTERNALSYM LVS_EX_JUSTIFYCOLUMNS}
  4111. LVS_EX_JUSTIFYCOLUMNS = $00200000; { Icons are lined up in columns that use up the whole view area. }
  4112. {$EXTERNALSYM LVS_EX_TRANSPARENTBKGND}
  4113. LVS_EX_TRANSPARENTBKGND = $00400000; { Background is painted by the parent via WM_PRINTCLIENT }
  4114. {$EXTERNALSYM LVS_EX_TRANSPARENTSHADOWTEXT}
  4115. LVS_EX_TRANSPARENTSHADOWTEXT = $00800000; { Enable shadow text on transparent backgrounds only (useful with bitmaps) }
  4116. {$EXTERNALSYM LVS_EX_AUTOAUTOARRANGE}
  4117. LVS_EX_AUTOAUTOARRANGE = $01000000; { Icons automatically arrange if no icon positions have been set }
  4118. {$EXTERNALSYM LVS_EX_HEADERINALLVIEWS}
  4119. LVS_EX_HEADERINALLVIEWS = $02000000; { Display column header in all view modes }
  4120. {$EXTERNALSYM LVS_EX_AUTOCHECKSELECT}
  4121. LVS_EX_AUTOCHECKSELECT = $08000000;
  4122. {$EXTERNALSYM LVS_EX_AUTOSIZECOLUMNS}
  4123. LVS_EX_AUTOSIZECOLUMNS = $10000000;
  4124. {$EXTERNALSYM LVS_EX_COLUMNSNAPPOINTS}
  4125. LVS_EX_COLUMNSNAPPOINTS = $40000000;
  4126. {$EXTERNALSYM LVS_EX_COLUMNOVERFLOW}
  4127. LVS_EX_COLUMNOVERFLOW = $80000000;
  4128. const
  4129. {$EXTERNALSYM LVM_SETUNICODEFORMAT}
  4130. LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  4131. {$EXTERNALSYM ListView_SetUnicodeFormat}
  4132. function ListView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL; inline;
  4133. const
  4134. {$EXTERNALSYM LVM_GETUNICODEFORMAT}
  4135. LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  4136. {$EXTERNALSYM ListView_GetUnicodeFormat}
  4137. function ListView_GetUnicodeFormat(hwnd: HWND): BOOL; inline;
  4138. const
  4139. {$EXTERNALSYM LVM_GETBKCOLOR}
  4140. LVM_GETBKCOLOR = LVM_FIRST + 0;
  4141. {$EXTERNALSYM ListView_GetBkColor}
  4142. function ListView_GetBkColor(hWnd: HWND): TColorRef; inline;
  4143. const
  4144. {$EXTERNALSYM LVM_SETBKCOLOR}
  4145. LVM_SETBKCOLOR = LVM_FIRST + 1;
  4146. {$EXTERNALSYM ListView_SetBkColor}
  4147. function ListView_SetBkColor(hWnd: HWND; clrBk: TColorRef): Bool; inline;
  4148. const
  4149. {$EXTERNALSYM LVM_GETIMAGELIST}
  4150. LVM_GETIMAGELIST = LVM_FIRST + 2;
  4151. {$EXTERNALSYM ListView_GetImageList}
  4152. function ListView_GetImageList(hWnd: HWND; iImageList: Integer): HIMAGELIST; inline;
  4153. const
  4154. {$EXTERNALSYM LVSIL_NORMAL}
  4155. LVSIL_NORMAL = 0;
  4156. {$EXTERNALSYM LVSIL_SMALL}
  4157. LVSIL_SMALL = 1;
  4158. {$EXTERNALSYM LVSIL_STATE}
  4159. LVSIL_STATE = 2;
  4160. {$EXTERNALSYM LVSIL_GROUPHEADER}
  4161. LVSIL_GROUPHEADER = 3;
  4162. const
  4163. {$EXTERNALSYM LVM_SETIMAGELIST}
  4164. LVM_SETIMAGELIST = LVM_FIRST + 3;
  4165. {$EXTERNALSYM ListView_SetImageList}
  4166. function ListView_SetImageList(hWnd: HWND; himl: HIMAGELIST;
  4167. iImageList: Integer): HIMAGELIST; inline;
  4168. const
  4169. {$EXTERNALSYM LVM_GETITEMCOUNT}
  4170. LVM_GETITEMCOUNT = LVM_FIRST + 4;
  4171. {$EXTERNALSYM ListView_GetItemCount}
  4172. function ListView_GetItemCount(hWnd: HWND): Integer; inline;
  4173. const
  4174. {$EXTERNALSYM LVIF_TEXT}
  4175. LVIF_TEXT = $0001;
  4176. {$EXTERNALSYM LVIF_IMAGE}
  4177. LVIF_IMAGE = $0002;
  4178. {$EXTERNALSYM LVIF_PARAM}
  4179. LVIF_PARAM = $0004;
  4180. {$EXTERNALSYM LVIF_STATE}
  4181. LVIF_STATE = $0008;
  4182. {$EXTERNALSYM LVIF_INDENT}
  4183. LVIF_INDENT = $0010;
  4184. {$EXTERNALSYM LVIF_NORECOMPUTE}
  4185. LVIF_NORECOMPUTE = $0800;
  4186. { For Windows >= XP }
  4187. {$EXTERNALSYM LVIF_GROUPID}
  4188. LVIF_GROUPID = $00000100;
  4189. {$EXTERNALSYM LVIF_COLUMNS}
  4190. LVIF_COLUMNS = $00000200;
  4191. { For Windows >= Vista }
  4192. {$EXTERNALSYM LVIF_COLFMT}
  4193. LVIF_COLFMT = $00010000; { The piColFmt member is valid in addition to puColumns }
  4194. {$EXTERNALSYM LVIS_FOCUSED}
  4195. LVIS_FOCUSED = $0001;
  4196. {$EXTERNALSYM LVIS_SELECTED}
  4197. LVIS_SELECTED = $0002;
  4198. {$EXTERNALSYM LVIS_CUT}
  4199. LVIS_CUT = $0004;
  4200. {$EXTERNALSYM LVIS_DROPHILITED}
  4201. LVIS_DROPHILITED = $0008;
  4202. {$EXTERNALSYM LVIS_ACTIVATING}
  4203. LVIS_ACTIVATING = $0020;
  4204. {$EXTERNALSYM LVIS_OVERLAYMASK}
  4205. LVIS_OVERLAYMASK = $0F00;
  4206. {$EXTERNALSYM LVIS_STATEIMAGEMASK}
  4207. LVIS_STATEIMAGEMASK = $F000;
  4208. {$EXTERNALSYM IndexToStateImageMask}
  4209. function IndexToStateImageMask(I: Longint): Longint; inline;
  4210. const
  4211. {$EXTERNALSYM I_INDENTCALLBACK}
  4212. I_INDENTCALLBACK = -1;
  4213. {$EXTERNALSYM I_IMAGENONE}
  4214. I_IMAGENONE = -2;
  4215. { For Windows >= XP }
  4216. {$EXTERNALSYM I_COLUMNSCALLBACK}
  4217. I_COLUMNSCALLBACK = -1;
  4218. {$EXTERNALSYM I_GROUPIDCALLBACK}
  4219. I_GROUPIDCALLBACK = -1;
  4220. {$EXTERNALSYM I_GROUPIDNONE}
  4221. I_GROUPIDNONE = -2;
  4222. type
  4223. PLVItemA = ^TLVItemA;
  4224. PLVItemW = ^TLVItemW;
  4225. PLVItem = PLVItemW;
  4226. {$EXTERNALSYM tagLVITEMA}
  4227. tagLVITEMA = record
  4228. mask: UINT;
  4229. iItem: Integer;
  4230. iSubItem: Integer;
  4231. state: UINT;
  4232. stateMask: UINT;
  4233. pszText: PAnsiChar;
  4234. cchTextMax: Integer;
  4235. iImage: Integer;
  4236. lParam: LPARAM;
  4237. iIndent: Integer;
  4238. iGroupId: Integer;
  4239. cColumns: UINT; { tile view columns }
  4240. puColumns: PUINT;
  4241. // WILL BE UNUSED DOWNLEVEL, BUT SIZEOF(LVITEMA) MUST BE EQUAL TO SIZEOF(LVITEMW)
  4242. piColFmt: PInteger;
  4243. iGroup: Integer;{ readonly. only valid for owner data. }
  4244. end;
  4245. {$EXTERNALSYM tagLVITEMW}
  4246. tagLVITEMW = record
  4247. mask: UINT;
  4248. iItem: Integer;
  4249. iSubItem: Integer;
  4250. state: UINT;
  4251. stateMask: UINT;
  4252. pszText: PWideChar;
  4253. cchTextMax: Integer;
  4254. iImage: Integer;
  4255. lParam: LPARAM;
  4256. iIndent: Integer;
  4257. iGroupId: Integer;
  4258. cColumns: UINT; { tile view columns }
  4259. puColumns: PUINT;
  4260. // WILL BE UNUSED DOWNLEVEL, BUT SIZEOF(LVITEMA) MUST BE EQUAL TO SIZEOF(LVITEMW)
  4261. piColFmt: PInteger;
  4262. iGroup: Integer;{ readonly. only valid for owner data. }
  4263. end;
  4264. {$EXTERNALSYM tagLVITEM}
  4265. tagLVITEM = tagLVITEMW;
  4266. {$EXTERNALSYM _LV_ITEMA}
  4267. _LV_ITEMA = tagLVITEMA;
  4268. {$EXTERNALSYM _LV_ITEMW}
  4269. _LV_ITEMW = tagLVITEMW;
  4270. {$EXTERNALSYM _LV_ITEM}
  4271. _LV_ITEM = _LV_ITEMW;
  4272. TLVItemA = tagLVITEMA;
  4273. TLVItemW = tagLVITEMW;
  4274. TLVItem = TLVItemW;
  4275. {$EXTERNALSYM LV_ITEMA}
  4276. LV_ITEMA = tagLVITEMA;
  4277. {$EXTERNALSYM LV_ITEMW}
  4278. LV_ITEMW = tagLVITEMW;
  4279. {$EXTERNALSYM LV_ITEM}
  4280. LV_ITEM = LV_ITEMW;
  4281. const
  4282. {$EXTERNALSYM LPSTR_TEXTCALLBACKA}
  4283. LPSTR_TEXTCALLBACKA = LPSTR(NativeInt(-1));
  4284. {$EXTERNALSYM LPSTR_TEXTCALLBACKW}
  4285. LPSTR_TEXTCALLBACKW = LPWSTR(NativeInt(-1));
  4286. {$IFDEF UNICODE}
  4287. {$EXTERNALSYM LPSTR_TEXTCALLBACK}
  4288. LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;
  4289. {$ELSE}
  4290. {$EXTERNALSYM LPSTR_TEXTCALLBACK}
  4291. LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
  4292. {$ENDIF}
  4293. {$EXTERNALSYM I_IMAGECALLBACK}
  4294. I_IMAGECALLBACK = -1;
  4295. const
  4296. {$EXTERNALSYM LVM_GETITEMA}
  4297. LVM_GETITEMA = LVM_FIRST + 5;
  4298. {$EXTERNALSYM LVM_SETITEMA}
  4299. LVM_SETITEMA = LVM_FIRST + 6;
  4300. {$EXTERNALSYM LVM_INSERTITEMA}
  4301. LVM_INSERTITEMA = LVM_FIRST + 7;
  4302. {$EXTERNALSYM LVM_GETITEMW}
  4303. LVM_GETITEMW = LVM_FIRST + 75;
  4304. {$EXTERNALSYM LVM_SETITEMW}
  4305. LVM_SETITEMW = LVM_FIRST + 76;
  4306. {$EXTERNALSYM LVM_INSERTITEMW}
  4307. LVM_INSERTITEMW = LVM_FIRST + 77;
  4308. {$IFDEF UNICODE}
  4309. {$EXTERNALSYM LVM_GETITEM}
  4310. LVM_GETITEM = LVM_GETITEMW;
  4311. {$EXTERNALSYM LVM_SETITEM}
  4312. LVM_SETITEM = LVM_SETITEMW;
  4313. {$EXTERNALSYM LVM_INSERTITEM}
  4314. LVM_INSERTITEM = LVM_INSERTITEMW;
  4315. {$ELSE}
  4316. {$EXTERNALSYM LVM_GETITEM}
  4317. LVM_GETITEM = LVM_GETITEMA;
  4318. {$EXTERNALSYM LVM_SETITEM}
  4319. LVM_SETITEM = LVM_SETITEMA;
  4320. {$EXTERNALSYM LVM_INSERTITEM}
  4321. LVM_INSERTITEM = LVM_INSERTITEMA;
  4322. {$ENDIF}
  4323. {$EXTERNALSYM LVM_DELETEITEM}
  4324. LVM_DELETEITEM = LVM_FIRST + 8;
  4325. {$EXTERNALSYM LVM_DELETEALLITEMS}
  4326. LVM_DELETEALLITEMS = LVM_FIRST + 9;
  4327. {$EXTERNALSYM LVM_GETCALLBACKMASK}
  4328. LVM_GETCALLBACKMASK = LVM_FIRST + 10;
  4329. {$EXTERNALSYM LVM_SETCALLBACKMASK}
  4330. LVM_SETCALLBACKMASK = LVM_FIRST + 11;
  4331. {$EXTERNALSYM ListView_GetItem}
  4332. function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool; inline;
  4333. {$EXTERNALSYM ListView_GetItemA}
  4334. function ListView_GetItemA(hWnd: HWND; var pItem: TLVItemA): Bool; inline;
  4335. {$EXTERNALSYM ListView_GetItemW}
  4336. function ListView_GetItemW(hWnd: HWND; var pItem: TLVItemW): Bool; inline;
  4337. {$EXTERNALSYM ListView_SetItem}
  4338. function ListView_SetItem(hWnd: HWND; const pItem: TLVItem): Bool; inline;
  4339. {$EXTERNALSYM ListView_SetItemA}
  4340. function ListView_SetItemA(hWnd: HWND; const pItem: TLVItemA): Bool; inline;
  4341. {$EXTERNALSYM ListView_SetItemW}
  4342. function ListView_SetItemW(hWnd: HWND; const pItem: TLVItemW): Bool; inline;
  4343. {$EXTERNALSYM ListView_InsertItem}
  4344. function ListView_InsertItem(hWnd: HWND; const pItem: TLVItem): Integer; inline;
  4345. {$EXTERNALSYM ListView_InsertItemA}
  4346. function ListView_InsertItemA(hWnd: HWND; const pItem: TLVItemA): Integer; inline;
  4347. {$EXTERNALSYM ListView_InsertItemW}
  4348. function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer; inline;
  4349. {$EXTERNALSYM ListView_DeleteItem}
  4350. function ListView_DeleteItem(hWnd: HWND; i: Integer): Bool; inline;
  4351. {$EXTERNALSYM ListView_DeleteAllItems}
  4352. function ListView_DeleteAllItems(hWnd: HWND): Bool; inline;
  4353. {$EXTERNALSYM ListView_GetCallbackMask}
  4354. function ListView_GetCallbackMask(hWnd: HWND): UINT; inline;
  4355. {$EXTERNALSYM ListView_SetCallbackMask}
  4356. function ListView_SetCallbackMask(hWnd: HWND; mask: UINT): Bool; inline;
  4357. const
  4358. {$EXTERNALSYM LVNI_ALL}
  4359. LVNI_ALL = $0000;
  4360. {$EXTERNALSYM LVNI_FOCUSED}
  4361. LVNI_FOCUSED = $0001;
  4362. {$EXTERNALSYM LVNI_SELECTED}
  4363. LVNI_SELECTED = $0002;
  4364. {$EXTERNALSYM LVNI_CUT}
  4365. LVNI_CUT = $0004;
  4366. {$EXTERNALSYM LVNI_DROPHILITED}
  4367. LVNI_DROPHILITED = $0008;
  4368. {$EXTERNALSYM LVNI_ABOVE}
  4369. LVNI_ABOVE = $0100;
  4370. {$EXTERNALSYM LVNI_BELOW}
  4371. LVNI_BELOW = $0200;
  4372. {$EXTERNALSYM LVNI_TOLEFT}
  4373. LVNI_TOLEFT = $0400;
  4374. {$EXTERNALSYM LVNI_TORIGHT}
  4375. LVNI_TORIGHT = $0800;
  4376. const
  4377. {$EXTERNALSYM LVM_GETNEXTITEM}
  4378. LVM_GETNEXTITEM = LVM_FIRST + 12;
  4379. {$EXTERNALSYM ListView_GetNextItem}
  4380. function ListView_GetNextItem(hWnd: HWND; iStart: Integer; Flags: UINT): Integer;
  4381. const
  4382. {$EXTERNALSYM LVFI_PARAM}
  4383. LVFI_PARAM = $0001;
  4384. {$EXTERNALSYM LVFI_STRING}
  4385. LVFI_STRING = $0002;
  4386. {$EXTERNALSYM LVFI_SUBSTRING}
  4387. LVFI_SUBSTRING = $0004; // Same as LVFI_PARTIAL
  4388. {$EXTERNALSYM LVFI_PARTIAL}
  4389. LVFI_PARTIAL = $0008;
  4390. {$EXTERNALSYM LVFI_WRAP}
  4391. LVFI_WRAP = $0020;
  4392. {$EXTERNALSYM LVFI_NEARESTXY}
  4393. LVFI_NEARESTXY = $0040;
  4394. type
  4395. PLVFindInfoA = ^TLVFindInfoA;
  4396. PLVFindInfoW = ^TLVFindInfoW;
  4397. PLVFindInfo = PLVFindInfoW;
  4398. {$EXTERNALSYM tagLVFINDINFOA}
  4399. tagLVFINDINFOA = record
  4400. flags: UINT;
  4401. psz: PAnsiChar;
  4402. lParam: LPARAM;
  4403. pt: TPoint;
  4404. vkDirection: UINT;
  4405. end;
  4406. {$EXTERNALSYM tagLVFINDINFOW}
  4407. tagLVFINDINFOW = record
  4408. flags: UINT;
  4409. psz: PWideChar;
  4410. lParam: LPARAM;
  4411. pt: TPoint;
  4412. vkDirection: UINT;
  4413. end;
  4414. {$EXTERNALSYM tagLVFINDINFO}
  4415. tagLVFINDINFO = tagLVFINDINFOW;
  4416. {$EXTERNALSYM _LV_FINDINFOA}
  4417. _LV_FINDINFOA = tagLVFINDINFOA;
  4418. {$EXTERNALSYM _LV_FINDINFOW}
  4419. _LV_FINDINFOW = tagLVFINDINFOW;
  4420. {$EXTERNALSYM _LV_FINDINFO}
  4421. _LV_FINDINFO = _LV_FINDINFOW;
  4422. TLVFindInfoA = tagLVFINDINFOA;
  4423. TLVFindInfoW = tagLVFINDINFOW;
  4424. TLVFindInfo = TLVFindInfoW;
  4425. {$EXTERNALSYM LV_FINDINFOA}
  4426. LV_FINDINFOA = tagLVFINDINFOA;
  4427. {$EXTERNALSYM LV_FINDINFOW}
  4428. LV_FINDINFOW = tagLVFINDINFOW;
  4429. {$EXTERNALSYM LV_FINDINFO}
  4430. LV_FINDINFO = LV_FINDINFOW;
  4431. const
  4432. {$EXTERNALSYM LVM_FINDITEMA}
  4433. LVM_FINDITEMA = LVM_FIRST + 13;
  4434. {$EXTERNALSYM LVM_FINDITEMW}
  4435. LVM_FINDITEMW = LVM_FIRST + 83;
  4436. {$IFDEF UNICODE}
  4437. {$EXTERNALSYM LVM_FINDITEM}
  4438. LVM_FINDITEM = LVM_FINDITEMW;
  4439. {$ELSE}
  4440. {$EXTERNALSYM LVM_FINDITEM}
  4441. LVM_FINDITEM = LVM_FINDITEMA;
  4442. {$ENDIF}
  4443. {$EXTERNALSYM ListView_FindItem}
  4444. function ListView_FindItem(hWnd: HWND; iStart: Integer;
  4445. const plvfi: TLVFindInfo): Integer; inline;
  4446. {$EXTERNALSYM ListView_FindItemA}
  4447. function ListView_FindItemA(hWnd: HWND; iStart: Integer;
  4448. const plvfi: TLVFindInfoA): Integer; inline;
  4449. {$EXTERNALSYM ListView_FindItemW}
  4450. function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  4451. const plvfi: TLVFindInfoW): Integer; inline;
  4452. const
  4453. {$EXTERNALSYM LVIR_BOUNDS}
  4454. LVIR_BOUNDS = 0;
  4455. {$EXTERNALSYM LVIR_ICON}
  4456. LVIR_ICON = 1;
  4457. {$EXTERNALSYM LVIR_LABEL}
  4458. LVIR_LABEL = 2;
  4459. {$EXTERNALSYM LVIR_SELECTBOUNDS}
  4460. LVIR_SELECTBOUNDS = 3;
  4461. const
  4462. {$EXTERNALSYM LVM_GETITEMRECT}
  4463. LVM_GETITEMRECT = LVM_FIRST + 14;
  4464. {$EXTERNALSYM ListView_GetItemRect}
  4465. function ListView_GetItemRect(hWnd: HWND; i: Integer; var prc: TRect;
  4466. Code: Integer): Bool;
  4467. const
  4468. {$EXTERNALSYM LVM_SETITEMPOSITION}
  4469. LVM_SETITEMPOSITION = LVM_FIRST + 15;
  4470. {$EXTERNALSYM ListView_SetItemPosition}
  4471. function ListView_SetItemPosition(hWnd: HWND; i, x, y: Integer): Bool;
  4472. const
  4473. {$EXTERNALSYM LVM_GETITEMPOSITION}
  4474. LVM_GETITEMPOSITION = LVM_FIRST + 16;
  4475. {$EXTERNALSYM ListView_GetItemPosition}
  4476. function ListView_GetItemPosition(hwndLV: HWND; i: Integer; var ppt: TPoint): Bool; inline;
  4477. const
  4478. {$EXTERNALSYM LVM_GETSTRINGWIDTHA}
  4479. LVM_GETSTRINGWIDTHA = LVM_FIRST + 17;
  4480. {$EXTERNALSYM LVM_GETSTRINGWIDTHW}
  4481. LVM_GETSTRINGWIDTHW = LVM_FIRST + 87;
  4482. {$IFDEF UNICODE}
  4483. {$EXTERNALSYM LVM_GETSTRINGWIDTH}
  4484. LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
  4485. {$ELSE}
  4486. {$EXTERNALSYM LVM_GETSTRINGWIDTH}
  4487. LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
  4488. {$ENDIF}
  4489. {$EXTERNALSYM ListView_GetStringWidth}
  4490. function ListView_GetStringWidth(hwndLV: HWND; psz: PWideChar): Integer; inline;
  4491. {$EXTERNALSYM ListView_GetStringWidthA}
  4492. function ListView_GetStringWidthA(hwndLV: HWND; psz: PAnsiChar): Integer; inline;
  4493. {$EXTERNALSYM ListView_GetStringWidthW}
  4494. function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer; inline;
  4495. const
  4496. {$EXTERNALSYM LVHT_NOWHERE}
  4497. LVHT_NOWHERE = $0001;
  4498. {$EXTERNALSYM LVHT_ONITEMICON}
  4499. LVHT_ONITEMICON = $0002;
  4500. {$EXTERNALSYM LVHT_ONITEMLABEL}
  4501. LVHT_ONITEMLABEL = $0004;
  4502. {$EXTERNALSYM LVHT_ONITEMSTATEICON}
  4503. LVHT_ONITEMSTATEICON = $0008;
  4504. {$EXTERNALSYM LVHT_ONITEM}
  4505. LVHT_ONITEM = LVHT_ONITEMICON or LVHT_ONITEMLABEL or LVHT_ONITEMSTATEICON;
  4506. {$EXTERNALSYM LVHT_ABOVE}
  4507. LVHT_ABOVE = $0008;
  4508. {$EXTERNALSYM LVHT_BELOW}
  4509. LVHT_BELOW = $0010;
  4510. {$EXTERNALSYM LVHT_TORIGHT}
  4511. LVHT_TORIGHT = $0020;
  4512. {$EXTERNALSYM LVHT_TOLEFT}
  4513. LVHT_TOLEFT = $0040;
  4514. type
  4515. PLVHitTestInfo = ^TLVHitTestInfo;
  4516. {$EXTERNALSYM tagLVHITTESTINFO}
  4517. tagLVHITTESTINFO = record
  4518. pt: TPoint;
  4519. flags: UINT;
  4520. iItem: Integer;
  4521. iSubItem: Integer; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
  4522. iGroup: Integer; // readonly. index of group. only valid for owner data.
  4523. // supports single item in multiple groups.
  4524. end;
  4525. TLVHitTestInfo = tagLVHITTESTINFO;
  4526. {$EXTERNALSYM LV_HITTESTINFO}
  4527. LV_HITTESTINFO = tagLVHITTESTINFO;
  4528. {$EXTERNALSYM _LV_HITTESTINFO}
  4529. _LV_HITTESTINFO = tagLVHITTESTINFO;
  4530. const
  4531. {$EXTERNALSYM LVM_HITTEST}
  4532. LVM_HITTEST = LVM_FIRST + 18;
  4533. {$EXTERNALSYM ListView_HitTest}
  4534. function ListView_HitTest(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer; inline;
  4535. {$EXTERNALSYM ListView_HitTestEx}
  4536. function ListView_HitTestEx(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer; inline;
  4537. const
  4538. {$EXTERNALSYM LVM_ENSUREVISIBLE}
  4539. LVM_ENSUREVISIBLE = LVM_FIRST + 19;
  4540. {$EXTERNALSYM ListView_EnsureVisible}
  4541. function ListView_EnsureVisible(hwndLV: HWND; i: Integer; fPartialOK: Bool): Bool;
  4542. const
  4543. {$EXTERNALSYM LVM_SCROLL}
  4544. LVM_SCROLL = LVM_FIRST + 20;
  4545. {$EXTERNALSYM ListView_Scroll}
  4546. function ListView_Scroll(hwndLV: HWnd; DX, DY: Integer): Bool; inline;
  4547. const
  4548. {$EXTERNALSYM LVM_REDRAWITEMS}
  4549. LVM_REDRAWITEMS = LVM_FIRST + 21;
  4550. {$EXTERNALSYM ListView_RedrawItems}
  4551. function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool; inline;
  4552. const
  4553. {$EXTERNALSYM LVA_DEFAULT}
  4554. LVA_DEFAULT = $0000;
  4555. {$EXTERNALSYM LVA_ALIGNLEFT}
  4556. LVA_ALIGNLEFT = $0001;
  4557. {$EXTERNALSYM LVA_ALIGNTOP}
  4558. LVA_ALIGNTOP = $0002;
  4559. LVA_ALIGNRIGHT = $0003;
  4560. LVA_ALIGNBOTTOM = $0004;
  4561. {$EXTERNALSYM LVA_SNAPTOGRID}
  4562. LVA_SNAPTOGRID = $0005;
  4563. LVA_SORTASCENDING = $0100;
  4564. LVA_SORTDESCENDING = $0200;
  4565. {$EXTERNALSYM LVM_ARRANGE}
  4566. LVM_ARRANGE = LVM_FIRST + 22;
  4567. {$EXTERNALSYM ListView_Arrange}
  4568. function ListView_Arrange(hwndLV: HWND; Code: UINT): Bool; inline;
  4569. const
  4570. {$EXTERNALSYM LVM_EDITLABELA}
  4571. LVM_EDITLABELA = LVM_FIRST + 23;
  4572. {$EXTERNALSYM LVM_EDITLABELW}
  4573. LVM_EDITLABELW = LVM_FIRST + 118;
  4574. {$IFDEF UNICODE}
  4575. {$EXTERNALSYM LVM_EDITLABEL}
  4576. LVM_EDITLABEL = LVM_EDITLABELW;
  4577. {$ELSE}
  4578. {$EXTERNALSYM LVM_EDITLABEL}
  4579. LVM_EDITLABEL = LVM_EDITLABELA;
  4580. {$ENDIF}
  4581. {$EXTERNALSYM ListView_EditLabel}
  4582. function ListView_EditLabel(hwndLV: HWND; i: Integer): HWND; inline;
  4583. {$EXTERNALSYM ListView_EditLabelA}
  4584. function ListView_EditLabelA(hwndLV: HWND; i: Integer): HWND; inline;
  4585. {$EXTERNALSYM ListView_EditLabelW}
  4586. function ListView_EditLabelW(hwndLV: HWND; i: Integer): HWND; inline;
  4587. const
  4588. {$EXTERNALSYM LVM_GETEDITCONTROL}
  4589. LVM_GETEDITCONTROL = LVM_FIRST + 24;
  4590. {$EXTERNALSYM ListView_GetEditControl}
  4591. function ListView_GetEditControl(hwndLV: HWND): HWND; inline;
  4592. type
  4593. PLVColumnA = ^TLVColumnA;
  4594. PLVColumnW = ^TLVColumnW;
  4595. PLVColumn = PLVColumnW;
  4596. {$EXTERNALSYM tagLVCOLUMNA}
  4597. tagLVCOLUMNA = record
  4598. mask: UINT;
  4599. fmt: Integer;
  4600. cx: Integer;
  4601. pszText: PAnsiChar;
  4602. cchTextMax: Integer;
  4603. iSubItem: Integer;
  4604. iImage: Integer;
  4605. iOrder: Integer;
  4606. cxMin: Integer; // min snap point
  4607. cxDefault: Integer; // default snap point
  4608. cxIdeal: Integer; // read only. ideal may not eqaul current width if auto sized (LVS_EX_AUTOSIZECOLUMNS) to a lesser width.
  4609. end;
  4610. {$EXTERNALSYM tagLVCOLUMNW}
  4611. tagLVCOLUMNW = record
  4612. mask: UINT;
  4613. fmt: Integer;
  4614. cx: Integer;
  4615. pszText: PWideChar;
  4616. cchTextMax: Integer;
  4617. iSubItem: Integer;
  4618. iImage: Integer;
  4619. iOrder: Integer;
  4620. cxMin: Integer; // min snap point
  4621. cxDefault: Integer; // default snap point
  4622. cxIdeal: Integer; // read only. ideal may not eqaul current width if auto sized (LVS_EX_AUTOSIZECOLUMNS) to a lesser width.
  4623. end;
  4624. {$EXTERNALSYM tagLVCOLUMN}
  4625. tagLVCOLUMN = tagLVCOLUMNW;
  4626. {$EXTERNALSYM _LV_COLUMNA}
  4627. _LV_COLUMNA = tagLVCOLUMNA;
  4628. {$EXTERNALSYM _LV_COLUMNW}
  4629. _LV_COLUMNW = tagLVCOLUMNW;
  4630. {$EXTERNALSYM _LV_COLUMN}
  4631. _LV_COLUMN = _LV_COLUMNW;
  4632. TLVColumnA = tagLVCOLUMNA;
  4633. TLVColumnW = tagLVCOLUMNW;
  4634. TLVColumn = TLVColumnW;
  4635. {$EXTERNALSYM LV_COLUMNA}
  4636. LV_COLUMNA = tagLVCOLUMNA;
  4637. {$EXTERNALSYM LV_COLUMNW}
  4638. LV_COLUMNW = tagLVCOLUMNW;
  4639. {$EXTERNALSYM LV_COLUMN}
  4640. LV_COLUMN = LV_COLUMNW;
  4641. const
  4642. {$EXTERNALSYM LVCF_FMT}
  4643. LVCF_FMT = $0001;
  4644. {$EXTERNALSYM LVCF_WIDTH}
  4645. LVCF_WIDTH = $0002;
  4646. {$EXTERNALSYM LVCF_TEXT}
  4647. LVCF_TEXT = $0004;
  4648. {$EXTERNALSYM LVCF_SUBITEM}
  4649. LVCF_SUBITEM = $0008;
  4650. {$EXTERNALSYM LVCF_IMAGE}
  4651. LVCF_IMAGE = $0010;
  4652. {$EXTERNALSYM LVCF_ORDER}
  4653. LVCF_ORDER = $0020;
  4654. { For Windows >= Vista }
  4655. {$EXTERNALSYM LVCF_MINWIDTH}
  4656. LVCF_MINWIDTH = $0040;
  4657. {$EXTERNALSYM LVCF_DEFAULTWIDTH}
  4658. LVCF_DEFAULTWIDTH = $0080;
  4659. {$EXTERNALSYM LVCF_IDEALWIDTH}
  4660. LVCF_IDEALWIDTH = $0100;
  4661. // LVCFMT_ flags up to FFFF are shared with the header control (HDF_ flags).
  4662. // Flags above FFFF are listview-specific.
  4663. {$EXTERNALSYM LVCFMT_LEFT}
  4664. LVCFMT_LEFT = $0000;
  4665. {$EXTERNALSYM LVCFMT_RIGHT}
  4666. LVCFMT_RIGHT = $0001;
  4667. {$EXTERNALSYM LVCFMT_CENTER}
  4668. LVCFMT_CENTER = $0002;
  4669. {$EXTERNALSYM LVCFMT_JUSTIFYMASK}
  4670. LVCFMT_JUSTIFYMASK = $0003;
  4671. {$EXTERNALSYM LVCFMT_IMAGE}
  4672. LVCFMT_IMAGE = $0800;
  4673. {$EXTERNALSYM LVCFMT_BITMAP_ON_RIGHT}
  4674. LVCFMT_BITMAP_ON_RIGHT = $1000;
  4675. {$EXTERNALSYM LVCFMT_COL_HAS_IMAGES}
  4676. LVCFMT_COL_HAS_IMAGES = $8000;
  4677. { For Windows >= Vista }
  4678. {$EXTERNALSYM LVCFMT_FIXED_WIDTH}
  4679. LVCFMT_FIXED_WIDTH = $00100; // Can't resize the column; same as HDF_FIXEDWIDTH
  4680. {$EXTERNALSYM LVCFMT_NO_DPI_SCALE}
  4681. LVCFMT_NO_DPI_SCALE = $40000; // If not set, CCM_DPISCALE will govern scaling up fixed width
  4682. {$EXTERNALSYM LVCFMT_FIXED_RATIO}
  4683. LVCFMT_FIXED_RATIO = $80000; // Width will augment with the row height
  4684. { For Windows >= Vista }
  4685. // The following flags
  4686. {$EXTERNALSYM LVCFMT_LINE_BREAK}
  4687. LVCFMT_LINE_BREAK = $100000; // Move to the top of the next list of columns
  4688. {$EXTERNALSYM LVCFMT_FILL}
  4689. LVCFMT_FILL = $200000; // Fill the remainder of the tile area. Might have a title.
  4690. {$EXTERNALSYM LVCFMT_WRAP}
  4691. LVCFMT_WRAP = $400000; // This sub-item can be wrapped.
  4692. {$EXTERNALSYM LVCFMT_NO_TITLE}
  4693. LVCFMT_NO_TITLE = $800000; // This sub-item doesn't have an title.
  4694. {$EXTERNALSYM LVCFMT_TILE_PLACEMENTMASK}
  4695. LVCFMT_TILE_PLACEMENTMASK = LVCFMT_LINE_BREAK or LVCFMT_FILL;
  4696. { For Windows >= Vista }
  4697. {$EXTERNALSYM LVCFMT_SPLITBUTTON}
  4698. LVCFMT_SPLITBUTTON = $1000000; // Column is a split button; same as HDF_SPLITBUTTON
  4699. {$EXTERNALSYM LVM_GETCOLUMNA}
  4700. LVM_GETCOLUMNA = LVM_FIRST + 25;
  4701. {$EXTERNALSYM LVM_GETCOLUMNW}
  4702. LVM_GETCOLUMNW = LVM_FIRST + 95;
  4703. {$IFDEF UNICODE}
  4704. {$EXTERNALSYM LVM_GETCOLUMN}
  4705. LVM_GETCOLUMN = LVM_GETCOLUMNW;
  4706. {$ELSE}
  4707. {$EXTERNALSYM LVM_GETCOLUMN}
  4708. LVM_GETCOLUMN = LVM_GETCOLUMNA;
  4709. {$ENDIF}
  4710. {$EXTERNALSYM ListView_GetColumn}
  4711. function ListView_GetColumn(hwnd: HWND; iCol: Integer;
  4712. var pcol: TLVColumn): Bool; inline;
  4713. {$EXTERNALSYM ListView_GetColumnA}
  4714. function ListView_GetColumnA(hwnd: HWND; iCol: Integer;
  4715. var pcol: TLVColumnA): Bool; inline;
  4716. {$EXTERNALSYM ListView_GetColumnW}
  4717. function ListView_GetColumnW(hwnd: HWND; iCol: Integer;
  4718. var pcol: TLVColumnW): Bool; inline;
  4719. const
  4720. {$EXTERNALSYM LVM_SETCOLUMNA}
  4721. LVM_SETCOLUMNA = LVM_FIRST + 26;
  4722. {$EXTERNALSYM LVM_SETCOLUMNW}
  4723. LVM_SETCOLUMNW = LVM_FIRST + 96;
  4724. {$IFDEF UNICODE}
  4725. {$EXTERNALSYM LVM_SETCOLUMN}
  4726. LVM_SETCOLUMN = LVM_SETCOLUMNW;
  4727. {$ELSE}
  4728. {$EXTERNALSYM LVM_SETCOLUMN}
  4729. LVM_SETCOLUMN = LVM_SETCOLUMNA;
  4730. {$ENDIF}
  4731. {$EXTERNALSYM ListView_SetColumn}
  4732. function ListView_SetColumn(hwnd: HWnd; iCol: Integer; const pcol: TLVColumn): Bool; inline;
  4733. {$EXTERNALSYM ListView_SetColumnA}
  4734. function ListView_SetColumnA(hwnd: HWnd; iCol: Integer; const pcol: TLVColumnA): Bool; inline;
  4735. {$EXTERNALSYM ListView_SetColumnW}
  4736. function ListView_SetColumnW(hwnd: HWnd; iCol: Integer; const pcol: TLVColumnW): Bool; inline;
  4737. const
  4738. {$EXTERNALSYM LVM_INSERTCOLUMNA}
  4739. LVM_INSERTCOLUMNA = LVM_FIRST + 27;
  4740. {$EXTERNALSYM LVM_INSERTCOLUMNW}
  4741. LVM_INSERTCOLUMNW = LVM_FIRST + 97;
  4742. {$IFDEF UNICODE}
  4743. {$EXTERNALSYM LVM_INSERTCOLUMN}
  4744. LVM_INSERTCOLUMN = LVM_INSERTCOLUMNW;
  4745. {$ELSE}
  4746. {$EXTERNALSYM LVM_INSERTCOLUMN}
  4747. LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA;
  4748. {$ENDIF}
  4749. {$EXTERNALSYM ListView_InsertColumn}
  4750. function ListView_InsertColumn(hwnd: HWND; iCol: Integer;
  4751. const pcol: TLVColumn): Integer; inline;
  4752. {$EXTERNALSYM ListView_InsertColumnA}
  4753. function ListView_InsertColumnA(hwnd: HWND; iCol: Integer;
  4754. const pcol: TLVColumnA): Integer; inline;
  4755. {$EXTERNALSYM ListView_InsertColumnW}
  4756. function ListView_InsertColumnW(hwnd: HWND; iCol: Integer;
  4757. const pcol: TLVColumnW): Integer; inline;
  4758. const
  4759. {$EXTERNALSYM LVM_DELETECOLUMN}
  4760. LVM_DELETECOLUMN = LVM_FIRST + 28;
  4761. {$EXTERNALSYM ListView_DeleteColumn}
  4762. function ListView_DeleteColumn(hwnd: HWND; iCol: Integer): Bool; inline;
  4763. const
  4764. {$EXTERNALSYM LVM_GETCOLUMNWIDTH}
  4765. LVM_GETCOLUMNWIDTH = LVM_FIRST + 29;
  4766. {$EXTERNALSYM ListView_GetColumnWidth}
  4767. function ListView_GetColumnWidth(hwnd: HWND; iCol: Integer): Integer; inline;
  4768. const
  4769. {$EXTERNALSYM LVSCW_AUTOSIZE}
  4770. LVSCW_AUTOSIZE = -1;
  4771. {$EXTERNALSYM LVSCW_AUTOSIZE_USEHEADER}
  4772. LVSCW_AUTOSIZE_USEHEADER = -2;
  4773. {$EXTERNALSYM LVM_SETCOLUMNWIDTH}
  4774. LVM_SETCOLUMNWIDTH = LVM_FIRST + 30;
  4775. {$EXTERNALSYM ListView_SetColumnWidth}
  4776. function ListView_SetColumnWidth(hwnd: HWnd; iCol: Integer; cx: Integer): Bool;
  4777. const
  4778. {$EXTERNALSYM LVM_GETHEADER}
  4779. LVM_GETHEADER = LVM_FIRST + 31;
  4780. {$EXTERNALSYM ListView_GetHeader}
  4781. function ListView_GetHeader(hwnd: HWND): HWND;
  4782. const
  4783. {$EXTERNALSYM LVM_CREATEDRAGIMAGE}
  4784. LVM_CREATEDRAGIMAGE = LVM_FIRST + 33;
  4785. {$EXTERNALSYM ListView_CreateDragImage}
  4786. function ListView_CreateDragImage(hwnd: HWND; i: Integer;
  4787. const lpptUpLeft: TPoint): HIMAGELIST; inline;
  4788. const
  4789. {$EXTERNALSYM LVM_GETVIEWRECT}
  4790. LVM_GETVIEWRECT = LVM_FIRST + 34;
  4791. {$EXTERNALSYM ListView_GetViewRect}
  4792. function ListView_GetViewRect(hwnd: HWND; var prc: TRect): Bool; inline;
  4793. const
  4794. {$EXTERNALSYM LVM_GETTEXTCOLOR}
  4795. LVM_GETTEXTCOLOR = LVM_FIRST + 35;
  4796. {$EXTERNALSYM ListView_GetTextColor}
  4797. function ListView_GetTextColor(hwnd: HWND): TColorRef; inline;
  4798. const
  4799. {$EXTERNALSYM LVM_SETTEXTCOLOR}
  4800. LVM_SETTEXTCOLOR = LVM_FIRST + 36;
  4801. {$EXTERNALSYM ListView_SetTextColor}
  4802. function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool; inline;
  4803. const
  4804. {$EXTERNALSYM LVM_GETTEXTBKCOLOR}
  4805. LVM_GETTEXTBKCOLOR = LVM_FIRST + 37;
  4806. {$EXTERNALSYM ListView_GetTextBkColor}
  4807. function ListView_GetTextBkColor(hwnd: HWND): TColorRef; inline;
  4808. const
  4809. {$EXTERNALSYM LVM_SETTEXTBKCOLOR}
  4810. LVM_SETTEXTBKCOLOR = LVM_FIRST + 38;
  4811. {$EXTERNALSYM ListView_SetTextBkColor}
  4812. function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool; inline;
  4813. const
  4814. {$EXTERNALSYM LVM_GETTOPINDEX}
  4815. LVM_GETTOPINDEX = LVM_FIRST + 39;
  4816. {$EXTERNALSYM ListView_GetTopIndex}
  4817. function ListView_GetTopIndex(hwndLV: HWND): Integer; inline;
  4818. const
  4819. {$EXTERNALSYM LVM_GETCOUNTPERPAGE}
  4820. LVM_GETCOUNTPERPAGE = LVM_FIRST + 40;
  4821. {$EXTERNALSYM ListView_GetCountPerPage}
  4822. function ListView_GetCountPerPage(hwndLV: HWND): Integer; inline;
  4823. const
  4824. {$EXTERNALSYM LVM_GETORIGIN}
  4825. LVM_GETORIGIN = LVM_FIRST + 41;
  4826. {$EXTERNALSYM ListView_GetOrigin}
  4827. function ListView_GetOrigin(hwndLV: HWND; var ppt: TPoint): Bool; inline;
  4828. const
  4829. {$EXTERNALSYM LVM_UPDATE}
  4830. LVM_UPDATE = LVM_FIRST + 42;
  4831. {$EXTERNALSYM ListView_Update}
  4832. function ListView_Update(hwndLV: HWND; i: Integer): Bool; inline;
  4833. const
  4834. {$EXTERNALSYM LVM_SETITEMSTATE}
  4835. LVM_SETITEMSTATE = LVM_FIRST + 43;
  4836. {$EXTERNALSYM ListView_SetItemState}
  4837. function ListView_SetItemState(hwndLV: HWND; i: Integer; data, mask: UINT): Bool;
  4838. const
  4839. {$EXTERNALSYM LVM_GETITEMSTATE}
  4840. LVM_GETITEMSTATE = LVM_FIRST + 44;
  4841. {$EXTERNALSYM ListView_GetItemState}
  4842. function ListView_GetItemState(hwndLV: HWND; i, mask: Integer): Integer; inline;
  4843. {$EXTERNALSYM ListView_GetCheckState}
  4844. function ListView_GetCheckState(hwndLV: HWND; i: Integer): UINT; inline;
  4845. {$EXTERNALSYM ListView_SetCheckState}
  4846. procedure ListView_SetCheckState(hwndLV: HWND; i: Integer; Checked: Boolean);
  4847. const
  4848. {$EXTERNALSYM LVM_GETITEMTEXTA}
  4849. LVM_GETITEMTEXTA = LVM_FIRST + 45;
  4850. {$EXTERNALSYM LVM_GETITEMTEXTW}
  4851. LVM_GETITEMTEXTW = LVM_FIRST + 115;
  4852. {$IFDEF UNICODE}
  4853. {$EXTERNALSYM LVM_GETITEMTEXT}
  4854. LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
  4855. {$ELSE}
  4856. {$EXTERNALSYM LVM_GETITEMTEXT}
  4857. LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
  4858. {$ENDIF}
  4859. {$EXTERNALSYM ListView_GetItemText}
  4860. function ListView_GetItemText(hwndLV: HWND; i, iSubItem: Integer;
  4861. pszText: PWideChar; cchTextMax: Integer): Integer;
  4862. {$EXTERNALSYM ListView_GetItemTextA}
  4863. function ListView_GetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  4864. pszText: PAnsiChar; cchTextMax: Integer): Integer;
  4865. {$EXTERNALSYM ListView_GetItemTextW}
  4866. function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  4867. pszText: PWideChar; cchTextMax: Integer): Integer;
  4868. const
  4869. {$EXTERNALSYM LVM_SETITEMTEXTA}
  4870. LVM_SETITEMTEXTA = LVM_FIRST + 46;
  4871. {$EXTERNALSYM LVM_SETITEMTEXTW}
  4872. LVM_SETITEMTEXTW = LVM_FIRST + 116;
  4873. {$IFDEF UNICODE}
  4874. {$EXTERNALSYM LVM_SETITEMTEXT}
  4875. LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
  4876. {$ELSE}
  4877. {$EXTERNALSYM LVM_SETITEMTEXT}
  4878. LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
  4879. {$ENDIF}
  4880. {$EXTERNALSYM ListView_SetItemText}
  4881. function ListView_SetItemText(hwndLV: HWND; i, iSubItem: Integer;
  4882. pszText: PWideChar): Bool;
  4883. {$EXTERNALSYM ListView_SetItemTextA}
  4884. function ListView_SetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  4885. pszText: PAnsiChar): Bool;
  4886. {$EXTERNALSYM ListView_SetItemTextW}
  4887. function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  4888. pszText: PWideChar): Bool;
  4889. const
  4890. // these flags only apply to LVS_OWNERDATA listviews in report or list mode
  4891. {$EXTERNALSYM LVSICF_NOINVALIDATEALL}
  4892. LVSICF_NOINVALIDATEALL = $00000001;
  4893. {$EXTERNALSYM LVSICF_NOSCROLL}
  4894. LVSICF_NOSCROLL = $00000002;
  4895. {$EXTERNALSYM LVM_SETITEMCOUNT}
  4896. LVM_SETITEMCOUNT = LVM_FIRST + 47;
  4897. {$EXTERNALSYM ListView_SetItemCount}
  4898. procedure ListView_SetItemCount(hwndLV: HWND; cItems: Integer); inline;
  4899. {$EXTERNALSYM ListView_SetItemCountEx}
  4900. procedure ListView_SetItemCountEx(hwndLV: HWND; cItems: Integer; dwFlags: DWORD); inline;
  4901. type
  4902. {$EXTERNALSYM PFNLVCOMPARE}
  4903. PFNLVCOMPARE = function(lParam1, lParam2, lParamSort: LPARAM): Integer stdcall;
  4904. TLVCompare = PFNLVCOMPARE;
  4905. const
  4906. {$EXTERNALSYM LVM_SORTITEMS}
  4907. LVM_SORTITEMS = LVM_FIRST + 48;
  4908. {$EXTERNALSYM ListView_SortItems}
  4909. function ListView_SortItems(hwndLV: HWND; pfnCompare: TLVCompare;
  4910. lPrm: LPARAM): Bool; inline;
  4911. const
  4912. {$EXTERNALSYM LVM_SETITEMPOSITION32}
  4913. LVM_SETITEMPOSITION32 = LVM_FIRST + 49;
  4914. {$EXTERNALSYM ListView_SetItemPosition32}
  4915. procedure ListView_SetItemPosition32(hwndLV: HWND; i, x, y: Integer);
  4916. const
  4917. {$EXTERNALSYM LVM_GETSELECTEDCOUNT}
  4918. LVM_GETSELECTEDCOUNT = LVM_FIRST + 50;
  4919. {$EXTERNALSYM ListView_GetSelectedCount}
  4920. function ListView_GetSelectedCount(hwndLV: HWND): UINT; inline;
  4921. const
  4922. {$EXTERNALSYM LVM_GETITEMSPACING}
  4923. LVM_GETITEMSPACING = LVM_FIRST + 51;
  4924. {$EXTERNALSYM ListView_GetItemSpacing}
  4925. function ListView_GetItemSpacing(hwndLV: HWND; fSmall: Integer): DWORD; inline;
  4926. const
  4927. {$EXTERNALSYM LVM_GETISEARCHSTRINGA}
  4928. LVM_GETISEARCHSTRINGA = LVM_FIRST + 52;
  4929. {$EXTERNALSYM LVM_GETISEARCHSTRINGW}
  4930. LVM_GETISEARCHSTRINGW = LVM_FIRST + 117;
  4931. {$IFDEF UNICODE}
  4932. {$EXTERNALSYM LVM_GETISEARCHSTRING}
  4933. LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
  4934. {$ELSE}
  4935. {$EXTERNALSYM LVM_GETISEARCHSTRING}
  4936. LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
  4937. {$ENDIF}
  4938. {$EXTERNALSYM ListView_GetISearchString}
  4939. function ListView_GetISearchString(hwndLV: HWND; lpsz: PWideChar): Bool; inline;
  4940. {$EXTERNALSYM ListView_GetISearchStringA}
  4941. function ListView_GetISearchStringA(hwndLV: HWND; lpsz: PAnsiChar): Bool; inline;
  4942. {$EXTERNALSYM ListView_GetISearchStringW}
  4943. function ListView_GetISearchStringW(hwndLV: HWND; lpsz: PWideChar): Bool; inline;
  4944. const
  4945. {$EXTERNALSYM LVM_SETICONSPACING}
  4946. LVM_SETICONSPACING = LVM_FIRST + 53;
  4947. // -1 for cx and cy means we'll use the default (system settings)
  4948. // 0 for cx or cy means use the current setting (allows you to change just one param)
  4949. {$EXTERNALSYM ListView_SetIconSpacing}
  4950. function ListView_SetIconSpacing(hwndLV: HWND; cx, cy: Word): DWORD;
  4951. const
  4952. {$EXTERNALSYM LVM_SETEXTENDEDLISTVIEWSTYLE}
  4953. LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
  4954. {$EXTERNALSYM ListView_SetExtendedListViewStyle}
  4955. function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL; inline;
  4956. {$EXTERNALSYM ListView_SetExtendedListViewStyleEx}
  4957. function ListView_SetExtendedListViewStyleEx(hwndLV: HWND; dwMask: DWORD; dw: DWORD): BOOL; inline;
  4958. const
  4959. {$EXTERNALSYM LVM_GETEXTENDEDLISTVIEWSTYLE}
  4960. LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
  4961. {$EXTERNALSYM ListView_GetExtendedListViewStyle}
  4962. function ListView_GetExtendedListViewStyle(hwndLV: HWND): DWORD; inline;
  4963. const
  4964. {$EXTERNALSYM LVM_GETSUBITEMRECT}
  4965. LVM_GETSUBITEMRECT = LVM_FIRST + 56;
  4966. {$EXTERNALSYM ListView_GetSubItemRect}
  4967. function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer;
  4968. code: DWORD; prc: PRect): BOOL;
  4969. const
  4970. {$EXTERNALSYM LVM_SUBITEMHITTEST}
  4971. LVM_SUBITEMHITTEST = LVM_FIRST + 57;
  4972. {$EXTERNALSYM ListView_SubItemHitTest}
  4973. function ListView_SubItemHitTest(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer; inline;
  4974. {$EXTERNALSYM ListView_SubItemHitTestEx}
  4975. function ListView_SubItemHitTestEx(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer; inline;
  4976. const
  4977. {$EXTERNALSYM LVM_SETCOLUMNORDERARRAY}
  4978. LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58;
  4979. {$EXTERNALSYM ListView_SetColumnOrderArray}
  4980. function ListView_SetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  4981. pi: PInteger): BOOL; inline;
  4982. const
  4983. {$EXTERNALSYM LVM_GETCOLUMNORDERARRAY}
  4984. LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59;
  4985. {$EXTERNALSYM ListView_GetColumnOrderArray}
  4986. function ListView_GetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  4987. pi: PInteger): BOOL; inline;
  4988. const
  4989. {$EXTERNALSYM LVM_SETHOTITEM}
  4990. LVM_SETHOTITEM = LVM_FIRST + 60;
  4991. {$EXTERNALSYM ListView_SetHotItem}
  4992. function ListView_SetHotItem(hwndLV: HWND; i: Integer): Integer; inline;
  4993. const
  4994. {$EXTERNALSYM LVM_GETHOTITEM}
  4995. LVM_GETHOTITEM = LVM_FIRST + 61;
  4996. {$EXTERNALSYM ListView_GetHotItem}
  4997. function ListView_GetHotItem(hwndLV: HWND): Integer; inline;
  4998. const
  4999. {$EXTERNALSYM LVM_SETHOTCURSOR}
  5000. LVM_SETHOTCURSOR = LVM_FIRST + 62;
  5001. {$EXTERNALSYM ListView_SetHotCursor}
  5002. function ListView_SetHotCursor(hwndLV: HWND; hcur: HCURSOR): HCURSOR; inline;
  5003. const
  5004. {$EXTERNALSYM LVM_GETHOTCURSOR}
  5005. LVM_GETHOTCURSOR = LVM_FIRST + 63;
  5006. {$EXTERNALSYM ListView_GetHotCursor}
  5007. function ListView_GetHotCursor(hwndLV: HWND): HCURSOR; inline;
  5008. const
  5009. {$EXTERNALSYM LVM_APPROXIMATEVIEWRECT}
  5010. LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64;
  5011. {$EXTERNALSYM ListView_ApproximateViewRect}
  5012. function ListView_ApproximateViewRect(hwndLV: HWND; iWidth, iHeight: Word;
  5013. iCount: Integer): DWORD;
  5014. const
  5015. {$EXTERNALSYM LV_MAX_WORKAREAS}
  5016. LV_MAX_WORKAREAS = 16;
  5017. {$EXTERNALSYM LVM_SETWORKAREA}
  5018. LVM_SETWORKAREA = LVM_FIRST + 65;
  5019. {$EXTERNALSYM ListView_SetWorkAreas}
  5020. function ListView_SetWorkAreas(hwndLV: HWND; nWorkAreas: Integer; prc: PRect): BOOL; inline;
  5021. const
  5022. {$EXTERNALSYM LVM_GETSELECTIONMARK}
  5023. LVM_GETSELECTIONMARK = LVM_FIRST + 66;
  5024. {$EXTERNALSYM ListView_GetSelectionMark}
  5025. function ListView_GetSelectionMark(hwnd: HWND): Integer; inline;
  5026. const
  5027. {$EXTERNALSYM LVM_SETSELECTIONMARK}
  5028. LVM_SETSELECTIONMARK = LVM_FIRST + 67;
  5029. {$EXTERNALSYM ListView_SetSelectionMark}
  5030. function ListView_SetSelectionMark(hwnd: HWND; i: Integer): Integer; inline;
  5031. const
  5032. {$EXTERNALSYM LVM_GETWORKAREAS}
  5033. LVM_GETWORKAREAS = LVM_FIRST + 70;
  5034. {$EXTERNALSYM ListView_GetWorkAreas}
  5035. function ListView_GetWorkAreas(hwnd: HWND; nWorkAreas: Integer; prc: PRect): BOOL; inline;
  5036. const
  5037. {$EXTERNALSYM LVM_SETHOVERTIME}
  5038. LVM_SETHOVERTIME = LVM_FIRST + 71;
  5039. {$EXTERNALSYM ListView_SetHoverTime}
  5040. function ListView_SetHoverTime(hwndLV: HWND; dwHoverTimeMs: DWORD): DWORD; inline;
  5041. const
  5042. {$EXTERNALSYM LVM_GETHOVERTIME}
  5043. LVM_GETHOVERTIME = LVM_FIRST + 72;
  5044. {$EXTERNALSYM ListView_GetHoverTime}
  5045. function ListView_GetHoverTime(hwndLV: HWND): Integer; inline;
  5046. const
  5047. {$EXTERNALSYM LVM_GETNUMBEROFWORKAREAS}
  5048. LVM_GETNUMBEROFWORKAREAS = LVM_FIRST + 73;
  5049. {$EXTERNALSYM ListView_GetNumberOfWorkAreas}
  5050. function ListView_GetNumberOfWorkAreas(hwnd: HWND; pnWorkAreas: PInteger): Integer; inline;
  5051. const
  5052. {$EXTERNALSYM LVM_SETTOOLTIPS}
  5053. LVM_SETTOOLTIPS = LVM_FIRST + 74;
  5054. {$EXTERNALSYM ListView_SetToolTips}
  5055. function ListView_SetToolTips(hwndLV: HWND; hwndNewHwnd: HWND): HWND; inline;
  5056. const
  5057. {$EXTERNALSYM LVM_GETTOOLTIPS}
  5058. LVM_GETTOOLTIPS = LVM_FIRST + 78;
  5059. {$EXTERNALSYM ListView_GetToolTips}
  5060. function ListView_GetToolTips(hwndLV: HWND): HWND; inline;
  5061. const
  5062. {$EXTERNALSYM LVM_SORTITEMSEX}
  5063. LVM_SORTITEMSEX = LVM_FIRST + 81;
  5064. {$EXTERNALSYM ListView_SortItemsEx}
  5065. function ListView_SortItemsEx(hwndLV: HWND; _pfnCompare: TLVCompare; _lPrm: LPARAM): BOOL; inline;
  5066. type
  5067. {$EXTERNALSYM tagLVBKIMAGEA}
  5068. tagLVBKIMAGEA = record
  5069. ulFlags: ULONG; // LVBKIF_*
  5070. hbm: HBITMAP;
  5071. pszImage: PAnsiChar;
  5072. cchImageMax: UINT;
  5073. xOffsetPercent: Integer;
  5074. yOffsetPercent: Integer;
  5075. end;
  5076. {$EXTERNALSYM tagLVBKIMAGEW}
  5077. tagLVBKIMAGEW = record
  5078. ulFlags: ULONG; // LVBKIF_*
  5079. hbm: HBITMAP;
  5080. pszImage: PWideChar;
  5081. cchImageMax: UINT;
  5082. xOffsetPercent: Integer;
  5083. yOffsetPercent: Integer;
  5084. end;
  5085. {$EXTERNALSYM tagLVBKIMAGE}
  5086. tagLVBKIMAGE = tagLVBKIMAGEW;
  5087. PLVBKImageA = ^TLVBKImageA;
  5088. PLVBKImageW = ^TLVBKImageW;
  5089. PLVBKImage = PLVBKImageW;
  5090. TLVBKImageA = tagLVBKIMAGEA;
  5091. TLVBKImageW = tagLVBKIMAGEW;
  5092. TLVBKImage = TLVBKImageW;
  5093. const
  5094. {$EXTERNALSYM LVBKIF_SOURCE_NONE}
  5095. LVBKIF_SOURCE_NONE = $00000000;
  5096. {$EXTERNALSYM LVBKIF_SOURCE_HBITMAP}
  5097. LVBKIF_SOURCE_HBITMAP = $00000001;
  5098. {$EXTERNALSYM LVBKIF_SOURCE_URL}
  5099. LVBKIF_SOURCE_URL = $00000002;
  5100. {$EXTERNALSYM LVBKIF_SOURCE_MASK}
  5101. LVBKIF_SOURCE_MASK = $00000003;
  5102. {$EXTERNALSYM LVBKIF_STYLE_NORMAL}
  5103. LVBKIF_STYLE_NORMAL = $00000000;
  5104. {$EXTERNALSYM LVBKIF_STYLE_TILE}
  5105. LVBKIF_STYLE_TILE = $00000010;
  5106. {$EXTERNALSYM LVBKIF_STYLE_MASK}
  5107. LVBKIF_STYLE_MASK = $00000010;
  5108. { For Windows >= XP }
  5109. {$EXTERNALSYM LVBKIF_FLAG_TILEOFFSET}
  5110. LVBKIF_FLAG_TILEOFFSET = $00000100;
  5111. {$EXTERNALSYM LVBKIF_TYPE_WATERMARK}
  5112. LVBKIF_TYPE_WATERMARK = $10000000;
  5113. {$EXTERNALSYM LVBKIF_FLAG_ALPHABLEND}
  5114. LVBKIF_FLAG_ALPHABLEND = $20000000;
  5115. {$EXTERNALSYM LVM_SETBKIMAGEA}
  5116. LVM_SETBKIMAGEA = LVM_FIRST + 68;
  5117. {$EXTERNALSYM LVM_SETBKIMAGEW}
  5118. LVM_SETBKIMAGEW = LVM_FIRST + 138;
  5119. {$EXTERNALSYM LVM_GETBKIMAGEA}
  5120. LVM_GETBKIMAGEA = LVM_FIRST + 69;
  5121. {$EXTERNALSYM LVM_GETBKIMAGEW}
  5122. LVM_GETBKIMAGEW = LVM_FIRST + 139;
  5123. { For Windows >= XP }
  5124. {$EXTERNALSYM LVM_SETSELECTEDCOLUMN}
  5125. LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140;
  5126. {$EXTERNALSYM LVM_SETVIEW}
  5127. LVM_SETVIEW = LVM_FIRST + 142;
  5128. {$EXTERNALSYM LVM_GETVIEW}
  5129. LVM_GETVIEW = LVM_FIRST + 143;
  5130. { For Windows >= XP }
  5131. {$EXTERNALSYM ListView_SetSelectedColumn}
  5132. function ListView_SetSelectedColumn(hwnd: HWND; iCol: Integer): Integer; inline;
  5133. {$EXTERNALSYM ListView_SetView}
  5134. function ListView_SetView(hwnd: HWND; iView: Integer): Integer; inline;
  5135. {$EXTERNALSYM ListView_GetView}
  5136. function ListView_GetView(hwnd: HWND): Integer; inline;
  5137. const
  5138. { For Windows >= XP }
  5139. {$EXTERNALSYM LV_VIEW_ICON}
  5140. LV_VIEW_ICON = $0000;
  5141. {$EXTERNALSYM LV_VIEW_DETAILS}
  5142. LV_VIEW_DETAILS = $0001;
  5143. {$EXTERNALSYM LV_VIEW_SMALLICON}
  5144. LV_VIEW_SMALLICON = $0002;
  5145. {$EXTERNALSYM LV_VIEW_LIST}
  5146. LV_VIEW_LIST = $0003;
  5147. {$EXTERNALSYM LV_VIEW_TILE}
  5148. LV_VIEW_TILE = $0004;
  5149. {$EXTERNALSYM LV_VIEW_MAX}
  5150. LV_VIEW_MAX = $0004;
  5151. { For Windows >= XP }
  5152. {$EXTERNALSYM LVGF_NONE}
  5153. LVGF_NONE = $00000000;
  5154. {$EXTERNALSYM LVGF_HEADER}
  5155. LVGF_HEADER = $00000001;
  5156. {$EXTERNALSYM LVGF_FOOTER}
  5157. LVGF_FOOTER = $00000002;
  5158. {$EXTERNALSYM LVGF_STATE}
  5159. LVGF_STATE = $00000004;
  5160. {$EXTERNALSYM LVGF_ALIGN}
  5161. LVGF_ALIGN = $00000008;
  5162. {$EXTERNALSYM LVGF_GROUPID}
  5163. LVGF_GROUPID = $00000010;
  5164. { For Windows >= Vista }
  5165. {$EXTERNALSYM LVGF_SUBTITLE}
  5166. LVGF_SUBTITLE = $00000100; { pszSubtitle is valid }
  5167. {$EXTERNALSYM LVGF_TASK}
  5168. LVGF_TASK = $00000200; { pszTask is valid }
  5169. {$EXTERNALSYM LVGF_DESCRIPTIONTOP}
  5170. LVGF_DESCRIPTIONTOP = $00000400; { pszDescriptionTop is valid }
  5171. {$EXTERNALSYM LVGF_DESCRIPTIONBOTTOM}
  5172. LVGF_DESCRIPTIONBOTTOM = $00000800; { pszDescriptionBottom is valid }
  5173. {$EXTERNALSYM LVGF_TITLEIMAGE}
  5174. LVGF_TITLEIMAGE = $00001000; { iTitleImage is valid }
  5175. {$EXTERNALSYM LVGF_EXTENDEDIMAGE}
  5176. LVGF_EXTENDEDIMAGE = $00002000; { iExtendedImage is valid }
  5177. {$EXTERNALSYM LVGF_ITEMS}
  5178. LVGF_ITEMS = $00004000; { iFirstItem and cItems are valid }
  5179. {$EXTERNALSYM LVGF_SUBSET}
  5180. LVGF_SUBSET = $00008000; { pszSubsetTitle is valid }
  5181. {$EXTERNALSYM LVGF_SUBSETITEMS}
  5182. LVGF_SUBSETITEMS = $00010000; { readonly, cItems holds count of items in visible subset, iFirstItem is valid }
  5183. { For Windows >= XP }
  5184. {$EXTERNALSYM LVGS_NORMAL}
  5185. LVGS_NORMAL = $00000000;
  5186. {$EXTERNALSYM LVGS_COLLAPSED}
  5187. LVGS_COLLAPSED = $00000001;
  5188. {$EXTERNALSYM LVGS_HIDDEN}
  5189. LVGS_HIDDEN = $00000002;
  5190. {$EXTERNALSYM LVGS_NOHEADER}
  5191. LVGS_NOHEADER = $00000004;
  5192. {$EXTERNALSYM LVGS_COLLAPSIBLE}
  5193. LVGS_COLLAPSIBLE = $00000008;
  5194. {$EXTERNALSYM LVGS_FOCUSED}
  5195. LVGS_FOCUSED = $00000010;
  5196. {$EXTERNALSYM LVGS_SELECTED}
  5197. LVGS_SELECTED = $00000020;
  5198. {$EXTERNALSYM LVGS_SUBSETED}
  5199. LVGS_SUBSETED = $00000040;
  5200. {$EXTERNALSYM LVGS_SUBSETLINKFOCUSED}
  5201. LVGS_SUBSETLINKFOCUSED = $00000080;
  5202. { For Windows >= XP }
  5203. {$EXTERNALSYM LVGA_HEADER_LEFT}
  5204. LVGA_HEADER_LEFT = $00000001;
  5205. {$EXTERNALSYM LVGA_HEADER_CENTER}
  5206. LVGA_HEADER_CENTER = $00000002;
  5207. {$EXTERNALSYM LVGA_HEADER_RIGHT}
  5208. LVGA_HEADER_RIGHT = $00000004; { Don't forget to validate exclusivity }
  5209. {$EXTERNALSYM LVGA_FOOTER_LEFT}
  5210. LVGA_FOOTER_LEFT = $00000008;
  5211. {$EXTERNALSYM LVGA_FOOTER_CENTER}
  5212. LVGA_FOOTER_CENTER = $00000010;
  5213. {$EXTERNALSYM LVGA_FOOTER_RIGHT}
  5214. LVGA_FOOTER_RIGHT = $00000020; { Don't forget to validate exclusivity }
  5215. type
  5216. { $EXTERNALSYM tagLVGROUP}
  5217. tagLVGROUP = record
  5218. cbSize: UINT;
  5219. mask: UINT;
  5220. pszHeader: LPWSTR;
  5221. cchHeader: Integer;
  5222. pszFooter: LPWSTR;
  5223. cchFooter: Integer;
  5224. iGroupId: Integer;
  5225. stateMask: UINT;
  5226. state: UINT;
  5227. uAlign: UINT;
  5228. {For Windows >= Vista}
  5229. pszSubtitle: LPWSTR;
  5230. cchSubtitle: UINT;
  5231. pszTask: LPWSTR;
  5232. cchTask: UINT;
  5233. pszDescriptionTop: LPWSTR;
  5234. cchDescriptionTop: UINT;
  5235. pszDescriptionBottom: LPWSTR;
  5236. cchDescriptionBottom: UINT;
  5237. iTitleImage: Integer;
  5238. iExtendedImage: Integer;
  5239. iFirstItem: Integer; { Read only }
  5240. cItems: UINT; { Read only }
  5241. pszSubsetTitle: LPWSTR; { NULL if group is not subset }
  5242. cchSubsetTitle: UINT;
  5243. end;
  5244. PLVGroup = ^TLVGroup;
  5245. TLVGroup = tagLVGROUP;
  5246. const
  5247. { For Windows >= XP }
  5248. {$EXTERNALSYM LVM_INSERTGROUP}
  5249. LVM_INSERTGROUP = LVM_FIRST + 145;
  5250. {$EXTERNALSYM LVM_SETGROUPINFO}
  5251. LVM_SETGROUPINFO = LVM_FIRST + 147;
  5252. {$EXTERNALSYM LVM_GETGROUPINFO}
  5253. LVM_GETGROUPINFO = LVM_FIRST + 149;
  5254. {$EXTERNALSYM LVM_REMOVEGROUP}
  5255. LVM_REMOVEGROUP = LVM_FIRST + 150;
  5256. {$EXTERNALSYM LVM_MOVEGROUP}
  5257. LVM_MOVEGROUP = LVM_FIRST + 151;
  5258. { For Windows >= Vista }
  5259. {$EXTERNALSYM LVM_GETGROUPCOUNT}
  5260. LVM_GETGROUPCOUNT = LVM_FIRST + 152;
  5261. {$EXTERNALSYM LVM_GETGROUPINFOBYINDEX}
  5262. LVM_GETGROUPINFOBYINDEX = LVM_FIRST + 153;
  5263. {$EXTERNALSYM LVM_MOVEITEMTOGROUP}
  5264. LVM_MOVEITEMTOGROUP = LVM_FIRST + 154;
  5265. { For Windows >= XP }
  5266. {$EXTERNALSYM ListView_InsertGroup}
  5267. function ListView_InsertGroup(hwnd: HWND; index: Integer; const pgrp: TLVGroup): Integer; inline;
  5268. {$EXTERNALSYM ListView_SetGroupInfo}
  5269. function ListView_SetGroupInfo(hwnd: HWND; iGroupId: Integer; const pgrp: TLVGroup): Integer; inline;
  5270. {$EXTERNALSYM ListView_GetGroupInfo}
  5271. function ListView_GetGroupInfo(hwnd: HWND; iGroupId: Integer; var pgrp: TLVGroup): Integer; inline;
  5272. {$EXTERNALSYM ListView_RemoveGroup}
  5273. function ListView_RemoveGroup(hwnd: HWND; iGroupId: Integer): Integer; inline;
  5274. {$EXTERNALSYM ListView_MoveGroup}
  5275. function ListView_MoveGroup(hwnd: HWND; iGroupId, toIndex: Integer): Integer; inline;
  5276. { For Windows >= Vista }
  5277. {$EXTERNALSYM ListView_GetGroupCount}
  5278. function ListView_GetGroupCount(hwnd: HWND): Integer; inline;
  5279. {$EXTERNALSYM ListView_GetGroupInfoByIndex}
  5280. function ListView_GetGroupInfoByIndex(hwnd: HWND; iIndex: Integer; var pgrp: TLVGroup): Integer; inline;
  5281. {$EXTERNALSYM ListView_MoveItemToGroup}
  5282. function ListView_MoveItemToGroup(hwnd: HWND; idItemFrom, idGroupTo: Integer): Integer; inline;
  5283. const
  5284. { For Windows >= Vista }
  5285. {$EXTERNALSYM LVGGR_GROUP}
  5286. LVGGR_GROUP = 0; // Entire expanded group
  5287. {$EXTERNALSYM LVGGR_HEADER}
  5288. LVGGR_HEADER = 1; // Header only (collapsed group)
  5289. {$EXTERNALSYM LVGGR_LABEL}
  5290. LVGGR_LABEL = 2; // Label only
  5291. {$EXTERNALSYM LVGGR_SUBSETLINK}
  5292. LVGGR_SUBSETLINK = 3; // subset link only
  5293. { For Windows >= Vista }
  5294. {$EXTERNALSYM LVM_GETGROUPRECT}
  5295. LVM_GETGROUPRECT = LVM_FIRST + 98;
  5296. { For Windows >= Vista }
  5297. {$EXTERNALSYM ListView_GetGroupRect}
  5298. function ListView_GetGroupRect(hwnd: HWND; iGroupId, iType: Integer;
  5299. var prc: TRect): Integer; inline;
  5300. const
  5301. { For Windows >= XP }
  5302. {$EXTERNALSYM LVGMF_NONE}
  5303. LVGMF_NONE = $00000000;
  5304. {$EXTERNALSYM LVGMF_BORDERSIZE}
  5305. LVGMF_BORDERSIZE = $00000001;
  5306. {$EXTERNALSYM LVGMF_BORDERCOLOR}
  5307. LVGMF_BORDERCOLOR = $00000002;
  5308. {$EXTERNALSYM LVGMF_TEXTCOLOR}
  5309. LVGMF_TEXTCOLOR = $00000004;
  5310. type
  5311. { For Windows >= XP }
  5312. { $EXTERNALSYM tagLVGROUPMETRICS}
  5313. tagLVGROUPMETRICS = record
  5314. cbSize: UINT;
  5315. mask: UINT;
  5316. Left: UINT;
  5317. Top: UINT;
  5318. Right: UINT;
  5319. Bottom: UINT;
  5320. crLeft: COLORREF;
  5321. crTop: COLORREF;
  5322. crRight: COLORREF;
  5323. crBottom: COLORREF;
  5324. crHeader: COLORREF;
  5325. crFooter: COLORREF;
  5326. end;
  5327. PLVGroupMetrics = ^TLVGroupMetrics;
  5328. TLVGroupMetrics = tagLVGROUPMETRICS;
  5329. const
  5330. { For Windows >= XP }
  5331. {$EXTERNALSYM LVM_SETGROUPMETRICS}
  5332. LVM_SETGROUPMETRICS = LVM_FIRST + 155;
  5333. {$EXTERNALSYM LVM_GETGROUPMETRICS}
  5334. LVM_GETGROUPMETRICS = LVM_FIRST + 156;
  5335. {$EXTERNALSYM LVM_ENABLEGROUPVIEW}
  5336. LVM_ENABLEGROUPVIEW = LVM_FIRST + 157;
  5337. {$EXTERNALSYM LVM_SORTGROUPS}
  5338. LVM_SORTGROUPS = LVM_FIRST + 158;
  5339. type
  5340. { For Windows >= XP }
  5341. { $EXTERNALSYM PFNLVGROUPCOMPARE}
  5342. PFNLVGROUPCOMPARE = function(Group1_ID: Integer; Group2_ID: Integer;
  5343. pvData: Pointer): Integer; stdcall;
  5344. TFNLVGroupCompare = PFNLVGROUPCOMPARE;
  5345. { For Windows >= XP }
  5346. {$EXTERNALSYM ListView_SetGroupMetrics}
  5347. function ListView_SetGroupMetrics(hwnd: HWND; const pGroupMetrics: TLVGroupMetrics): Integer; inline;
  5348. {$EXTERNALSYM ListView_GetGroupMetrics}
  5349. function ListView_GetGroupMetrics(hwnd: HWND; var pGroupMetrics: TLVGroupMetrics): Integer; inline;
  5350. {$EXTERNALSYM ListView_EnableGroupView}
  5351. function ListView_EnableGroupView(hwnd: HWND; fEnable: BOOL): Integer; inline;
  5352. {$EXTERNALSYM ListView_SortGroups}
  5353. function ListView_SortGroups(hwnd: HWND; pfnGroupCompare: TFNLVGroupCompare; plv: Pointer): Integer; inline;
  5354. type
  5355. { For Windows >= XP }
  5356. { $EXTERNALSYM tagLVINSERTGROUPSORTED}
  5357. tagLVINSERTGROUPSORTED = record
  5358. pfnGroupCompare: PFNLVGROUPCOMPARE;
  5359. pvData: Pointer;
  5360. lvGroup: TLVGroup;
  5361. end;
  5362. PLVInsertGroupSorted = ^TLVInsertGroupSorted;
  5363. TLVInsertGroupSorted = tagLVINSERTGROUPSORTED;
  5364. const
  5365. { For Windows >= XP }
  5366. {$EXTERNALSYM LVM_INSERTGROUPSORTED}
  5367. LVM_INSERTGROUPSORTED = LVM_FIRST + 159;
  5368. {$EXTERNALSYM LVM_REMOVEALLGROUPS}
  5369. LVM_REMOVEALLGROUPS = LVM_FIRST + 160;
  5370. {$EXTERNALSYM LVM_HASGROUP}
  5371. LVM_HASGROUP = LVM_FIRST + 161;
  5372. { For Windows >= Vista }
  5373. {$EXTERNALSYM LVM_GETGROUPSTATE}
  5374. LVM_GETGROUPSTATE = LVM_FIRST + 92;
  5375. {$EXTERNALSYM LVM_GETFOCUSEDGROUP}
  5376. LVM_GETFOCUSEDGROUP = LVM_FIRST + 93;
  5377. { For Windows >= XP }
  5378. {$EXTERNALSYM ListView_InsertGroupSorted}
  5379. function ListView_InsertGroupSorted(hwnd: HWND; const structInsert: TLVInsertGroupSorted): Integer; inline;
  5380. {$EXTERNALSYM ListView_RemoveAllGroups}
  5381. function ListView_RemoveAllGroups(hwnd: HWND): Integer; inline;
  5382. {$EXTERNALSYM ListView_HasGroup}
  5383. function ListView_HasGroup(hwnd: HWND; dwGroupId: Integer): Integer; inline;
  5384. { For Windows >= Vista }
  5385. {$EXTERNALSYM ListView_SetGroupState}
  5386. function ListView_SetGroupState(hwnd: HWND; dwGroupId, dwMask, dwState: UINT): Integer;
  5387. {$EXTERNALSYM ListView_GetGroupState}
  5388. function ListView_GetGroupState(hwnd: HWND; dwGroupId, dwMask: UINT): Integer; inline;
  5389. {$EXTERNALSYM ListView_GetFocusedGroup}
  5390. function ListView_GetFocusedGroup(hwnd: HWND): Integer; inline;
  5391. const
  5392. { For Windows >= XP }
  5393. {$EXTERNALSYM LVTVIF_AUTOSIZE}
  5394. LVTVIF_AUTOSIZE = $00000000;
  5395. {$EXTERNALSYM LVTVIF_FIXEDWIDTH}
  5396. LVTVIF_FIXEDWIDTH = $00000001;
  5397. {$EXTERNALSYM LVTVIF_FIXEDHEIGHT}
  5398. LVTVIF_FIXEDHEIGHT = $00000002;
  5399. {$EXTERNALSYM LVTVIF_FIXEDSIZE}
  5400. LVTVIF_FIXEDSIZE = $00000003;
  5401. { For Windows >= Vista }
  5402. {$EXTERNALSYM LVTVIF_EXTENDED}
  5403. LVTVIF_EXTENDED = $00000004;
  5404. { For Windows >= XP }
  5405. {$EXTERNALSYM LVTVIM_TILESIZE}
  5406. LVTVIM_TILESIZE = $00000001;
  5407. {$EXTERNALSYM LVTVIM_COLUMNS}
  5408. LVTVIM_COLUMNS = $00000002;
  5409. {$EXTERNALSYM LVTVIM_LABELMARGIN}
  5410. LVTVIM_LABELMARGIN = $00000004;
  5411. type
  5412. { For Windows >= XP }
  5413. { $EXTERNALSYM tagLVTILEVIEWINFO}
  5414. tagLVTILEVIEWINFO = record
  5415. cbSize: UINT;
  5416. dwMask: DWORD; // LVTVIM_*
  5417. dwFlags: DWORD; // LVTVIF_*
  5418. sizeTile: SIZE;
  5419. cLines: Integer;
  5420. rcLabelMargin: TRect;
  5421. end;
  5422. PLVTileViewInfo = ^TLVTileViewInfo;
  5423. TLVTileViewInfo = tagLVTILEVIEWINFO;
  5424. { For Windows >= XP }
  5425. { $EXTERNALSYM tagLVTILEINFO}
  5426. tagLVTILEINFO = record
  5427. cbSize: UINT;
  5428. iItem: Integer;
  5429. cColumns: UINT;
  5430. puColumns: PUINT;
  5431. piColFmt: PInteger;
  5432. end;
  5433. PLVTileInfo = ^TLVTileInfo;
  5434. TLVTileInfo = tagLVTILEINFO;
  5435. const
  5436. { For Windows >= XP }
  5437. {$EXTERNALSYM LVM_SETTILEVIEWINFO}
  5438. LVM_SETTILEVIEWINFO = LVM_FIRST + 162;
  5439. {$EXTERNALSYM LVM_GETTILEVIEWINFO}
  5440. LVM_GETTILEVIEWINFO = LVM_FIRST + 163;
  5441. {$EXTERNALSYM LVM_SETTILEINFO}
  5442. LVM_SETTILEINFO = LVM_FIRST + 164;
  5443. {$EXTERNALSYM LVM_GETTILEINFO}
  5444. LVM_GETTILEINFO = LVM_FIRST + 165;
  5445. { For Windows >= XP }
  5446. {$EXTERNALSYM ListView_SetTileViewInfo}
  5447. function ListView_SetTileViewInfo(hwnd: HWND; const ptvi: TLVTileViewInfo): Integer; inline;
  5448. {$EXTERNALSYM ListView_GetTileViewInfo}
  5449. function ListView_GetTileViewInfo(hwnd: HWND; var ptvi: TLVTileViewInfo): Integer; inline;
  5450. {$EXTERNALSYM ListView_SetTileInfo}
  5451. function ListView_SetTileInfo(hwnd: HWND; const pti: TLVTileInfo): Integer; inline;
  5452. {$EXTERNALSYM ListView_GetTileInfo}
  5453. function ListView_GetTileInfo(hwnd: HWND; var pti: TLVTileInfo): Integer; inline;
  5454. type
  5455. { For Windows >= XP }
  5456. { $EXTERNALSYM tagLVINSERTMARK}
  5457. tagLVINSERTMARK = record
  5458. cbSize: UINT;
  5459. dwFlags: DWORD;
  5460. iItem: Integer;
  5461. dwReserved: DWORD;
  5462. end;
  5463. PLVInsertMark = ^TLVInsertMark;
  5464. TLVInsertMark = tagLVINSERTMARK;
  5465. const
  5466. { For Windows >= XP }
  5467. {$EXTERNALSYM LVIM_AFTER}
  5468. LVIM_AFTER = $00000001; // TRUE = insert After iItem, otherwise before
  5469. { For Windows >= XP }
  5470. {$EXTERNALSYM LVM_SETINSERTMARK}
  5471. LVM_SETINSERTMARK = LVM_FIRST + 166;
  5472. {$EXTERNALSYM LVM_GETINSERTMARK}
  5473. LVM_GETINSERTMARK = LVM_FIRST + 167;
  5474. {$EXTERNALSYM LVM_INSERTMARKHITTEST}
  5475. LVM_INSERTMARKHITTEST = LVM_FIRST + 168;
  5476. {$EXTERNALSYM LVM_GETINSERTMARKRECT}
  5477. LVM_GETINSERTMARKRECT = LVM_FIRST + 169;
  5478. {$EXTERNALSYM LVM_SETINSERTMARKCOLOR}
  5479. LVM_SETINSERTMARKCOLOR = LVM_FIRST + 170;
  5480. {$EXTERNALSYM LVM_GETINSERTMARKCOLOR}
  5481. LVM_GETINSERTMARKCOLOR = LVM_FIRST + 171;
  5482. { For Windows >= XP }
  5483. {$EXTERNALSYM ListView_SetInsertMark}
  5484. function ListView_SetInsertMark(hwnd: HWND; const lvim: TLVInsertMark): BOOL; inline;
  5485. {$EXTERNALSYM ListView_GetInsertMark}
  5486. function ListView_GetInsertMark(hwnd: HWND; var lvim: TLVInsertMark): BOOL; inline;
  5487. {$EXTERNALSYM ListView_InsertMarkHitTest}
  5488. function ListView_InsertMarkHitTest(hwnd: HWND; const point: TPoint;
  5489. const lvim: TLVInsertMark): Integer; inline;
  5490. {$EXTERNALSYM ListView_GetInsertMarkRect}
  5491. function ListView_GetInsertMarkRect(hwnd: HWND; var rc: TRect): Integer; inline;
  5492. {$EXTERNALSYM ListView_SetInsertMarkColor}
  5493. function ListView_SetInsertMarkColor(hwnd: HWND; color: TColorRef): TColorRef; inline;
  5494. {$EXTERNALSYM ListView_GetInsertMarkColor}
  5495. function ListView_GetInsertMarkColor(hwnd: HWND): TColorRef; inline;
  5496. type
  5497. { For Windows >= XP }
  5498. { $EXTERNALSYM tagLVSETINFOTIP}
  5499. tagLVSETINFOTIP = record
  5500. cbSize: UINT;
  5501. dwFlags: DWORD;
  5502. pszText: LPWSTR;
  5503. iItem: Integer;
  5504. iSubItem: Integer;
  5505. end;
  5506. PLVSetInfoTip = ^TLVSetInfoTip;
  5507. TLVSetInfoTip = tagLVSETINFOTIP;
  5508. const
  5509. { For Windows >= XP }
  5510. {$EXTERNALSYM LVM_SETINFOTIP}
  5511. LVM_SETINFOTIP = LVM_FIRST + 173;
  5512. {$EXTERNALSYM LVM_GETSELECTEDCOLUMN}
  5513. LVM_GETSELECTEDCOLUMN = LVM_FIRST + 174;
  5514. {$EXTERNALSYM LVM_ISGROUPVIEWENABLED}
  5515. LVM_ISGROUPVIEWENABLED = LVM_FIRST + 175;
  5516. {$EXTERNALSYM LVM_GETOUTLINECOLOR}
  5517. LVM_GETOUTLINECOLOR = LVM_FIRST + 176;
  5518. {$EXTERNALSYM LVM_SETOUTLINECOLOR}
  5519. LVM_SETOUTLINECOLOR = LVM_FIRST + 177;
  5520. {$EXTERNALSYM LVM_CANCELEDITLABEL}
  5521. LVM_CANCELEDITLABEL = LVM_FIRST + 179;
  5522. {$EXTERNALSYM LVM_MAPINDEXTOID}
  5523. LVM_MAPINDEXTOID = LVM_FIRST + 180;
  5524. {$EXTERNALSYM LVM_MAPIDTOINDEX}
  5525. LVM_MAPIDTOINDEX = LVM_FIRST + 181;
  5526. { For Windows >= Vista }
  5527. {$EXTERNALSYM LVM_ISITEMVISIBLE}
  5528. LVM_ISITEMVISIBLE = LVM_FIRST + 182;
  5529. { For Windows >= XP }
  5530. {$EXTERNALSYM ListView_SetInfoTip}
  5531. function ListView_SetInfoTip(hwndLV: HWND; const plvInfoTip: TLVSetInfoTip): BOOL; inline;
  5532. {$EXTERNALSYM ListView_GetSelectedColumn}
  5533. function ListView_GetSelectedColumn(hwnd: HWND): UINT; inline;
  5534. {$EXTERNALSYM ListView_IsGroupViewEnabled}
  5535. function ListView_IsGroupViewEnabled(hwnd: HWND): BOOL; inline;
  5536. {$EXTERNALSYM ListView_GetOutlineColor}
  5537. function ListView_GetOutlineColor(hwnd: HWND): TColorRef; inline;
  5538. {$EXTERNALSYM ListView_SetOutlineColor}
  5539. function ListView_SetOutlineColor(hwnd: HWND; color: TColorRef): TColorRef; inline;
  5540. {$EXTERNALSYM ListView_CancelEditLabel}
  5541. function ListView_CancelEditLabel(hwnd: HWND): Integer; inline;
  5542. // These next two methods make it easy to identify an item that can be repositioned
  5543. // within listview. For example: Many developers use the lParam to store an identifier that is
  5544. // unique. Unfortunatly, in order to find this item, they have to iterate through all of the items
  5545. // in the listview. Listview will maintain a unique identifier. The upper bound is the size of a DWORD.
  5546. {$EXTERNALSYM ListView_MapIndexToID}
  5547. function ListView_MapIndexToID(hwnd: HWND; index: UINT): UINT; inline;
  5548. {$EXTERNALSYM ListView_MapIDToIndex}
  5549. function ListView_MapIDToIndex(hwnd: HWND; id: UINT): UINT; inline;
  5550. { For Windows >= Vista }
  5551. {$EXTERNALSYM ListView_IsItemVisible}
  5552. function ListView_IsItemVisible(hwnd: HWND; index: UINT): UINT; inline;
  5553. {$EXTERNALSYM ListView_SetGroupHeaderImageList}
  5554. function ListView_SetGroupHeaderImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST; inline;
  5555. {$EXTERNALSYM ListView_GetGroupHeaderImageList}
  5556. function ListView_GetGroupHeaderImageList(hwnd: HWND): HIMAGELIST; inline;
  5557. const
  5558. { For Windows >= Vista }
  5559. {$EXTERNALSYM LVM_GETEMPTYTEXT}
  5560. LVM_GETEMPTYTEXT = LVM_FIRST + 204;
  5561. {$EXTERNALSYM LVM_GETFOOTERRECT}
  5562. LVM_GETFOOTERRECT = LVM_FIRST + 205;
  5563. { For Windows >= Vista }
  5564. {$EXTERNALSYM ListView_GetEmptyText}
  5565. function ListView_GetEmptyText(hwnd: HWND; pszText: LPWSTR; cchText: UINT): BOOL; inline;
  5566. {$EXTERNALSYM ListView_GetFooterRect}
  5567. function ListView_GetFooterRect(hwnd: HWND; var prc: TRect): BOOL; inline;
  5568. const
  5569. // footer flags
  5570. { For Windows >= Vista }
  5571. {$EXTERNALSYM LVFF_ITEMCOUNT}
  5572. LVFF_ITEMCOUNT = $00000001;
  5573. type
  5574. { For Windows >= Vista }
  5575. { $EXTERNALSYM tagLVFOOTERINFO}
  5576. tagLVFOOTERINFO = record
  5577. mask: UINT; // LVFF_*
  5578. pszText: LPWSTR;
  5579. cchTextMax: Integer;
  5580. cItems: UINT;
  5581. end;
  5582. PLVFooterInfo = ^TLVFooterInfo;
  5583. TLVFooterInfo = tagLVFOOTERINFO;
  5584. const
  5585. { For Windows >= Vista }
  5586. {$EXTERNALSYM LVM_GETFOOTERINFO}
  5587. LVM_GETFOOTERINFO = LVM_FIRST + 206;
  5588. {$EXTERNALSYM LVM_GETFOOTERITEMRECT}
  5589. LVM_GETFOOTERITEMRECT = LVM_FIRST + 207;
  5590. { For Windows >= Vista }
  5591. {$EXTERNALSYM ListView_GetFooterInfo}
  5592. function ListView_GetFooterInfo(hwnd: HWND; var plvfi: TLVFooterInfo): BOOL; inline;
  5593. {$EXTERNALSYM ListView_GetFooterItemRect}
  5594. function ListView_GetFooterItemRect(hwnd: HWND; iItem: UINT; var prc: TRect): BOOL; inline;
  5595. const
  5596. { For Windows >= Vista }
  5597. // footer item flags
  5598. {$EXTERNALSYM LVFIF_TEXT}
  5599. LVFIF_TEXT = $00000001;
  5600. {$EXTERNALSYM LVFIF_STATE}
  5601. LVFIF_STATE = $00000002;
  5602. { For Windows >= Vista }
  5603. // footer item state
  5604. {$EXTERNALSYM LVFIS_FOCUSED}
  5605. LVFIS_FOCUSED = $0001;
  5606. type
  5607. { For Windows >= Vista }
  5608. { $EXTERNALSYM tagLVFOOTERITEM}
  5609. tagLVFOOTERITEM = record
  5610. mask: UINT; // LVFIF_*
  5611. iItem: Integer;
  5612. pszText: LPWSTR;
  5613. cchTextMax: Integer;
  5614. state: UINT; // LVFIS_*
  5615. stateMask: UINT; // LVFIS_*
  5616. end;
  5617. PLVFooterItem = ^TLVFooterItem;
  5618. TLVFooterItem = tagLVFOOTERITEM;
  5619. const
  5620. { For Windows >= Vista }
  5621. {$EXTERNALSYM LVM_GETFOOTERITEM}
  5622. LVM_GETFOOTERITEM = LVM_FIRST + 208;
  5623. {$EXTERNALSYM ListView_GetFooterItem}
  5624. function ListView_GetFooterItem(hwnd: HWND; iItem: UINT; var pfi: TLVFooterItem): BOOL; inline;
  5625. // supports a single item in multiple groups.
  5626. type
  5627. { For Windows >= Vista }
  5628. { $EXTERNALSYM tagLVITEMINDEX}
  5629. tagLVITEMINDEX = record
  5630. iItem: Integer; // listview item index
  5631. iGroup: Integer; // group index (must be -1 if group view is not enabled)
  5632. end;
  5633. PLVItemIndex = ^TLVItemIndex;
  5634. TLVItemIndex = tagLVITEMINDEX;
  5635. const
  5636. { For Windows >= Vista }
  5637. {$EXTERNALSYM LVM_GETITEMINDEXRECT}
  5638. LVM_GETITEMINDEXRECT = LVM_FIRST + 209;
  5639. {$EXTERNALSYM LVM_SETITEMINDEXSTATE}
  5640. LVM_SETITEMINDEXSTATE = LVM_FIRST + 210;
  5641. {$EXTERNALSYM LVM_GETNEXTITEMINDEX}
  5642. LVM_GETNEXTITEMINDEX = LVM_FIRST + 211;
  5643. { For Windows >= Vista }
  5644. {$EXTERNALSYM ListView_GetItemIndexRect}
  5645. function ListView_GetItemIndexRect(hwnd: HWND; const plvii: TLVItemIndex;
  5646. iSubItem, code: Integer; var prc: TRect): BOOL; inline;
  5647. {$EXTERNALSYM ListView_SetItemIndexState}
  5648. function ListView_SetItemIndexState(hwnd: HWND; const plvii: TLVItemIndex;
  5649. data, mask: UINT): HRESULT;
  5650. {$EXTERNALSYM ListView_GetNextItemIndex}
  5651. function ListView_GetNextItemIndex(hwnd: HWND; var plvii: TLVItemIndex;
  5652. flags: LPARAM): BOOL; inline;
  5653. const
  5654. {$IFDEF UNICODE}
  5655. {$EXTERNALSYM LVM_SETBKIMAGE}
  5656. LVM_SETBKIMAGE = LVM_SETBKIMAGEW;
  5657. {$EXTERNALSYM LVM_GETBKIMAGE}
  5658. LVM_GETBKIMAGE = LVM_GETBKIMAGEW;
  5659. {$ELSE}
  5660. {$EXTERNALSYM LVM_SETBKIMAGE}
  5661. LVM_SETBKIMAGE = LVM_SETBKIMAGEA;
  5662. {$EXTERNALSYM LVM_GETBKIMAGE}
  5663. LVM_GETBKIMAGE = LVM_GETBKIMAGEA;
  5664. {$ENDIF}
  5665. {$EXTERNALSYM ListView_SetBkImage}
  5666. function ListView_SetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL; inline;
  5667. {$EXTERNALSYM ListView_SetBkImage}
  5668. function ListView_SetBkImageA(hwnd: HWND; plvbki: PLVBKImageA): BOOL; inline;
  5669. {$EXTERNALSYM ListView_SetBkImage}
  5670. function ListView_SetBkImageW(hwnd: HWND; plvbki: PLVBKImageW): BOOL; inline;
  5671. {$EXTERNALSYM ListView_GetBkImage}
  5672. function ListView_GetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL; inline;
  5673. {$EXTERNALSYM ListView_GetBkImage}
  5674. function ListView_GetBkImageA(hwnd: HWND; plvbki: PLVBKImageA): BOOL; inline;
  5675. {$EXTERNALSYM ListView_GetBkImage}
  5676. function ListView_GetBkImageW(hwnd: HWND; plvbki: PLVBKImageW): BOOL; inline;
  5677. type
  5678. {$EXTERNALSYM tagNMLISTVIEW}
  5679. tagNMLISTVIEW = record
  5680. hdr: TNMHDR;
  5681. iItem: Integer;
  5682. iSubItem: Integer;
  5683. uNewState: UINT;
  5684. uOldState: UINT;
  5685. uChanged: UINT;
  5686. ptAction: TPoint;
  5687. lParam: LPARAM;
  5688. end;
  5689. {$EXTERNALSYM _NM_LISTVIEW}
  5690. _NM_LISTVIEW = tagNMLISTVIEW;
  5691. {$EXTERNALSYM NM_LISTVIEW}
  5692. NM_LISTVIEW = tagNMLISTVIEW;
  5693. PNMListView = ^TNMListView;
  5694. TNMListView = tagNMLISTVIEW;
  5695. // NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
  5696. // therefore all the fields are the same except for extra uKeyFlags
  5697. // they are used to store key flags at the time of the single click with
  5698. // delayed activation - because by the time the timer goes off a user may
  5699. // not hold the keys (shift, ctrl) any more
  5700. {$EXTERNALSYM tagNMITEMACTIVATE}
  5701. tagNMITEMACTIVATE = record
  5702. hdr: TNMHdr;
  5703. iItem: Integer;
  5704. iSubItem: Integer;
  5705. uNewState: UINT;
  5706. uOldState: UINT;
  5707. uChanged: UINT;
  5708. ptAction: TPoint;
  5709. lParam: LPARAM;
  5710. uKeyFlags: UINT;
  5711. end;
  5712. PNMItemActivate = ^TNMItemActivate;
  5713. TNMItemActivate = tagNMITEMACTIVATE;
  5714. const
  5715. // key flags stored in uKeyFlags
  5716. {$EXTERNALSYM LVKF_ALT}
  5717. LVKF_ALT = $0001;
  5718. {$EXTERNALSYM LVKF_CONTROL}
  5719. LVKF_CONTROL = $0002;
  5720. {$EXTERNALSYM LVKF_SHIFT}
  5721. LVKF_SHIFT = $0004;
  5722. type
  5723. {$EXTERNALSYM tagNMLVCUSTOMDRAW}
  5724. tagNMLVCUSTOMDRAW = record
  5725. nmcd: TNMCustomDraw;
  5726. clrText: COLORREF;
  5727. clrTextBk: COLORREF;
  5728. iSubItem: Integer;
  5729. dwItemType: DWORD;
  5730. // Item custom draw
  5731. clrFace: COLORREF;
  5732. iIconEffect: Integer;
  5733. iIconPhase: Integer;
  5734. iPartId: Integer;
  5735. iStateId: Integer;
  5736. // Group Custom Draw
  5737. rcText: TRect;
  5738. uAlign: UINT; // Alignment. Use LVGA_HEADER_CENTER, LVGA_HEADER_RIGHT, LVGA_HEADER_LEFT
  5739. end;
  5740. PNMLVCustomDraw = ^TNMLVCustomDraw;
  5741. TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
  5742. const
  5743. //dwItemType
  5744. LVCDI_ITEM = $00000000;
  5745. {$EXTERNALSYM LVCDI_ITEM}
  5746. LVCDI_GROUP = $00000001;
  5747. {$EXTERNALSYM LVCDI_GROUP}
  5748. LVCDI_ITEMSLIST = $00000002;
  5749. {$EXTERNALSYM LVCDI_ITEMSLIST}
  5750. // ListView custom draw return values
  5751. LVCDRF_NOSELECT = $00010000;
  5752. {$EXTERNALSYM LVCDRF_NOSELECT}
  5753. LVCDRF_NOGROUPFRAME = $00020000;
  5754. {$EXTERNALSYM LVCDRF_NOGROUPFRAME}
  5755. type
  5756. {$EXTERNALSYM tagNMLVCACHEHINT}
  5757. tagNMLVCACHEHINT = record
  5758. hdr: TNMHDR;
  5759. iFrom: Integer;
  5760. iTo: Integer;
  5761. end;
  5762. PNMLVCacheHint = ^TNMLVCacheHint;
  5763. TNMLVCacheHint = tagNMLVCACHEHINT;
  5764. PNMCacheHint = ^TNMCacheHint;
  5765. TNMCacheHint = tagNMLVCACHEHINT;
  5766. {$EXTERNALSYM tagNMLVFINDITEMA}
  5767. tagNMLVFINDITEMA = record // WIN2K
  5768. hdr: TNMHdr;
  5769. iStart: Integer;
  5770. lvfi: TLVFindInfoA;
  5771. end;
  5772. {$EXTERNALSYM tagNMLVFINDITEMW}
  5773. tagNMLVFINDITEMW = record // WIN2K
  5774. hdr: TNMHdr;
  5775. iStart: Integer;
  5776. lvfi: TLVFindInfoW;
  5777. end;
  5778. {$EXTERNALSYM tagNMLVFINDITEM}
  5779. tagNMLVFINDITEM = tagNMLVFINDITEMW;
  5780. PNMLVFinditemA = ^TNMLVFinditemA;
  5781. PNMLVFinditemW = ^TNMLVFinditemW;
  5782. PNMLVFinditem = PNMLVFinditemW;
  5783. TNMLVFinditemA = tagNMLVFINDITEMA; // WIN2K
  5784. TNMLVFinditemW = tagNMLVFINDITEMW; // WIN2K
  5785. TNMLVFinditem = TNMLVFinditemW;
  5786. PNMFinditemA = ^TNMFinditemA;
  5787. PNMFinditemW = ^TNMFinditemW;
  5788. PNMFinditem = PNMFinditemW;
  5789. TNMFinditemA = tagNMLVFINDITEMA; // WIN2K
  5790. TNMFinditemW = tagNMLVFINDITEMW; // WIN2K
  5791. TNMFinditem = TNMFinditemW;
  5792. {$EXTERNALSYM tagNMLVODSTATECHANGE}
  5793. tagNMLVODSTATECHANGE = record
  5794. hdr: TNMHdr;
  5795. iFrom: Integer;
  5796. iTo: Integer;
  5797. uNewState: UINT;
  5798. uOldState: UINT;
  5799. end;
  5800. PNMLVODStateChange = ^TNMLVODStateChange;
  5801. TNMLVODStateChange = tagNMLVODSTATECHANGE;
  5802. const
  5803. {$EXTERNALSYM LVN_ITEMCHANGING}
  5804. LVN_ITEMCHANGING = LVN_FIRST-0;
  5805. {$EXTERNALSYM LVN_ITEMCHANGED}
  5806. LVN_ITEMCHANGED = LVN_FIRST-1;
  5807. {$EXTERNALSYM LVN_INSERTITEM}
  5808. LVN_INSERTITEM = LVN_FIRST-2;
  5809. {$EXTERNALSYM LVN_DELETEITEM}
  5810. LVN_DELETEITEM = LVN_FIRST-3;
  5811. {$EXTERNALSYM LVN_DELETEALLITEMS}
  5812. LVN_DELETEALLITEMS = LVN_FIRST-4;
  5813. {$EXTERNALSYM LVN_COLUMNCLICK}
  5814. LVN_COLUMNCLICK = LVN_FIRST-8;
  5815. {$EXTERNALSYM LVN_BEGINDRAG}
  5816. LVN_BEGINDRAG = LVN_FIRST-9;
  5817. {$EXTERNALSYM LVN_BEGINRDRAG}
  5818. LVN_BEGINRDRAG = LVN_FIRST-11;
  5819. {$EXTERNALSYM LVN_ODCACHEHINT}
  5820. LVN_ODCACHEHINT = LVN_FIRST-13;
  5821. {$EXTERNALSYM LVN_ODFINDITEMA}
  5822. LVN_ODFINDITEMA = LVN_FIRST-52;
  5823. {$EXTERNALSYM LVN_ODFINDITEMW}
  5824. LVN_ODFINDITEMW = LVN_FIRST-79;
  5825. {$EXTERNALSYM LVN_ITEMACTIVATE}
  5826. LVN_ITEMACTIVATE = LVN_FIRST-14;
  5827. {$EXTERNALSYM LVN_ODSTATECHANGED}
  5828. LVN_ODSTATECHANGED = LVN_FIRST-15;
  5829. {$IFDEF UNICODE}
  5830. {$EXTERNALSYM LVN_ODFINDITEM}
  5831. LVN_ODFINDITEM = LVN_ODFINDITEMW;
  5832. {$ELSE}
  5833. {$EXTERNALSYM LVN_ODFINDITEM}
  5834. LVN_ODFINDITEM = LVN_ODFINDITEMA;
  5835. {$ENDIF}
  5836. {$EXTERNALSYM LVN_BEGINLABELEDITA}
  5837. LVN_BEGINLABELEDITA = LVN_FIRST-5;
  5838. {$EXTERNALSYM LVN_ENDLABELEDITA}
  5839. LVN_ENDLABELEDITA = LVN_FIRST-6;
  5840. {$EXTERNALSYM LVN_BEGINLABELEDITW}
  5841. LVN_BEGINLABELEDITW = LVN_FIRST-75;
  5842. {$EXTERNALSYM LVN_ENDLABELEDITW}
  5843. LVN_ENDLABELEDITW = LVN_FIRST-76;
  5844. {$IFDEF UNICODE}
  5845. {$EXTERNALSYM LVN_BEGINLABELEDIT}
  5846. LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
  5847. {$EXTERNALSYM LVN_ENDLABELEDIT}
  5848. LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
  5849. {$ELSE}
  5850. {$EXTERNALSYM LVN_BEGINLABELEDIT}
  5851. LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
  5852. {$EXTERNALSYM LVN_ENDLABELEDIT}
  5853. LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
  5854. {$ENDIF}
  5855. {$EXTERNALSYM LVN_HOTTRACK}
  5856. LVN_HOTTRACK = LVN_FIRST-21;
  5857. {$EXTERNALSYM LVN_GETDISPINFOA}
  5858. LVN_GETDISPINFOA = LVN_FIRST-50;
  5859. {$EXTERNALSYM LVN_SETDISPINFOA}
  5860. LVN_SETDISPINFOA = LVN_FIRST-51;
  5861. {$EXTERNALSYM LVN_GETDISPINFOW}
  5862. LVN_GETDISPINFOW = LVN_FIRST-77;
  5863. {$EXTERNALSYM LVN_SETDISPINFOW}
  5864. LVN_SETDISPINFOW = LVN_FIRST-78;
  5865. {$IFDEF UNICODE}
  5866. {$EXTERNALSYM LVN_GETDISPINFO}
  5867. LVN_GETDISPINFO = LVN_GETDISPINFOW;
  5868. {$EXTERNALSYM LVN_SETDISPINFO}
  5869. LVN_SETDISPINFO = LVN_SETDISPINFOW;
  5870. {$ELSE}
  5871. {$EXTERNALSYM LVN_GETDISPINFO}
  5872. LVN_GETDISPINFO = LVN_GETDISPINFOA;
  5873. {$EXTERNALSYM LVN_SETDISPINFO}
  5874. LVN_SETDISPINFO = LVN_SETDISPINFOA;
  5875. {$ENDIF}
  5876. {$EXTERNALSYM LVIF_DI_SETITEM}
  5877. LVIF_DI_SETITEM = $1000;
  5878. type
  5879. {$IFNDEF UNICODE}
  5880. PLVDispInfoA = ^TLVDispInfoA;
  5881. PLVDispInfoW = ^TLVDispInfoW;
  5882. PLVDispInfo = PLVDispInfoA;
  5883. {$EXTERNALSYM tagLVDISPINFO}
  5884. tagLVDISPINFO = record
  5885. hdr: TNMHDR;
  5886. item: TLVItemA;
  5887. end;
  5888. {$EXTERNALSYM _LV_DISPINFO}
  5889. _LV_DISPINFO = tagLVDISPINFO;
  5890. {$EXTERNALSYM tagLVDISPINFOW}
  5891. tagLVDISPINFOW = record
  5892. hdr: TNMHDR;
  5893. item: TLVItemW;
  5894. end;
  5895. {$EXTERNALSYM _LV_DISPINFOW}
  5896. _LV_DISPINFOW = tagLVDISPINFOW;
  5897. TLVDispInfoA = tagLVDISPINFO;
  5898. TLVDispInfoW = tagLVDISPINFOW;
  5899. TLVDispInfo = TLVDispInfoA;
  5900. {$EXTERNALSYM LV_DISPINFOA}
  5901. LV_DISPINFOA = tagLVDISPINFO;
  5902. {$EXTERNALSYM LV_DISPINFOW}
  5903. LV_DISPINFOW = tagLVDISPINFOW;
  5904. {$EXTERNALSYM LV_DISPINFO}
  5905. LV_DISPINFO = LV_DISPINFOA;
  5906. {$ELSE}
  5907. PLVDispInfoA = ^TLVDispInfoA;
  5908. PLVDispInfoW = ^TLVDispInfoW;
  5909. PLVDispInfo = PLVDispInfoW;
  5910. {$EXTERNALSYM tagLVDISPINFOW}
  5911. tagLVDISPINFOW = record
  5912. hdr: TNMHDR;
  5913. item: TLVItemW;
  5914. end;
  5915. {$EXTERNALSYM tagLVDISPINFO}
  5916. tagLVDISPINFO = tagLVDISPINFOW;
  5917. {$EXTERNALSYM _LV_DISPINFO}
  5918. _LV_DISPINFO = tagLVDISPINFOW;
  5919. {$EXTERNALSYM tagLVDISPINFOA}
  5920. tagLVDISPINFOA = record
  5921. hdr: TNMHDR;
  5922. item: TLVItemA;
  5923. end;
  5924. {$EXTERNALSYM _LV_DISPINFOW}
  5925. _LV_DISPINFOW = tagLVDISPINFO;
  5926. TLVDispInfoW = tagLVDISPINFO;
  5927. TLVDispInfoA = tagLVDISPINFO;
  5928. TLVDispInfo = TLVDispInfoW;
  5929. {$EXTERNALSYM LV_DISPINFOW}
  5930. LV_DISPINFOW = tagLVDISPINFOW;
  5931. {$EXTERNALSYM LV_DISPINFOA}
  5932. LV_DISPINFOA = tagLVDISPINFO;
  5933. {$EXTERNALSYM LV_DISPINFO}
  5934. LV_DISPINFO = LV_DISPINFOW;
  5935. {$ENDIF}
  5936. const
  5937. {$EXTERNALSYM LVN_KEYDOWN}
  5938. LVN_KEYDOWN = LVN_FIRST-55;
  5939. {$ALIGN 1}
  5940. type
  5941. PLVKeyDown = ^TLVKeyDown;
  5942. {$EXTERNALSYM tagLVKEYDOWN}
  5943. tagLVKEYDOWN = record
  5944. hdr: TNMHDR;
  5945. wVKey: Word;
  5946. flags: UINT;
  5947. end;
  5948. {$EXTERNALSYM _LV_KEYDOWN}
  5949. _LV_KEYDOWN = tagLVKEYDOWN;
  5950. TLVKeyDown = tagLVKEYDOWN;
  5951. {$EXTERNALSYM LV_KEYDOWN}
  5952. LV_KEYDOWN = tagLVKEYDOWN;
  5953. {$ALIGN ON}
  5954. const
  5955. {$EXTERNALSYM LVN_MARQUEEBEGIN}
  5956. LVN_MARQUEEBEGIN = LVN_FIRST-56;
  5957. type
  5958. { For Windows >= Vista }
  5959. { $EXTERNALSYM tagNMLVLINK}
  5960. tagNMLVLINK = record
  5961. hdr: NMHDR;
  5962. link: TLItem;
  5963. iItem: Integer;
  5964. iSubItem: Integer;
  5965. end;
  5966. PNMLVLink = ^TNMLVLink;
  5967. TNMLVLink = tagNMLVLINK;
  5968. type
  5969. {$EXTERNALSYM tagNMLVGETINFOTIPA}
  5970. tagNMLVGETINFOTIPA = record
  5971. hdr: TNMHdr;
  5972. dwFlags: DWORD;
  5973. pszText: PAnsiChar;
  5974. cchTextMax: Integer;
  5975. iItem: Integer;
  5976. iSubItem: Integer;
  5977. lParam: LPARAM;
  5978. end;
  5979. {$EXTERNALSYM tagNMLVGETINFOTIPW}
  5980. tagNMLVGETINFOTIPW = record
  5981. hdr: TNMHdr;
  5982. dwFlags: DWORD;
  5983. pszText: PWideChar;
  5984. cchTextMax: Integer;
  5985. iItem: Integer;
  5986. iSubItem: Integer;
  5987. lParam: LPARAM;
  5988. end;
  5989. {$EXTERNALSYM tagNMLVGETINFOTIP}
  5990. tagNMLVGETINFOTIP = tagNMLVGETINFOTIPW;
  5991. PNMLVGetInfoTipA = ^TNMLVGetInfoTipA;
  5992. PNMLVGetInfoTipW = ^TNMLVGetInfoTipW;
  5993. PNMLVGetInfoTip = PNMLVGetInfoTipW;
  5994. TNMLVGetInfoTipA = tagNMLVGETINFOTIPA;
  5995. TNMLVGetInfoTipW = tagNMLVGETINFOTIPW;
  5996. TNMLVGetInfoTip = TNMLVGetInfoTipW;
  5997. const
  5998. // NMLVGETINFOTIPA.dwFlag values
  5999. {$EXTERNALSYM LVGIT_UNFOLDED}
  6000. LVGIT_UNFOLDED = $0001;
  6001. {$EXTERNALSYM LVN_GETINFOTIPA}
  6002. LVN_GETINFOTIPA = LVN_FIRST-57;
  6003. {$EXTERNALSYM LVN_GETINFOTIPW}
  6004. LVN_GETINFOTIPW = LVN_FIRST-58;
  6005. {$IFDEF UNICODE}
  6006. {$EXTERNALSYM LVN_GETINFOTIP}
  6007. LVN_GETINFOTIP = LVN_GETINFOTIPW;
  6008. {$ELSE}
  6009. {$EXTERNALSYM LVN_GETINFOTIP}
  6010. LVN_GETINFOTIP = LVN_GETINFOTIPA;
  6011. {$ENDIF}
  6012. //
  6013. // LVN_INCREMENTALSEARCH gives the app the opportunity to customize
  6014. // incremental search. For example, if the items are numeric,
  6015. // the app can do numerical search instead of string search.
  6016. //
  6017. // ListView notifies the app with NMLVFINDITEM.
  6018. // The app sets pnmfi->lvfi.lParam to the result of the incremental search,
  6019. // or to LVNSCH_DEFAULT if ListView should do the default search,
  6020. // or to LVNSCH_ERROR to fail the search and just beep,
  6021. // or to LVNSCH_IGNORE to stop all ListView processing.
  6022. //
  6023. // The return value is not used.
  6024. {$EXTERNALSYM LVNSCH_DEFAULT}
  6025. LVNSCH_DEFAULT = -1;
  6026. {$EXTERNALSYM LVNSCH_ERROR}
  6027. LVNSCH_ERROR = -2;
  6028. {$EXTERNALSYM LVNSCH_IGNORE}
  6029. LVNSCH_IGNORE = -3;
  6030. {$EXTERNALSYM LVN_INCREMENTALSEARCHA}
  6031. LVN_INCREMENTALSEARCHA = LVN_FIRST-62;
  6032. {$EXTERNALSYM LVN_INCREMENTALSEARCHW}
  6033. LVN_INCREMENTALSEARCHW = LVN_FIRST-63;
  6034. {$IFDEF UNICODE}
  6035. LVN_INCREMENTALSEARCH = LVN_INCREMENTALSEARCHW;
  6036. {$ELSE}
  6037. LVN_INCREMENTALSEARCH = LVN_INCREMENTALSEARCHA;
  6038. {$ENDIF}
  6039. {$EXTERNALSYM LVN_INCREMENTALSEARCH}
  6040. { For Windows >= Vista }
  6041. {$EXTERNALSYM LVN_COLUMNDROPDOWN}
  6042. LVN_COLUMNDROPDOWN = LVN_FIRST-64;
  6043. { For Windows >= Vista }
  6044. {$EXTERNALSYM LVN_COLUMNOVERFLOWCLICK}
  6045. LVN_COLUMNOVERFLOWCLICK = LVN_FIRST-66;
  6046. type
  6047. { For Windows >= XP }
  6048. { $EXTERNALSYM tagNMLVSCROLL}
  6049. tagNMLVSCROLL = record
  6050. hdr: NMHDR;
  6051. dx: Integer;
  6052. dy: Integer;
  6053. end;
  6054. PNMLVScroll = ^TNMLVScroll;
  6055. TNMLVScroll = tagNMLVSCROLL;
  6056. const
  6057. { For Windows >= XP }
  6058. {$EXTERNALSYM LVN_BEGINSCROLL}
  6059. LVN_BEGINSCROLL = LVN_FIRST-80;
  6060. {$EXTERNALSYM LVN_ENDSCROLL}
  6061. LVN_ENDSCROLL = LVN_FIRST-81;
  6062. { For Windows >= Vista }
  6063. {$EXTERNALSYM LVN_LINKCLICK}
  6064. LVN_LINKCLICK = LVN_FIRST-84;
  6065. { For Windows >= Vista }
  6066. {$EXTERNALSYM EMF_CENTERED}
  6067. EMF_CENTERED = $00000001; // render markup centered in the listview area
  6068. type
  6069. { For Windows >= Vista }
  6070. { $EXTERNALSYM tagNMLVEMPTYMARKUP}
  6071. tagNMLVEMPTYMARKUP = record
  6072. hdr: NMHDR;
  6073. // out params from client back to listview
  6074. dwFlags: DWORD; // EMF_*
  6075. szMarkup: packed array[0..L_MAX_URL_LENGTH-1] of WCHAR;// markup displayed
  6076. end;
  6077. PNMLVEmptyMarkup = ^TNMLVEmptyMarkup;
  6078. TNMLVEmptyMarkup = tagNMLVEMPTYMARKUP;
  6079. const
  6080. { For Windows >= Vista }
  6081. {$EXTERNALSYM LVN_GETEMPTYMARKUP}
  6082. LVN_GETEMPTYMARKUP = LVN_FIRST-87;
  6083. { ====== TREEVIEW CONTROL =================== }
  6084. const
  6085. {$EXTERNALSYM WC_TREEVIEW}
  6086. WC_TREEVIEW = 'SysTreeView32';
  6087. const
  6088. {$EXTERNALSYM TVS_HASBUTTONS}
  6089. TVS_HASBUTTONS = $0001;
  6090. {$EXTERNALSYM TVS_HASLINES}
  6091. TVS_HASLINES = $0002;
  6092. {$EXTERNALSYM TVS_LINESATROOT}
  6093. TVS_LINESATROOT = $0004;
  6094. {$EXTERNALSYM TVS_EDITLABELS}
  6095. TVS_EDITLABELS = $0008;
  6096. {$EXTERNALSYM TVS_DISABLEDRAGDROP}
  6097. TVS_DISABLEDRAGDROP = $0010;
  6098. {$EXTERNALSYM TVS_SHOWSELALWAYS}
  6099. TVS_SHOWSELALWAYS = $0020;
  6100. {$EXTERNALSYM TVS_RTLREADING}
  6101. TVS_RTLREADING = $0040;
  6102. {$EXTERNALSYM TVS_NOTOOLTIPS}
  6103. TVS_NOTOOLTIPS = $0080;
  6104. {$EXTERNALSYM TVS_CHECKBOXES}
  6105. TVS_CHECKBOXES = $0100;
  6106. {$EXTERNALSYM TVS_TRACKSELECT}
  6107. TVS_TRACKSELECT = $0200;
  6108. {$EXTERNALSYM TVS_SINGLEEXPAND}
  6109. TVS_SINGLEEXPAND = $0400;
  6110. {$EXTERNALSYM TVS_INFOTIP}
  6111. TVS_INFOTIP = $0800;
  6112. {$EXTERNALSYM TVS_FULLROWSELECT}
  6113. TVS_FULLROWSELECT = $1000;
  6114. {$EXTERNALSYM TVS_NOSCROLL}
  6115. TVS_NOSCROLL = $2000;
  6116. {$EXTERNALSYM TVS_NONEVENHEIGHT}
  6117. TVS_NONEVENHEIGHT = $4000;
  6118. { For IE >= 0x0500 }
  6119. {$EXTERNALSYM TVS_NOHSCROLL}
  6120. TVS_NOHSCROLL = $8000; // TVS_NOSCROLL overrides this
  6121. { For Windows >= Vista }
  6122. {$EXTERNALSYM TVS_EX_MULTISELECT}
  6123. TVS_EX_MULTISELECT = $0002;
  6124. {$EXTERNALSYM TVS_EX_DOUBLEBUFFER}
  6125. TVS_EX_DOUBLEBUFFER = $0004;
  6126. {$EXTERNALSYM TVS_EX_NOINDENTSTATE}
  6127. TVS_EX_NOINDENTSTATE = $0008;
  6128. {$EXTERNALSYM TVS_EX_RICHTOOLTIP}
  6129. TVS_EX_RICHTOOLTIP = $0010;
  6130. {$EXTERNALSYM TVS_EX_AUTOHSCROLL}
  6131. TVS_EX_AUTOHSCROLL = $0020;
  6132. {$EXTERNALSYM TVS_EX_FADEINOUTEXPANDOS}
  6133. TVS_EX_FADEINOUTEXPANDOS = $0040;
  6134. {$EXTERNALSYM TVS_EX_PARTIALCHECKBOXES}
  6135. TVS_EX_PARTIALCHECKBOXES = $0080;
  6136. {$EXTERNALSYM TVS_EX_EXCLUSIONCHECKBOXES}
  6137. TVS_EX_EXCLUSIONCHECKBOXES = $0100;
  6138. {$EXTERNALSYM TVS_EX_DIMMEDCHECKBOXES}
  6139. TVS_EX_DIMMEDCHECKBOXES = $0200;
  6140. {$EXTERNALSYM TVS_EX_DRAWIMAGEASYNC}
  6141. TVS_EX_DRAWIMAGEASYNC = $0400;
  6142. type
  6143. {$EXTERNALSYM HTREEITEM}
  6144. HTREEITEM = ^_TREEITEM;
  6145. {$EXTERNALSYM _TREEITEM}
  6146. _TREEITEM = record
  6147. end;
  6148. const
  6149. {$EXTERNALSYM TVIF_TEXT}
  6150. TVIF_TEXT = $0001;
  6151. {$EXTERNALSYM TVIF_IMAGE}
  6152. TVIF_IMAGE = $0002;
  6153. {$EXTERNALSYM TVIF_PARAM}
  6154. TVIF_PARAM = $0004;
  6155. {$EXTERNALSYM TVIF_STATE}
  6156. TVIF_STATE = $0008;
  6157. {$EXTERNALSYM TVIF_HANDLE}
  6158. TVIF_HANDLE = $0010;
  6159. {$EXTERNALSYM TVIF_SELECTEDIMAGE}
  6160. TVIF_SELECTEDIMAGE = $0020;
  6161. {$EXTERNALSYM TVIF_CHILDREN}
  6162. TVIF_CHILDREN = $0040;
  6163. {$EXTERNALSYM TVIF_INTEGRAL}
  6164. TVIF_INTEGRAL = $0080;
  6165. { For Windows >= Vista }
  6166. {$EXTERNALSYM TVIF_STATEEX}
  6167. TVIF_STATEEX = $0100;
  6168. {$EXTERNALSYM TVIF_EXPANDEDIMAGE}
  6169. TVIF_EXPANDEDIMAGE = $0200;
  6170. {$EXTERNALSYM TVIS_FOCUSED}
  6171. TVIS_FOCUSED = $0001;
  6172. {$EXTERNALSYM TVIS_SELECTED}
  6173. TVIS_SELECTED = $0002;
  6174. {$EXTERNALSYM TVIS_CUT}
  6175. TVIS_CUT = $0004;
  6176. {$EXTERNALSYM TVIS_DROPHILITED}
  6177. TVIS_DROPHILITED = $0008;
  6178. {$EXTERNALSYM TVIS_BOLD}
  6179. TVIS_BOLD = $0010;
  6180. {$EXTERNALSYM TVIS_EXPANDED}
  6181. TVIS_EXPANDED = $0020;
  6182. {$EXTERNALSYM TVIS_EXPANDEDONCE}
  6183. TVIS_EXPANDEDONCE = $0040;
  6184. {$EXTERNALSYM TVIS_EXPANDPARTIAL}
  6185. TVIS_EXPANDPARTIAL = $0080;
  6186. {$EXTERNALSYM TVIS_OVERLAYMASK}
  6187. TVIS_OVERLAYMASK = $0F00;
  6188. {$EXTERNALSYM TVIS_STATEIMAGEMASK}
  6189. TVIS_STATEIMAGEMASK = $F000;
  6190. {$EXTERNALSYM TVIS_USERMASK}
  6191. TVIS_USERMASK = $F000;
  6192. { For IE >= 0x0600 }
  6193. {$EXTERNALSYM TVIS_EX_FLAT}
  6194. TVIS_EX_FLAT = $0001;
  6195. {$EXTERNALSYM TVIS_EX_ALL}
  6196. TVIS_EX_ALL = $0002;
  6197. { For Windows >= Vista }
  6198. {$EXTERNALSYM TVIS_EX_DISABLED}
  6199. TVIS_EX_DISABLED = $0002;
  6200. // Structure for TreeView's NM_TVSTATEIMAGECHANGING notification
  6201. type
  6202. { For IE >= 0x0600 }
  6203. { $EXTERNALSYM tagNMTVSTATEIMAGECHANGING}
  6204. tagNMTVSTATEIMAGECHANGING = record
  6205. hdr: NMHDR;
  6206. hti: HTREEITEM;
  6207. iOldStateImageIndex: Integer;
  6208. iNewStateImageIndex: Integer;
  6209. end;
  6210. PNMTVStateImageChanging = ^TNMTVStateImageChanging;
  6211. TNMTVStateImageChanging = tagNMTVSTATEIMAGECHANGING;
  6212. const
  6213. {$EXTERNALSYM I_CHILDRENCALLBACK}
  6214. I_CHILDRENCALLBACK = -1;
  6215. type
  6216. PTVItemA = ^TTVItemA;
  6217. PTVItemW = ^TTVItemW;
  6218. PTVItem = PTVItemW;
  6219. {$EXTERNALSYM tagTVITEMA}
  6220. tagTVITEMA = record
  6221. mask: UINT;
  6222. hItem: HTreeItem;
  6223. state: UINT;
  6224. stateMask: UINT;
  6225. pszText: PAnsiChar;
  6226. cchTextMax: Integer;
  6227. iImage: Integer;
  6228. iSelectedImage: Integer;
  6229. cChildren: Integer;
  6230. lParam: LPARAM;
  6231. end;
  6232. {$EXTERNALSYM tagTVITEMW}
  6233. tagTVITEMW = record
  6234. mask: UINT;
  6235. hItem: HTreeItem;
  6236. state: UINT;
  6237. stateMask: UINT;
  6238. pszText: PWideChar;
  6239. cchTextMax: Integer;
  6240. iImage: Integer;
  6241. iSelectedImage: Integer;
  6242. cChildren: Integer;
  6243. lParam: LPARAM;
  6244. end;
  6245. {$EXTERNALSYM tagTVITEM}
  6246. tagTVITEM = tagTVITEMW;
  6247. {$EXTERNALSYM _TV_ITEMA}
  6248. _TV_ITEMA = tagTVITEMA;
  6249. {$EXTERNALSYM _TV_ITEMW}
  6250. _TV_ITEMW = tagTVITEMW;
  6251. {$EXTERNALSYM _TV_ITEM}
  6252. _TV_ITEM = _TV_ITEMW;
  6253. TTVItemA = tagTVITEMA;
  6254. TTVItemW = tagTVITEMW;
  6255. TTVItem = TTVItemW;
  6256. {$EXTERNALSYM TV_ITEMA}
  6257. TV_ITEMA = tagTVITEMA;
  6258. {$EXTERNALSYM TV_ITEMW}
  6259. TV_ITEMW = tagTVITEMW;
  6260. {$EXTERNALSYM TV_ITEM}
  6261. TV_ITEM = TV_ITEMW;
  6262. // only used for Get and Set messages. no notifies
  6263. {$EXTERNALSYM tagTVITEMEXA}
  6264. tagTVITEMEXA = record
  6265. mask: UINT;
  6266. hItem: HTREEITEM;
  6267. state: UINT;
  6268. stateMask: UINT;
  6269. pszText: PAnsiChar;
  6270. cchTextMax: Integer;
  6271. iImage: Integer;
  6272. iSelectedImage: Integer;
  6273. cChildren: Integer;
  6274. lParam: LPARAM;
  6275. iIntegral: Integer;
  6276. uStateEx: UINT;
  6277. hwnd: HWND;
  6278. iExpandedImage: Integer;
  6279. iReserved: Integer;
  6280. end;
  6281. {$EXTERNALSYM tagTVITEMEXW}
  6282. tagTVITEMEXW = record
  6283. mask: UINT;
  6284. hItem: HTREEITEM;
  6285. state: UINT;
  6286. stateMask: UINT;
  6287. pszText: PWideChar;
  6288. cchTextMax: Integer;
  6289. iImage: Integer;
  6290. iSelectedImage: Integer;
  6291. cChildren: Integer;
  6292. lParam: LPARAM;
  6293. iIntegral: Integer;
  6294. uStateEx: UINT;
  6295. hwnd: HWND;
  6296. iExpandedImage: Integer;
  6297. iReserved: Integer;
  6298. end;
  6299. {$EXTERNALSYM tagTVITEMEX}
  6300. tagTVITEMEX = tagTVITEMEXW;
  6301. PTVItemExA = ^TTVItemExA;
  6302. PTVItemExW = ^TTVItemExW;
  6303. PTVItemEx = PTVItemExW;
  6304. TTVItemExA = tagTVITEMEXA;
  6305. TTVItemExW = tagTVITEMEXW;
  6306. TTVItemEx = TTVItemExW;
  6307. const
  6308. {$EXTERNALSYM TVI_ROOT}
  6309. TVI_ROOT = HTreeItem(ULONG_PTR(-$10000));
  6310. {$EXTERNALSYM TVI_FIRST}
  6311. TVI_FIRST = HTreeItem(ULONG_PTR(-$0FFFF));
  6312. {$EXTERNALSYM TVI_LAST}
  6313. TVI_LAST = HTreeItem(ULONG_PTR(-$0FFFE));
  6314. {$EXTERNALSYM TVI_SORT}
  6315. TVI_SORT = HTreeItem(ULONG_PTR(-$0FFFD));
  6316. type
  6317. PTVInsertStructA = ^TTVInsertStructA;
  6318. PTVInsertStructW = ^TTVInsertStructW;
  6319. PTVInsertStruct = PTVInsertStructW;
  6320. {$EXTERNALSYM tagTVINSERTSTRUCTA}
  6321. tagTVINSERTSTRUCTA = record
  6322. hParent: HTreeItem;
  6323. hInsertAfter: HTreeItem;
  6324. case Integer of
  6325. 0: (itemex: TTVItemExA);
  6326. 1: (item: TTVItemA);
  6327. end;
  6328. {$EXTERNALSYM tagTVINSERTSTRUCTW}
  6329. tagTVINSERTSTRUCTW = record
  6330. hParent: HTreeItem;
  6331. hInsertAfter: HTreeItem;
  6332. case Integer of
  6333. 0: (itemex: TTVItemExW);
  6334. 1: (item: TTVItemW);
  6335. end;
  6336. {$EXTERNALSYM tagTVINSERTSTRUCT}
  6337. tagTVINSERTSTRUCT = tagTVINSERTSTRUCTW;
  6338. {$EXTERNALSYM _TV_INSERTSTRUCTA}
  6339. _TV_INSERTSTRUCTA = tagTVINSERTSTRUCTA;
  6340. {$EXTERNALSYM _TV_INSERTSTRUCTW}
  6341. _TV_INSERTSTRUCTW = tagTVINSERTSTRUCTW;
  6342. {$EXTERNALSYM _TV_INSERTSTRUCT}
  6343. _TV_INSERTSTRUCT = _TV_INSERTSTRUCTW;
  6344. TTVInsertStructA = tagTVINSERTSTRUCTA;
  6345. TTVInsertStructW = tagTVINSERTSTRUCTW;
  6346. TTVInsertStruct = TTVInsertStructW;
  6347. {$EXTERNALSYM TV_INSERTSTRUCTA}
  6348. TV_INSERTSTRUCTA = tagTVINSERTSTRUCTA;
  6349. {$EXTERNALSYM TV_INSERTSTRUCTW}
  6350. TV_INSERTSTRUCTW = tagTVINSERTSTRUCTW;
  6351. {$EXTERNALSYM TV_INSERTSTRUCT}
  6352. TV_INSERTSTRUCT = TV_INSERTSTRUCTW;
  6353. const
  6354. {$EXTERNALSYM TVM_INSERTITEMA}
  6355. TVM_INSERTITEMA = TV_FIRST + 0;
  6356. {$EXTERNALSYM TVM_INSERTITEMW}
  6357. TVM_INSERTITEMW = TV_FIRST + 50;
  6358. {$IFDEF UNICODE}
  6359. {$EXTERNALSYM TVM_INSERTITEM}
  6360. TVM_INSERTITEM = TVM_INSERTITEMW;
  6361. {$ELSE}
  6362. {$EXTERNALSYM TVM_INSERTITEM}
  6363. TVM_INSERTITEM = TVM_INSERTITEMA;
  6364. {$ENDIF}
  6365. {$EXTERNALSYM TreeView_InsertItem}
  6366. function TreeView_InsertItem(hwnd: HWND; const lpis: TTVInsertStruct): HTreeItem; inline;
  6367. function TreeView_InsertItemA(hwnd: HWND; const lpis: TTVInsertStructA): HTreeItem; inline;
  6368. function TreeView_InsertItemW(hwnd: HWND; const lpis: TTVInsertStructW): HTreeItem; inline;
  6369. const
  6370. {$EXTERNALSYM TVM_DELETEITEM}
  6371. TVM_DELETEITEM = TV_FIRST + 1;
  6372. {$EXTERNALSYM TreeView_DeleteItem}
  6373. function TreeView_DeleteItem(hwnd: HWND; hitem: HTreeItem): Bool; inline;
  6374. {$EXTERNALSYM TreeView_DeleteAllItems}
  6375. function TreeView_DeleteAllItems(hwnd: HWND): Bool; inline;
  6376. const
  6377. {$EXTERNALSYM TVM_EXPAND}
  6378. TVM_EXPAND = TV_FIRST + 2;
  6379. {$EXTERNALSYM TreeView_Expand}
  6380. function TreeView_Expand(hwnd: HWND; hitem: HTreeItem; code: Integer): Bool; inline;
  6381. const
  6382. {$EXTERNALSYM TVE_COLLAPSE}
  6383. TVE_COLLAPSE = $0001;
  6384. {$EXTERNALSYM TVE_EXPAND}
  6385. TVE_EXPAND = $0002;
  6386. {$EXTERNALSYM TVE_TOGGLE}
  6387. TVE_TOGGLE = $0003;
  6388. {$EXTERNALSYM TVE_EXPANDPARTIAL}
  6389. TVE_EXPANDPARTIAL = $4000;
  6390. {$EXTERNALSYM TVE_COLLAPSERESET}
  6391. TVE_COLLAPSERESET = $8000;
  6392. const
  6393. {$EXTERNALSYM TVM_GETITEMRECT}
  6394. TVM_GETITEMRECT = TV_FIRST + 4;
  6395. {$EXTERNALSYM TreeView_GetItemRect}
  6396. function TreeView_GetItemRect(hwnd: HWND; hitem: HTreeItem;
  6397. var prc: TRect; code: Bool): Bool;
  6398. const
  6399. {$EXTERNALSYM TVM_GETCOUNT}
  6400. TVM_GETCOUNT = TV_FIRST + 5;
  6401. {$EXTERNALSYM TreeView_GetCount}
  6402. function TreeView_GetCount(hwnd: HWND): UINT; inline;
  6403. const
  6404. {$EXTERNALSYM TVM_GETINDENT}
  6405. TVM_GETINDENT = TV_FIRST + 6;
  6406. {$EXTERNALSYM TreeView_GetIndent}
  6407. function TreeView_GetIndent(hwnd: HWND): UINT; inline;
  6408. const
  6409. {$EXTERNALSYM TVM_SETINDENT}
  6410. TVM_SETINDENT = TV_FIRST + 7;
  6411. {$EXTERNALSYM TreeView_SetIndent}
  6412. function TreeView_SetIndent(hwnd: HWND; indent: Integer): Bool; inline;
  6413. const
  6414. {$EXTERNALSYM TVM_GETIMAGELIST}
  6415. TVM_GETIMAGELIST = TV_FIRST + 8;
  6416. {$EXTERNALSYM TreeView_GetImageList}
  6417. function TreeView_GetImageList(hwnd: HWND; iImage: Integer): HIMAGELIST; inline;
  6418. const
  6419. {$EXTERNALSYM TVSIL_NORMAL}
  6420. TVSIL_NORMAL = 0;
  6421. {$EXTERNALSYM TVSIL_STATE}
  6422. TVSIL_STATE = 2;
  6423. const
  6424. {$EXTERNALSYM TVM_SETIMAGELIST}
  6425. TVM_SETIMAGELIST = TV_FIRST + 9;
  6426. {$EXTERNALSYM TreeView_SetImageList}
  6427. function TreeView_SetImageList(hwnd: HWND; himl: HIMAGELIST;
  6428. iImage: Integer): HIMAGELIST; inline;
  6429. const
  6430. {$EXTERNALSYM TVM_GETNEXTITEM}
  6431. TVM_GETNEXTITEM = TV_FIRST + 10;
  6432. {$EXTERNALSYM TreeView_GetNextItem}
  6433. function TreeView_GetNextItem(hwnd: HWND; hitem: HTreeItem;
  6434. code: Integer): HTreeItem; inline;
  6435. const
  6436. {$EXTERNALSYM TVGN_ROOT}
  6437. TVGN_ROOT = $0000;
  6438. {$EXTERNALSYM TVGN_NEXT}
  6439. TVGN_NEXT = $0001;
  6440. {$EXTERNALSYM TVGN_PREVIOUS}
  6441. TVGN_PREVIOUS = $0002;
  6442. {$EXTERNALSYM TVGN_PARENT}
  6443. TVGN_PARENT = $0003;
  6444. {$EXTERNALSYM TVGN_CHILD}
  6445. TVGN_CHILD = $0004;
  6446. {$EXTERNALSYM TVGN_FIRSTVISIBLE}
  6447. TVGN_FIRSTVISIBLE = $0005;
  6448. {$EXTERNALSYM TVGN_NEXTVISIBLE}
  6449. TVGN_NEXTVISIBLE = $0006;
  6450. {$EXTERNALSYM TVGN_PREVIOUSVISIBLE}
  6451. TVGN_PREVIOUSVISIBLE = $0007;
  6452. {$EXTERNALSYM TVGN_DROPHILITE}
  6453. TVGN_DROPHILITE = $0008;
  6454. {$EXTERNALSYM TVGN_CARET}
  6455. TVGN_CARET = $0009;
  6456. {$EXTERNALSYM TVGN_LASTVISIBLE}
  6457. TVGN_LASTVISIBLE = $000A;
  6458. { For IE >= 0x0600 }
  6459. {$EXTERNALSYM TVGN_NEXTSELECTED}
  6460. TVGN_NEXTSELECTED = $000B;
  6461. { For Windows >= XP }
  6462. {$EXTERNALSYM TVSI_NOSINGLEEXPAND}
  6463. TVSI_NOSINGLEEXPAND = $8000; // Should not conflict with TVGN flags.
  6464. {$EXTERNALSYM TreeView_GetChild}
  6465. function TreeView_GetChild(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6466. {$EXTERNALSYM TreeView_GetNextSibling}
  6467. function TreeView_GetNextSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6468. {$EXTERNALSYM TreeView_GetPrevSibling}
  6469. function TreeView_GetPrevSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6470. {$EXTERNALSYM TreeView_GetParent}
  6471. function TreeView_GetParent(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6472. {$EXTERNALSYM TreeView_GetFirstVisible}
  6473. function TreeView_GetFirstVisible(hwnd: HWND): HTreeItem;
  6474. {$EXTERNALSYM TreeView_GetNextVisible}
  6475. function TreeView_GetNextVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6476. {$EXTERNALSYM TreeView_GetPrevVisible}
  6477. function TreeView_GetPrevVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6478. {$EXTERNALSYM TreeView_GetSelection}
  6479. function TreeView_GetSelection(hwnd: HWND): HTreeItem;
  6480. {$EXTERNALSYM TreeView_GetDropHilite}
  6481. function TreeView_GetDropHilite(hwnd: HWND): HTreeItem;
  6482. {$EXTERNALSYM TreeView_GetRoot}
  6483. function TreeView_GetRoot(hwnd: HWND): HTreeItem;
  6484. {$EXTERNALSYM TreeView_GetLastVisible}
  6485. function TreeView_GetLastVisible(hwnd: HWND): HTreeItem;
  6486. { For Windows >= Vista }
  6487. {$EXTERNALSYM TreeView_GetNextSelected}
  6488. function TreeView_GetNextSelected(hwnd: HWND; hitem: HTreeItem): HTreeItem; inline;
  6489. const
  6490. {$EXTERNALSYM TVM_SELECTITEM}
  6491. TVM_SELECTITEM = TV_FIRST + 11;
  6492. {$EXTERNALSYM TreeView_Select}
  6493. function TreeView_Select(hwnd: HWND; hitem: HTreeItem;
  6494. code: Integer): HTreeItem; inline;
  6495. {$EXTERNALSYM TreeView_SelectItem}
  6496. function TreeView_SelectItem(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6497. {$EXTERNALSYM TreeView_SelectDropTarget}
  6498. function TreeView_SelectDropTarget(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6499. {$EXTERNALSYM TreeView_SelectSetFirstVisible}
  6500. function TreeView_SelectSetFirstVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  6501. const
  6502. {$EXTERNALSYM TVM_GETITEMA}
  6503. TVM_GETITEMA = TV_FIRST + 12;
  6504. {$EXTERNALSYM TVM_GETITEMW}
  6505. TVM_GETITEMW = TV_FIRST + 62;
  6506. {$IFDEF UNICODE}
  6507. {$EXTERNALSYM TVM_GETITEM}
  6508. TVM_GETITEM = TVM_GETITEMW;
  6509. {$ELSE}
  6510. {$EXTERNALSYM TVM_GETITEM}
  6511. TVM_GETITEM = TVM_GETITEMA;
  6512. {$ENDIF}
  6513. {$EXTERNALSYM TreeView_GetItem}
  6514. function TreeView_GetItem(hwnd: HWND; var pitem: TTVItem): Bool; inline;
  6515. {$EXTERNALSYM TreeView_GetItemA}
  6516. function TreeView_GetItemA(hwnd: HWND; var pitem: TTVItemA): Bool; inline;
  6517. {$EXTERNALSYM TreeView_GetItemW}
  6518. function TreeView_GetItemW(hwnd: HWND; var pitem: TTVItemW): Bool; inline;
  6519. const
  6520. {$EXTERNALSYM TVM_SETITEMA}
  6521. TVM_SETITEMA = TV_FIRST + 13;
  6522. {$EXTERNALSYM TVM_SETITEMW}
  6523. TVM_SETITEMW = TV_FIRST + 63;
  6524. {$IFDEF UNICODE}
  6525. {$EXTERNALSYM TVM_SETITEM}
  6526. TVM_SETITEM = TVM_SETITEMW;
  6527. {$ELSE}
  6528. {$EXTERNALSYM TVM_SETITEM}
  6529. TVM_SETITEM = TVM_SETITEMA;
  6530. {$ENDIF}
  6531. {$EXTERNALSYM TreeView_SetItem}
  6532. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItem): Bool; inline; overload;
  6533. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItemEx): Bool; inline; overload;
  6534. {$EXTERNALSYM TreeView_SetItemA}
  6535. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemA): Bool; inline; overload;
  6536. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemExA): Bool; inline; overload;
  6537. {$EXTERNALSYM TreeView_SetItemW}
  6538. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemW): Bool; inline; overload;
  6539. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemExW): Bool; inline; overload;
  6540. const
  6541. {$EXTERNALSYM TVM_EDITLABELA}
  6542. TVM_EDITLABELA = TV_FIRST + 14;
  6543. {$EXTERNALSYM TVM_EDITLABELW}
  6544. TVM_EDITLABELW = TV_FIRST + 65;
  6545. {$IFDEF UNICODE}
  6546. {$EXTERNALSYM TVM_EDITLABEL}
  6547. TVM_EDITLABEL = TVM_EDITLABELW;
  6548. {$ELSE}
  6549. {$EXTERNALSYM TVM_EDITLABEL}
  6550. TVM_EDITLABEL = TVM_EDITLABELA;
  6551. {$ENDIF}
  6552. {$EXTERNALSYM TreeView_EditLabel}
  6553. function TreeView_EditLabel(hwnd: HWND; hitem: HTreeItem): HWND; inline;
  6554. {$EXTERNALSYM TreeView_EditLabelA}
  6555. function TreeView_EditLabelA(hwnd: HWND; hitem: HTreeItem): HWND; inline;
  6556. {$EXTERNALSYM TreeView_EditLabelW}
  6557. function TreeView_EditLabelW(hwnd: HWND; hitem: HTreeItem): HWND; inline;
  6558. const
  6559. {$EXTERNALSYM TVM_GETEDITCONTROL}
  6560. TVM_GETEDITCONTROL = TV_FIRST + 15;
  6561. {$EXTERNALSYM TreeView_GetEditControl}
  6562. function TreeView_GetEditControl(hwnd: HWND): HWND; inline;
  6563. const
  6564. {$EXTERNALSYM TVM_GETVISIBLECOUNT}
  6565. TVM_GETVISIBLECOUNT = TV_FIRST + 16;
  6566. {$EXTERNALSYM TreeView_GetVisibleCount}
  6567. function TreeView_GetVisibleCount(hwnd: HWND): UINT; inline;
  6568. const
  6569. {$EXTERNALSYM TVM_HITTEST}
  6570. TVM_HITTEST = TV_FIRST + 17;
  6571. type
  6572. PTVHitTestInfo = ^TTVHitTestInfo;
  6573. {$EXTERNALSYM tagTVHITTESTINFO}
  6574. tagTVHITTESTINFO = record
  6575. pt: TPoint;
  6576. flags: UINT;
  6577. hItem: HTreeItem;
  6578. end;
  6579. {$EXTERNALSYM _TV_HITTESTINFO}
  6580. _TV_HITTESTINFO = tagTVHITTESTINFO;
  6581. TTVHitTestInfo = tagTVHITTESTINFO;
  6582. {$EXTERNALSYM TV_HITTESTINFO}
  6583. TV_HITTESTINFO = tagTVHITTESTINFO;
  6584. {$EXTERNALSYM TreeView_HitTest}
  6585. function TreeView_HitTest(hwnd: HWND; var lpht: TTVHitTestInfo): HTreeItem; inline;
  6586. const
  6587. {$EXTERNALSYM TVHT_NOWHERE}
  6588. TVHT_NOWHERE = $0001;
  6589. {$EXTERNALSYM TVHT_ONITEMICON}
  6590. TVHT_ONITEMICON = $0002;
  6591. {$EXTERNALSYM TVHT_ONITEMLABEL}
  6592. TVHT_ONITEMLABEL = $0004;
  6593. {$EXTERNALSYM TVHT_ONITEMINDENT}
  6594. TVHT_ONITEMINDENT = $0008;
  6595. {$EXTERNALSYM TVHT_ONITEMBUTTON}
  6596. TVHT_ONITEMBUTTON = $0010;
  6597. {$EXTERNALSYM TVHT_ONITEMRIGHT}
  6598. TVHT_ONITEMRIGHT = $0020;
  6599. {$EXTERNALSYM TVHT_ONITEMSTATEICON}
  6600. TVHT_ONITEMSTATEICON = $0040;
  6601. {$EXTERNALSYM TVHT_ONITEM}
  6602. TVHT_ONITEM = TVHT_ONITEMICON or TVHT_ONITEMLABEL or
  6603. TVHT_ONITEMSTATEICON;
  6604. {$EXTERNALSYM TVHT_ABOVE}
  6605. TVHT_ABOVE = $0100;
  6606. {$EXTERNALSYM TVHT_BELOW}
  6607. TVHT_BELOW = $0200;
  6608. {$EXTERNALSYM TVHT_TORIGHT}
  6609. TVHT_TORIGHT = $0400;
  6610. {$EXTERNALSYM TVHT_TOLEFT}
  6611. TVHT_TOLEFT = $0800;
  6612. const
  6613. {$EXTERNALSYM TVM_CREATEDRAGIMAGE}
  6614. TVM_CREATEDRAGIMAGE = TV_FIRST + 18;
  6615. {$EXTERNALSYM TreeView_CreateDragImage}
  6616. function TreeView_CreateDragImage(hwnd: HWND; hitem: HTreeItem): HIMAGELIST; inline;
  6617. const
  6618. {$EXTERNALSYM TVM_SORTCHILDREN}
  6619. TVM_SORTCHILDREN = TV_FIRST + 19;
  6620. {$EXTERNALSYM TreeView_SortChildren}
  6621. function TreeView_SortChildren(hwnd: HWND; hitem: HTreeItem; recurse: Bool): Bool; inline;
  6622. const
  6623. {$EXTERNALSYM TVM_ENSUREVISIBLE}
  6624. TVM_ENSUREVISIBLE = TV_FIRST + 20;
  6625. {$EXTERNALSYM TreeView_EnsureVisible}
  6626. function TreeView_EnsureVisible(hwnd: HWND; hitem: HTreeItem): Bool; inline;
  6627. const
  6628. {$EXTERNALSYM TVM_SORTCHILDRENCB}
  6629. TVM_SORTCHILDRENCB = TV_FIRST + 21;
  6630. type
  6631. {$EXTERNALSYM PFNTVCOMPARE}
  6632. PFNTVCOMPARE = function(lParam1, lParam2, lParamSort: LPARAM): Integer stdcall;
  6633. TTVCompare = PFNTVCOMPARE;
  6634. type
  6635. {$EXTERNALSYM tagTVSORTCB}
  6636. tagTVSORTCB = record
  6637. hParent: HTreeItem;
  6638. lpfnCompare: TTVCompare;
  6639. lParam: LPARAM;
  6640. end;
  6641. {$EXTERNALSYM _TV_SORTCB}
  6642. _TV_SORTCB = tagTVSORTCB;
  6643. TTVSortCB = tagTVSORTCB;
  6644. {$EXTERNALSYM TV_SORTCB}
  6645. TV_SORTCB = tagTVSORTCB;
  6646. {$EXTERNALSYM TreeView_SortChildrenCB}
  6647. function TreeView_SortChildrenCB(hwnd: HWND; const psort: TTVSortCB;
  6648. recurse: Integer): Bool; inline;
  6649. const
  6650. {$EXTERNALSYM TVM_ENDEDITLABELNOW}
  6651. TVM_ENDEDITLABELNOW = TV_FIRST + 22;
  6652. {$EXTERNALSYM TreeView_EndEditLabelNow}
  6653. function TreeView_EndEditLabelNow(hwnd: HWND; fCancel: Bool): Bool; inline;
  6654. const
  6655. {$EXTERNALSYM TVM_GETISEARCHSTRINGA}
  6656. TVM_GETISEARCHSTRINGA = TV_FIRST + 23;
  6657. {$EXTERNALSYM TVM_GETISEARCHSTRINGW}
  6658. TVM_GETISEARCHSTRINGW = TV_FIRST + 64;
  6659. {$IFDEF UNICODE}
  6660. {$EXTERNALSYM TVM_GETISEARCHSTRING}
  6661. TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGW;
  6662. {$ELSE}
  6663. {$EXTERNALSYM TVM_GETISEARCHSTRING}
  6664. TVM_GETISEARCHSTRING = TVM_GETISEARCHSTRINGA;
  6665. {$ENDIF}
  6666. {$EXTERNALSYM TreeView_GetISearchString}
  6667. function TreeView_GetISearchString(hwndTV: HWND; lpsz: PWideChar): Bool; inline;
  6668. {$EXTERNALSYM TreeView_GetISearchStringA}
  6669. function TreeView_GetISearchStringA(hwndTV: HWND; lpsz: PAnsiChar): Bool; inline;
  6670. {$EXTERNALSYM TreeView_GetISearchStringW}
  6671. function TreeView_GetISearchStringW(hwndTV: HWND; lpsz: PWideChar): Bool; inline;
  6672. const
  6673. {$EXTERNALSYM TVM_SETTOOLTIPS}
  6674. TVM_SETTOOLTIPS = TV_FIRST + 24;
  6675. {$EXTERNALSYM TreeView_SetToolTips}
  6676. function TreeView_SetToolTips(wnd: HWND; hwndTT: HWND): HWND; inline;
  6677. const
  6678. {$EXTERNALSYM TVM_GETTOOLTIPS}
  6679. TVM_GETTOOLTIPS = TV_FIRST + 25;
  6680. {$EXTERNALSYM TreeView_GetToolTips}
  6681. function TreeView_GetToolTips(wnd: HWND): HWND; inline;
  6682. const
  6683. {$EXTERNALSYM TVM_SETINSERTMARK}
  6684. TVM_SETINSERTMARK = TV_FIRST + 26;
  6685. {$EXTERNALSYM TreeView_SetInsertMark}
  6686. function TreeView_SetInsertMark(hwnd: HWND; hItem: Integer; fAfter: BOOL): BOOL; inline;
  6687. const
  6688. {$EXTERNALSYM TVM_SETUNICODEFORMAT}
  6689. TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  6690. {$EXTERNALSYM TreeView_SetUnicodeFormat}
  6691. function TreeView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL; inline;
  6692. const
  6693. {$EXTERNALSYM TVM_GETUNICODEFORMAT}
  6694. TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  6695. {$EXTERNALSYM TreeView_GetUnicodeFormat}
  6696. function TreeView_GetUnicodeFormat(hwnd: HWND): BOOL; inline;
  6697. const
  6698. {$EXTERNALSYM TVM_SETITEMHEIGHT}
  6699. TVM_SETITEMHEIGHT = TV_FIRST + 27;
  6700. {$EXTERNALSYM TreeView_SetItemHeight}
  6701. function TreeView_SetItemHeight(hwnd: HWND; iHeight: Integer): Integer; inline;
  6702. const
  6703. {$EXTERNALSYM TVM_GETITEMHEIGHT}
  6704. TVM_GETITEMHEIGHT = TV_FIRST + 28;
  6705. {$EXTERNALSYM TreeView_GetItemHeight}
  6706. function TreeView_GetItemHeight(hwnd: HWND): Integer; inline;
  6707. const
  6708. {$EXTERNALSYM TVM_SETBKCOLOR}
  6709. TVM_SETBKCOLOR = TV_FIRST + 29;
  6710. {$EXTERNALSYM TreeView_SetBkColor}
  6711. function TreeView_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF; inline;
  6712. const
  6713. {$EXTERNALSYM TVM_SETTEXTCOLOR}
  6714. TVM_SETTEXTCOLOR = TV_FIRST + 30;
  6715. {$EXTERNALSYM TreeView_SetTextColor}
  6716. function TreeView_SetTextColor(hwnd: HWND; clr: COLORREF): COLORREF; inline;
  6717. const
  6718. {$EXTERNALSYM TVM_GETBKCOLOR}
  6719. TVM_GETBKCOLOR = TV_FIRST + 31;
  6720. {$EXTERNALSYM TreeView_GetBkColor}
  6721. function TreeView_GetBkColor(hwnd: HWND): COLORREF; inline;
  6722. const
  6723. {$EXTERNALSYM TVM_GETTEXTCOLOR}
  6724. TVM_GETTEXTCOLOR = TV_FIRST + 32;
  6725. {$EXTERNALSYM TreeView_GetTextColor}
  6726. function TreeView_GetTextColor(hwnd: HWND): COLORREF; inline;
  6727. const
  6728. {$EXTERNALSYM TVM_SETSCROLLTIME}
  6729. TVM_SETSCROLLTIME = TV_FIRST + 33;
  6730. {$EXTERNALSYM TreeView_SetScrollTime}
  6731. function TreeView_SetScrollTime(hwnd: HWND; uTime: UINT): UINT; inline;
  6732. const
  6733. {$EXTERNALSYM TVM_GETSCROLLTIME}
  6734. TVM_GETSCROLLTIME = TV_FIRST + 34;
  6735. {$EXTERNALSYM TreeView_GetScrollTime}
  6736. function TreeView_GetScrollTime(hwnd: HWND): UINT; inline;
  6737. const
  6738. {$EXTERNALSYM TVM_SETINSERTMARKCOLOR}
  6739. TVM_SETINSERTMARKCOLOR = TV_FIRST + 37;
  6740. {$EXTERNALSYM TreeView_SetInsertMarkColor}
  6741. function TreeView_SetInsertMarkColor(hwnd: HWND; clr: COLORREF): COLORREF; inline;
  6742. const
  6743. {$EXTERNALSYM TVM_GETINSERTMARKCOLOR}
  6744. TVM_GETINSERTMARKCOLOR = TV_FIRST + 38;
  6745. {$EXTERNALSYM TreeView_GetInsertMarkColor}
  6746. function TreeView_GetInsertMarkColor(hwnd: HWND): COLORREF; inline;
  6747. { For IE >= 0x0500 }
  6748. // tvm_?etitemstate only uses mask, state and stateMask.
  6749. // so unicode or ansi is irrelevant.
  6750. {$EXTERNALSYM TreeView_SetItemState}
  6751. function TreeView_SetItemState(hwndTV: HWND; hti: HTreeItem; State, Mask: UINT): UINT;
  6752. {$EXTERNALSYM TreeView_SetCheckState}
  6753. function TreeView_SetCheckState(hwndTV: HWND; hti: HTreeItem; fCheck: BOOL): UINT; inline;
  6754. const
  6755. { For IE >= 0x0500 }
  6756. {$EXTERNALSYM TVM_GETITEMSTATE}
  6757. TVM_GETITEMSTATE = TV_FIRST + 39;
  6758. { For IE >= 0x0500 }
  6759. {$EXTERNALSYM TreeView_GetItemState}
  6760. function TreeView_GetItemState(hwndTV: HWND; hti: HTreeItem; mask: UINT): UINT; inline;
  6761. {$EXTERNALSYM TreeView_GetCheckState}
  6762. function TreeView_GetCheckState(hwndTV: HWND; hti: HTreeItem): UINT; inline;
  6763. const
  6764. { For IE >= 0x0500 }
  6765. {$EXTERNALSYM TVM_SETLINECOLOR}
  6766. TVM_SETLINECOLOR = TV_FIRST + 40;
  6767. {$EXTERNALSYM TVM_GETLINECOLOR}
  6768. TVM_GETLINECOLOR = TV_FIRST + 41;
  6769. { For Windows >= XP }
  6770. {$EXTERNALSYM TVM_MAPACCIDTOHTREEITEM}
  6771. TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42;
  6772. {$EXTERNALSYM TVM_MAPHTREEITEMTOACCID}
  6773. TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43;
  6774. {$EXTERNALSYM TVM_SETEXTENDEDSTYLE}
  6775. TVM_SETEXTENDEDSTYLE = TV_FIRST + 44;
  6776. {$EXTERNALSYM TVM_GETEXTENDEDSTYLE}
  6777. TVM_GETEXTENDEDSTYLE = TV_FIRST + 45;
  6778. {$EXTERNALSYM TVM_SETAUTOSCROLLINFO}
  6779. TVM_SETAUTOSCROLLINFO = TV_FIRST + 59;
  6780. { For Windows >= Vista }
  6781. {$EXTERNALSYM TVM_GETSELECTEDCOUNT}
  6782. TVM_GETSELECTEDCOUNT = TV_FIRST + 70;
  6783. {$EXTERNALSYM TVM_SHOWINFOTIP}
  6784. TVM_SHOWINFOTIP = TV_FIRST + 71;
  6785. { For IE >= 0x0500 }
  6786. {$EXTERNALSYM TreeView_SetLineColor}
  6787. function TreeView_SetLineColor(hwnd: HWND; clr: TColorRef): TColorRef; inline;
  6788. {$EXTERNALSYM TreeView_GetLineColor}
  6789. function TreeView_GetLineColor(hwnd: HWND): Integer; inline;
  6790. { For Windows >= XP }
  6791. {$EXTERNALSYM TreeView_MapAccIDToHTREEITEM}
  6792. function TreeView_MapAccIDToHTREEITEM(hwnd: HWND; id: UINT): HTreeItem; inline;
  6793. {$EXTERNALSYM TreeView_MapHTREEITEMToAccID}
  6794. function TreeView_MapHTREEITEMToAccID(hwnd: HWND; hti: HTreeItem): UINT; inline;
  6795. {$EXTERNALSYM TreeView_SetExtendedStyle}
  6796. function TreeView_SetExtendedStyle(hwnd: HWND; dw: DWORD; mask: UINT): UINT; inline;
  6797. {$EXTERNALSYM TreeView_GetExtendedStyle}
  6798. function TreeView_GetExtendedStyle(hwnd: HWND): DWORD; inline;
  6799. {$EXTERNALSYM TreeView_SetAutoScrollInfo}
  6800. function TreeView_SetAutoScrollInfo(hwnd: HWND; uPixPerSec, uUpdateTime: UINT): LRESULT; inline;
  6801. { For Windows >= Vista }
  6802. {$EXTERNALSYM TreeView_GetSelectedCount}
  6803. function TreeView_GetSelectedCount(hwnd: HWND): DWORD; inline;
  6804. {$EXTERNALSYM TreeView_ShowInfoTip}
  6805. function TreeView_ShowInfoTip(hwnd: HWND; hti: HTreeItem): DWORD; inline;
  6806. type
  6807. { For Windows >= Vista }
  6808. { $EXTERNALSYM TVITEMPART}
  6809. TVITEMPART = (TVGIPR_BUTTON = $0001);
  6810. TTVItemPart = TVITEMPART;
  6811. type
  6812. { For Windows >= Vista }
  6813. { $EXTERNALSYM tagTVGETITEMPARTRECTINFO}
  6814. tagTVGETITEMPARTRECTINFO = record
  6815. hti: HTREEITEM;
  6816. prc: PRect;
  6817. partID: TVITEMPART;
  6818. end;
  6819. PTVGetItemPartRectInfo = ^TTVGetItemPartRectInfo;
  6820. TTVGetItemPartRectInfo = tagTVGETITEMPARTRECTINFO;
  6821. const
  6822. { For Windows >= Vista }
  6823. {$EXTERNALSYM TVM_GETITEMPARTRECT}
  6824. TVM_GETITEMPARTRECT = TV_FIRST + 72;
  6825. {$EXTERNALSYM TreeView_GetItemPartRect}
  6826. function TreeView_GetItemPartRect(hwnd: HWND; hitem: HTreeItem; var prc: TRect;
  6827. partid: TTVItemPart): BOOL;
  6828. type
  6829. PNMTreeViewA = ^TNMTreeViewA;
  6830. PNMTreeViewW = ^TNMTreeViewW;
  6831. PNMTreeView = PNMTreeViewW;
  6832. {$EXTERNALSYM tagNMTREEVIEWA}
  6833. tagNMTREEVIEWA = record
  6834. hdr: TNMHDR;
  6835. action: UINT;
  6836. itemOld: TTVItemA;
  6837. itemNew: TTVItemA;
  6838. ptDrag: TPoint;
  6839. end;
  6840. {$EXTERNALSYM tagNMTREEVIEWW}
  6841. tagNMTREEVIEWW = record
  6842. hdr: TNMHDR;
  6843. action: UINT;
  6844. itemOld: TTVItemW;
  6845. itemNew: TTVItemW;
  6846. ptDrag: TPoint;
  6847. end;
  6848. {$EXTERNALSYM tagNMTREEVIEW}
  6849. tagNMTREEVIEW = tagNMTREEVIEWW;
  6850. {$EXTERNALSYM _NM_TREEVIEWA}
  6851. _NM_TREEVIEWA = tagNMTREEVIEWA;
  6852. {$EXTERNALSYM _NM_TREEVIEWW}
  6853. _NM_TREEVIEWW = tagNMTREEVIEWW;
  6854. {$EXTERNALSYM _NM_TREEVIEW}
  6855. _NM_TREEVIEW = _NM_TREEVIEWW;
  6856. TNMTreeViewA = tagNMTREEVIEWA;
  6857. TNMTreeViewW = tagNMTREEVIEWW;
  6858. TNMTreeView = TNMTreeViewW;
  6859. {$EXTERNALSYM NM_TREEVIEWA}
  6860. NM_TREEVIEWA = tagNMTREEVIEWA;
  6861. {$EXTERNALSYM NM_TREEVIEWW}
  6862. NM_TREEVIEWW = tagNMTREEVIEWW;
  6863. {$EXTERNALSYM NM_TREEVIEW}
  6864. NM_TREEVIEW = NM_TREEVIEWW;
  6865. const
  6866. {$EXTERNALSYM TVN_SELCHANGINGA}
  6867. TVN_SELCHANGINGA = TVN_FIRST-1;
  6868. {$EXTERNALSYM TVN_SELCHANGEDA}
  6869. TVN_SELCHANGEDA = TVN_FIRST-2;
  6870. {$EXTERNALSYM TVN_SELCHANGINGW}
  6871. TVN_SELCHANGINGW = TVN_FIRST-50;
  6872. {$EXTERNALSYM TVN_SELCHANGEDW}
  6873. TVN_SELCHANGEDW = TVN_FIRST-51;
  6874. {$IFDEF UNICODE}
  6875. {$EXTERNALSYM TVN_SELCHANGING}
  6876. TVN_SELCHANGING = TVN_SELCHANGINGW;
  6877. {$EXTERNALSYM TVN_SELCHANGED}
  6878. TVN_SELCHANGED = TVN_SELCHANGEDW;
  6879. {$ELSE}
  6880. {$EXTERNALSYM TVN_SELCHANGING}
  6881. TVN_SELCHANGING = TVN_SELCHANGINGA;
  6882. {$EXTERNALSYM TVN_SELCHANGED}
  6883. TVN_SELCHANGED = TVN_SELCHANGEDA;
  6884. {$ENDIF}
  6885. const
  6886. {$EXTERNALSYM TVC_UNKNOWN}
  6887. TVC_UNKNOWN = $0000;
  6888. {$EXTERNALSYM TVC_BYMOUSE}
  6889. TVC_BYMOUSE = $0001;
  6890. {$EXTERNALSYM TVC_BYKEYBOARD}
  6891. TVC_BYKEYBOARD = $0002;
  6892. const
  6893. {$EXTERNALSYM TVN_GETDISPINFOA}
  6894. TVN_GETDISPINFOA = TVN_FIRST-3;
  6895. {$EXTERNALSYM TVN_SETDISPINFOA}
  6896. TVN_SETDISPINFOA = TVN_FIRST-4;
  6897. {$EXTERNALSYM TVN_GETDISPINFOW}
  6898. TVN_GETDISPINFOW = TVN_FIRST-52;
  6899. {$EXTERNALSYM TVN_SETDISPINFOW}
  6900. TVN_SETDISPINFOW = TVN_FIRST-53;
  6901. {$IFDEF UNICODE}
  6902. {$EXTERNALSYM TVN_GETDISPINFO}
  6903. TVN_GETDISPINFO = TVN_GETDISPINFOW;
  6904. {$EXTERNALSYM TVN_SETDISPINFO}
  6905. TVN_SETDISPINFO = TVN_SETDISPINFOW;
  6906. {$ELSE}
  6907. {$EXTERNALSYM TVN_GETDISPINFO}
  6908. TVN_GETDISPINFO = TVN_GETDISPINFOA;
  6909. {$EXTERNALSYM TVN_SETDISPINFO}
  6910. TVN_SETDISPINFO = TVN_SETDISPINFOA;
  6911. {$ENDIF}
  6912. {$EXTERNALSYM TVIF_DI_SETITEM}
  6913. TVIF_DI_SETITEM = $1000;
  6914. type
  6915. PTVDispInfoA = ^TTVDispInfoA;
  6916. PTVDispInfoW = ^TTVDispInfoW;
  6917. PTVDispInfo = PTVDispInfoW;
  6918. {$EXTERNALSYM tagTVDISPINFOA}
  6919. tagTVDISPINFOA = record
  6920. hdr: TNMHDR;
  6921. item: TTVItemA;
  6922. end;
  6923. {$EXTERNALSYM tagTVDISPINFOW}
  6924. tagTVDISPINFOW = record
  6925. hdr: TNMHDR;
  6926. item: TTVItemW;
  6927. end;
  6928. {$EXTERNALSYM tagTVDISPINFO}
  6929. tagTVDISPINFO = tagTVDISPINFOW;
  6930. {$EXTERNALSYM _TV_DISPINFOA}
  6931. _TV_DISPINFOA = tagTVDISPINFOA;
  6932. {$EXTERNALSYM _TV_DISPINFOW}
  6933. _TV_DISPINFOW = tagTVDISPINFOW;
  6934. {$EXTERNALSYM _TV_DISPINFO}
  6935. _TV_DISPINFO = _TV_DISPINFOW;
  6936. TTVDispInfoA = tagTVDISPINFOA;
  6937. TTVDispInfoW = tagTVDISPINFOW;
  6938. TTVDispInfo = TTVDispInfoW;
  6939. {$EXTERNALSYM TV_DISPINFOA}
  6940. TV_DISPINFOA = tagTVDISPINFOA;
  6941. {$EXTERNALSYM TV_DISPINFOW}
  6942. TV_DISPINFOW = tagTVDISPINFOW;
  6943. {$EXTERNALSYM TV_DISPINFO}
  6944. TV_DISPINFO = TV_DISPINFOW;
  6945. type
  6946. { For IE >= 0x0600 }
  6947. PNMTVDispInfoExA = ^TNMTVDispInfoExA;
  6948. PNMTVDispInfoExW = ^TNMTVDispInfoExW;
  6949. PNMTVDispInfoEx = PNMTVDispInfoExW;
  6950. tagTVDISPINFOEXA = record
  6951. hdr: NMHDR;
  6952. item: TTVItemExA;
  6953. end;
  6954. {$EXTERNALSYM tagTVDISPINFOEXA}
  6955. tagTVDISPINFOEXW = record
  6956. hdr: NMHDR;
  6957. item: TTVItemExW;
  6958. end;
  6959. {$EXTERNALSYM tagTVDISPINFOEXW}
  6960. tagTVDISPINFOEX = tagTVDISPINFOEXW;
  6961. tagNMTVDISPINFOEXA = tagTVDISPINFOEXA deprecated 'Use tagTVDISPINFOEXA';
  6962. tagNMTVDISPINFOEXW = tagTVDISPINFOEXW deprecated 'Use tagTVDISPINFOEXW';
  6963. tagNMTVDISPINFOEX = tagTVDISPINFOEX deprecated 'Use tagTVDISPINFOEX';
  6964. {$EXTERNALSYM TV_DISPINFOEXA}
  6965. TV_DISPINFOEXA = tagTVDISPINFOEXA;
  6966. {$EXTERNALSYM TV_DISPINFOEXW}
  6967. TV_DISPINFOEXW = tagTVDISPINFOEXW;
  6968. {$EXTERNALSYM TV_DISPINFOEX}
  6969. TV_DISPINFOEX = TV_DISPINFOEXW;
  6970. TNMTVDispInfoExA = tagTVDISPINFOEXA;
  6971. TNMTVDispInfoExW = tagTVDISPINFOEXW;
  6972. TNMTVDispInfoEx = TNMTVDispInfoExW;
  6973. const
  6974. {$EXTERNALSYM TVN_ITEMEXPANDINGA}
  6975. TVN_ITEMEXPANDINGA = TVN_FIRST-5;
  6976. {$EXTERNALSYM TVN_ITEMEXPANDEDA}
  6977. TVN_ITEMEXPANDEDA = TVN_FIRST-6;
  6978. {$EXTERNALSYM TVN_BEGINDRAGA}
  6979. TVN_BEGINDRAGA = TVN_FIRST-7;
  6980. {$EXTERNALSYM TVN_BEGINRDRAGA}
  6981. TVN_BEGINRDRAGA = TVN_FIRST-8;
  6982. {$EXTERNALSYM TVN_DELETEITEMA}
  6983. TVN_DELETEITEMA = TVN_FIRST-9;
  6984. {$EXTERNALSYM TVN_BEGINLABELEDITA}
  6985. TVN_BEGINLABELEDITA = TVN_FIRST-10;
  6986. {$EXTERNALSYM TVN_ENDLABELEDITA}
  6987. TVN_ENDLABELEDITA = TVN_FIRST-11;
  6988. {$EXTERNALSYM TVN_GETINFOTIPA}
  6989. TVN_GETINFOTIPA = TVN_FIRST-13;
  6990. {$EXTERNALSYM TVN_ITEMEXPANDINGW}
  6991. TVN_ITEMEXPANDINGW = TVN_FIRST-54;
  6992. {$EXTERNALSYM TVN_ITEMEXPANDEDW}
  6993. TVN_ITEMEXPANDEDW = TVN_FIRST-55;
  6994. {$EXTERNALSYM TVN_BEGINDRAGW}
  6995. TVN_BEGINDRAGW = TVN_FIRST-56;
  6996. {$EXTERNALSYM TVN_BEGINRDRAGW}
  6997. TVN_BEGINRDRAGW = TVN_FIRST-57;
  6998. {$EXTERNALSYM TVN_DELETEITEMW}
  6999. TVN_DELETEITEMW = TVN_FIRST-58;
  7000. {$EXTERNALSYM TVN_BEGINLABELEDITW}
  7001. TVN_BEGINLABELEDITW = TVN_FIRST-59;
  7002. {$EXTERNALSYM TVN_ENDLABELEDITW}
  7003. TVN_ENDLABELEDITW = TVN_FIRST-60;
  7004. {$EXTERNALSYM TVN_GETINFOTIPW}
  7005. TVN_GETINFOTIPW = TVN_FIRST-14;
  7006. {$IFDEF UNICODE}
  7007. {$EXTERNALSYM TVN_ITEMEXPANDING}
  7008. TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
  7009. {$EXTERNALSYM TVN_ITEMEXPANDED}
  7010. TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
  7011. {$EXTERNALSYM TVN_BEGINDRAG}
  7012. TVN_BEGINDRAG = TVN_BEGINDRAGW;
  7013. {$EXTERNALSYM TVN_BEGINRDRAG}
  7014. TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
  7015. {$EXTERNALSYM TVN_DELETEITEM}
  7016. TVN_DELETEITEM = TVN_DELETEITEMW;
  7017. {$EXTERNALSYM TVN_BEGINLABELEDIT}
  7018. TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
  7019. {$EXTERNALSYM TVN_ENDLABELEDIT}
  7020. TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
  7021. {$EXTERNALSYM TVN_GETINFOTIP}
  7022. TVN_GETINFOTIP = TVN_GETINFOTIPW;
  7023. {$ELSE}
  7024. {$EXTERNALSYM TVN_ITEMEXPANDING}
  7025. TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
  7026. {$EXTERNALSYM TVN_ITEMEXPANDED}
  7027. TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
  7028. {$EXTERNALSYM TVN_BEGINDRAG}
  7029. TVN_BEGINDRAG = TVN_BEGINDRAGA;
  7030. {$EXTERNALSYM TVN_BEGINRDRAG}
  7031. TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
  7032. {$EXTERNALSYM TVN_DELETEITEM}
  7033. TVN_DELETEITEM = TVN_DELETEITEMA;
  7034. {$EXTERNALSYM TVN_BEGINLABELEDIT}
  7035. TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
  7036. {$EXTERNALSYM TVN_ENDLABELEDIT}
  7037. TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
  7038. {$EXTERNALSYM TVN_GETINFOTIP}
  7039. TVN_GETINFOTIP = TVN_GETINFOTIPA;
  7040. {$ENDIF}
  7041. const
  7042. {$EXTERNALSYM TVN_KEYDOWN}
  7043. TVN_KEYDOWN = TVN_FIRST-12;
  7044. {$EXTERNALSYM TVN_SINGLEEXPAND}
  7045. TVN_SINGLEEXPAND = TVN_FIRST-15;
  7046. {$EXTERNALSYM TVNRET_DEFAULT}
  7047. TVNRET_DEFAULT = 0;
  7048. {$EXTERNALSYM TVNRET_SKIPOLD}
  7049. TVNRET_SKIPOLD = 1;
  7050. {$EXTERNALSYM TVNRET_SKIPNEW}
  7051. TVNRET_SKIPNEW = 2;
  7052. { For IE >= 0x0600 }
  7053. {$EXTERNALSYM TVN_ITEMCHANGINGA}
  7054. TVN_ITEMCHANGINGA = TVN_FIRST-16;
  7055. {$EXTERNALSYM TVN_ITEMCHANGINGW}
  7056. TVN_ITEMCHANGINGW = TVN_FIRST-17;
  7057. {$EXTERNALSYM TVN_ITEMCHANGEDA}
  7058. TVN_ITEMCHANGEDA = TVN_FIRST-18;
  7059. {$EXTERNALSYM TVN_ITEMCHANGEDW}
  7060. TVN_ITEMCHANGEDW = TVN_FIRST-19;
  7061. {$EXTERNALSYM TVN_ASYNCDRAW}
  7062. TVN_ASYNCDRAW = TVN_FIRST-20;
  7063. {$IFDEF UNICODE}
  7064. {$EXTERNALSYM TVN_ITEMCHANGING}
  7065. TVN_ITEMCHANGING = TVN_ITEMCHANGINGW;
  7066. {$EXTERNALSYM TVN_ITEMCHANGED}
  7067. TVN_ITEMCHANGED = TVN_ITEMCHANGEDW;
  7068. {$ELSE}
  7069. {$EXTERNALSYM TVN_ITEMCHANGING}
  7070. TVN_ITEMCHANGING = TVN_ITEMCHANGINGA;
  7071. {$EXTERNALSYM TVN_ITEMCHANGED}
  7072. TVN_ITEMCHANGED = TVN_ITEMCHANGEDA;
  7073. {$ENDIF}
  7074. {$ALIGN 1}
  7075. type
  7076. {$EXTERNALSYM tagTVKEYDOWN}
  7077. tagTVKEYDOWN = record
  7078. hdr: TNMHDR;
  7079. wVKey: Word;
  7080. flags: UINT;
  7081. end;
  7082. {$EXTERNALSYM _TV_KEYDOWN}
  7083. _TV_KEYDOWN = tagTVKEYDOWN;
  7084. TTVKeyDown = tagTVKEYDOWN;
  7085. {$EXTERNALSYM TV_KEYDOWN}
  7086. TV_KEYDOWN = tagTVKEYDOWN;
  7087. {$ALIGN ON}
  7088. {$EXTERNALSYM tagNMTVCUSTOMDRAW}
  7089. tagNMTVCUSTOMDRAW = record
  7090. nmcd: TNMCustomDraw;
  7091. clrText: COLORREF;
  7092. clrTextBk: COLORREF;
  7093. iLevel: Integer;
  7094. end;
  7095. PNMTVCustomDraw = ^TNMTVCustomDraw;
  7096. TNMTVCustomDraw = tagNMTVCUSTOMDRAW;
  7097. // for tooltips
  7098. {$EXTERNALSYM tagNMTVGETINFOTIPA}
  7099. tagNMTVGETINFOTIPA = record
  7100. hdr: TNMHdr;
  7101. pszText: PAnsiChar;
  7102. cchTextMax: Integer;
  7103. hItem: HTREEITEM;
  7104. lParam: LPARAM;
  7105. end;
  7106. {$EXTERNALSYM tagNMTVGETINFOTIPW}
  7107. tagNMTVGETINFOTIPW = record
  7108. hdr: TNMHdr;
  7109. pszText: PWideChar;
  7110. cchTextMax: Integer;
  7111. hItem: HTREEITEM;
  7112. lParam: LPARAM;
  7113. end;
  7114. {$EXTERNALSYM tagNMTVGETINFOTIP}
  7115. tagNMTVGETINFOTIP = tagNMTVGETINFOTIPW;
  7116. PNMTVGetInfoTipA = ^TNMTVGetInfoTipA;
  7117. PNMTVGetInfoTipW = ^TNMTVGetInfoTipW;
  7118. PNMTVGetInfoTip = PNMTVGetInfoTipW;
  7119. TNMTVGetInfoTipA = tagNMTVGETINFOTIPA;
  7120. TNMTVGetInfoTipW = tagNMTVGETINFOTIPW;
  7121. TNMTVGetInfoTip = TNMTVGetInfoTipW;
  7122. const
  7123. // treeview's customdraw return meaning don't draw images. valid on CDRF_NOTIFYITEMPREPAINT
  7124. {$EXTERNALSYM TVCDRF_NOIMAGES}
  7125. TVCDRF_NOIMAGES = $00010000;
  7126. type
  7127. { For IE >= 0x0600 }
  7128. { $EXTERNALSYM tagNMTVITEMCHANGE}
  7129. tagNMTVITEMCHANGE = record
  7130. hdr: NMHDR;
  7131. uChanged: UINT;
  7132. hItem: HTREEITEM;
  7133. uStateNew: UINT;
  7134. uStateOld: UINT;
  7135. lParam: LPARAM;
  7136. end;
  7137. PNMTVItemChange = ^TNMTVItemChange;
  7138. TNMTVItemChange = tagNMTVITEMCHANGE;
  7139. {$EXTERNALSYM tagNMTVASYNCDRAW}
  7140. tagNMTVASYNCDRAW = record
  7141. hdr: NMHDR;
  7142. pimldp: PImageListDrawParams; // the draw that failed
  7143. hr: HRESULT; // why it failed
  7144. hItem: HTREEITEM; // item that failed to draw icon
  7145. lParam: LPARAM; // its data
  7146. // Out Params
  7147. dwRetFlags: DWORD; // What listview should do on return
  7148. iRetImageIndex: Integer; // used if ADRF_DRAWIMAGE is returned
  7149. end;
  7150. PNMTVAsyncDraw = ^TNMTVAsyncDraw;
  7151. TNMTVAsyncDraw = tagNMTVASYNCDRAW;
  7152. { ====== ComboBoxEx ======================== }
  7153. const
  7154. {$EXTERNALSYM WC_COMBOBOXEX}
  7155. WC_COMBOBOXEX = 'ComboBoxEx32';
  7156. {$EXTERNALSYM CBEIF_TEXT}
  7157. CBEIF_TEXT = $00000001;
  7158. {$EXTERNALSYM CBEIF_IMAGE}
  7159. CBEIF_IMAGE = $00000002;
  7160. {$EXTERNALSYM CBEIF_SELECTEDIMAGE}
  7161. CBEIF_SELECTEDIMAGE = $00000004;
  7162. {$EXTERNALSYM CBEIF_OVERLAY}
  7163. CBEIF_OVERLAY = $00000008;
  7164. {$EXTERNALSYM CBEIF_INDENT}
  7165. CBEIF_INDENT = $00000010;
  7166. {$EXTERNALSYM CBEIF_LPARAM}
  7167. CBEIF_LPARAM = $00000020;
  7168. {$EXTERNALSYM CBEIF_DI_SETITEM}
  7169. CBEIF_DI_SETITEM = $10000000;
  7170. type
  7171. {$EXTERNALSYM tagCOMBOBOXEXITEMA}
  7172. tagCOMBOBOXEXITEMA = record
  7173. mask: UINT;
  7174. iItem: IntPtr;
  7175. pszText: PAnsiChar;
  7176. cchTextMax: Integer;
  7177. iImage: Integer;
  7178. iSelectedImage: Integer;
  7179. iOverlay: Integer;
  7180. iIndent: Integer;
  7181. lParam: LPARAM;
  7182. end;
  7183. {$EXTERNALSYM tagCOMBOBOXEXITEMW}
  7184. tagCOMBOBOXEXITEMW = record
  7185. mask: UINT;
  7186. iItem: IntPtr;
  7187. pszText: PWideChar;
  7188. cchTextMax: Integer;
  7189. iImage: Integer;
  7190. iSelectedImage: Integer;
  7191. iOverlay: Integer;
  7192. iIndent: Integer;
  7193. lParam: LPARAM;
  7194. end;
  7195. {$EXTERNALSYM tagCOMBOBOXEXITEM}
  7196. tagCOMBOBOXEXITEM = tagCOMBOBOXEXITEMW;
  7197. PComboBoxExItemA = ^TComboBoxExItemA;
  7198. PComboBoxExItemW = ^TComboBoxExItemW;
  7199. PComboBoxExItem = PComboBoxExItemW;
  7200. TComboBoxExItemA = tagCOMBOBOXEXITEMA;
  7201. TComboBoxExItemW = tagCOMBOBOXEXITEMW;
  7202. TComboBoxExItem = TComboBoxExItemW;
  7203. const
  7204. {$EXTERNALSYM CBEM_INSERTITEMA}
  7205. CBEM_INSERTITEMA = WM_USER + 1;
  7206. {$EXTERNALSYM CBEM_SETIMAGELIST}
  7207. CBEM_SETIMAGELIST = WM_USER + 2;
  7208. {$EXTERNALSYM CBEM_GETIMAGELIST}
  7209. CBEM_GETIMAGELIST = WM_USER + 3;
  7210. {$EXTERNALSYM CBEM_GETITEMA}
  7211. CBEM_GETITEMA = WM_USER + 4;
  7212. {$EXTERNALSYM CBEM_SETITEMA}
  7213. CBEM_SETITEMA = WM_USER + 5;
  7214. {$EXTERNALSYM CBEM_DELETEITEM}
  7215. CBEM_DELETEITEM = CB_DELETESTRING;
  7216. {$EXTERNALSYM CBEM_GETCOMBOCONTROL}
  7217. CBEM_GETCOMBOCONTROL = WM_USER + 6;
  7218. {$EXTERNALSYM CBEM_GETEDITCONTROL}
  7219. CBEM_GETEDITCONTROL = WM_USER + 7;
  7220. {$EXTERNALSYM CBEM_SETEXSTYLE}
  7221. CBEM_SETEXSTYLE = WM_USER + 8; // use SETEXTENDEDSTYLE instead
  7222. {$EXTERNALSYM CBEM_GETEXSTYLE}
  7223. CBEM_GETEXSTYLE = WM_USER + 9; // use GETEXTENDEDSTYLE instead
  7224. {$EXTERNALSYM CBEM_GETEXTENDEDSTYLE}
  7225. CBEM_GETEXTENDEDSTYLE = WM_USER + 9;
  7226. {$EXTERNALSYM CBEM_HASEDITCHANGED}
  7227. CBEM_HASEDITCHANGED = WM_USER + 10;
  7228. {$EXTERNALSYM CBEM_INSERTITEMW}
  7229. CBEM_INSERTITEMW = WM_USER + 11;
  7230. {$EXTERNALSYM CBEM_SETITEMW}
  7231. CBEM_SETITEMW = WM_USER + 12;
  7232. {$EXTERNALSYM CBEM_GETITEMW}
  7233. CBEM_GETITEMW = WM_USER + 13;
  7234. {$EXTERNALSYM CBEM_SETEXTENDEDSTYLE}
  7235. CBEM_SETEXTENDEDSTYLE = WM_USER + 14; // lparam == new style, wParam (optional) == mask
  7236. {$EXTERNALSYM CBEM_SETUNICODEFORMAT}
  7237. CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  7238. {$EXTERNALSYM CBEM_GETUNICODEFORMAT}
  7239. CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  7240. { For Windows >= XP }
  7241. {$EXTERNALSYM CBEM_SETWINDOWTHEME}
  7242. CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  7243. {$IFDEF UNICODE}
  7244. {$EXTERNALSYM CBEM_INSERTITEM}
  7245. CBEM_INSERTITEM = CBEM_INSERTITEMW;
  7246. {$EXTERNALSYM CBEM_SETITEM}
  7247. CBEM_SETITEM = CBEM_SETITEMW;
  7248. {$EXTERNALSYM CBEM_GETITEM}
  7249. CBEM_GETITEM = CBEM_GETITEMW;
  7250. {$ELSE}
  7251. {$EXTERNALSYM CBEM_INSERTITEM}
  7252. CBEM_INSERTITEM = CBEM_INSERTITEMA;
  7253. {$EXTERNALSYM CBEM_SETITEM}
  7254. CBEM_SETITEM = CBEM_SETITEMA;
  7255. {$EXTERNALSYM CBEM_GETITEM}
  7256. CBEM_GETITEM = CBEM_GETITEMA;
  7257. {$ENDIF}
  7258. {$EXTERNALSYM CBES_EX_NOEDITIMAGE}
  7259. CBES_EX_NOEDITIMAGE = $00000001;
  7260. {$EXTERNALSYM CBES_EX_NOEDITIMAGEINDENT}
  7261. CBES_EX_NOEDITIMAGEINDENT = $00000002;
  7262. {$EXTERNALSYM CBES_EX_PATHWORDBREAKPROC}
  7263. CBES_EX_PATHWORDBREAKPROC = $00000004;
  7264. {$EXTERNALSYM CBES_EX_NOSIZELIMIT}
  7265. CBES_EX_NOSIZELIMIT = $00000008;
  7266. {$EXTERNALSYM CBES_EX_CASESENSITIVE}
  7267. CBES_EX_CASESENSITIVE = $00000010;
  7268. { For Windows >= Vista }
  7269. {$EXTERNALSYM CBES_EX_TEXTENDELLIPSIS}
  7270. CBES_EX_TEXTENDELLIPSIS = $00000020;
  7271. type
  7272. {$EXTERNALSYM NMCOMBOBOXEXA}
  7273. NMCOMBOBOXEXA = record
  7274. hdr: TNMHdr;
  7275. ceItem: TComboBoxExItemA;
  7276. end;
  7277. {$EXTERNALSYM NMCOMBOBOXEXW}
  7278. NMCOMBOBOXEXW = record
  7279. hdr: TNMHdr;
  7280. ceItem: TComboBoxExItemW;
  7281. end;
  7282. {$EXTERNALSYM NMCOMBOBOXEX}
  7283. NMCOMBOBOXEX = NMCOMBOBOXEXW;
  7284. PNMComboBoxExA = ^TNMComboBoxExA;
  7285. PNMComboBoxExW = ^TNMComboBoxExW;
  7286. PNMComboBoxEx = PNMComboBoxExW;
  7287. TNMComboBoxExA = NMCOMBOBOXEXA;
  7288. TNMComboBoxExW = NMCOMBOBOXEXW;
  7289. TNMComboBoxEx = TNMComboBoxExW;
  7290. const
  7291. {$EXTERNALSYM CBEN_GETDISPINFOA}
  7292. CBEN_GETDISPINFOA = CBEN_FIRST - 0;
  7293. {$EXTERNALSYM CBEN_INSERTITEM}
  7294. CBEN_INSERTITEM = CBEN_FIRST - 1;
  7295. {$EXTERNALSYM CBEN_DELETEITEM}
  7296. CBEN_DELETEITEM = CBEN_FIRST - 2;
  7297. {$EXTERNALSYM CBEN_BEGINEDIT}
  7298. CBEN_BEGINEDIT = CBEN_FIRST - 4;
  7299. {$EXTERNALSYM CBEN_ENDEDITA}
  7300. CBEN_ENDEDITA = CBEN_FIRST - 5; // lParam specifies why the endedit is happening
  7301. {$EXTERNALSYM CBEN_ENDEDITW}
  7302. CBEN_ENDEDITW = CBEN_FIRST - 6;
  7303. {$EXTERNALSYM CBEN_GETDISPINFOW}
  7304. CBEN_GETDISPINFOW = CBEN_FIRST - 7;
  7305. {$EXTERNALSYM CBEN_DRAGBEGINA}
  7306. CBEN_DRAGBEGINA = CBEN_FIRST - 8;
  7307. {$EXTERNALSYM CBEN_DRAGBEGINW}
  7308. CBEN_DRAGBEGINW = CBEN_FIRST - 9;
  7309. {$IFDEF UNICODE}
  7310. {$EXTERNALSYM CBEN_ENDEDIT}
  7311. CBEN_ENDEDIT = CBEN_ENDEDITW;
  7312. {$EXTERNALSYM CBEN_GETDISPINFO}
  7313. CBEN_GETDISPINFO = CBEN_GETDISPINFOW;
  7314. {$EXTERNALSYM CBEN_DRAGBEGIN}
  7315. CBEN_DRAGBEGIN = CBEN_DRAGBEGINW;
  7316. {$ELSE}
  7317. {$EXTERNALSYM CBEN_ENDEDIT}
  7318. CBEN_ENDEDIT = CBEN_ENDEDITA;
  7319. {$EXTERNALSYM CBEN_GETDISPINFO}
  7320. CBEN_GETDISPINFO = CBEN_GETDISPINFOA;
  7321. {$EXTERNALSYM CBEN_DRAGBEGIN}
  7322. CBEN_DRAGBEGIN = CBEN_DRAGBEGINA;
  7323. {$ENDIF}
  7324. {$EXTERNALSYM CBENF_KILLFOCUS}
  7325. CBENF_KILLFOCUS = 1;
  7326. {$EXTERNALSYM CBENF_RETURN}
  7327. CBENF_RETURN = 2;
  7328. {$EXTERNALSYM CBENF_ESCAPE}
  7329. CBENF_ESCAPE = 3;
  7330. {$EXTERNALSYM CBENF_DROPDOWN}
  7331. CBENF_DROPDOWN = 4;
  7332. {$EXTERNALSYM CBEMAXSTRLEN}
  7333. CBEMAXSTRLEN = 260;
  7334. type
  7335. // CBEN_DRAGBEGIN sends this information ...
  7336. {$EXTERNALSYM NMCBEDRAGBEGINA}
  7337. NMCBEDRAGBEGINA = record
  7338. hdr: TNMHdr;
  7339. iItemid: Integer;
  7340. szText: array[0..CBEMAXSTRLEN - 1] of AnsiChar;
  7341. end;
  7342. {$EXTERNALSYM NMCBEDRAGBEGINW}
  7343. NMCBEDRAGBEGINW = record
  7344. hdr: TNMHdr;
  7345. iItemid: Integer;
  7346. szText: array[0..CBEMAXSTRLEN - 1] of WideChar;
  7347. end;
  7348. {$EXTERNALSYM NMCBEDRAGBEGIN}
  7349. NMCBEDRAGBEGIN = NMCBEDRAGBEGINW;
  7350. PNMCBEDragBeginA = ^TNMCBEDragBeginA;
  7351. PNMCBEDragBeginW = ^TNMCBEDragBeginW;
  7352. PNMCBEDragBegin = PNMCBEDragBeginW;
  7353. TNMCBEDragBeginA = NMCBEDRAGBEGINA;
  7354. TNMCBEDragBeginW = NMCBEDRAGBEGINW;
  7355. TNMCBEDragBegin = TNMCBEDragBeginW;
  7356. // CBEN_ENDEDIT sends this information...
  7357. // fChanged if the user actually did anything
  7358. // iNewSelection gives what would be the new selection unless the notify is failed
  7359. // iNewSelection may be CB_ERR if there's no match
  7360. {$EXTERNALSYM NMCBEENDEDITA}
  7361. NMCBEENDEDITA = record
  7362. hdr: TNMHdr;
  7363. fChanged: BOOL;
  7364. iNewSelection: Integer;
  7365. szText: array[0..CBEMAXSTRLEN - 1] of AnsiChar;
  7366. iWhy: Integer;
  7367. end;
  7368. {$EXTERNALSYM NMCBEENDEDITW}
  7369. NMCBEENDEDITW = record
  7370. hdr: TNMHdr;
  7371. fChanged: BOOL;
  7372. iNewSelection: Integer;
  7373. szText: array[0..CBEMAXSTRLEN - 1] of WideChar;
  7374. iWhy: Integer;
  7375. end;
  7376. {$EXTERNALSYM NMCBEENDEDIT}
  7377. NMCBEENDEDIT = NMCBEENDEDITW;
  7378. PNMCBEEndEditA = ^TNMCBEEndEditA;
  7379. PNMCBEEndEditW = ^TNMCBEEndEditW;
  7380. PNMCBEEndEdit = PNMCBEEndEditW;
  7381. TNMCBEEndEditA = NMCBEENDEDITA;
  7382. TNMCBEEndEditW = NMCBEENDEDITW;
  7383. TNMCBEEndEdit = TNMCBEEndEditW;
  7384. { ====== TAB CONTROL ======================== }
  7385. const
  7386. {$EXTERNALSYM WC_TABCONTROL}
  7387. WC_TABCONTROL = 'SysTabControl32';
  7388. const
  7389. {$EXTERNALSYM TCS_SCROLLOPPOSITE}
  7390. TCS_SCROLLOPPOSITE = $0001; // assumes multiline tab
  7391. {$EXTERNALSYM TCS_BOTTOM}
  7392. TCS_BOTTOM = $0002;
  7393. {$EXTERNALSYM TCS_RIGHT}
  7394. TCS_RIGHT = $0002;
  7395. {$EXTERNALSYM TCS_MULTISELECT}
  7396. TCS_MULTISELECT = $0004; // allow multi-select in button mode
  7397. {$EXTERNALSYM TCS_FLATBUTTONS}
  7398. TCS_FLATBUTTONS = $0008;
  7399. {$EXTERNALSYM TCS_FORCEICONLEFT}
  7400. TCS_FORCEICONLEFT = $0010;
  7401. {$EXTERNALSYM TCS_FORCELABELLEFT}
  7402. TCS_FORCELABELLEFT = $0020;
  7403. {$EXTERNALSYM TCS_HOTTRACK}
  7404. TCS_HOTTRACK = $0040;
  7405. {$EXTERNALSYM TCS_VERTICAL}
  7406. TCS_VERTICAL = $0080;
  7407. {$EXTERNALSYM TCS_TABS}
  7408. TCS_TABS = $0000;
  7409. {$EXTERNALSYM TCS_BUTTONS}
  7410. TCS_BUTTONS = $0100;
  7411. {$EXTERNALSYM TCS_SINGLELINE}
  7412. TCS_SINGLELINE = $0000;
  7413. {$EXTERNALSYM TCS_MULTILINE}
  7414. TCS_MULTILINE = $0200;
  7415. {$EXTERNALSYM TCS_RIGHTJUSTIFY}
  7416. TCS_RIGHTJUSTIFY = $0000;
  7417. {$EXTERNALSYM TCS_FIXEDWIDTH}
  7418. TCS_FIXEDWIDTH = $0400;
  7419. {$EXTERNALSYM TCS_RAGGEDRIGHT}
  7420. TCS_RAGGEDRIGHT = $0800;
  7421. {$EXTERNALSYM TCS_FOCUSONBUTTONDOWN}
  7422. TCS_FOCUSONBUTTONDOWN = $1000;
  7423. {$EXTERNALSYM TCS_OWNERDRAWFIXED}
  7424. TCS_OWNERDRAWFIXED = $2000;
  7425. {$EXTERNALSYM TCS_TOOLTIPS}
  7426. TCS_TOOLTIPS = $4000;
  7427. {$EXTERNALSYM TCS_FOCUSNEVER}
  7428. TCS_FOCUSNEVER = $8000;
  7429. {$EXTERNALSYM TCS_EX_FLATSEPARATORS}
  7430. TCS_EX_FLATSEPARATORS = $00000001;
  7431. {$EXTERNALSYM TCS_EX_REGISTERDROP}
  7432. TCS_EX_REGISTERDROP = $00000002;
  7433. {$EXTERNALSYM TCM_GETIMAGELIST}
  7434. TCM_GETIMAGELIST = TCM_FIRST + 2;
  7435. {$EXTERNALSYM TCM_SETIMAGELIST}
  7436. TCM_SETIMAGELIST = TCM_FIRST + 3;
  7437. {$EXTERNALSYM TCM_GETITEMCOUNT}
  7438. TCM_GETITEMCOUNT = TCM_FIRST + 4;
  7439. {$EXTERNALSYM TCM_DELETEITEM}
  7440. TCM_DELETEITEM = TCM_FIRST + 8;
  7441. {$EXTERNALSYM TCM_DELETEALLITEMS}
  7442. TCM_DELETEALLITEMS = TCM_FIRST + 9;
  7443. {$EXTERNALSYM TCM_GETITEMRECT}
  7444. TCM_GETITEMRECT = TCM_FIRST + 10;
  7445. {$EXTERNALSYM TCM_GETCURSEL}
  7446. TCM_GETCURSEL = TCM_FIRST + 11;
  7447. {$EXTERNALSYM TCM_SETCURSEL}
  7448. TCM_SETCURSEL = TCM_FIRST + 12;
  7449. {$EXTERNALSYM TCM_HITTEST}
  7450. TCM_HITTEST = TCM_FIRST + 13;
  7451. {$EXTERNALSYM TCM_SETITEMEXTRA}
  7452. TCM_SETITEMEXTRA = TCM_FIRST + 14;
  7453. {$EXTERNALSYM TCM_ADJUSTRECT}
  7454. TCM_ADJUSTRECT = TCM_FIRST + 40;
  7455. {$EXTERNALSYM TCM_SETITEMSIZE}
  7456. TCM_SETITEMSIZE = TCM_FIRST + 41;
  7457. {$EXTERNALSYM TCM_REMOVEIMAGE}
  7458. TCM_REMOVEIMAGE = TCM_FIRST + 42;
  7459. {$EXTERNALSYM TCM_SETPADDING}
  7460. TCM_SETPADDING = TCM_FIRST + 43;
  7461. {$EXTERNALSYM TCM_GETROWCOUNT}
  7462. TCM_GETROWCOUNT = TCM_FIRST + 44;
  7463. {$EXTERNALSYM TCM_GETTOOLTIPS}
  7464. TCM_GETTOOLTIPS = TCM_FIRST + 45;
  7465. {$EXTERNALSYM TCM_SETTOOLTIPS}
  7466. TCM_SETTOOLTIPS = TCM_FIRST + 46;
  7467. {$EXTERNALSYM TCM_GETCURFOCUS}
  7468. TCM_GETCURFOCUS = TCM_FIRST + 47;
  7469. {$EXTERNALSYM TCM_SETCURFOCUS}
  7470. TCM_SETCURFOCUS = TCM_FIRST + 48;
  7471. {$EXTERNALSYM TCM_SETMINTABWIDTH}
  7472. TCM_SETMINTABWIDTH = TCM_FIRST + 49;
  7473. {$EXTERNALSYM TCM_DESELECTALL}
  7474. TCM_DESELECTALL = TCM_FIRST + 50;
  7475. {$EXTERNALSYM TCM_HIGHLIGHTITEM}
  7476. TCM_HIGHLIGHTITEM = TCM_FIRST + 51;
  7477. {$EXTERNALSYM TCM_SETEXTENDEDSTYLE}
  7478. TCM_SETEXTENDEDSTYLE = TCM_FIRST + 52; // optional wParam == mask
  7479. {$EXTERNALSYM TCM_GETEXTENDEDSTYLE}
  7480. TCM_GETEXTENDEDSTYLE = TCM_FIRST + 53;
  7481. {$EXTERNALSYM TCM_SETUNICODEFORMAT}
  7482. TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  7483. {$EXTERNALSYM TCM_GETUNICODEFORMAT}
  7484. TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  7485. {$EXTERNALSYM TCIF_TEXT}
  7486. TCIF_TEXT = $0001;
  7487. {$EXTERNALSYM TCIF_IMAGE}
  7488. TCIF_IMAGE = $0002;
  7489. {$EXTERNALSYM TCIF_RTLREADING}
  7490. TCIF_RTLREADING = $0004;
  7491. {$EXTERNALSYM TCIF_PARAM}
  7492. TCIF_PARAM = $0008;
  7493. {$EXTERNALSYM TCIF_STATE}
  7494. TCIF_STATE = $0010;
  7495. {$EXTERNALSYM TCIS_BUTTONPRESSED}
  7496. TCIS_BUTTONPRESSED = $0001;
  7497. {$EXTERNALSYM TCIS_HIGHLIGHTED}
  7498. TCIS_HIGHLIGHTED = $0002;
  7499. type
  7500. PTCItemHeaderA = ^TTCItemHeaderA;
  7501. PTCItemHeaderW = ^TTCItemHeaderW;
  7502. PTCItemHeader = PTCItemHeaderW;
  7503. {$EXTERNALSYM tagTCITEMHEADERA}
  7504. tagTCITEMHEADERA = record
  7505. mask: UINT;
  7506. lpReserved1: UINT;
  7507. lpReserved2: UINT;
  7508. pszText: PAnsiChar;
  7509. cchTextMax: Integer;
  7510. iImage: Integer;
  7511. end;
  7512. {$EXTERNALSYM tagTCITEMHEADERW}
  7513. tagTCITEMHEADERW = record
  7514. mask: UINT;
  7515. lpReserved1: UINT;
  7516. lpReserved2: UINT;
  7517. pszText: PWideChar;
  7518. cchTextMax: Integer;
  7519. iImage: Integer;
  7520. end;
  7521. {$EXTERNALSYM tagTCITEMHEADER}
  7522. tagTCITEMHEADER = tagTCITEMHEADERW;
  7523. {$EXTERNALSYM _TC_ITEMHEADERA}
  7524. _TC_ITEMHEADERA = tagTCITEMHEADERA;
  7525. {$EXTERNALSYM _TC_ITEMHEADERW}
  7526. _TC_ITEMHEADERW = tagTCITEMHEADERW;
  7527. {$EXTERNALSYM _TC_ITEMHEADER}
  7528. _TC_ITEMHEADER = _TC_ITEMHEADERW;
  7529. TTCItemHeaderA = tagTCITEMHEADERA;
  7530. TTCItemHeaderW = tagTCITEMHEADERW;
  7531. TTCItemHeader = TTCItemHeaderW;
  7532. {$EXTERNALSYM TC_ITEMHEADERA}
  7533. TC_ITEMHEADERA = tagTCITEMHEADERA;
  7534. {$EXTERNALSYM TC_ITEMHEADERW}
  7535. TC_ITEMHEADERW = tagTCITEMHEADERW;
  7536. {$EXTERNALSYM TC_ITEMHEADER}
  7537. TC_ITEMHEADER = TC_ITEMHEADERW;
  7538. PTCItemA = ^TTCItemA;
  7539. PTCItemW = ^TTCItemW;
  7540. PTCItem = PTCItemW;
  7541. {$EXTERNALSYM tagTCITEMA}
  7542. tagTCITEMA = record
  7543. mask: UINT;
  7544. dwState: DWORD;
  7545. dwStateMask: DWORD;
  7546. pszText: PAnsiChar;
  7547. cchTextMax: Integer;
  7548. iImage: Integer;
  7549. lParam: LPARAM;
  7550. end;
  7551. {$EXTERNALSYM tagTCITEMW}
  7552. tagTCITEMW = record
  7553. mask: UINT;
  7554. dwState: DWORD;
  7555. dwStateMask: DWORD;
  7556. pszText: PWideChar;
  7557. cchTextMax: Integer;
  7558. iImage: Integer;
  7559. lParam: LPARAM;
  7560. end;
  7561. {$EXTERNALSYM tagTCITEM}
  7562. tagTCITEM = tagTCITEMW;
  7563. {$EXTERNALSYM _TC_ITEMA}
  7564. _TC_ITEMA = tagTCITEMA;
  7565. {$EXTERNALSYM _TC_ITEMW}
  7566. _TC_ITEMW = tagTCITEMW;
  7567. {$EXTERNALSYM _TC_ITEM}
  7568. _TC_ITEM = _TC_ITEMW;
  7569. TTCItemA = tagTCITEMA;
  7570. TTCItemW = tagTCITEMW;
  7571. TTCItem = TTCItemW;
  7572. {$EXTERNALSYM TC_ITEMA}
  7573. TC_ITEMA = tagTCITEMA;
  7574. {$EXTERNALSYM TC_ITEMW}
  7575. TC_ITEMW = tagTCITEMW;
  7576. {$EXTERNALSYM TC_ITEM}
  7577. TC_ITEM = TC_ITEMW;
  7578. const
  7579. {$EXTERNALSYM TCM_GETITEMA}
  7580. TCM_GETITEMA = TCM_FIRST + 5;
  7581. {$EXTERNALSYM TCM_SETITEMA}
  7582. TCM_SETITEMA = TCM_FIRST + 6;
  7583. {$EXTERNALSYM TCM_INSERTITEMA}
  7584. TCM_INSERTITEMA = TCM_FIRST + 7;
  7585. {$EXTERNALSYM TCM_GETITEMW}
  7586. TCM_GETITEMW = TCM_FIRST + 60;
  7587. {$EXTERNALSYM TCM_SETITEMW}
  7588. TCM_SETITEMW = TCM_FIRST + 61;
  7589. {$EXTERNALSYM TCM_INSERTITEMW}
  7590. TCM_INSERTITEMW = TCM_FIRST + 62;
  7591. {$IFDEF UNICODE}
  7592. {$EXTERNALSYM TCM_GETITEM}
  7593. TCM_GETITEM = TCM_GETITEMW;
  7594. {$EXTERNALSYM TCM_SETITEM}
  7595. TCM_SETITEM = TCM_SETITEMW;
  7596. {$EXTERNALSYM TCM_INSERTITEM}
  7597. TCM_INSERTITEM = TCM_INSERTITEMW;
  7598. {$ELSE}
  7599. {$EXTERNALSYM TCM_GETITEM}
  7600. TCM_GETITEM = TCM_GETITEMA;
  7601. {$EXTERNALSYM TCM_SETITEM}
  7602. TCM_SETITEM = TCM_SETITEMA;
  7603. {$EXTERNALSYM TCM_INSERTITEM}
  7604. TCM_INSERTITEM = TCM_INSERTITEMA;
  7605. {$ENDIF}
  7606. const
  7607. {$EXTERNALSYM TCHT_NOWHERE}
  7608. TCHT_NOWHERE = $0001;
  7609. {$EXTERNALSYM TCHT_ONITEMICON}
  7610. TCHT_ONITEMICON = $0002;
  7611. {$EXTERNALSYM TCHT_ONITEMLABEL}
  7612. TCHT_ONITEMLABEL = $0004;
  7613. {$EXTERNALSYM TCHT_ONITEM}
  7614. TCHT_ONITEM = TCHT_ONITEMICON or TCHT_ONITEMLABEL;
  7615. type
  7616. PTCHitTestInfo = ^TTCHitTestInfo;
  7617. {$EXTERNALSYM tagTCHITTESTINFO}
  7618. tagTCHITTESTINFO = record
  7619. pt: TPoint;
  7620. flags: UINT;
  7621. end;
  7622. {$EXTERNALSYM _TC_HITTESTINFO}
  7623. _TC_HITTESTINFO = tagTCHITTESTINFO;
  7624. TTCHitTestInfo = tagTCHITTESTINFO;
  7625. {$EXTERNALSYM TC_HITTESTINFO}
  7626. TC_HITTESTINFO = tagTCHITTESTINFO;
  7627. {$ALIGN 1}
  7628. {$EXTERNALSYM tagTCKEYDOWN}
  7629. tagTCKEYDOWN = record
  7630. hdr: TNMHDR;
  7631. wVKey: Word;
  7632. flags: UINT;
  7633. end;
  7634. {$EXTERNALSYM _TC_KEYDOWN}
  7635. _TC_KEYDOWN = tagTCKEYDOWN;
  7636. TTCKeyDown = tagTCKEYDOWN;
  7637. {$EXTERNALSYM TC_KEYDOWN}
  7638. TC_KEYDOWN = tagTCKEYDOWN;
  7639. {$ALIGN ON}
  7640. const
  7641. {$EXTERNALSYM TCN_KEYDOWN}
  7642. TCN_KEYDOWN = TCN_FIRST - 0;
  7643. {$EXTERNALSYM TCN_SELCHANGE}
  7644. TCN_SELCHANGE = TCN_FIRST - 1;
  7645. {$EXTERNALSYM TCN_SELCHANGING}
  7646. TCN_SELCHANGING = TCN_FIRST - 2;
  7647. {$EXTERNALSYM TCN_GETOBJECT}
  7648. TCN_GETOBJECT = TCN_FIRST - 3;
  7649. {$EXTERNALSYM TCN_FOCUSCHANGE}
  7650. TCN_FOCUSCHANGE = TCN_FIRST - 4;
  7651. {$EXTERNALSYM TabCtrl_HitTest}
  7652. function TabCtrl_HitTest(hwndTC: HWND; pinfo: PTCHitTestInfo): Integer; overload; inline;
  7653. {$EXTERNALSYM TabCtrl_HitTest}
  7654. function TabCtrl_HitTest(hwndTC: HWND; const pinfo: TTCHitTestInfo): Integer; overload; inline;
  7655. {$EXTERNALSYM TabCtrl_SetItemExtra}
  7656. function TabCtrl_SetItemExtra(hwndTC: HWND; cb: Integer): BOOL; inline;
  7657. {$EXTERNALSYM TabCtrl_AdjustRect}
  7658. function TabCtrl_AdjustRect(hwnd: HWND; bLarger: BOOL; prc: PRect): Integer; inline;
  7659. {$EXTERNALSYM TabCtrl_SetItemSize}
  7660. function TabCtrl_SetItemSize(hwnd: HWND; x, y: Integer): DWORD;
  7661. {$EXTERNALSYM TabCtrl_RemoveImage}
  7662. procedure TabCtrl_RemoveImage(hwnd: HWND; i: Integer);
  7663. {$EXTERNALSYM TabCtrl_SetPadding}
  7664. procedure TabCtrl_SetPadding(hwnd: HWND; cx, cy: Integer);
  7665. {$EXTERNALSYM TabCtrl_GetRowCount}
  7666. function TabCtrl_GetRowCount(hwnd: HWND): Integer; inline;
  7667. {$EXTERNALSYM TabCtrl_GetToolTips}
  7668. function TabCtrl_GetToolTips(wnd: HWND): HWND; inline;
  7669. {$EXTERNALSYM TabCtrl_SetToolTips}
  7670. procedure TabCtrl_SetToolTips(hwnd: HWND; hwndTT: HWND);
  7671. {$EXTERNALSYM TabCtrl_GetCurFocus}
  7672. function TabCtrl_GetCurFocus(hwnd: HWND): Integer; inline;
  7673. {$EXTERNALSYM TabCtrl_SetCurFocus}
  7674. procedure TabCtrl_SetCurFocus(hwnd: HWND; i: Integer);
  7675. {$EXTERNALSYM TabCtrl_SetMinTabWidth}
  7676. function TabCtrl_SetMinTabWidth(hwnd: HWND; x: Integer): Integer; inline;
  7677. {$EXTERNALSYM TabCtrl_DeselectAll}
  7678. procedure TabCtrl_DeselectAll(hwnd: HWND; fExcludeFocus: BOOL);
  7679. {$EXTERNALSYM TabCtrl_HighlightItem}
  7680. function TabCtrl_HighlightItem(hwnd: HWND; i: Integer; fHighlight: WordBool): BOOL;
  7681. {$EXTERNALSYM TabCtrl_SetExtendedStyle}
  7682. function TabCtrl_SetExtendedStyle(hwnd: HWND; dw: DWORD): DWORD; inline;
  7683. {$EXTERNALSYM TabCtrl_GetExtendedStyle}
  7684. function TabCtrl_GetExtendedStyle(hwnd: HWND): DWORD; inline;
  7685. {$EXTERNALSYM TabCtrl_SetUnicodeFormat}
  7686. function TabCtrl_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL; inline;
  7687. {$EXTERNALSYM TabCtrl_GetUnicodeFormat}
  7688. function TabCtrl_GetUnicodeFormat(hwnd: HWND): BOOL; inline;
  7689. {$EXTERNALSYM TabCtrl_GetItemRect}
  7690. function TabCtrl_GetItemRect(hwnd: HWND; i: Integer; var prc: TRect): BOOL; inline;
  7691. { ====== ANIMATE CONTROL ================= }
  7692. const
  7693. {$EXTERNALSYM ANIMATE_CLASS}
  7694. ANIMATE_CLASS = 'SysAnimate32';
  7695. const
  7696. {$EXTERNALSYM ACS_CENTER}
  7697. ACS_CENTER = $0001;
  7698. {$EXTERNALSYM ACS_TRANSPARENT}
  7699. ACS_TRANSPARENT = $0002;
  7700. {$EXTERNALSYM ACS_AUTOPLAY}
  7701. ACS_AUTOPLAY = $0004;
  7702. {$EXTERNALSYM ACS_TIMER}
  7703. ACS_TIMER = $0008; { don't use threads... use timers }
  7704. {$EXTERNALSYM ACM_OPENA}
  7705. ACM_OPENA = WM_USER + 100;
  7706. {$EXTERNALSYM ACM_OPENW}
  7707. ACM_OPENW = WM_USER + 103;
  7708. {$IFDEF UNICODE}
  7709. {$EXTERNALSYM ACM_OPEN}
  7710. ACM_OPEN = ACM_OPENW;
  7711. {$ELSE}
  7712. {$EXTERNALSYM ACM_OPEN}
  7713. ACM_OPEN = ACM_OPENA;
  7714. {$ENDIF}
  7715. {$EXTERNALSYM ACM_PLAY}
  7716. ACM_PLAY = WM_USER + 101;
  7717. {$EXTERNALSYM ACM_STOP}
  7718. ACM_STOP = WM_USER + 102;
  7719. {$EXTERNALSYM ACN_START}
  7720. ACN_START = 1;
  7721. {$EXTERNALSYM ACN_STOP}
  7722. ACN_STOP = 2;
  7723. {$EXTERNALSYM Animate_Create}
  7724. function Animate_Create(hwndP: HWND; id: HMENU; dwStyle: DWORD; hInstance: HINST): HWND;
  7725. {$EXTERNALSYM Animate_Open}
  7726. function Animate_Open(hwnd: HWND; szName: PChar): BOOL; inline;
  7727. {$EXTERNALSYM Animate_OpenEx}
  7728. function Animate_OpenEx(hwnd: HWND; hInst: HINST; szName: PChar): BOOL; inline;
  7729. {$EXTERNALSYM Animate_Play}
  7730. function Animate_Play(hwnd: HWND; from, _to: Word; rep: UINT): BOOL;
  7731. {$EXTERNALSYM Animate_Stop}
  7732. function Animate_Stop(hwnd: HWND): BOOL; inline;
  7733. {$EXTERNALSYM Animate_Close}
  7734. function Animate_Close(hwnd: HWND): BOOL; inline;
  7735. {$EXTERNALSYM Animate_Seek}
  7736. function Animate_Seek(hwnd: HWND; frame: Word): BOOL; inline;
  7737. { ====== MONTHCAL CONTROL ========= }
  7738. const
  7739. {$EXTERNALSYM MONTHCAL_CLASS}
  7740. MONTHCAL_CLASS = 'SysMonthCal32';
  7741. const
  7742. // Message constants
  7743. {$EXTERNALSYM MCM_FIRST}
  7744. MCM_FIRST = $1000;
  7745. {$EXTERNALSYM MCM_GETCURSEL}
  7746. MCM_GETCURSEL = MCM_FIRST + 1;
  7747. {$EXTERNALSYM MCM_SETCURSEL}
  7748. MCM_SETCURSEL = MCM_FIRST + 2;
  7749. {$EXTERNALSYM MCM_GETMAXSELCOUNT}
  7750. MCM_GETMAXSELCOUNT = MCM_FIRST + 3;
  7751. {$EXTERNALSYM MCM_SETMAXSELCOUNT}
  7752. MCM_SETMAXSELCOUNT = MCM_FIRST + 4;
  7753. {$EXTERNALSYM MCM_GETSELRANGE}
  7754. MCM_GETSELRANGE = MCM_FIRST + 5;
  7755. {$EXTERNALSYM MCM_SETSELRANGE}
  7756. MCM_SETSELRANGE = MCM_FIRST + 6;
  7757. {$EXTERNALSYM MCM_GETMONTHRANGE}
  7758. MCM_GETMONTHRANGE = MCM_FIRST + 7;
  7759. {$EXTERNALSYM MCM_SETDAYSTATE}
  7760. MCM_SETDAYSTATE = MCM_FIRST + 8;
  7761. {$EXTERNALSYM MCM_GETMINREQRECT}
  7762. MCM_GETMINREQRECT = MCM_FIRST + 9;
  7763. {$EXTERNALSYM MCM_SETCOLOR}
  7764. MCM_SETCOLOR = MCM_FIRST + 10;
  7765. {$EXTERNALSYM MCM_GETCOLOR}
  7766. MCM_GETCOLOR = MCM_FIRST + 11;
  7767. {$EXTERNALSYM MCM_SETTODAY}
  7768. MCM_SETTODAY = MCM_FIRST + 12;
  7769. {$EXTERNALSYM MCM_GETTODAY}
  7770. MCM_GETTODAY = MCM_FIRST + 13;
  7771. {$EXTERNALSYM MCM_HITTEST}
  7772. MCM_HITTEST = MCM_FIRST + 14;
  7773. {$EXTERNALSYM MCM_SETFIRSTDAYOFWEEK}
  7774. MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15;
  7775. {$EXTERNALSYM MCM_GETFIRSTDAYOFWEEK}
  7776. MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16;
  7777. {$EXTERNALSYM MCM_GETRANGE}
  7778. MCM_GETRANGE = MCM_FIRST + 17;
  7779. {$EXTERNALSYM MCM_SETRANGE}
  7780. MCM_SETRANGE = MCM_FIRST + 18;
  7781. {$EXTERNALSYM MCM_GETMONTHDELTA}
  7782. MCM_GETMONTHDELTA = MCM_FIRST + 19;
  7783. {$EXTERNALSYM MCM_SETMONTHDELTA}
  7784. MCM_SETMONTHDELTA = MCM_FIRST + 20;
  7785. {$EXTERNALSYM MCM_GETMAXTODAYWIDTH}
  7786. MCM_GETMAXTODAYWIDTH = MCM_FIRST + 21;
  7787. {$EXTERNALSYM MCM_SETUNICODEFORMAT}
  7788. MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  7789. {$EXTERNALSYM MCM_GETUNICODEFORMAT}
  7790. MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  7791. // Hit test flags
  7792. {$EXTERNALSYM MCHT_TITLE}
  7793. MCHT_TITLE = $00010000;
  7794. {$EXTERNALSYM MCHT_CALENDAR}
  7795. MCHT_CALENDAR = $00020000;
  7796. {$EXTERNALSYM MCHT_TODAYLINK}
  7797. MCHT_TODAYLINK = $00030000;
  7798. // NTDDI_VERSION >= NTDDI_VISTA
  7799. {$EXTERNALSYM MCHT_CALENDARCONTROL}
  7800. MCHT_CALENDARCONTROL = $00100000;
  7801. {$EXTERNALSYM MCHT_NEXT}
  7802. MCHT_NEXT = $01000000; // these indicate that hitting
  7803. {$EXTERNALSYM MCHT_PREV}
  7804. MCHT_PREV = $02000000; // here will go to the next/prev month
  7805. {$EXTERNALSYM MCHT_NOWHERE}
  7806. MCHT_NOWHERE = $00000000;
  7807. {$EXTERNALSYM MCHT_TITLEBK}
  7808. MCHT_TITLEBK = MCHT_TITLE;
  7809. {$EXTERNALSYM MCHT_TITLEMONTH}
  7810. MCHT_TITLEMONTH = MCHT_TITLE or $0001;
  7811. {$EXTERNALSYM MCHT_TITLEYEAR}
  7812. MCHT_TITLEYEAR = MCHT_TITLE or $0002;
  7813. {$EXTERNALSYM MCHT_TITLEBTNNEXT}
  7814. MCHT_TITLEBTNNEXT = MCHT_TITLE or MCHT_NEXT or $0003;
  7815. {$EXTERNALSYM MCHT_TITLEBTNPREV}
  7816. MCHT_TITLEBTNPREV = MCHT_TITLE or MCHT_PREV or $0003;
  7817. {$EXTERNALSYM MCHT_CALENDARBK}
  7818. MCHT_CALENDARBK = MCHT_CALENDAR;
  7819. {$EXTERNALSYM MCHT_CALENDARDATE}
  7820. MCHT_CALENDARDATE = MCHT_CALENDAR or $0001;
  7821. {$EXTERNALSYM MCHT_CALENDARDATENEXT}
  7822. MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE or MCHT_NEXT;
  7823. {$EXTERNALSYM MCHT_CALENDARDATEPREV}
  7824. MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE or MCHT_PREV;
  7825. {$EXTERNALSYM MCHT_CALENDARDAY}
  7826. MCHT_CALENDARDAY = MCHT_CALENDAR or $0002;
  7827. {$EXTERNALSYM MCHT_CALENDARWEEKNUM}
  7828. MCHT_CALENDARWEEKNUM = MCHT_CALENDAR or $0003;
  7829. // Color codes
  7830. {$EXTERNALSYM MCSC_BACKGROUND}
  7831. MCSC_BACKGROUND = 0; // the background color (between months)
  7832. {$EXTERNALSYM MCSC_TEXT}
  7833. MCSC_TEXT = 1; // the dates
  7834. {$EXTERNALSYM MCSC_TITLEBK}
  7835. MCSC_TITLEBK = 2; // background of the title
  7836. {$EXTERNALSYM MCSC_TITLETEXT}
  7837. MCSC_TITLETEXT = 3;
  7838. {$EXTERNALSYM MCSC_MONTHBK}
  7839. MCSC_MONTHBK = 4; // background within the month cal
  7840. {$EXTERNALSYM MCSC_TRAILINGTEXT}
  7841. MCSC_TRAILINGTEXT = 5; // the text color of header & trailing days
  7842. // Notification codes
  7843. {$EXTERNALSYM MCN_SELCHANGE}
  7844. MCN_SELCHANGE = MCN_FIRST - 3; // -749
  7845. {$EXTERNALSYM MCN_GETDAYSTATE}
  7846. MCN_GETDAYSTATE = MCN_FIRST - 1; // -747
  7847. {$EXTERNALSYM MCN_SELECT}
  7848. MCN_SELECT = MCN_FIRST; // -746
  7849. // Style flags
  7850. {$EXTERNALSYM MCS_DAYSTATE}
  7851. MCS_DAYSTATE = $0001;
  7852. {$EXTERNALSYM MCS_MULTISELECT}
  7853. MCS_MULTISELECT = $0002;
  7854. {$EXTERNALSYM MCS_WEEKNUMBERS}
  7855. MCS_WEEKNUMBERS = $0004;
  7856. MCS_NOTODAY_PRE_IE4 = $0008;
  7857. {$EXTERNALSYM MCS_NOTODAYCIRCLE}
  7858. MCS_NOTODAYCIRCLE = $0008;
  7859. {$EXTERNALSYM MCS_NOTODAY}
  7860. MCS_NOTODAY = $0010;
  7861. // For NTDDI_VERSION >= NTDDI_VISTA
  7862. {$EXTERNALSYM MCS_NOTRAILINGDATES}
  7863. MCS_NOTRAILINGDATES = $0040;
  7864. {$EXTERNALSYM MCS_SHORTDAYSOFWEEK}
  7865. MCS_SHORTDAYSOFWEEK = $0080;
  7866. {$EXTERNALSYM MCS_NOSELCHANGEONNAV}
  7867. MCS_NOSELCHANGEONNAV = $0100;
  7868. {$EXTERNALSYM GMR_VISIBLE}
  7869. GMR_VISIBLE = 0; // visible portion of display
  7870. {$EXTERNALSYM GMR_DAYSTATE}
  7871. GMR_DAYSTATE = 1; // above plus the grayed out parts of
  7872. // partially displayed months
  7873. type
  7874. // bit-packed array of "bold" info for a month
  7875. // if a bit is on, that day is drawn bold
  7876. {$EXTERNALSYM MONTHDAYSTATE}
  7877. MONTHDAYSTATE = DWORD;
  7878. PMonthDayState = ^TMonthDayState;
  7879. TMonthDayState = MONTHDAYSTATE;
  7880. {$EXTERNALSYM MCHITTESTINFO}
  7881. MCHITTESTINFO = record
  7882. cbSize: UINT;
  7883. pt: TPoint;
  7884. uHit: UINT; // out param
  7885. st: TSystemTime;
  7886. // For NTDDI_VERSION >= NTDDI_VISTA
  7887. rc: TRect;
  7888. iOffset: Integer;
  7889. iRow: Integer;
  7890. iCol: Integer;
  7891. class function SizeOf: Integer; static;
  7892. end;
  7893. PMCHitTestInfo = ^TMCHitTestInfo;
  7894. TMCHitTestInfo = MCHITTESTINFO;
  7895. // MCN_SELCHANGE is sent whenever the currently displayed date changes
  7896. // via month change, year change, keyboard navigation, prev/next button
  7897. {$EXTERNALSYM tagNMSELCHANGE}
  7898. tagNMSELCHANGE = record
  7899. nmhdr: TNmHdr; // this must be first, so we don't break WM_NOTIFY
  7900. stSelStart: TSystemTime;
  7901. stSelEnd: TSystemTime;
  7902. end;
  7903. PNMSelChange = ^TNMSelChange;
  7904. TNMSelChange = tagNMSELCHANGE;
  7905. // MCN_GETDAYSTATE is sent for MCS_DAYSTATE controls whenever new daystate
  7906. // information is needed (month or year scroll) to draw bolding information.
  7907. // The app must fill in cDayState months worth of information starting from
  7908. // stStart date. The app may fill in the array at prgDayState or change
  7909. // prgDayState to point to a different array out of which the information
  7910. // will be copied. (similar to tooltips)
  7911. {$EXTERNALSYM tagNMDAYSTATE}
  7912. tagNMDAYSTATE = record
  7913. nmhdr: TNmHdr; // this must be first, so we don't break WM_NOTIFY
  7914. stStart: TSystemTime;
  7915. cDayState: Integer;
  7916. prgDayState: PMonthDayState; // points to cDayState TMONTHDAYSTATEs
  7917. end;
  7918. PNMDayState = ^TNMDayState;
  7919. TNMDayState = tagNMDAYSTATE;
  7920. // MCN_SELECT is sent whenever a selection has occured (via mouse or keyboard)
  7921. {$EXTERNALSYM NMSELECT}
  7922. NMSELECT = tagNMSELCHANGE;
  7923. PNMSelect = ^TNMSelect;
  7924. TNMSelect = NMSELECT;
  7925. TSystemTimeRangeArray = array[0..1] of TSystemTime;
  7926. // returns FALSE if MCS_MULTISELECT
  7927. // returns TRUE and sets *pst to the currently selected date otherwise
  7928. {$EXTERNALSYM MonthCal_GetCurSel}
  7929. function MonthCal_GetCurSel(hmc: HWND; var pst: TSystemTime): BOOL; inline;
  7930. // returns FALSE if MCS_MULTISELECT
  7931. // returns TURE and sets the currently selected date to *pst otherwise
  7932. {$EXTERNALSYM MonthCal_SetCurSel}
  7933. function MonthCal_SetCurSel(hmc: HWND; const pst: TSystemTime): BOOL; inline;
  7934. // returns the maximum number of selectable days allowed
  7935. {$EXTERNALSYM MonthCal_GetMaxSelCount}
  7936. function MonthCal_GetMaxSelCount(hmc: HWND): DWORD; inline;
  7937. // sets the max number days that can be selected iff MCS_MULTISELECT
  7938. {$EXTERNALSYM MonthCal_SetMaxSelCount}
  7939. function MonthCal_SetMaxSelCount(hmc: HWND; n: UINT): BOOL; inline;
  7940. // sets rgst[0] to the first day of the selection range
  7941. // sets rgst[1] to the last day of the selection range
  7942. {$EXTERNALSYM MonthCal_GetSelRange}
  7943. function MonthCal_GetSelRange(hmc: HWND; rgst: PSystemTime): BOOL; inline;
  7944. // selects the range of days from rgst[0] to rgst[1]
  7945. {$EXTERNALSYM MonthCal_SetSelRange}
  7946. function MonthCal_SetSelRange(hmc: HWND; rgst: PSystemTime): BOOL; inline;
  7947. // if rgst specified, sets rgst[0] to the starting date and
  7948. // and rgst[1] to the ending date of the the selectable (non-grayed)
  7949. // days if GMR_VISIBLE or all the displayed days (including grayed)
  7950. // if GMR_DAYSTATE.
  7951. // returns the number of months spanned by the above range.
  7952. {$EXTERNALSYM MonthCal_GetMonthRange}
  7953. function MonthCal_GetMonthRange(hmc: HWND; gmr: DWORD; rgst: PSystemTime): DWORD; inline;
  7954. // cbds is the count of DAYSTATE items in rgds and it must be equal
  7955. // to the value returned from MonthCal_GetMonthRange(hmc, GMR_DAYSTATE, NULL)
  7956. // This sets the DAYSTATE bits for each month (grayed and non-grayed
  7957. // days) displayed in the calendar. The first bit in a month's DAYSTATE
  7958. // corresponts to bolding day 1, the second bit affects day 2, etc.
  7959. {$EXTERNALSYM MonthCal_SetDayState}
  7960. function MonthCal_SetDayState(hmc: HWND; cbds: Integer; const rgds: TNMDayState): BOOL; inline;
  7961. // sets prc the minimal size needed to display one month
  7962. {$EXTERNALSYM MonthCal_GetMinReqRect}
  7963. function MonthCal_GetMinReqRect(hmc: HWND; var prc: TRect): BOOL; inline;
  7964. // set what day is "today" send NULL to revert back to real date
  7965. {$EXTERNALSYM MonthCal_SetToday}
  7966. function MonthCal_SetToday(hmc: HWND; const pst: TSystemTime): BOOL; inline;
  7967. // get what day is "today"
  7968. // returns BOOL for success/failure
  7969. {$EXTERNALSYM MonthCal_GetToday}
  7970. function MonthCal_GetToday(hmc: HWND; var pst: TSystemTime): BOOL; inline;
  7971. // determine what pinfo->pt is over
  7972. {$EXTERNALSYM MonthCal_HitTest}
  7973. function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD; {inline;}
  7974. // set colors to draw control with -- see MCSC_ bits below
  7975. {$EXTERNALSYM MonthCal_SetColor}
  7976. function MonthCal_SetColor(hmc: HWND; iColor: Integer; clr: TColorRef): TColorRef; inline;
  7977. {$EXTERNALSYM MonthCal_GetColor}
  7978. function MonthCal_GetColor(hmc: HWND; iColor: Integer): TColorRef; inline;
  7979. // set first day of week to iDay:
  7980. // 0 for Monday, 1 for Tuesday, ..., 6 for Sunday
  7981. // -1 for means use locale info
  7982. {$EXTERNALSYM MonthCal_SetFirstDayOfWeek}
  7983. function MonthCal_SetFirstDayOfWeek(hmc: HWND; iDay: Integer): Integer; inline;
  7984. // DWORD result... low word has the day. high word is bool if this is app set
  7985. // or not (FALSE == using locale info)
  7986. {$EXTERNALSYM MonthCal_GetFirstDayOfWeek}
  7987. function MonthCal_GetFirstDayOfWeek(hmc: HWND): Integer; inline;
  7988. // modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  7989. // modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  7990. // returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
  7991. {$EXTERNALSYM MonthCal_GetRange}
  7992. function MonthCal_GetRange(hmc: HWND; rgst: PSystemTime): DWORD; inline;
  7993. // if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  7994. // if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  7995. // returns TRUE on success, FALSE on error (such as invalid parameters)
  7996. {$EXTERNALSYM Monthcal_SetRange}
  7997. function Monthcal_SetRange(hmc: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL; inline;
  7998. // returns the number of months one click on a next/prev button moves by
  7999. {$EXTERNALSYM MonthCal_GetMonthDelta}
  8000. function MonthCal_GetMonthDelta(hmc: HWND): Integer; inline;
  8001. // sets the month delta to n. n = 0 reverts to moving by a page of months
  8002. // returns the previous value of n.
  8003. {$EXTERNALSYM MonthCal_SetMonthDelta}
  8004. function MonthCal_SetMonthDelta(hmc: HWND; n: Integer): Integer; inline;
  8005. // sets *psz to the maximum width/height of the "Today" string displayed
  8006. // at the bottom of the calendar (as long as MCS_NOTODAY is not specified)
  8007. {$EXTERNALSYM MonthCal_GetMaxTodayWidth}
  8008. function MonthCal_GetMaxTodayWidth(hmc: HWND): DWORD; inline;
  8009. {$EXTERNALSYM MonthCal_SetUnicodeFormat}
  8010. function MonthCal_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL; inline;
  8011. {$EXTERNALSYM MonthCal_GetUnicodeFormat}
  8012. function MonthCal_GetUnicodeFormat(hwnd: HWND): BOOL; inline;
  8013. {$REGION 'For NTDDI_VERSION >= NTDDI_VISTA'}
  8014. const
  8015. // View
  8016. {$EXTERNALSYM MCMV_MONTH}
  8017. MCMV_MONTH = 0;
  8018. {$EXTERNALSYM MCMV_YEAR}
  8019. MCMV_YEAR = 1;
  8020. {$EXTERNALSYM MCMV_DECADE}
  8021. MCMV_DECADE = 2;
  8022. {$EXTERNALSYM MCMV_CENTURY}
  8023. MCMV_CENTURY = 3;
  8024. {$EXTERNALSYM MCMV_MAX}
  8025. MCMV_MAX = MCMV_CENTURY;
  8026. // Part
  8027. {$EXTERNALSYM MCGIP_CALENDARCONTROL}
  8028. MCGIP_CALENDARCONTROL = 0;
  8029. {$EXTERNALSYM MCGIP_NEXT}
  8030. MCGIP_NEXT = 1;
  8031. {$EXTERNALSYM MCGIP_PREV}
  8032. MCGIP_PREV = 2;
  8033. {$EXTERNALSYM MCGIP_FOOTER}
  8034. MCGIP_FOOTER = 3;
  8035. {$EXTERNALSYM MCGIP_CALENDAR}
  8036. MCGIP_CALENDAR = 4;
  8037. {$EXTERNALSYM MCGIP_CALENDARHEADER}
  8038. MCGIP_CALENDARHEADER = 5;
  8039. {$EXTERNALSYM MCGIP_CALENDARBODY}
  8040. MCGIP_CALENDARBODY = 6;
  8041. {$EXTERNALSYM MCGIP_CALENDARROW}
  8042. MCGIP_CALENDARROW = 7;
  8043. {$EXTERNALSYM MCGIP_CALENDARCELL}
  8044. MCGIP_CALENDARCELL = 8;
  8045. {$EXTERNALSYM MCGIF_DATE}
  8046. MCGIF_DATE = $00000001;
  8047. {$EXTERNALSYM MCGIF_RECT}
  8048. MCGIF_RECT = $00000002;
  8049. {$EXTERNALSYM MCGIF_NAME}
  8050. MCGIF_NAME = $00000004;
  8051. type
  8052. // Note: iRow of -1 refers to the row header and iCol of -1 refers to the col header.
  8053. {$EXTERNALSYM tagMCGRIDINFO}
  8054. tagMCGRIDINFO = record
  8055. cbSize: UINT;
  8056. dwPart: DWORD;
  8057. dwFlags: DWORD;
  8058. iCalendar: Integer;
  8059. iRow: Integer;
  8060. iCol: Integer;
  8061. bSelected: BOOL;
  8062. stStart: TSystemTime;
  8063. stEnd: TSystemTime;
  8064. rc: TRect;
  8065. pszName: LPWSTR;
  8066. cchName: ULONG_PTR; // size_t
  8067. end;
  8068. PMCGridInfo = ^TMCGridInfo;
  8069. TMCGridInfo = tagMCGRIDINFO;
  8070. const
  8071. {$EXTERNALSYM MCM_GETCURRENTVIEW}
  8072. MCM_GETCURRENTVIEW = MCM_FIRST + 22;
  8073. {$EXTERNALSYM MCM_GETCALENDARCOUNT}
  8074. MCM_GETCALENDARCOUNT = MCM_FIRST + 23;
  8075. {$EXTERNALSYM MCM_GETCALENDARGRIDINFO}
  8076. MCM_GETCALENDARGRIDINFO = MCM_FIRST + 24;
  8077. {$EXTERNALSYM MCM_GETCALID}
  8078. MCM_GETCALID = MCM_FIRST + 27;
  8079. {$EXTERNALSYM MCM_SETCALID}
  8080. MCM_SETCALID = MCM_FIRST + 28;
  8081. {$EXTERNALSYM MCM_SIZERECTTOMIN}
  8082. MCM_SIZERECTTOMIN = MCM_FIRST + 29;
  8083. {$EXTERNALSYM MCM_SETCALENDARBORDER}
  8084. MCM_SETCALENDARBORDER = MCM_FIRST + 30;
  8085. {$EXTERNALSYM MCM_GETCALENDARBORDER}
  8086. MCM_GETCALENDARBORDER = MCM_FIRST + 31;
  8087. {$EXTERNALSYM MCM_SETCURRENTVIEW}
  8088. MCM_SETCURRENTVIEW = MCM_FIRST + 32;
  8089. {$EXTERNALSYM MonthCal_GetCurrentView}
  8090. function MonthCal_GetCurrentView(hmc: HWND): DWORD; inline;
  8091. {$EXTERNALSYM MonthCal_GetCalendarCount}
  8092. function MonthCal_GetCalendarCount(hmc: HWND): DWORD; Inline;
  8093. {$EXTERNALSYM MonthCal_GetCalendarGridInfo}
  8094. function MonthCal_GetCalendarGridInfo(hmc: HWND; pmcGridInfo: PMCGridInfo): BOOL; inline;
  8095. {$EXTERNALSYM MonthCal_GetCALID}
  8096. function MonthCal_GetCALID(hmc: HWND): CALID; inline;
  8097. {$EXTERNALSYM MonthCal_SetCALID}
  8098. procedure MonthCal_SetCALID(hmc: HWND; calid: CALID); inline;
  8099. // Returns the min rect that will fit the max number of calendars for the passed in rect.
  8100. {$EXTERNALSYM MonthCal_SizeRectToMin}
  8101. procedure MonthCal_SizeRectToMin(hmc: HWND; prc: PRect); inline;
  8102. {$EXTERNALSYM MonthCal_SetCalendarBorder}
  8103. procedure MonthCal_SetCalendarBorder(hmc: HWND; fset: BOOL; xyborder: Integer); inline;
  8104. {$EXTERNALSYM MonthCal_GetCalendarBorder}
  8105. function MonthCal_GetCalendarBorder(hmc: HWND): Integer; inline;
  8106. {$EXTERNALSYM MonthCal_SetCurrentView}
  8107. function MonthCal_SetCurrentView(hmc: HWND; dwNewView: DWORD): BOOL; inline;
  8108. {$ENDREGION}
  8109. { ====== DATETIMEPICK CONTROL =============== }
  8110. const
  8111. {$EXTERNALSYM DATETIMEPICK_CLASS}
  8112. DATETIMEPICK_CLASS = 'SysDateTimePick32';
  8113. // Message constants
  8114. {$EXTERNALSYM DTM_FIRST}
  8115. DTM_FIRST = $1000;
  8116. {$EXTERNALSYM DTM_GETSYSTEMTIME}
  8117. DTM_GETSYSTEMTIME = DTM_FIRST + 1;
  8118. {$EXTERNALSYM DTM_SETSYSTEMTIME}
  8119. DTM_SETSYSTEMTIME = DTM_FIRST + 2;
  8120. {$EXTERNALSYM DTM_GETRANGE}
  8121. DTM_GETRANGE = DTM_FIRST + 3;
  8122. {$EXTERNALSYM DTM_SETRANGE}
  8123. DTM_SETRANGE = DTM_FIRST + 4;
  8124. {$EXTERNALSYM DTM_SETFORMATA}
  8125. DTM_SETFORMATA = DTM_FIRST + 5;
  8126. {$EXTERNALSYM DTM_SETMCCOLOR}
  8127. DTM_SETMCCOLOR = DTM_FIRST + 6;
  8128. {$EXTERNALSYM DTM_GETMCCOLOR}
  8129. DTM_GETMCCOLOR = DTM_FIRST + 7;
  8130. {$EXTERNALSYM DTM_GETMONTHCAL}
  8131. DTM_GETMONTHCAL = DTM_FIRST + 8;
  8132. {$EXTERNALSYM DTM_SETMCFONT}
  8133. DTM_SETMCFONT = DTM_FIRST + 9;
  8134. {$EXTERNALSYM DTM_GETMCFONT}
  8135. DTM_GETMCFONT = DTM_FIRST + 10;
  8136. {$EXTERNALSYM DTM_SETFORMATW}
  8137. DTM_SETFORMATW = DTM_FIRST + 50;
  8138. {$IFDEF UNICODE}
  8139. {$EXTERNALSYM DTM_SETFORMAT}
  8140. DTM_SETFORMAT = DTM_SETFORMATW;
  8141. {$ELSE}
  8142. {$EXTERNALSYM DTM_SETFORMAT}
  8143. DTM_SETFORMAT = DTM_SETFORMATA;
  8144. {$ENDIF}
  8145. // Style Flags
  8146. {$EXTERNALSYM DTS_UPDOWN}
  8147. DTS_UPDOWN = $0001; // use UPDOWN instead of MONTHCAL
  8148. {$EXTERNALSYM DTS_SHOWNONE}
  8149. DTS_SHOWNONE = $0002; // allow a NONE selection
  8150. {$EXTERNALSYM DTS_SHORTDATEFORMAT}
  8151. DTS_SHORTDATEFORMAT = $0000; // use the short date format
  8152. // (app must forward WM_WININICHANGE messages)
  8153. {$EXTERNALSYM DTS_LONGDATEFORMAT}
  8154. DTS_LONGDATEFORMAT = $0004; // use the long date format
  8155. // (app must forward WM_WININICHANGE messages)
  8156. {$EXTERNALSYM DTS_TIMEFORMAT}
  8157. DTS_TIMEFORMAT = $0009; // use the time format
  8158. // (app must forward WM_WININICHANGE messages)
  8159. {$EXTERNALSYM DTS_APPCANPARSE}
  8160. DTS_APPCANPARSE = $0010; // allow user entered strings
  8161. // (app MUST respond to DTN_USERSTRING)
  8162. {$EXTERNALSYM DTS_RIGHTALIGN}
  8163. DTS_RIGHTALIGN = $0020; // right-align popup instead of left-align it
  8164. // Notification codes
  8165. {$EXTERNALSYM DTN_DATETIMECHANGE}
  8166. DTN_DATETIMECHANGE = DTN_FIRST2 - 6; // the systemtime has changed, -759
  8167. {$EXTERNALSYM DTN_USERSTRINGA}
  8168. DTN_USERSTRINGA = DTN_FIRST2 - 5; // the user has entered a string, -758
  8169. {$EXTERNALSYM DTN_USERSTRINGW}
  8170. DTN_USERSTRINGW = DTN_FIRST - 5; // -745
  8171. {$EXTERNALSYM DTN_WMKEYDOWNA}
  8172. DTN_WMKEYDOWNA = DTN_FIRST2 - 4; // modify keydown on app format field (X), -757
  8173. {$EXTERNALSYM DTN_WMKEYDOWNW}
  8174. DTN_WMKEYDOWNW = DTN_FIRST - 4; // -744
  8175. {$EXTERNALSYM DTN_FORMATA}
  8176. DTN_FORMATA = DTN_FIRST2 - 3; // query display for app format field (X), -756
  8177. {$EXTERNALSYM DTN_FORMATW}
  8178. DTN_FORMATW = DTN_FIRST - 3; // -743
  8179. {$EXTERNALSYM DTN_FORMATQUERYA}
  8180. DTN_FORMATQUERYA = DTN_FIRST2 - 2; // query formatting info for app format field (X)
  8181. {$EXTERNALSYM DTN_FORMATQUERYW}
  8182. DTN_FORMATQUERYW = DTN_FIRST - 2; // -742
  8183. {$EXTERNALSYM DTN_DROPDOWN}
  8184. DTN_DROPDOWN = DTN_FIRST2 - 1; // MonthCal has dropped down, -754
  8185. {$EXTERNALSYM DTN_CLOSEUP}
  8186. DTN_CLOSEUP = DTN_FIRST2; // MonthCal is popping up, -753
  8187. {$IFDEF UNICODE}
  8188. {$EXTERNALSYM DTN_USERSTRING}
  8189. DTN_USERSTRING = DTN_USERSTRINGW;
  8190. {$EXTERNALSYM DTN_WMKEYDOWN}
  8191. DTN_WMKEYDOWN = DTN_WMKEYDOWNW;
  8192. {$EXTERNALSYM DTN_FORMAT}
  8193. DTN_FORMAT = DTN_FORMATW;
  8194. {$EXTERNALSYM DTN_FORMATQUERY}
  8195. DTN_FORMATQUERY = DTN_FORMATQUERYW;
  8196. {$ELSE}
  8197. {$EXTERNALSYM DTN_USERSTRING}
  8198. DTN_USERSTRING = DTN_USERSTRINGA;
  8199. {$EXTERNALSYM DTN_WMKEYDOWN}
  8200. DTN_WMKEYDOWN = DTN_WMKEYDOWNA;
  8201. {$EXTERNALSYM DTN_FORMAT}
  8202. DTN_FORMAT = DTN_FORMATA;
  8203. {$EXTERNALSYM DTN_FORMATQUERY}
  8204. DTN_FORMATQUERY = DTN_FORMATQUERYA;
  8205. {$ENDIF}
  8206. // Ranges
  8207. {$EXTERNALSYM GDTR_MIN}
  8208. GDTR_MIN = $0001;
  8209. {$EXTERNALSYM GDTR_MAX}
  8210. GDTR_MAX = $0002;
  8211. // Return Values
  8212. {$EXTERNALSYM GDT_ERROR}
  8213. GDT_ERROR = -1;
  8214. {$EXTERNALSYM GDT_VALID}
  8215. GDT_VALID = 0;
  8216. {$EXTERNALSYM GDT_NONE}
  8217. GDT_NONE = 1;
  8218. type
  8219. {$EXTERNALSYM tagNMDATETIMECHANGE}
  8220. tagNMDATETIMECHANGE = record
  8221. nmhdr: TNmHdr;
  8222. dwFlags: DWORD; // GDT_VALID or GDT_NONE
  8223. st: TSystemTime; // valid if dwFlags = GDT_VALID
  8224. end;
  8225. PNMDateTimeChange = ^TNMDateTimeChange;
  8226. TNMDateTimeChange = tagNMDATETIMECHANGE;
  8227. {$EXTERNALSYM tagNMDATETIMESTRINGA}
  8228. tagNMDATETIMESTRINGA = record
  8229. nmhdr: TNmHdr;
  8230. pszUserString: PAnsiChar; // AnsiString user entered
  8231. st: TSystemTime; // app fills this in
  8232. dwFlags: DWORD; // GDT_VALID or GDT_NONE
  8233. end;
  8234. {$EXTERNALSYM tagNMDATETIMESTRINGW}
  8235. tagNMDATETIMESTRINGW = record
  8236. nmhdr: TNmHdr;
  8237. pszUserString: PWideChar; // UnicodeString user entered
  8238. st: TSystemTime; // app fills this in
  8239. dwFlags: DWORD; // GDT_VALID or GDT_NONE
  8240. end;
  8241. {$EXTERNALSYM tagNMDATETIMESTRING}
  8242. tagNMDATETIMESTRING = tagNMDATETIMESTRINGW;
  8243. PNMDateTimeStringA = ^TNMDateTimeStringA;
  8244. PNMDateTimeStringW = ^TNMDateTimeStringW;
  8245. PNMDateTimeString = PNMDateTimeStringW;
  8246. TNMDateTimeStringA = tagNMDATETIMESTRINGA;
  8247. TNMDateTimeStringW = tagNMDATETIMESTRINGW;
  8248. TNMDateTimeString = TNMDateTimeStringW;
  8249. {$EXTERNALSYM tagNMDATETIMEWMKEYDOWNA}
  8250. tagNMDATETIMEWMKEYDOWNA = record
  8251. nmhdr: TNmHdr;
  8252. nVirtKey: Integer; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  8253. pszFormat: PAnsiChar; // format substring
  8254. st: TSystemTime; // current systemtime, app should modify based on key
  8255. end;
  8256. {$EXTERNALSYM tagNMDATETIMEWMKEYDOWNW}
  8257. tagNMDATETIMEWMKEYDOWNW = record
  8258. nmhdr: TNmHdr;
  8259. nVirtKey: Integer; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  8260. pszFormat: PWideChar; // format substring
  8261. st: TSystemTime; // current systemtime, app should modify based on key
  8262. end;
  8263. {$EXTERNALSYM tagNMDATETIMEWMKEYDOWN}
  8264. tagNMDATETIMEWMKEYDOWN = tagNMDATETIMEWMKEYDOWNW;
  8265. PNMDateTimeWMKeyDownA = ^TNMDateTimeWMKeyDownA;
  8266. PNMDateTimeWMKeyDownW = ^TNMDateTimeWMKeyDownW;
  8267. PNMDateTimeWMKeyDown = PNMDateTimeWMKeyDownW;
  8268. TNMDateTimeWMKeyDownA = tagNMDATETIMEWMKEYDOWNA;
  8269. TNMDateTimeWMKeyDownW = tagNMDATETIMEWMKEYDOWNW;
  8270. TNMDateTimeWMKeyDown = TNMDateTimeWMKeyDownW;
  8271. {$EXTERNALSYM tagNMDATETIMEFORMATA}
  8272. tagNMDATETIMEFORMATA = record
  8273. nmhdr: TNmHdr;
  8274. pszFormat: PAnsiChar; // format substring
  8275. st: TSystemTime; // current systemtime
  8276. pszDisplay: PAnsiChar; // AnsiString to display
  8277. szDisplay: array[0..63] of AnsiChar; // buffer pszDisplay originally points at
  8278. end;
  8279. {$EXTERNALSYM tagNMDATETIMEFORMATW}
  8280. tagNMDATETIMEFORMATW = record
  8281. nmhdr: TNmHdr;
  8282. pszFormat: PWideChar; // format substring
  8283. st: TSystemTime; // current systemtime
  8284. pszDisplay: PWideChar; // UnicodeString to display
  8285. szDisplay: array[0..63] of WideChar; // buffer pszDisplay originally points at
  8286. end;
  8287. {$EXTERNALSYM tagNMDATETIMEFORMAT}
  8288. tagNMDATETIMEFORMAT = tagNMDATETIMEFORMATW;
  8289. PNMDateTimeFormatA = ^TNMDateTimeFormatA;
  8290. PNMDateTimeFormatW = ^TNMDateTimeFormatW;
  8291. PNMDateTimeFormat = PNMDateTimeFormatW;
  8292. TNMDateTimeFormatA = tagNMDATETIMEFORMATA;
  8293. TNMDateTimeFormatW = tagNMDATETIMEFORMATW;
  8294. TNMDateTimeFormat = TNMDateTimeFormatW;
  8295. {$EXTERNALSYM tagNMDATETIMEFORMATQUERYA}
  8296. tagNMDATETIMEFORMATQUERYA = record
  8297. nmhdr: TNmHdr;
  8298. pszFormat: PAnsiChar; // format substring
  8299. szMax: TSize; // max bounding rectangle app will use for this format AnsiString
  8300. end;
  8301. {$EXTERNALSYM tagNMDATETIMEFORMATQUERYW}
  8302. tagNMDATETIMEFORMATQUERYW = record
  8303. nmhdr: TNmHdr;
  8304. pszFormat: PWideChar; // format substring
  8305. szMax: TSize; // max bounding rectangle app will use for this format UnicodeString
  8306. end;
  8307. {$EXTERNALSYM tagNMDATETIMEFORMATQUERY}
  8308. tagNMDATETIMEFORMATQUERY = tagNMDATETIMEFORMATQUERYW;
  8309. PNMDateTimeFormatQueryA = ^TNMDateTimeFormatQueryA;
  8310. PNMDateTimeFormatQueryW = ^TNMDateTimeFormatQueryW;
  8311. PNMDateTimeFormatQuery = PNMDateTimeFormatQueryW;
  8312. TNMDateTimeFormatQueryA = tagNMDATETIMEFORMATQUERYA;
  8313. TNMDateTimeFormatQueryW = tagNMDATETIMEFORMATQUERYW;
  8314. TNMDateTimeFormatQuery = TNMDateTimeFormatQueryW;
  8315. // returns GDT_NONE if "none" is selected (DTS_SHOWNONE only)
  8316. // returns GDT_VALID and modifies pst to be the currently selected value
  8317. {$EXTERNALSYM DateTime_GetSystemTime}
  8318. function DateTime_GetSystemTime(hdp: HWND; var pst: TSystemTime): DWORD; inline;
  8319. // if gd = GDT_NONE, sets datetimepick to None (DTS_SHOWNONE only)
  8320. // if gd = GDT_VALID, sets datetimepick to pst
  8321. // returns TRUE on success, FALSE on error (such as bad params)
  8322. {$EXTERNALSYM DateTime_SetSystemTime}
  8323. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL; inline;
  8324. // modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  8325. // modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  8326. // returns GDTR_MIN or GDTR_MAX if there is a minimum or maximum limit
  8327. {$EXTERNALSYM DateTime_GetRange}
  8328. function DateTime_GetRange(hdp: HWND; rgst: PSystemTime): DWORD; inline;
  8329. // if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  8330. // if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  8331. // returns TRUE on success, FALSE on error (such as invalid parameters)
  8332. {$EXTERNALSYM DateTime_SetRange}
  8333. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL; inline;
  8334. // sets the display formatting string to sz (see GetDateFormat and GetTimeFormat for valid formatting chars)
  8335. // NOTE: 'X' is a valid formatting character which indicates that the application
  8336. // will determine how to display information. Such apps must support DTN_WMKEYDOWN,
  8337. // DTN_FORMAT, and DTN_FORMATQUERY.
  8338. {$EXTERNALSYM DateTime_SetFormat}
  8339. function DateTime_SetFormat(hdp: HWND; sz: PWideChar): BOOL; overload; inline;
  8340. {$EXTERNALSYM DateTime_SetFormatA}
  8341. function DateTime_SetFormatA(hdp: HWND; sz: PAnsiChar): BOOL; overload; inline;
  8342. {$EXTERNALSYM DateTime_SetFormatW}
  8343. function DateTime_SetFormatW(hdp: HWND; sz: PWideChar): BOOL; overload; inline;
  8344. {$EXTERNALSYM DateTime_SetFormat}
  8345. function DateTime_SetFormat(hdp: HWND; const sz: UnicodeString): BOOL; overload; inline;
  8346. {$EXTERNALSYM DateTime_SetFormatA}
  8347. function DateTime_SetFormatA(hdp: HWND; const sz: AnsiString): BOOL; overload; inline;
  8348. {$EXTERNALSYM DateTime_SetFormatW}
  8349. function DateTime_SetFormatW(hdp: HWND; const sz: UnicodeString): BOOL; overload; inline;
  8350. {$EXTERNALSYM DateTime_SetMonthCalColor}
  8351. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): TColorRef; inline;
  8352. {$EXTERNALSYM DateTime_GetMonthCalColor}
  8353. function DateTime_GetMonthCalColor(hdp: HWND; iColor: DWORD): TColorRef; inline;
  8354. // returns the HWND of the MonthCal popup window. Only valid
  8355. // between DTN_DROPDOWN and DTN_CLOSEUP notifications.
  8356. {$EXTERNALSYM DateTime_GetMonthCal}
  8357. function DateTime_GetMonthCal(hdp: HWND): HWND; inline;
  8358. {$EXTERNALSYM DateTime_SetMonthCalFont}
  8359. procedure DateTime_SetMonthCalFont(hdp: HWND; hfont: HFONT; fRedraw: BOOL); inline;
  8360. {$EXTERNALSYM DateTime_GetMonthCalFont}
  8361. function DateTime_GetMonthCalFont(hdp: HWND): HFONT; inline;
  8362. {$REGION 'For NTDDI_VERSION >= NTDDI_VISTA'}
  8363. type
  8364. {$EXTERNALSYM tagDATETIMEPICKERINFO}
  8365. tagDATETIMEPICKERINFO = record
  8366. cbSize: DWORD;
  8367. rcCheck: TRect;
  8368. stateCheck: DWORD;
  8369. rcButton: TRect;
  8370. stateButton: DWORD;
  8371. hwndEdit: HWND;
  8372. hwndUD: HWND;
  8373. hwndDropDown: HWND;
  8374. end;
  8375. PDateTimePickerInfo = ^TDateTimePickerInfo;
  8376. TDateTimePickerInfo = tagDATETIMEPICKERINFO;
  8377. const
  8378. {$EXTERNALSYM DTM_SETMCSTYLE}
  8379. DTM_SETMCSTYLE = DTM_FIRST + 11;
  8380. {$EXTERNALSYM DTM_GETMCSTYLE}
  8381. DTM_GETMCSTYLE = DTM_FIRST + 12;
  8382. {$EXTERNALSYM DTM_CLOSEMONTHCAL}
  8383. DTM_CLOSEMONTHCAL = DTM_FIRST + 13;
  8384. {$EXTERNALSYM DTM_GETDATETIMEPICKERINFO}
  8385. DTM_GETDATETIMEPICKERINFO = DTM_FIRST + 14;
  8386. {$EXTERNALSYM DTM_GETIDEALSIZE}
  8387. DTM_GETIDEALSIZE = DTM_FIRST + 15;
  8388. {$EXTERNALSYM DateTime_SetMonthCalStyle}
  8389. procedure DateTime_SetMonthCalStyle(hdp: HWND; dwStyle: DWORD); inline;
  8390. {$EXTERNALSYM DateTime_GetMonthCalStyle}
  8391. function DateTime_GetMonthCalStyle(hdp: HWND): DWORD; inline;
  8392. {$EXTERNALSYM DateTime_CloseMonthCal}
  8393. procedure DateTime_CloseMonthCal(hdp: HWND); inline;
  8394. // DateTime_GetDateTimePickerInfo(HWND hdp, DATETIMEPICKERINFO* pdtpi)
  8395. // Retrieves information about the selected date time picker.
  8396. {$EXTERNALSYM DateTime_GetDateTimePickerInfo}
  8397. procedure DateTime_GetDateTimePickerInfo(hdp: HWND; var pdtpi: TDateTimePickerInfo); inline;
  8398. {$EXTERNALSYM DateTime_GetIdealSize}
  8399. function DateTime_GetIdealSize(hdp: HWND; var psize: TSize): BOOL; inline;
  8400. {$ENDREGION}
  8401. { ====================== IP Address edit control ============================= }
  8402. const
  8403. {$EXTERNALSYM WC_IPADDRESS}
  8404. WC_IPADDRESS = 'SysIPAddress32';
  8405. // Messages sent to IPAddress controls
  8406. {$EXTERNALSYM IPM_CLEARADDRESS}
  8407. IPM_CLEARADDRESS = WM_USER+100; { no parameters }
  8408. {$EXTERNALSYM IPM_SETADDRESS}
  8409. IPM_SETADDRESS = WM_USER+101; { lparam = TCP/IP address }
  8410. {$EXTERNALSYM IPM_GETADDRESS}
  8411. IPM_GETADDRESS = WM_USER+102; { lresult = # of non black fields. lparam = LPDWORD for TCP/IP address }
  8412. {$EXTERNALSYM IPM_SETRANGE}
  8413. IPM_SETRANGE = WM_USER+103; { wparam = field, lparam = range }
  8414. {$EXTERNALSYM IPM_SETFOCUS}
  8415. IPM_SETFOCUS = WM_USER+104; { wparam = field }
  8416. {$EXTERNALSYM IPM_ISBLANK}
  8417. IPM_ISBLANK = WM_USER+105; { no parameters }
  8418. {$EXTERNALSYM IPN_FIELDCHANGED}
  8419. IPN_FIELDCHANGED = IPN_FIRST - 0;
  8420. type
  8421. {$EXTERNALSYM tagNMIPADDRESS}
  8422. tagNMIPADDRESS = record
  8423. hdr: NMHDR;
  8424. iField: Integer;
  8425. iValue: Integer;
  8426. end;
  8427. PNMIPAddress = ^TNMIPAddress;
  8428. TNMIPAddress = tagNMIPADDRESS;
  8429. { The following is a useful macro for passing the range values in the }
  8430. { IPM_SETRANGE message. }
  8431. {$EXTERNALSYM MAKEIPRANGE}
  8432. function MAKEIPRANGE(low, high: Byte): LPARAM; inline;
  8433. { And this is a useful macro for making the IP Address to be passed }
  8434. { as a LPARAM. }
  8435. {$EXTERNALSYM MAKEIPADDRESS}
  8436. function MAKEIPADDRESS(b1, b2, b3, b4: DWORD): LPARAM;
  8437. { Get individual number }
  8438. {$EXTERNALSYM FIRST_IPADDRESS}
  8439. function FIRST_IPADDRESS(x: DWORD): DWORD; inline;
  8440. {$EXTERNALSYM SECOND_IPADDRESS}
  8441. function SECOND_IPADDRESS(x: DWORD): DWORD; inline;
  8442. {$EXTERNALSYM THIRD_IPADDRESS}
  8443. function THIRD_IPADDRESS(x: DWORD): DWORD; inline;
  8444. {$EXTERNALSYM FOURTH_IPADDRESS}
  8445. function FOURTH_IPADDRESS(x: DWORD): DWORD; inline;
  8446. { ====================== Pager Control ============================= }
  8447. const
  8448. { Pager Class Name }
  8449. {$EXTERNALSYM WC_PAGESCROLLER}
  8450. WC_PAGESCROLLER = 'SysPager';
  8451. { Pager Control Styles }
  8452. {$EXTERNALSYM PGS_VERT}
  8453. PGS_VERT = $00000000;
  8454. {$EXTERNALSYM PGS_HORZ}
  8455. PGS_HORZ = $00000001;
  8456. {$EXTERNALSYM PGS_AUTOSCROLL}
  8457. PGS_AUTOSCROLL = $00000002;
  8458. {$EXTERNALSYM PGS_DRAGNDROP}
  8459. PGS_DRAGNDROP = $00000004;
  8460. { Pager Button State }
  8461. { The scroll can be in one of the following control State }
  8462. {$EXTERNALSYM PGF_INVISIBLE}
  8463. PGF_INVISIBLE = 0; { Scroll button is not visible }
  8464. {$EXTERNALSYM PGF_NORMAL}
  8465. PGF_NORMAL = 1; { Scroll button is in normal state }
  8466. {$EXTERNALSYM PGF_GRAYED}
  8467. PGF_GRAYED = 2; { Scroll button is in grayed state }
  8468. {$EXTERNALSYM PGF_DEPRESSED}
  8469. PGF_DEPRESSED = 4; { Scroll button is in depressed state }
  8470. {$EXTERNALSYM PGF_HOT}
  8471. PGF_HOT = 8; { Scroll button is in hot state }
  8472. { The following identifiers specifies the button control }
  8473. {$EXTERNALSYM PGB_TOPORLEFT}
  8474. PGB_TOPORLEFT = 0;
  8475. {$EXTERNALSYM PGB_BOTTOMORRIGHT}
  8476. PGB_BOTTOMORRIGHT = 1;
  8477. { Pager Control Messages }
  8478. {$EXTERNALSYM PGM_SETCHILD}
  8479. PGM_SETCHILD = PGM_FIRST + 1; { lParam == hwnd }
  8480. {$EXTERNALSYM PGM_RECALCSIZE}
  8481. PGM_RECALCSIZE = PGM_FIRST + 2;
  8482. {$EXTERNALSYM PGM_FORWARDMOUSE}
  8483. PGM_FORWARDMOUSE = PGM_FIRST + 3;
  8484. {$EXTERNALSYM PGM_SETBKCOLOR}
  8485. PGM_SETBKCOLOR = PGM_FIRST + 4;
  8486. {$EXTERNALSYM PGM_GETBKCOLOR}
  8487. PGM_GETBKCOLOR = PGM_FIRST + 5;
  8488. {$EXTERNALSYM PGM_SETBORDER}
  8489. PGM_SETBORDER = PGM_FIRST + 6;
  8490. {$EXTERNALSYM PGM_GETBORDER}
  8491. PGM_GETBORDER = PGM_FIRST + 7;
  8492. {$EXTERNALSYM PGM_SETPOS}
  8493. PGM_SETPOS = PGM_FIRST + 8;
  8494. {$EXTERNALSYM PGM_GETPOS}
  8495. PGM_GETPOS = PGM_FIRST + 9;
  8496. {$EXTERNALSYM PGM_SETBUTTONSIZE}
  8497. PGM_SETBUTTONSIZE = PGM_FIRST + 10;
  8498. {$EXTERNALSYM PGM_GETBUTTONSIZE}
  8499. PGM_GETBUTTONSIZE = PGM_FIRST + 11;
  8500. {$EXTERNALSYM PGM_GETBUTTONSTATE}
  8501. PGM_GETBUTTONSTATE = PGM_FIRST + 12;
  8502. {$EXTERNALSYM PGM_GETDROPTARGET}
  8503. PGM_GETDROPTARGET = CCM_GETDROPTARGET;
  8504. {$EXTERNALSYM Pager_SetChild}
  8505. procedure Pager_SetChild(hwnd: HWND; hwndChild: HWND); inline;
  8506. {$EXTERNALSYM Pager_RecalcSize}
  8507. procedure Pager_RecalcSize(hwnd: HWND); inline;
  8508. {$EXTERNALSYM Pager_ForwardMouse}
  8509. procedure Pager_ForwardMouse(hwnd: HWND; bForward: BOOL); inline;
  8510. {$EXTERNALSYM Pager_SetBkColor}
  8511. function Pager_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF; inline;
  8512. {$EXTERNALSYM Pager_GetBkColor}
  8513. function Pager_GetBkColor(hwnd: HWND): COLORREF; inline;
  8514. {$EXTERNALSYM Pager_SetBorder}
  8515. function Pager_SetBorder(hwnd: HWND; iBorder: Integer): Integer; inline;
  8516. {$EXTERNALSYM Pager_GetBorder}
  8517. function Pager_GetBorder(hwnd: HWND): Integer; inline;
  8518. {$EXTERNALSYM Pager_SetPos}
  8519. function Pager_SetPos(hwnd: HWND; iPos: Integer): Integer; inline;
  8520. {$EXTERNALSYM Pager_GetPos}
  8521. function Pager_GetPos(hwnd: HWND): Integer; inline;
  8522. {$EXTERNALSYM Pager_SetButtonSize}
  8523. function Pager_SetButtonSize(hwnd: HWND; iSize: Integer): Integer; inline;
  8524. {$EXTERNALSYM Pager_GetButtonSize}
  8525. function Pager_GetButtonSize(hwnd: HWND): Integer; inline;
  8526. {$EXTERNALSYM Pager_GetButtonState}
  8527. function Pager_GetButtonState(hwnd: HWND; iButton: Integer): DWORD; inline;
  8528. {$EXTERNALSYM Pager_GetDropTarget}
  8529. procedure Pager_GetDropTarget(hwnd: HWND; ppdt: Pointer{!!}); inline;
  8530. const
  8531. { Pager Control Notification Messages }
  8532. { PGN_SCROLL Notification Message }
  8533. {$EXTERNALSYM PGN_SCROLL}
  8534. PGN_SCROLL = PGN_FIRST-1;
  8535. {$EXTERNALSYM PGF_SCROLLUP}
  8536. PGF_SCROLLUP = 1;
  8537. {$EXTERNALSYM PGF_SCROLLDOWN}
  8538. PGF_SCROLLDOWN = 2;
  8539. {$EXTERNALSYM PGF_SCROLLLEFT}
  8540. PGF_SCROLLLEFT = 4;
  8541. {$EXTERNALSYM PGF_SCROLLRIGHT}
  8542. PGF_SCROLLRIGHT = 8;
  8543. { Keys down }
  8544. {$EXTERNALSYM PGK_SHIFT}
  8545. PGK_SHIFT = 1;
  8546. {$EXTERNALSYM PGK_CONTROL}
  8547. PGK_CONTROL = 2;
  8548. {$EXTERNALSYM PGK_MENU}
  8549. PGK_MENU = 4;
  8550. {$ALIGN 1}
  8551. type
  8552. { This structure is sent along with PGN_SCROLL notifications }
  8553. {$EXTERNALSYM NMPGSCROLL}
  8554. NMPGSCROLL = record
  8555. hdr: NMHDR;
  8556. fwKeys: Word; { Specifies which keys are down when this notification is send }
  8557. rcParent: TRect; { Contains Parent Window Rect }
  8558. iDir: Integer; { Scrolling Direction }
  8559. iXpos: Integer; { Horizontal scroll position }
  8560. iYpos: Integer; { Vertical scroll position }
  8561. iScroll: Integer; { [in/out] Amount to scroll }
  8562. end;
  8563. PNMPGScroll = ^TNMPGScroll;
  8564. TNMPGScroll = NMPGSCROLL;
  8565. {$ALIGN ON}
  8566. const
  8567. { PGN_CALCSIZE Notification Message }
  8568. {$EXTERNALSYM PGN_CALCSIZE}
  8569. PGN_CALCSIZE = PGN_FIRST-2;
  8570. {$EXTERNALSYM PGF_CALCWIDTH}
  8571. PGF_CALCWIDTH = 1;
  8572. {$EXTERNALSYM PGF_CALCHEIGHT}
  8573. PGF_CALCHEIGHT = 2;
  8574. type
  8575. {$EXTERNALSYM NMPGCALCSIZE}
  8576. NMPGCALCSIZE = record
  8577. hdr: NMHDR;
  8578. dwFlag: DWORD;
  8579. iWidth: Integer;
  8580. iHeight: Integer;
  8581. end;
  8582. PNMPGCalcSize = ^TNMPGCalcSize;
  8583. TNMPGCalcSize = NMPGCALCSIZE;
  8584. { ====================== Native Font Control ============================== }
  8585. const
  8586. {$EXTERNALSYM WC_NATIVEFONTCTL}
  8587. WC_NATIVEFONTCTL = 'NativeFontCtl';
  8588. { style definition }
  8589. {$EXTERNALSYM NFS_EDIT}
  8590. NFS_EDIT = $0001;
  8591. {$EXTERNALSYM NFS_STATIC}
  8592. NFS_STATIC = $0002;
  8593. {$EXTERNALSYM NFS_LISTCOMBO}
  8594. NFS_LISTCOMBO = $0004;
  8595. {$EXTERNALSYM NFS_BUTTON}
  8596. NFS_BUTTON = $0008;
  8597. {$EXTERNALSYM NFS_ALL}
  8598. NFS_ALL = $0010;
  8599. {$EXTERNALSYM NFS_USEFONTASSOC}
  8600. NFS_USEFONTASSOC = $0020;
  8601. // ====================== Button Control =============================
  8602. // Button Class Name
  8603. const
  8604. {$EXTERNALSYM WC_BUTTON}
  8605. WC_BUTTON = 'Button';
  8606. // *** The following Button control declarations require Windows >= XP ***
  8607. {$EXTERNALSYM BUTTON_IMAGELIST_ALIGN_LEFT}
  8608. BUTTON_IMAGELIST_ALIGN_LEFT = 0;
  8609. {$EXTERNALSYM BUTTON_IMAGELIST_ALIGN_RIGHT}
  8610. BUTTON_IMAGELIST_ALIGN_RIGHT = 1;
  8611. {$EXTERNALSYM BUTTON_IMAGELIST_ALIGN_TOP}
  8612. BUTTON_IMAGELIST_ALIGN_TOP = 2;
  8613. {$EXTERNALSYM BUTTON_IMAGELIST_ALIGN_BOTTOM}
  8614. BUTTON_IMAGELIST_ALIGN_BOTTOM = 3;
  8615. {$EXTERNALSYM BUTTON_IMAGELIST_ALIGN_CENTER}
  8616. BUTTON_IMAGELIST_ALIGN_CENTER = 4; // Doesn't draw text
  8617. type
  8618. { $EXTERNALSYM BUTTON_IMAGELIST}
  8619. BUTTON_IMAGELIST = record
  8620. himl: HIMAGELIST; // Images: Normal, Hot, Pushed, Disabled. If count is less than 4, we use index 1
  8621. margin: TRect; // Margin around icon.
  8622. uAlign: UINT;
  8623. end;
  8624. PButtonImageList = ^TButtonImageList;
  8625. TButtonImageList = BUTTON_IMAGELIST;
  8626. const
  8627. {$EXTERNALSYM BCM_GETIDEALSIZE}
  8628. BCM_GETIDEALSIZE = BCM_FIRST + $0001;
  8629. {$EXTERNALSYM BCM_SETIMAGELIST}
  8630. BCM_SETIMAGELIST = BCM_FIRST + $0002;
  8631. {$EXTERNALSYM BCM_GETIMAGELIST}
  8632. BCM_GETIMAGELIST = BCM_FIRST + $0003;
  8633. {$EXTERNALSYM BCM_SETTEXTMARGIN}
  8634. BCM_SETTEXTMARGIN = BCM_FIRST + $0004;
  8635. {$EXTERNALSYM BCM_GETTEXTMARGIN}
  8636. BCM_GETTEXTMARGIN = BCM_FIRST + $0005;
  8637. {$EXTERNALSYM Button_GetIdealSize}
  8638. function Button_GetIdealSize(hwnd: HWND; var psize: TSize): BOOL; inline;
  8639. {$EXTERNALSYM Button_SetImageList}
  8640. function Button_SetImageList(hwnd: HWND; const pbuttonImagelist: TButtonImageList): BOOL; inline;
  8641. {$EXTERNALSYM Button_GetImageList}
  8642. function Button_GetImageList(hwnd: HWND; var pbuttonImagelist: TButtonImageList): BOOL; inline;
  8643. {$EXTERNALSYM Button_SetTextMargin}
  8644. function Button_SetTextMargin(hwnd: HWND; const pmargin: TRect): BOOL; inline;
  8645. {$EXTERNALSYM Button_GetTextMargin}
  8646. function Button_GetTextMargin(hwnd: HWND; var pmargin: TRect): BOOL; inline;
  8647. type
  8648. { $EXTERNALSYM tagNMBCHOTITEM}
  8649. tagNMBCHOTITEM = record
  8650. hdr: NMHDR;
  8651. dwFlags: DWORD; // HICF_*
  8652. end;
  8653. PNMBCHotItem = ^TNMBCHotItem;
  8654. TNMBCHotItem = tagNMBCHOTITEM;
  8655. const
  8656. {$EXTERNALSYM BCN_HOTITEMCHANGE}
  8657. BCN_HOTITEMCHANGE = BCN_FIRST + $0001;
  8658. {$EXTERNALSYM BST_HOT}
  8659. BST_HOT = $0200;
  8660. // *** The following Button control declarations require Windows >= Vista ***
  8661. // BUTTON STATE FLAGS
  8662. {$EXTERNALSYM BST_DROPDOWNPUSHED}
  8663. BST_DROPDOWNPUSHED = $0400;
  8664. // BUTTON STYLES
  8665. {$EXTERNALSYM BS_SPLITBUTTON}
  8666. BS_SPLITBUTTON = $0000000C;
  8667. {$EXTERNALSYM BS_DEFSPLITBUTTON}
  8668. BS_DEFSPLITBUTTON = $0000000D;
  8669. {$EXTERNALSYM BS_COMMANDLINK}
  8670. BS_COMMANDLINK = $0000000E;
  8671. {$EXTERNALSYM BS_DEFCOMMANDLINK}
  8672. BS_DEFCOMMANDLINK = $0000000F;
  8673. // SPLIT BUTTON INFO mask flags
  8674. {$EXTERNALSYM BCSIF_GLYPH}
  8675. BCSIF_GLYPH = $0001;
  8676. {$EXTERNALSYM BCSIF_IMAGE}
  8677. BCSIF_IMAGE = $0002;
  8678. {$EXTERNALSYM BCSIF_STYLE}
  8679. BCSIF_STYLE = $0004;
  8680. {$EXTERNALSYM BCSIF_SIZE}
  8681. BCSIF_SIZE = $0008;
  8682. // SPLIT BUTTON STYLE flags
  8683. {$EXTERNALSYM BCSS_NOSPLIT}
  8684. BCSS_NOSPLIT = $0001;
  8685. {$EXTERNALSYM BCSS_STRETCH}
  8686. BCSS_STRETCH = $0002;
  8687. {$EXTERNALSYM BCSS_ALIGNLEFT}
  8688. BCSS_ALIGNLEFT = $0004;
  8689. {$EXTERNALSYM BCSS_IMAGE}
  8690. BCSS_IMAGE = $0008;
  8691. // BUTTON STRUCTURES
  8692. type
  8693. { $EXTERNALSYM tagBUTTON_SPLITINFO}
  8694. tagBUTTON_SPLITINFO = record
  8695. mask: UINT;
  8696. himlGlyph: HIMAGELIST; // interpreted as WCHAR if BCSIF_GLYPH is set
  8697. uSplitStyle: UINT;
  8698. size: SIZE;
  8699. end;
  8700. PButtonSplitinfo = ^TButtonSplitinfo;
  8701. TButtonSplitinfo = tagBUTTON_SPLITINFO;
  8702. // BUTTON MESSAGES
  8703. const
  8704. {$EXTERNALSYM BCM_SETDROPDOWNSTATE}
  8705. BCM_SETDROPDOWNSTATE = BCM_FIRST + $0006;
  8706. {$EXTERNALSYM BCM_SETSPLITINFO}
  8707. BCM_SETSPLITINFO = BCM_FIRST + $0007;
  8708. {$EXTERNALSYM BCM_GETSPLITINFO}
  8709. BCM_GETSPLITINFO = BCM_FIRST + $0008;
  8710. {$EXTERNALSYM BCM_SETNOTE}
  8711. BCM_SETNOTE = BCM_FIRST + $0009;
  8712. {$EXTERNALSYM BCM_GETNOTE}
  8713. BCM_GETNOTE = BCM_FIRST + $000A;
  8714. {$EXTERNALSYM BCM_GETNOTELENGTH}
  8715. BCM_GETNOTELENGTH = BCM_FIRST + $000B;
  8716. {$EXTERNALSYM BCM_SETSHIELD}
  8717. BCM_SETSHIELD = BCM_FIRST + $000C;
  8718. {$EXTERNALSYM Button_SetDropDownState}
  8719. function Button_SetDropDownState(hwnd: HWND; fDropDown: BOOL): BOOL; inline;
  8720. {$EXTERNALSYM Button_SetSplitInfo}
  8721. function Button_SetSplitInfo(hwnd: HWND; const pInfo: TButtonSplitinfo): BOOL; inline;
  8722. {$EXTERNALSYM Button_GetSplitInfo}
  8723. function Button_GetSplitInfo(hwnd: HWND; var pInfo: TButtonSplitinfo): BOOL; inline;
  8724. {$EXTERNALSYM Button_SetNote}
  8725. function Button_SetNote(hwnd: HWND; psz: LPCWSTR): BOOL; inline; overload;
  8726. {$EXTERNALSYM Button_SetNote}
  8727. function Button_SetNote(hwnd: HWND; const psz: UnicodeString): BOOL; inline; overload;
  8728. {$EXTERNALSYM Button_GetNote}
  8729. function Button_GetNote(hwnd: HWND; psz: LPCWSTR; var pcc: Integer): BOOL; inline;
  8730. {$EXTERNALSYM Button_GetNoteLength}
  8731. function Button_GetNoteLength(hwnd: HWND): LRESULT; inline;
  8732. // Macro to use on a button or command link to display an elevated icon
  8733. {$EXTERNALSYM Button_SetElevationRequiredState}
  8734. function Button_SetElevationRequiredState(hwnd: HWND; fRequired: BOOL): LRESULT; inline;
  8735. // Value to pass to BCM_SETIMAGELIST to indicate that no glyph should be
  8736. // displayed
  8737. const
  8738. {$EXTERNALSYM BCCL_NOGLYPH}
  8739. BCCL_NOGLYPH = HIMAGELIST(-1);
  8740. // NOTIFICATION MESSAGES
  8741. type
  8742. { $EXTERNALSYM tagNMBCDROPDOWN}
  8743. tagNMBCDROPDOWN = record
  8744. hdr: NMHDR;
  8745. rcButton: TRect;
  8746. end;
  8747. PNMBCDropDown = ^TNMBCDropDown;
  8748. TNMBCDropDown = tagNMBCDROPDOWN;
  8749. const
  8750. {$EXTERNALSYM BCN_DROPDOWN}
  8751. BCN_DROPDOWN = BCN_FIRST + $0002;
  8752. /// ====================== Edit Control =============================
  8753. // Edit Class Name
  8754. const
  8755. {$EXTERNALSYM WC_EDIT}
  8756. WC_EDIT = 'Edit';
  8757. // *** The following Edit control declarations require Windows >= XP ***
  8758. const
  8759. {$EXTERNALSYM EM_SETCUEBANNER}
  8760. EM_SETCUEBANNER = ECM_FIRST + 1; // Set the cue banner with the lParm = LPCWSTR
  8761. {$EXTERNALSYM EM_GETCUEBANNER}
  8762. EM_GETCUEBANNER = ECM_FIRST + 2; // Set the cue banner with the lParm = LPCWSTR
  8763. {$EXTERNALSYM Edit_SetCueBannerText}
  8764. function Edit_SetCueBannerText(hwnd: HWND; lpwText: LPCWSTR): BOOL; inline;
  8765. {$EXTERNALSYM Edit_GetCueBannerText}
  8766. function Edit_GetCueBannerText(hwnd: HWND; lpwText: LPCWSTR; cchText: Longint): BOOL; inline;
  8767. type
  8768. { $EXTERNALSYM _tagEDITBALLOONTIP}
  8769. _tagEDITBALLOONTIP = record
  8770. cbStruct: DWORD;
  8771. pszTitle: LPCWSTR;
  8772. pszText: LPCWSTR;
  8773. ttiIcon: Integer; // From TTI_*
  8774. end;
  8775. PEditBalloonTip = ^TEditBalloonTip;
  8776. TEditBalloonTip = _tagEDITBALLOONTIP;
  8777. const
  8778. {$EXTERNALSYM EM_SHOWBALLOONTIP}
  8779. EM_SHOWBALLOONTIP = ECM_FIRST + 3; // Show a balloon tip associated to the edit control
  8780. {$EXTERNALSYM EM_HIDEBALLOONTIP}
  8781. EM_HIDEBALLOONTIP = ECM_FIRST + 4; // Hide any balloon tip associated with the edit control
  8782. {$EXTERNALSYM Edit_ShowBalloonTip}
  8783. function Edit_ShowBalloonTip(hwnd: HWND; const peditballoontip: TEditBalloonTip): BOOL; inline;
  8784. {$EXTERNALSYM Edit_HideBalloonTip}
  8785. function Edit_HideBalloonTip(hwnd: HWND): BOOL; inline;
  8786. // *** The following Edit control declarations require Windows >= Vista ***
  8787. const
  8788. {$EXTERNALSYM EM_SETHILITE}
  8789. EM_SETHILITE = ECM_FIRST + 5;
  8790. {$EXTERNALSYM EM_GETHILITE}
  8791. EM_GETHILITE = ECM_FIRST + 6;
  8792. {$EXTERNALSYM Edit_SetHilite}
  8793. procedure Edit_SetHilite(hwndCtl: HWND; ichStart, ichEnd: Integer); inline;
  8794. {$EXTERNALSYM Edit_GetHilite}
  8795. function Edit_GetHilite(hwndCtl: HWND): LRESULT; inline;
  8796. // ====================== Combobox Control =============================
  8797. // Combobox Class Name
  8798. const
  8799. {$EXTERNALSYM WC_COMBOBOX}
  8800. WC_COMBOBOX = 'ComboBox';
  8801. // *** The following Combobox control declarations require Windows >= Vista ***
  8802. // custom combobox control messages
  8803. const
  8804. {$EXTERNALSYM CB_SETMINVISIBLE}
  8805. CB_SETMINVISIBLE = CBM_FIRST + 1;
  8806. {$EXTERNALSYM CB_GETMINVISIBLE}
  8807. CB_GETMINVISIBLE = CBM_FIRST + 2;
  8808. {$EXTERNALSYM CB_SETCUEBANNER}
  8809. CB_SETCUEBANNER = CBM_FIRST + 3;
  8810. {$EXTERNALSYM CB_GETCUEBANNER}
  8811. CB_GETCUEBANNER = CBM_FIRST + 4;
  8812. {$EXTERNALSYM ComboBox_SetMinVisible}
  8813. function ComboBox_SetMinVisible(hwnd: HWND; iMinVisible: Integer): BOOL; inline;
  8814. {$EXTERNALSYM ComboBox_GetMinVisible}
  8815. function ComboBox_GetMinVisible(hwnd: HWND): Integer; inline;
  8816. {$EXTERNALSYM ComboBox_SetCueBannerText}
  8817. function ComboBox_SetCueBannerText(hwnd: HWND; lpcwText: LPCWSTR): BOOL; inline;
  8818. {$EXTERNALSYM ComboBox_GetCueBannerText}
  8819. function ComboBox_GetCueBannerText(hwnd: HWND; lpwText: LPCWSTR; cchText: Integer): BOOL; inline;
  8820. // ===================== Task Dialog =========================
  8821. // *** The Task Dialog declarations require Windows >= Vista ***
  8822. {$REGION 'For NTDDI_VERSION >= NTDDI_VISTA'}
  8823. type
  8824. { $EXTERNALSYM PFTASKDIALOGCALLBACK}
  8825. PFTASKDIALOGCALLBACK = function(hwnd: HWND; msg: UINT; wParam: WPARAM;
  8826. lParam: LPARAM; lpRefData: LONG_PTR): HResult; stdcall;
  8827. TFTaskDialogCallback = PFTASKDIALOGCALLBACK;
  8828. const
  8829. { Task Dialog Flags }
  8830. {$EXTERNALSYM TDF_ENABLE_HYPERLINKS}
  8831. TDF_ENABLE_HYPERLINKS = $0001;
  8832. {$EXTERNALSYM TDF_USE_HICON_MAIN}
  8833. TDF_USE_HICON_MAIN = $0002;
  8834. {$EXTERNALSYM TDF_USE_HICON_FOOTER}
  8835. TDF_USE_HICON_FOOTER = $0004;
  8836. {$EXTERNALSYM TDF_ALLOW_DIALOG_CANCELLATION}
  8837. TDF_ALLOW_DIALOG_CANCELLATION = $0008;
  8838. {$EXTERNALSYM TDF_USE_COMMAND_LINKS}
  8839. TDF_USE_COMMAND_LINKS = $0010;
  8840. {$EXTERNALSYM TDF_USE_COMMAND_LINKS_NO_ICON}
  8841. TDF_USE_COMMAND_LINKS_NO_ICON = $0020;
  8842. {$EXTERNALSYM TDF_EXPAND_FOOTER_AREA}
  8843. TDF_EXPAND_FOOTER_AREA = $0040;
  8844. {$EXTERNALSYM TDF_EXPANDED_BY_DEFAULT}
  8845. TDF_EXPANDED_BY_DEFAULT = $0080;
  8846. {$EXTERNALSYM TDF_VERIFICATION_FLAG_CHECKED}
  8847. TDF_VERIFICATION_FLAG_CHECKED = $0100;
  8848. {$EXTERNALSYM TDF_SHOW_PROGRESS_BAR}
  8849. TDF_SHOW_PROGRESS_BAR = $0200;
  8850. {$EXTERNALSYM TDF_SHOW_MARQUEE_PROGRESS_BAR}
  8851. TDF_SHOW_MARQUEE_PROGRESS_BAR = $0400;
  8852. {$EXTERNALSYM TDF_CALLBACK_TIMER}
  8853. TDF_CALLBACK_TIMER = $0800;
  8854. {$EXTERNALSYM TDF_POSITION_RELATIVE_TO_WINDOW}
  8855. TDF_POSITION_RELATIVE_TO_WINDOW = $1000;
  8856. {$EXTERNALSYM TDF_RTL_LAYOUT}
  8857. TDF_RTL_LAYOUT = $2000;
  8858. {$EXTERNALSYM TDF_NO_DEFAULT_RADIO_BUTTON}
  8859. TDF_NO_DEFAULT_RADIO_BUTTON = $4000;
  8860. {$EXTERNALSYM TDF_CAN_BE_MINIMIZED}
  8861. TDF_CAN_BE_MINIMIZED = $8000;
  8862. { Task Dialog Messages }
  8863. {$EXTERNALSYM TDM_NAVIGATE_PAGE}
  8864. TDM_NAVIGATE_PAGE = WM_USER+101;
  8865. {$EXTERNALSYM TDM_CLICK_BUTTON}
  8866. TDM_CLICK_BUTTON = WM_USER+102; // wParam = Button ID
  8867. {$EXTERNALSYM TDM_SET_MARQUEE_PROGRESS_BAR}
  8868. TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER+103; // wParam = 0 (nonMarque) wParam != 0 (Marquee)
  8869. {$EXTERNALSYM TDM_SET_PROGRESS_BAR_STATE}
  8870. TDM_SET_PROGRESS_BAR_STATE = WM_USER+104; // wParam = new progress state
  8871. {$EXTERNALSYM TDM_SET_PROGRESS_BAR_RANGE}
  8872. TDM_SET_PROGRESS_BAR_RANGE = WM_USER+105; // lParam = MAKELPARAM(nMinRange, nMaxRange)
  8873. {$EXTERNALSYM TDM_SET_PROGRESS_BAR_POS}
  8874. TDM_SET_PROGRESS_BAR_POS = WM_USER+106; // wParam = new position
  8875. {$EXTERNALSYM TDM_SET_PROGRESS_BAR_MARQUEE}
  8876. TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER+107; // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints)
  8877. {$EXTERNALSYM TDM_SET_ELEMENT_TEXT}
  8878. TDM_SET_ELEMENT_TEXT = WM_USER+108; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
  8879. {$EXTERNALSYM TDM_CLICK_RADIO_BUTTON}
  8880. TDM_CLICK_RADIO_BUTTON = WM_USER+110; // wParam = Radio Button ID
  8881. {$EXTERNALSYM TDM_ENABLE_BUTTON}
  8882. TDM_ENABLE_BUTTON = WM_USER+111; // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID
  8883. {$EXTERNALSYM TDM_ENABLE_RADIO_BUTTON}
  8884. TDM_ENABLE_RADIO_BUTTON = WM_USER+112; // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID
  8885. {$EXTERNALSYM TDM_CLICK_VERIFICATION}
  8886. TDM_CLICK_VERIFICATION = WM_USER+113; // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus)
  8887. {$EXTERNALSYM TDM_UPDATE_ELEMENT_TEXT}
  8888. TDM_UPDATE_ELEMENT_TEXT = WM_USER+114; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
  8889. {$EXTERNALSYM TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE}
  8890. TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115; // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required)
  8891. {$EXTERNALSYM TDM_UPDATE_ICON}
  8892. TDM_UPDATE_ICON = WM_USER+116; // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
  8893. { Task Dialog Notifications }
  8894. {$EXTERNALSYM TDN_CREATED}
  8895. TDN_CREATED = 0;
  8896. {$EXTERNALSYM TDN_NAVIGATED}
  8897. TDN_NAVIGATED = 1;
  8898. {$EXTERNALSYM TDN_BUTTON_CLICKED}
  8899. TDN_BUTTON_CLICKED = 2; // wParam = Button ID
  8900. {$EXTERNALSYM TDN_HYPERLINK_CLICKED}
  8901. TDN_HYPERLINK_CLICKED = 3; // lParam = (LPCWSTR)pszHREF
  8902. {$EXTERNALSYM TDN_TIMER}
  8903. TDN_TIMER = 4; // wParam = Milliseconds since dialog created or timer reset
  8904. {$EXTERNALSYM TDN_DESTROYED}
  8905. TDN_DESTROYED = 5;
  8906. {$EXTERNALSYM TDN_RADIO_BUTTON_CLICKED}
  8907. TDN_RADIO_BUTTON_CLICKED = 6; // wParam = Radio Button ID
  8908. {$EXTERNALSYM TDN_DIALOG_CONSTRUCTED}
  8909. TDN_DIALOG_CONSTRUCTED = 7;
  8910. {$EXTERNALSYM TDN_VERIFICATION_CLICKED}
  8911. TDN_VERIFICATION_CLICKED = 8; // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0
  8912. {$EXTERNALSYM TDN_HELP}
  8913. TDN_HELP = 9;
  8914. {$EXTERNALSYM TDN_EXPANDO_BUTTON_CLICKED}
  8915. TDN_EXPANDO_BUTTON_CLICKED = 10; // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded)
  8916. {$ALIGN 1}
  8917. type
  8918. { $EXTERNALSYM TASKDIALOG_BUTTON}
  8919. TASKDIALOG_BUTTON = record
  8920. nButtonID: Integer;
  8921. pszButtonText: LPCWSTR;
  8922. end;
  8923. { $EXTERNALSYM _TASKDIALOG_BUTTON}
  8924. _TASKDIALOG_BUTTON = TASKDIALOG_BUTTON;
  8925. PTaskDialogButton = ^TTaskDialogButton;
  8926. TTaskDialogButton = TASKDIALOG_BUTTON;
  8927. const
  8928. { Task Dialog Elements }
  8929. {$EXTERNALSYM TDE_CONTENT}
  8930. TDE_CONTENT = 0;
  8931. {$EXTERNALSYM TDE_EXPANDED_INFORMATION}
  8932. TDE_EXPANDED_INFORMATION = 1;
  8933. {$EXTERNALSYM TDE_FOOTER}
  8934. TDE_FOOTER = 2;
  8935. {$EXTERNALSYM TDE_MAIN_INSTRUCTION}
  8936. TDE_MAIN_INSTRUCTION = 3;
  8937. { Task Dialog Icon Elements }
  8938. {$EXTERNALSYM TDIE_ICON_MAIN}
  8939. TDIE_ICON_MAIN = 0;
  8940. {$EXTERNALSYM TDIE_ICON_FOOTER}
  8941. TDIE_ICON_FOOTER = 1;
  8942. { Task Dialog Common Icons }
  8943. {$EXTERNALSYM TD_WARNING_ICON}
  8944. TD_WARNING_ICON = MAKEINTRESOURCEW(Word(-1));
  8945. {$EXTERNALSYM TD_ERROR_ICON}
  8946. TD_ERROR_ICON = MAKEINTRESOURCEW(Word(-2));
  8947. {$EXTERNALSYM TD_INFORMATION_ICON}
  8948. TD_INFORMATION_ICON = MAKEINTRESOURCEW(Word(-3));
  8949. {$EXTERNALSYM TD_SHIELD_ICON}
  8950. TD_SHIELD_ICON = MAKEINTRESOURCEW(Word(-4));
  8951. { Task Dialog Button Flags }
  8952. {$EXTERNALSYM TDCBF_OK_BUTTON}
  8953. TDCBF_OK_BUTTON = $0001; // selected control return value IDOK
  8954. {$EXTERNALSYM TDCBF_YES_BUTTON}
  8955. TDCBF_YES_BUTTON = $0002; // selected control return value IDYES
  8956. {$EXTERNALSYM TDCBF_NO_BUTTON}
  8957. TDCBF_NO_BUTTON = $0004; // selected control return value IDNO
  8958. {$EXTERNALSYM TDCBF_CANCEL_BUTTON}
  8959. TDCBF_CANCEL_BUTTON = $0008; // selected control return value IDCANCEL
  8960. {$EXTERNALSYM TDCBF_RETRY_BUTTON}
  8961. TDCBF_RETRY_BUTTON = $0010; // selected control return value IDRETRY
  8962. {$EXTERNALSYM TDCBF_CLOSE_BUTTON}
  8963. TDCBF_CLOSE_BUTTON = $0020; // selected control return value IDCLOSE
  8964. type
  8965. { $EXTERNALSYM TASKDIALOGCONFIG}
  8966. TASKDIALOGCONFIG = record
  8967. cbSize: UINT;
  8968. hwndParent: HWND;
  8969. hInstance: HINST; // used for MAKEINTRESOURCE() strings
  8970. dwFlags: DWORD; // TASKDIALOG_FLAGS (TDF_XXX) flags
  8971. dwCommonButtons: DWORD; // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags
  8972. pszWindowTitle: LPCWSTR; // string or MAKEINTRESOURCE()
  8973. case Integer of
  8974. 0: (hMainIcon: HICON);
  8975. 1: (pszMainIcon: LPCWSTR;
  8976. pszMainInstruction: LPCWSTR;
  8977. pszContent: LPCWSTR;
  8978. cButtons: UINT;
  8979. pButtons: PTaskDialogButton;
  8980. nDefaultButton: Integer;
  8981. cRadioButtons: UINT;
  8982. pRadioButtons: PTaskDialogButton;
  8983. nDefaultRadioButton: Integer;
  8984. pszVerificationText: LPCWSTR;
  8985. pszExpandedInformation: LPCWSTR;
  8986. pszExpandedControlText: LPCWSTR;
  8987. pszCollapsedControlText: LPCWSTR;
  8988. case Integer of
  8989. 0: (hFooterIcon: HICON);
  8990. 1: (pszFooterIcon: LPCWSTR;
  8991. pszFooter: LPCWSTR;
  8992. pfCallback: TFTaskDialogCallback;
  8993. lpCallbackData: LONG_PTR;
  8994. cxWidth: UINT // width of the Task Dialog's client area in DLU's.
  8995. // If 0, Task Dialog will calculate the ideal width.
  8996. );
  8997. );
  8998. end;
  8999. {$EXTERNALSYM _TASKDIALOGCONFIG}
  9000. _TASKDIALOGCONFIG = TASKDIALOGCONFIG;
  9001. PTaskDialogConfig = ^TTaskDialogConfig;
  9002. TTaskDialogConfig = TASKDIALOGCONFIG;
  9003. {$ALIGN ON}
  9004. {$EXTERNALSYM TaskDialogIndirect}
  9005. function TaskDialogIndirect(const pTaskConfig: TTaskDialogConfig;
  9006. pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT;
  9007. {$EXTERNALSYM TaskDialog}
  9008. function TaskDialog(hwndParent: HWND; hInstance: HINST; pszWindowTitle,
  9009. pszMainInstruction, pszContent: LPCWSTR; dwCommonButtons: DWORD;
  9010. pszIcon: LPCWSTR; pnButton: PInteger): HRESULT;
  9011. {$ENDREGION}
  9012. { ====== TrackMouseEvent ================================================== }
  9013. const
  9014. {$EXTERNALSYM WM_MOUSEHOVER}
  9015. WM_MOUSEHOVER = $02A1;
  9016. {$EXTERNALSYM WM_MOUSELEAVE}
  9017. WM_MOUSELEAVE = $02A3;
  9018. {$EXTERNALSYM TME_HOVER}
  9019. TME_HOVER = $00000001;
  9020. {$EXTERNALSYM TME_LEAVE}
  9021. TME_LEAVE = $00000002;
  9022. {$EXTERNALSYM TME_NONCLIENT}
  9023. TME_NONCLIENT = $00000010;
  9024. {$EXTERNALSYM TME_QUERY}
  9025. TME_QUERY = $40000000;
  9026. {$EXTERNALSYM TME_CANCEL}
  9027. TME_CANCEL = $80000000;
  9028. {$EXTERNALSYM HOVER_DEFAULT}
  9029. HOVER_DEFAULT = $FFFFFFFF;
  9030. type
  9031. {$EXTERNALSYM tagTRACKMOUSEEVENT}
  9032. tagTRACKMOUSEEVENT = record
  9033. cbSize: DWORD;
  9034. dwFlags: DWORD;
  9035. hwndTrack: HWND;
  9036. dwHoverTime: DWORD;
  9037. end;
  9038. PTrackMouseEvent = ^TTrackMouseEvent;
  9039. TTrackMouseEvent = tagTRACKMOUSEEVENT;
  9040. { Declare _TrackMouseEvent. This API tries to use the window manager's }
  9041. { implementation of TrackMouseEvent if it is present, otherwise it emulates. }
  9042. {$EXTERNALSYM _TrackMouseEvent}
  9043. function _TrackMouseEvent(lpEventTrack: PTrackMouseEvent): BOOL; stdcall;
  9044. { ====== Flat Scrollbar APIs========================================= }
  9045. const
  9046. {$EXTERNALSYM WSB_PROP_CYVSCROLL}
  9047. WSB_PROP_CYVSCROLL = $00000001;
  9048. {$EXTERNALSYM WSB_PROP_CXHSCROLL}
  9049. WSB_PROP_CXHSCROLL = $00000002;
  9050. {$EXTERNALSYM WSB_PROP_CYHSCROLL}
  9051. WSB_PROP_CYHSCROLL = $00000004;
  9052. {$EXTERNALSYM WSB_PROP_CXVSCROLL}
  9053. WSB_PROP_CXVSCROLL = $00000008;
  9054. {$EXTERNALSYM WSB_PROP_CXHTHUMB}
  9055. WSB_PROP_CXHTHUMB = $00000010;
  9056. {$EXTERNALSYM WSB_PROP_CYVTHUMB}
  9057. WSB_PROP_CYVTHUMB = $00000020;
  9058. {$EXTERNALSYM WSB_PROP_VBKGCOLOR}
  9059. WSB_PROP_VBKGCOLOR = $00000040;
  9060. {$EXTERNALSYM WSB_PROP_HBKGCOLOR}
  9061. WSB_PROP_HBKGCOLOR = $00000080;
  9062. {$EXTERNALSYM WSB_PROP_VSTYLE}
  9063. WSB_PROP_VSTYLE = $00000100;
  9064. {$EXTERNALSYM WSB_PROP_HSTYLE}
  9065. WSB_PROP_HSTYLE = $00000200;
  9066. {$EXTERNALSYM WSB_PROP_WINSTYLE}
  9067. WSB_PROP_WINSTYLE = $00000400;
  9068. {$EXTERNALSYM WSB_PROP_PALETTE}
  9069. WSB_PROP_PALETTE = $00000800;
  9070. {$EXTERNALSYM WSB_PROP_MASK}
  9071. WSB_PROP_MASK = $00000FFF;
  9072. {$EXTERNALSYM FSB_FLAT_MODE}
  9073. FSB_FLAT_MODE = 2;
  9074. {$EXTERNALSYM FSB_ENCARTA_MODE}
  9075. FSB_ENCARTA_MODE = 1;
  9076. {$EXTERNALSYM FSB_REGULAR_MODE}
  9077. FSB_REGULAR_MODE = 0;
  9078. {$EXTERNALSYM FlatSB_EnableScrollBar}
  9079. function FlatSB_EnableScrollBar(hWnd: HWND; wSBflags, wArrows: UINT): BOOL; stdcall;
  9080. {$EXTERNALSYM FlatSB_ShowScrollBar}
  9081. function FlatSB_ShowScrollBar(hWnd: HWND; wBar: Integer; bShow: BOOL): BOOL; stdcall;
  9082. {$EXTERNALSYM FlatSB_GetScrollRange}
  9083. function FlatSB_GetScrollRange(hWnd: HWND; nBar: Integer; var lpMinPos,
  9084. lpMaxPos: Integer): BOOL; stdcall;
  9085. {$EXTERNALSYM FlatSB_GetScrollInfo}
  9086. function FlatSB_GetScrollInfo(hWnd: HWND; BarFlag: Integer;
  9087. var ScrollInfo: TScrollInfo): BOOL; stdcall;
  9088. {$EXTERNALSYM FlatSB_GetScrollPos}
  9089. function FlatSB_GetScrollPos(hWnd: HWND; nBar: Integer): Integer; stdcall;
  9090. {$EXTERNALSYM FlatSB_GetScrollProp}
  9091. function FlatSB_GetScrollProp(hWnd: HWND; propIndex: Integer;
  9092. pValue: PInteger): Bool; stdcall;
  9093. {$EXTERNALSYM FlatSB_GetScrollPropPtr}
  9094. function FlatSB_GetScrollPropPtr(hWnd: HWND; propIndex: Integer;
  9095. pValue: PINT_PTR): Bool; stdcall;
  9096. {$EXTERNALSYM FlatSB_SetScrollPos}
  9097. function FlatSB_SetScrollPos(hWnd: HWND; nBar, nPos: Integer;
  9098. bRedraw: BOOL): Integer; stdcall;
  9099. {$EXTERNALSYM FlatSB_SetScrollInfo}
  9100. function FlatSB_SetScrollInfo(hWnd: HWND; BarFlag: Integer;
  9101. const ScrollInfo: TScrollInfo; Redraw: BOOL): Integer; stdcall;
  9102. {$EXTERNALSYM FlatSB_SetScrollRange}
  9103. function FlatSB_SetScrollRange(hWnd: HWND; nBar, nMinPos, nMaxPos: Integer;
  9104. bRedraw: BOOL): BOOL; stdcall;
  9105. {$EXTERNALSYM FlatSB_SetScrollProp}
  9106. function FlatSB_SetScrollProp(hWnd: HWND; index: Integer; newValue: IntPtr;
  9107. fRedraw: Bool): Bool; stdcall;
  9108. {$EXTERNALSYM FlatSB_SetScrollPropPtr}
  9109. function FlatSB_SetScrollPropPtr(hWnd: HWND; index: Integer; newValue: IntPtr;
  9110. fRedraw: Bool): Bool; stdcall;
  9111. {$EXTERNALSYM InitializeFlatSB}
  9112. function InitializeFlatSB(hWnd: HWND): Bool; stdcall;
  9113. {$EXTERNALSYM UninitializeFlatSB}
  9114. procedure UninitializeFlatSB(hWnd: HWND); stdcall;
  9115. //
  9116. // subclassing stuff
  9117. //
  9118. type
  9119. { For Windows >= XP }
  9120. { $EXTERNALSYM SUBCLASSPROC}
  9121. SUBCLASSPROC = function(hWnd: HWND; uMsg: UINT; wParam: WPARAM;
  9122. lParam: LPARAM; uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): LRESULT; stdcall;
  9123. TSubClassProc = SUBCLASSPROC;
  9124. { For Windows >= XP }
  9125. {$EXTERNALSYM SetWindowSubclass}
  9126. function SetWindowSubclass(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  9127. uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): BOOL;
  9128. {$EXTERNALSYM GetWindowSubclass}
  9129. function GetWindowSubclass(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  9130. uIdSubclass: UINT_PTR; var pdwRefData: DWORD_PTR): BOOL;
  9131. {$EXTERNALSYM RemoveWindowSubclass}
  9132. function RemoveWindowSubclass(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  9133. uIdSubclass: UINT_PTR): BOOL;
  9134. {$EXTERNALSYM DefSubclassProc}
  9135. function DefSubclassProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM;
  9136. lParam: LPARAM): LRESULT;
  9137. { For NTDDI_VERSION >= NTDDI_VISTA }
  9138. const
  9139. {$EXTERNALSYM LIM_SMALL}
  9140. LIM_SMALL = 0; // corresponds to SM_CXSMICON/SM_CYSMICON
  9141. {$EXTERNALSYM LIM_LARGE}
  9142. LIM_LARGE = 1; // corresponds to SM_CXICON/SM_CYICON
  9143. { For NTDDI_VERSION >= NTDDI_VISTA }
  9144. {$EXTERNALSYM LoadIconMetric}
  9145. function LoadIconMetric(hinst: HINST; pszName: LPCWSTR; lims: Integer;
  9146. var phico: HICON): HResult;
  9147. {$EXTERNALSYM LoadIconWithScaleDown}
  9148. function LoadIconWithScaleDown(hinst: HINST; pszName: LPCWSTR; cx: Integer;
  9149. cy: Integer; var phico: HICON): HResult;
  9150. { For Windows >= XP }
  9151. {$EXTERNALSYM DrawShadowText}
  9152. function DrawShadowText(hdc: HDC; pszText: LPCWSTR; cch: UINT; const prc: TRect;
  9153. dwFlags: DWORD; crText, crShadow: COLORREF; ixOffset, iyOffset: Integer): Integer;
  9154. const
  9155. { For Windows >= Vista }
  9156. {$EXTERNALSYM DCHF_TOPALIGN}
  9157. DCHF_TOPALIGN = $00000002; // default is center-align
  9158. {$EXTERNALSYM DCHF_HORIZONTAL}
  9159. DCHF_HORIZONTAL = $00000004; // default is vertical
  9160. {$EXTERNALSYM DCHF_HOT}
  9161. DCHF_HOT = $00000008; // default is flat
  9162. {$EXTERNALSYM DCHF_PUSHED}
  9163. DCHF_PUSHED = $00000010; // default is flat
  9164. {$EXTERNALSYM DCHF_FLIPPED}
  9165. DCHF_FLIPPED = $00000020; // if horiz, default is pointing right
  9166. // if vert, default is pointing up
  9167. { For Windows >= Vista }
  9168. {$EXTERNALSYM DCHF_TRANSPARENT}
  9169. DCHF_TRANSPARENT = $00000040;
  9170. {$EXTERNALSYM DCHF_INACTIVE}
  9171. DCHF_INACTIVE = $00000080;
  9172. {$EXTERNALSYM DCHF_NOBORDER}
  9173. DCHF_NOBORDER = $00000100;
  9174. { For Windows >= Vista }
  9175. {$EXTERNALSYM DrawScrollArrow}
  9176. procedure DrawScrollArrow(hdc: HDC; lprc: PRect; wControlState: UINT;
  9177. rgbOveride: COLORREF);
  9178. // Utilities to simplify .NET/Win32 single code base
  9179. type
  9180. TWMNotifyHC = record { TWMNotify }
  9181. Msg: Cardinal;
  9182. MsgFiller: TDWordFiller;
  9183. IDCtrl: WPARAM;
  9184. case Integer of
  9185. 0: (NMHdr: PNMHdr);
  9186. 1: (HDNotify: PHDNotify;
  9187. Result: LRESULT);
  9188. end;
  9189. TWMNotifyTV = record { TWMNotify }
  9190. Msg: Cardinal;
  9191. MsgFiller: TDWordFiller;
  9192. IDCtrl: WPARAM;
  9193. case Integer of
  9194. 0: (NMHdr: PNMHdr);
  9195. 1: (NMCustomDraw: PNMCustomDraw);
  9196. 2: (NMTreeView: PNMTreeView);
  9197. 3: (NMTVCustomDraw: PNMTVCustomDraw);
  9198. 4: (ToolTipTextW: PToolTipTextW);
  9199. 5: (TVDispInfo: PTVDispInfo;
  9200. Result: LRESULT);
  9201. end;
  9202. TWMNotifyTRB = record { TWMNotify }
  9203. Msg: Cardinal;
  9204. MsgFiller: TDWordFiller;
  9205. IDCtrl: WPARAM;
  9206. case Integer of
  9207. 0: (NMHdr: PNMHdr);
  9208. 1: (NMCustomDraw: PNMCustomDraw;
  9209. Result: LRESULT);
  9210. end;
  9211. TWMNotifyUD = record { TWMNotify }
  9212. Msg: Cardinal;
  9213. MsgFiller: TDWordFiller;
  9214. IDCtrl: WPARAM;
  9215. case Integer of
  9216. 0: (NMHdr: PNMHdr);
  9217. 1: (NMUpDown: PNMUpDown;
  9218. Result: LRESULT);
  9219. end;
  9220. TWMNotifyLV = record { TWMNotify }
  9221. Msg: Cardinal;
  9222. MsgFiller: TDWordFiller;
  9223. IDCtrl: WPARAM;
  9224. case Integer of
  9225. 0: (NMHdr: PNMHdr);
  9226. 1: (HDNotify: PHDNotify);
  9227. 2: (LVDispInfo: PLVDispInfo);
  9228. 3: (NMCustomDraw: PNMCustomDraw);
  9229. 4: (NMListView: PNMListView);
  9230. 5: (NMLVCacheHint: PNMLVCacheHint);
  9231. 6: (NMLVCustomDraw: PNMLVCustomDraw);
  9232. 7: (NMLVFindItem: PNMLVFindItem);
  9233. 8: (NMLVODStateChange: PNMLVODStateChange;
  9234. Result: LRESULT);
  9235. end;
  9236. TWMNotifyTLB = record { TWMNotify }
  9237. Msg: Cardinal;
  9238. MsgFiller: TDWordFiller;
  9239. IDCtrl: WPARAM;
  9240. case Integer of
  9241. 0: (NMHdr: PNMHdr);
  9242. 1: (NMTBCustomDraw: PNMTBCustomDraw);
  9243. 2: (NMToolBar: PNMToolBar;
  9244. Result: LRESULT);
  9245. end;
  9246. TWMNotifyMC = record { TWMNotify }
  9247. Msg: Cardinal;
  9248. MsgFiller: TDWordFiller;
  9249. IDCtrl: WPARAM;
  9250. case Integer of
  9251. 0: (NMHdr: PNMHdr);
  9252. 1: (NMDayState: PNMDayState);
  9253. 2: (NMSelChange: PNMSelChange;
  9254. Result: LRESULT);
  9255. end;
  9256. TWMNotifyDT = record { TWMNotify }
  9257. Msg: Cardinal;
  9258. MsgFiller: TDWordFiller;
  9259. IDCtrl: WPARAM;
  9260. case Integer of
  9261. 0: (NMHdr: PNMHdr);
  9262. 1: (NMDateTimeChange: PNMDateTimeChange);
  9263. 2: (NMDateTimeString: PNMDateTimeString;
  9264. Result: LRESULT);
  9265. end;
  9266. TWMNotifyPS = record { TWMNotify }
  9267. Msg: Cardinal;
  9268. MsgFiller: TDWordFiller;
  9269. IDCtrl: WPARAM;
  9270. case Integer of
  9271. 0: (NMHdr: PNMHdr);
  9272. 1: (NMPGCalcSize: PNMPGCalcSize);
  9273. 2: (NMPGScroll: PNMPGScroll;
  9274. Result: LRESULT);
  9275. end;
  9276. TTCMAdjustRect = record
  9277. Msg: Cardinal;
  9278. MsgFiller: TDWordFiller;
  9279. Larger: LongBool;
  9280. LargerFiller: TDWordFiller;
  9281. case Integer of
  9282. 0: (lpPrc: PRect);
  9283. 1: (Prc: PRect;
  9284. Result: LRESULT);
  9285. end;
  9286. implementation
  9287. const
  9288. {$IFDEF MSWINDOWS}
  9289. cctrl = comctl32; { From Winapi.Windows.pas }
  9290. {$ENDIF}
  9291. var
  9292. ComCtl32DLL: THandle;
  9293. _InitCommonControlsEx: function(var ICC: TInitCommonControlsEx): Bool stdcall;
  9294. Win32MajorVersion: Integer = 0;
  9295. Win32MinorVersion: Integer = 0;
  9296. Win32Platform: Integer = 0;
  9297. procedure InitVersionInfo;
  9298. var
  9299. OSVersionInfo: TOSVersionInfo;
  9300. begin
  9301. OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
  9302. if GetVersionEx(OSVersionInfo) then
  9303. with OSVersionInfo do
  9304. begin
  9305. Win32Platform := dwPlatformId;
  9306. Win32MajorVersion := dwMajorVersion;
  9307. Win32MinorVersion := dwMinorVersion;
  9308. end;
  9309. end;
  9310. procedure InitCommonControls; external cctrl name 'InitCommonControls';
  9311. procedure InitComCtl;
  9312. begin
  9313. if ComCtl32DLL = 0 then
  9314. begin
  9315. ComCtl32DLL := GetModuleHandle(cctrl);
  9316. if ComCtl32DLL <> 0 then
  9317. @_InitCommonControlsEx := GetProcAddress(ComCtl32DLL, 'InitCommonControlsEx');
  9318. end;
  9319. end;
  9320. function InitCommonControlsEx(var ICC: TInitCommonControlsEx): Bool;
  9321. begin
  9322. if ComCtl32DLL = 0 then InitComCtl;
  9323. Result := Assigned(_InitCommonControlsEx) and _InitCommonControlsEx(ICC);
  9324. end;
  9325. { Property Sheets }
  9326. function CreatePropertySheetPage; external cctrl name 'CreatePropertySheetPageW';
  9327. function CreatePropertySheetPageA; external cctrl name 'CreatePropertySheetPageA';
  9328. function CreatePropertySheetPageW; external cctrl name 'CreatePropertySheetPageW';
  9329. function DestroyPropertySheetPage; external cctrl name 'DestroyPropertySheetPage';
  9330. function PropertySheet; external cctrl name 'PropertySheetW';
  9331. function PropertySheetA; external cctrl name 'PropertySheetA';
  9332. function PropertySheetW; external cctrl name 'PropertySheetW';
  9333. { Image List }
  9334. function ImageList_Create; external cctrl name 'ImageList_Create';
  9335. function ImageList_Destroy; external cctrl name 'ImageList_Destroy';
  9336. function ImageList_GetImageCount; external cctrl name 'ImageList_GetImageCount';
  9337. function ImageList_SetImageCount; external cctrl name 'ImageList_SetImageCount';
  9338. function ImageList_Add; external cctrl name 'ImageList_Add';
  9339. function ImageList_ReplaceIcon; external cctrl name 'ImageList_ReplaceIcon';
  9340. function ImageList_SetBkColor; external cctrl name 'ImageList_SetBkColor';
  9341. function ImageList_GetBkColor; external cctrl name 'ImageList_GetBkColor';
  9342. function ImageList_SetOverlayImage; external cctrl name 'ImageList_SetOverlayImage';
  9343. function ImageList_AddIcon(ImageList: HIMAGELIST; Icon: HIcon): Integer;
  9344. begin
  9345. Result := ImageList_ReplaceIcon(ImageList, -1, Icon);
  9346. end;
  9347. function IndexToOverlayMask(Index: Integer): Integer;
  9348. begin
  9349. Result := Index shl 8;
  9350. end;
  9351. function ImageList_Draw; external cctrl name 'ImageList_Draw';
  9352. function ImageList_Replace; external cctrl name 'ImageList_Replace';
  9353. function ImageList_AddMasked; external cctrl name 'ImageList_AddMasked';
  9354. function ImageList_DrawEx; external cctrl name 'ImageList_DrawEx';
  9355. function ImageList_DrawIndirect; external cctrl name 'ImageList_DrawIndirect';
  9356. function ImageList_Remove; external cctrl name 'ImageList_Remove';
  9357. function ImageList_GetIcon; external cctrl name 'ImageList_GetIcon';
  9358. function ImageList_LoadImage; external cctrl name 'ImageList_LoadImageW';
  9359. function ImageList_LoadImageA; external cctrl name 'ImageList_LoadImageA';
  9360. function ImageList_LoadImageW; external cctrl name 'ImageList_LoadImageW';
  9361. function ImageList_Copy; external cctrl name 'ImageList_Copy';
  9362. function ImageList_BeginDrag; external cctrl name 'ImageList_BeginDrag';
  9363. function ImageList_EndDrag; external cctrl name 'ImageList_EndDrag';
  9364. function ImageList_DragEnter; external cctrl name 'ImageList_DragEnter';
  9365. function ImageList_DragLeave; external cctrl name 'ImageList_DragLeave';
  9366. function ImageList_DragMove; external cctrl name 'ImageList_DragMove';
  9367. function ImageList_SetDragCursorImage; external cctrl name 'ImageList_SetDragCursorImage';
  9368. function ImageList_DragShowNolock; external cctrl name 'ImageList_DragShowNolock';
  9369. function ImageList_GetDragImage(Point, HotSpot: PPoint): HIMAGELIST; external cctrl name 'ImageList_GetDragImage';
  9370. function ImageList_GetDragImage(Point: PPoint; out HotSpot: TPoint): HIMAGELIST; external cctrl name 'ImageList_GetDragImage';
  9371. { macros }
  9372. procedure ImageList_RemoveAll(ImageList: HIMAGELIST);
  9373. begin
  9374. ImageList_Remove(ImageList, -1);
  9375. end;
  9376. function ImageList_ExtractIcon(Instance: HINST; ImageList: HIMAGELIST;
  9377. Image: Integer): HIcon;
  9378. begin
  9379. Result := ImageList_GetIcon(ImageList, Image, 0);
  9380. end;
  9381. function ImageList_LoadBitmap(Instance: HINST; Bmp: PWideChar;
  9382. CX, Grow: Integer; Mask: TColorRef): HIMAGELIST;
  9383. begin
  9384. Result := ImageList_LoadImage(Instance, Bmp, CX, Grow, Mask,
  9385. IMAGE_BITMAP, 0);
  9386. end;
  9387. function ImageList_LoadBitmapA(Instance: HINST; Bmp: PAnsiChar;
  9388. CX, Grow: Integer; Mask: TColorRef): HIMAGELIST;
  9389. begin
  9390. Result := ImageList_LoadImageA(Instance, Bmp, CX, Grow, Mask,
  9391. IMAGE_BITMAP, 0);
  9392. end;
  9393. function ImageList_LoadBitmapW(Instance: HINST; Bmp: PWideChar;
  9394. CX, Grow: Integer; Mask: TColorRef): HIMAGELIST;
  9395. begin
  9396. Result := ImageList_LoadImageW(Instance, Bmp, CX, Grow, Mask,
  9397. IMAGE_BITMAP, 0);
  9398. end;
  9399. function ImageList_GetIconSize; external cctrl name 'ImageList_GetIconSize';
  9400. function ImageList_SetIconSize; external cctrl name 'ImageList_SetIconSize';
  9401. function ImageList_GetImageInfo; external cctrl name 'ImageList_GetImageInfo';
  9402. function ImageList_Merge; external cctrl name 'ImageList_Merge';
  9403. function ImageList_Duplicate(himl: HIMAGELIST): HIMAGELIST; stdcall; external cctrl name 'ImageList_Duplicate';
  9404. var
  9405. _HIMAGELIST_QueryInterface: function(himl: HIMAGELIST; const riid: TGUID;
  9406. var ppv: Pointer): HResult; stdcall;
  9407. function HIMAGELIST_QueryInterface(himl: HIMAGELIST; const riid: TGUID;
  9408. var ppv: Pointer): HResult;
  9409. begin
  9410. if Assigned(_HIMAGELIST_QueryInterface) then
  9411. Result := _HIMAGELIST_QueryInterface(himl, riid, ppv)
  9412. else
  9413. begin
  9414. Result := E_NOTIMPL;
  9415. if ComCtl32DLL > 0 then
  9416. begin
  9417. _HIMAGELIST_QueryInterface := GetProcAddress(ComCtl32DLL,
  9418. 'HIMAGELIST_QueryInterface'); // Do not localize
  9419. if Assigned(_HIMAGELIST_QueryInterface) then
  9420. Result := _HIMAGELIST_QueryInterface(himl, riid, ppv);
  9421. end;
  9422. end;
  9423. end;
  9424. { Headers }
  9425. function Header_GetItemCount(Header: HWnd): Integer;
  9426. begin
  9427. Result := Integer(SendMessage(Header, HDM_GETITEMCOUNT, 0, 0));
  9428. end;
  9429. function Header_InsertItem(Header: HWnd; Index: Integer;
  9430. const Item: THDItem): Integer;
  9431. begin
  9432. Result := SendMessage(Header, HDM_INSERTITEM, Index, LPARAM(@Item));
  9433. end;
  9434. function Header_InsertItemA(Header: HWnd; Index: Integer;
  9435. const Item: THDItemA): Integer;
  9436. begin
  9437. Result := SendMessageA(Header, HDM_INSERTITEM, Index, LPARAM(@Item));
  9438. end;
  9439. function Header_InsertItemW(Header: HWnd; Index: Integer;
  9440. const Item: THDItemW): Integer;
  9441. begin
  9442. Result := SendMessageW(Header, HDM_INSERTITEM, Index, LPARAM(@Item));
  9443. end;
  9444. function Header_DeleteItem(Header: HWnd; Index: Integer): Bool;
  9445. begin
  9446. Result := Bool(SendMessage(Header, HDM_DELETEITEM, Index, 0));
  9447. end;
  9448. function Header_GetItem(Header: HWnd; Index: Integer; var Item: THDItem): Bool;
  9449. begin
  9450. Result := Bool(SendMessage(Header, HDM_GETITEM, Index, LPARAM(@Item)));
  9451. end;
  9452. function Header_GetItemA(Header: HWnd; Index: Integer; var Item: THDItemA): Bool;
  9453. begin
  9454. Result := Bool(SendMessageA(Header, HDM_GETITEM, Index, LPARAM(@Item)));
  9455. end;
  9456. function Header_GetItemW(Header: HWnd; Index: Integer; var Item: THDItemW): Bool;
  9457. begin
  9458. Result := Bool(SendMessageW(Header, HDM_GETITEM, Index, LPARAM(@Item)));
  9459. end;
  9460. function Header_SetItem(Header: HWnd; Index: Integer; const Item: THDItem): Bool;
  9461. begin
  9462. Result := Bool(SendMessage(Header, HDM_SETITEM, Index, LPARAM(@Item)));
  9463. end;
  9464. function Header_SetItemA(Header: HWnd; Index: Integer; const Item: THDItemA): Bool;
  9465. begin
  9466. Result := Bool(SendMessageA(Header, HDM_SETITEM, Index, LPARAM(@Item)));
  9467. end;
  9468. function Header_SetItemW(Header: HWnd; Index: Integer; const Item: THDItemW): Bool;
  9469. begin
  9470. Result := Bool(SendMessageW(Header, HDM_SETITEM, Index, LPARAM(@Item)));
  9471. end;
  9472. function Header_Layout(Header: HWnd; Layout: PHDLayout): Bool;
  9473. begin
  9474. Result := Bool(SendMessage(Header, HDM_LAYOUT, 0, LPARAM(Layout)));
  9475. end;
  9476. function Header_GetItemRect(hwnd: HWND; iItem: Integer; lprc: PRect): BOOL;
  9477. begin
  9478. Result := BOOL(SendMessage(hwnd, HDM_GETITEMRECT, iItem, LPARAM(lprc)));
  9479. end;
  9480. function Header_SetImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST;
  9481. begin
  9482. Result := HIMAGELIST(SendMessage(hwnd, HDM_SETIMAGELIST, 0, LPARAM(himl)));
  9483. end;
  9484. function Header_GetImageList(hwnd: HWND): HIMAGELIST;
  9485. begin
  9486. Result := HIMAGELIST(SendMessage(hwnd, HDM_GETIMAGELIST, 0, 0));
  9487. end;
  9488. function Header_OrderToIndex(hwnd: HWND; i: Integer): Integer;
  9489. begin
  9490. Result := Integer(SendMessage(hwnd, HDM_ORDERTOINDEX, i, 0));
  9491. end;
  9492. function Header_CreateDragImage(hwnd: HWND; i: Integer): HIMAGELIST;
  9493. begin
  9494. Result := HIMAGELIST(SendMessage(hwnd, HDM_CREATEDRAGIMAGE, i, 0));
  9495. end;
  9496. function Header_GetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): BOOL;
  9497. begin
  9498. Result := BOOL(SendMessage(hwnd, HDM_GETORDERARRAY, iCount, LPARAM(lpi)));
  9499. end;
  9500. function Header_SetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): BOOL;
  9501. begin
  9502. Result := BOOL(SendMessage(hwnd, HDM_SETORDERARRAY, iCount, LPARAM(lpi)));
  9503. end;
  9504. function Header_SetHotDivider(hwnd: HWND; fPos: BOOL; dw: DWORD): Integer;
  9505. begin
  9506. Result := Integer(SendMessage(hwnd, HDM_SETHOTDIVIDER, WPARAM(fPos), dw));
  9507. end;
  9508. function Header_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  9509. begin
  9510. Result := BOOL(SendMessage(hwnd, HDM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  9511. end;
  9512. function Header_GetUnicodeFormat(hwnd: HWND): BOOL;
  9513. begin
  9514. Result := BOOL(SendMessage(hwnd, HDM_GETUNICODEFORMAT, 0, 0));
  9515. end;
  9516. function Header_SetBitmapMargin(hwnd: HWND; iWidth: Integer): Integer;
  9517. begin
  9518. Result := Integer(SendMessage(hwnd, HDM_SETBITMAPMARGIN, WPARAM(iWidth), 0));
  9519. end;
  9520. function Header_GetBitmapMargin(hwnd: HWND): Integer;
  9521. begin
  9522. Result := Integer(SendMessage(hwnd, HDM_GETBITMAPMARGIN, 0, 0));
  9523. end;
  9524. function Header_SetFilterChangeTimeout(hwnd: HWND; i: Integer): Integer;
  9525. begin
  9526. Result := Integer(SendMessage(hwnd, HDM_SETFILTERCHANGETIMEOUT, 0, LPARAM(i)));
  9527. end;
  9528. function Header_EditFilter(hwnd: HWND; i: Integer; fDiscardChanges: BOOL): Integer;
  9529. begin
  9530. Result := Integer(SendMessage(hwnd, HDM_EDITFILTER, WPARAM(i), MAKELPARAM(Word(fDiscardChanges), 0)));
  9531. end;
  9532. function Header_ClearFilter(hwnd: HWND; i: Integer): Integer;
  9533. begin
  9534. Result := Integer(SendMessage(hwnd, HDM_CLEARFILTER, WPARAM(i), 0));
  9535. end;
  9536. function Header_ClearAllFilters(hwnd: HWND): Integer;
  9537. begin
  9538. Result := Integer(SendMessage(hwnd, HDM_CLEARFILTER, WPARAM(-1), 0));
  9539. end;
  9540. function Header_GetItemDropDownRect(hwnd: HWND; iItem: Integer; var lprc: TRect): BOOL;
  9541. begin
  9542. Result := BOOL(SendMessage(hwnd, HDM_GETITEMDROPDOWNRECT, WPARAM(iItem), LPARAM(@lprc)));
  9543. end;
  9544. function Header_GetOverflowRect(hwnd: HWND; var lprc: TRect): BOOL;
  9545. begin
  9546. Result := BOOL(SendMessage(hwnd, HDM_GETOVERFLOWRECT, 0, LPARAM(@lprc)));
  9547. end;
  9548. function Header_GetFocusedItem(hwnd: HWND): Integer;
  9549. begin
  9550. Result := Integer(SendMessage(hwnd, HDM_GETFOCUSEDITEM, 0, 0));
  9551. end;
  9552. function Header_SetFocusedItem(hwnd: HWND; iItem: Integer): BOOL;
  9553. begin
  9554. Result := BOOL(SendMessage(hwnd, HDM_SETFOCUSEDITEM, 0, LPARAM(iItem)));
  9555. end;
  9556. { Toolbar }
  9557. function CreateToolBarEx; external cctrl name 'CreateToolbarEx';
  9558. function CreateMappedBitmap; external cctrl name 'CreateMappedBitmap';
  9559. { Status bar }
  9560. procedure DrawStatusText; external cctrl name 'DrawStatusTextW';
  9561. procedure DrawStatusTextA; external cctrl name 'DrawStatusTextA';
  9562. procedure DrawStatusTextW; external cctrl name 'DrawStatusTextW';
  9563. function CreateStatusWindow; external cctrl name 'CreateStatusWindowW';
  9564. function CreateStatusWindowA; external cctrl name 'CreateStatusWindowA';
  9565. function CreateStatusWindowW; external cctrl name 'CreateStatusWindowW';
  9566. { Menu Help }
  9567. procedure MenuHelp; external cctrl name 'MenuHelp';
  9568. function ShowHideMenuCtl; external cctrl name 'ShowHideMenuCtl';
  9569. procedure GetEffectiveClientRect; external cctrl name 'GetEffectiveClientRect';
  9570. { Drag List Box }
  9571. procedure MakeDragList; external cctrl name 'MakeDragList';
  9572. procedure DrawInsert; external cctrl name 'DrawInsert';
  9573. function LBItemFromPt; external cctrl name 'LBItemFromPt';
  9574. { UpDown control }
  9575. function CreateUpDownControl; external cctrl name 'CreateUpDownControl';
  9576. { List View }
  9577. function ListView_GetUnicodeFormat(hwnd: HWND): BOOL;
  9578. begin
  9579. Result := BOOL(SendMessage(hwnd, LVM_GETUNICODEFORMAT, 0, 0));
  9580. end;
  9581. function ListView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  9582. begin
  9583. Result := BOOL(SendMessage(hwnd, LVM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  9584. end;
  9585. function ListView_GetBkColor(hWnd: HWND): TColorRef;
  9586. begin
  9587. Result := TColorRef(SendMessage(hWnd, LVM_GETBKCOLOR, 0, 0));
  9588. end;
  9589. function ListView_SetBkColor(hWnd: HWND; clrBk: TColorRef): Bool;
  9590. begin
  9591. Result := Bool(SendMessage(hWnd, LVM_SETBKCOLOR, 0, LPARAM(clrBk)));
  9592. end;
  9593. function ListView_GetImageList(hWnd: HWND; iImageList: Integer): HIMAGELIST;
  9594. begin
  9595. Result := HIMAGELIST(SendMessage(hWnd, LVM_GETIMAGELIST, iImageList, 0));
  9596. end;
  9597. function ListView_SetImageList(hWnd: HWND; himl: HIMAGELIST; iImageList: Integer): HIMAGELIST;
  9598. begin
  9599. Result := HIMAGELIST(SendMessage(hWnd, LVM_SETIMAGELIST, iImageList, LPARAM(himl)));
  9600. end;
  9601. function ListView_GetItemCount(hWnd: HWND): Integer;
  9602. begin
  9603. Result := Integer(SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0));
  9604. end;
  9605. function IndexToStateImageMask(I: Longint): Longint;
  9606. begin
  9607. Result := I shl 12;
  9608. end;
  9609. function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;
  9610. begin
  9611. Result := Bool(SendMessage(hWnd, LVM_GETITEM, 0, LPARAM(@pItem)));
  9612. end;
  9613. function ListView_GetItemA(hWnd: HWND; var pItem: TLVItemA): Bool;
  9614. begin
  9615. Result := Bool(SendMessageA(hWnd, LVM_GETITEMA, 0, LPARAM(@pItem)));
  9616. end;
  9617. function ListView_GetItemW(hWnd: HWND; var pItem: TLVItemW): Bool;
  9618. begin
  9619. Result := Bool(SendMessageW(hWnd, LVM_GETITEMW, 0, LPARAM(@pItem)));
  9620. end;
  9621. function ListView_SetItem(hWnd: HWND; const pItem: TLVItem): Bool;
  9622. begin
  9623. Result := Bool(SendMessage(hWnd, LVM_SETITEM, 0, LPARAM(@pItem)));
  9624. end;
  9625. function ListView_SetItemA(hWnd: HWND; const pItem: TLVItemA): Bool;
  9626. begin
  9627. Result := Bool(SendMessageA(hWnd, LVM_SETITEMA, 0, LPARAM(@pItem)));
  9628. end;
  9629. function ListView_SetItemW(hWnd: HWND; const pItem: TLVItemW): Bool;
  9630. begin
  9631. Result := Bool(SendMessageW(hWnd, LVM_SETITEMW, 0, LPARAM(@pItem)));
  9632. end;
  9633. function ListView_InsertItem(hWnd: HWND; const pItem: TLVItem): Integer;
  9634. begin
  9635. Result := Integer(SendMessage(hWnd, LVM_INSERTITEM, 0, LPARAM(@pItem)));
  9636. end;
  9637. function ListView_InsertItemA(hWnd: HWND; const pItem: TLVItemA): Integer;
  9638. begin
  9639. Result := Integer(SendMessageA(hWnd, LVM_INSERTITEMA, 0, LPARAM(@pItem)));
  9640. end;
  9641. function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer;
  9642. begin
  9643. Result := Integer(SendMessageW(hWnd, LVM_INSERTITEMW, 0, LPARAM(@pItem)));
  9644. end;
  9645. function ListView_DeleteItem(hWnd: HWND; i: Integer): Bool;
  9646. begin
  9647. Result := Bool(SendMessage(hWnd, LVM_DELETEITEM, i, 0));
  9648. end;
  9649. function ListView_DeleteAllItems(hWnd: HWND): Bool;
  9650. begin
  9651. Result := Bool(SendMessage(hWnd, LVM_DELETEALLITEMS, 0, 0));
  9652. end;
  9653. function ListView_GetCallbackMask(hWnd: HWND): UINT;
  9654. begin
  9655. Result := UINT(SendMessage(hWnd, LVM_GETCALLBACKMASK, 0, 0));
  9656. end;
  9657. function ListView_SetCallbackMask(hWnd: HWND; mask: UINT): Bool;
  9658. begin
  9659. Result := Bool(SendMessage(hWnd, LVM_SETCALLBACKMASK, mask, 0));
  9660. end;
  9661. function ListView_GetNextItem(hWnd: HWND; iStart: Integer; Flags: UINT): Integer;
  9662. begin
  9663. Result := Integer(SendMessage(hWnd, LVM_GETNEXTITEM, iStart, MakeLong(Word(Flags), 0)));
  9664. end;
  9665. function ListView_FindItem(hWnd: HWND; iStart: Integer;
  9666. const plvfi: TLVFindInfo): Integer;
  9667. begin
  9668. Result := Integer(SendMessage(hWnd, LVM_FINDITEM, iStart, LPARAM(@plvfi)));
  9669. end;
  9670. function ListView_FindItemA(hWnd: HWND; iStart: Integer;
  9671. const plvfi: TLVFindInfoA): Integer;
  9672. begin
  9673. Result := Integer(SendMessageA(hWnd, LVM_FINDITEMA, iStart, LPARAM(@plvfi)));
  9674. end;
  9675. function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  9676. const plvfi: TLVFindInfoW): Integer;
  9677. begin
  9678. Result := Integer(SendMessageW(hWnd, LVM_FINDITEMW, iStart, LPARAM(@plvfi)));
  9679. end;
  9680. function ListView_GetItemRect(hWnd: HWND; i: Integer; var prc: TRect;
  9681. Code: Integer): Bool;
  9682. begin
  9683. if @prc <> nil then
  9684. begin
  9685. prc.left := Code;
  9686. Result := Bool(SendMessage(hWnd, LVM_GETITEMRECT, i, LPARAM(@prc)));
  9687. end
  9688. else
  9689. Result := Bool(SendMessage(hWnd, LVM_GETITEMRECT, i, 0));
  9690. end;
  9691. function ListView_SetItemPosition(hWnd: HWND; i, x, y: Integer): Bool;
  9692. begin
  9693. Result := Bool(SendMessage(hWnd, LVM_SETITEMPOSITION, i, MakeLong(Word(x), Word(y))));
  9694. end;
  9695. function ListView_GetItemPosition(hwndLV: HWND; i: Integer;
  9696. var ppt: TPoint): Bool;
  9697. begin
  9698. Result := Bool(SendMessage(hWndLV, LVM_GETITEMPOSITION, i, LPARAM(@ppt)));
  9699. end;
  9700. function ListView_GetStringWidth(hwndLV: HWND; psz: PWideChar): Integer;
  9701. begin
  9702. Result := Integer(SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, LPARAM(psz)));
  9703. end;
  9704. function ListView_GetStringWidthA(hwndLV: HWND; psz: PAnsiChar): Integer;
  9705. begin
  9706. Result := Integer(SendMessageA(hwndLV, LVM_GETSTRINGWIDTHA, 0, LPARAM(psz)));
  9707. end;
  9708. function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer;
  9709. begin
  9710. Result := Integer(SendMessageW(hwndLV, LVM_GETSTRINGWIDTHW, 0, LPARAM(psz)));
  9711. end;
  9712. function ListView_HitTest(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer;
  9713. begin
  9714. Result := Integer(SendMessage(hwndLV, LVM_HITTEST, 0, LPARAM(@pinfo)));
  9715. end;
  9716. function ListView_HitTestEx(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer;
  9717. begin
  9718. Result := Integer(SendMessage(hwndLV, LVM_HITTEST, WPARAM(-1), LPARAM(@pinfo)));
  9719. end;
  9720. function ListView_EnsureVisible(hwndLV: HWND; i: Integer; fPartialOK: Bool): Bool;
  9721. begin
  9722. Result := 0 <> SendMessage(hwndLV, LVM_ENSUREVISIBLE, i, MakeLong(Word(fPartialOK), 0));
  9723. end;
  9724. function ListView_Scroll(hwndLV: HWnd; DX, DY: Integer): Bool;
  9725. begin
  9726. Result := Bool(SendMessage(hwndLV, LVM_SCROLL, DX, DY));
  9727. end;
  9728. function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool;
  9729. begin
  9730. Result := Bool(SendMessage(hwndLV, LVM_REDRAWITEMS, iFirst, iLast));
  9731. end;
  9732. function ListView_Arrange(hwndLV: HWND; Code: UINT): Bool;
  9733. begin
  9734. Result := Bool(SendMessage(hwndLV, LVM_ARRANGE, Code, 0));
  9735. end;
  9736. function ListView_EditLabel(hwndLV: HWND; i: Integer): HWND;
  9737. begin
  9738. Result := HWND(SendMessage(hwndLV, LVM_EDITLABEL, i, 0));
  9739. end;
  9740. function ListView_EditLabelA(hwndLV: HWND; i: Integer): HWND;
  9741. begin
  9742. Result := HWND(SendMessageA(hwndLV, LVM_EDITLABELA, i, 0));
  9743. end;
  9744. function ListView_EditLabelW(hwndLV: HWND; i: Integer): HWND;
  9745. begin
  9746. Result := HWND(SendMessageW(hwndLV, LVM_EDITLABELW, i, 0));
  9747. end;
  9748. function ListView_GetEditControl(hwndLV: HWND): HWND;
  9749. begin
  9750. Result := HWND(SendMessage(hwndLV, LVM_GETEDITCONTROL, 0, 0));
  9751. end;
  9752. function ListView_GetColumn(hwnd: HWND; iCol: Integer; var pcol: TLVColumn): Bool;
  9753. begin
  9754. Result := Bool(SendMessage(hwnd, LVM_GETCOLUMN, iCol, LPARAM(@pcol)));
  9755. end;
  9756. function ListView_GetColumnA(hwnd: HWND; iCol: Integer; var pcol: TLVColumnA): Bool;
  9757. begin
  9758. Result := Bool(SendMessageA(hwnd, LVM_GETCOLUMNA, iCol, LPARAM(@pcol)));
  9759. end;
  9760. function ListView_GetColumnW(hwnd: HWND; iCol: Integer; var pcol: TLVColumnW): Bool;
  9761. begin
  9762. Result := Bool(SendMessageW(hwnd, LVM_GETCOLUMNW, iCol, LPARAM(@pcol)));
  9763. end;
  9764. function ListView_SetColumn(hwnd: HWND; iCol: Integer; const pcol: TLVColumn): Bool;
  9765. begin
  9766. Result := Bool(SendMessage(hwnd, LVM_SETCOLUMN, iCol, LPARAM(@pcol)));
  9767. end;
  9768. function ListView_SetColumnA(hwnd: HWND; iCol: Integer; const pcol: TLVColumnA): Bool;
  9769. begin
  9770. Result := Bool(SendMessageA(hwnd, LVM_SETCOLUMNA, iCol, LPARAM(@pcol)));
  9771. end;
  9772. function ListView_SetColumnW(hwnd: HWND; iCol: Integer; const pcol: TLVColumnW): Bool;
  9773. begin
  9774. Result := Bool(SendMessageW(hwnd, LVM_SETCOLUMNW, iCol, LPARAM(@pcol)));
  9775. end;
  9776. function ListView_InsertColumn(hwnd: HWND; iCol: Integer; const pcol: TLVColumn): Integer;
  9777. begin
  9778. Result := Integer(SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, LPARAM(@pcol)));
  9779. end;
  9780. function ListView_InsertColumnA(hwnd: HWND; iCol: Integer; const pcol: TLVColumnA): Integer;
  9781. begin
  9782. Result := Integer(SendMessageA(hWnd, LVM_INSERTCOLUMNA, iCol, LPARAM(@pcol)));
  9783. end;
  9784. function ListView_InsertColumnW(hwnd: HWND; iCol: Integer; const pcol: TLVColumnW): Integer;
  9785. begin
  9786. Result := Integer(SendMessageW(hWnd, LVM_INSERTCOLUMNW, iCol, LPARAM(@pcol)));
  9787. end;
  9788. function ListView_DeleteColumn(hwnd: HWND; iCol: Integer): Bool;
  9789. begin
  9790. Result := Bool(SendMessage(hWnd, LVM_DELETECOLUMN, iCol, 0));
  9791. end;
  9792. function ListView_GetColumnWidth(hwnd: HWND; iCol: Integer): Integer;
  9793. begin
  9794. Result := Integer(SendMessage(hwnd, LVM_GETCOLUMNWIDTH, iCol, 0));
  9795. end;
  9796. function ListView_SetColumnWidth(hwnd: HWnd; iCol: Integer; cx: Integer): Bool;
  9797. begin
  9798. Result := Bool(SendMessage(hwnd, LVM_SETCOLUMNWIDTH, iCol, MakeLong(Word(cx), 0)));
  9799. end;
  9800. function ListView_GetHeader(hwnd: HWND): HWND;
  9801. begin
  9802. Result := Winapi.Windows.HWND(SendMessage(hwnd, LVM_GETHEADER, 0, 0));
  9803. end;
  9804. function ListView_CreateDragImage(hwnd: HWND; i: Integer;
  9805. const lpptUpLeft: TPoint): HIMAGELIST;
  9806. begin
  9807. Result := HIMAGELIST(SendMessage(hwnd, LVM_CREATEDRAGIMAGE, i, LPARAM(@lpptUpLeft)));
  9808. end;
  9809. function ListView_GetViewRect(hwnd: HWND; var prc: TRect): Bool;
  9810. begin
  9811. Result := Bool(SendMessage(hwnd, LVM_GETVIEWRECT, 0, LPARAM(@prc)));
  9812. end;
  9813. function ListView_GetTextColor(hwnd: HWND): TColorRef;
  9814. begin
  9815. Result := TColorRef(SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0));
  9816. end;
  9817. function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool;
  9818. begin
  9819. Result := Bool(SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, clrText));
  9820. end;
  9821. function ListView_GetTextBkColor(hwnd: HWND): TColorRef;
  9822. begin
  9823. Result := TColorRef(SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0));
  9824. end;
  9825. function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool;
  9826. begin
  9827. Result := Bool(SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, LPARAM(clrTextBk)));
  9828. end;
  9829. function ListView_GetTopIndex(hwndLV: HWND): Integer;
  9830. begin
  9831. Result := Integer(SendMessage(hwndLV, LVM_GETTOPINDEX, 0, 0));
  9832. end;
  9833. function ListView_GetCountPerPage(hwndLV: HWND): Integer;
  9834. begin
  9835. Result := Integer(SendMessage(hwndLV, LVM_GETCOUNTPERPAGE, 0, 0));
  9836. end;
  9837. function ListView_GetOrigin(hwndLV: HWND; var ppt: TPoint): Bool;
  9838. begin
  9839. Result := Bool(SendMessage(hwndLV, LVM_GETORIGIN, 0, LPARAM(@ppt)));
  9840. end;
  9841. function ListView_Update(hwndLV: HWND; i: Integer): Bool;
  9842. begin
  9843. Result := Bool(SendMessage(hwndLV, LVM_UPDATE, i, 0) <> 0);
  9844. end;
  9845. function ListView_SetItemState(hwndLV: HWND; i: Integer; data, mask: UINT): Bool;
  9846. var
  9847. Item: TLVItem;
  9848. begin
  9849. Item.stateMask := mask;
  9850. Item.state := data;
  9851. Result := Bool(SendMessage(hwndLV, LVM_SETITEMSTATE, i, LPARAM(@Item)));
  9852. end;
  9853. function ListView_GetItemState(hwndLV: HWND; i, mask: Integer): Integer;
  9854. begin
  9855. Result := Integer(SendMessage(hwndLV, LVM_GETITEMSTATE, i, LPARAM(mask)));
  9856. end;
  9857. function ListView_GetCheckState(hwndLV: HWND; i: Integer): UINT;
  9858. begin
  9859. Result := UINT((SendMessage(hwndLV, LVM_GETITEMSTATE, i, LPARAM(LVIS_STATEIMAGEMASK)) shr 12) - 1);
  9860. end;
  9861. procedure ListView_SetCheckState(hwndLV: HWND; i: Integer; Checked: Boolean);
  9862. var
  9863. Item: TLVItem;
  9864. begin
  9865. Item.statemask := LVIS_STATEIMAGEMASK;
  9866. Item.State := ((Integer(Checked) and 1) + 1) shl 12;
  9867. SendMessage(hwndLV, LVM_SETITEMSTATE, i, LPARAM(@Item));
  9868. end;
  9869. function ListView_GetItemText(hwndLV: HWND; i, iSubItem: Integer;
  9870. pszText: PWideChar; cchTextMax: Integer): Integer;
  9871. var
  9872. Item: TLVItem;
  9873. begin
  9874. Item.iSubItem := iSubItem;
  9875. Item.cchTextMax := cchTextMax;
  9876. Item.pszText := pszText;
  9877. Result := Integer(SendMessage(hwndLV, LVM_GETITEMTEXT, i, LPARAM(@Item)));
  9878. end;
  9879. function ListView_GetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  9880. pszText: PAnsiChar; cchTextMax: Integer): Integer;
  9881. var
  9882. Item: TLVItemA;
  9883. begin
  9884. Item.iSubItem := iSubItem;
  9885. Item.cchTextMax := cchTextMax;
  9886. Item.pszText := pszText;
  9887. Result := Integer(SendMessageA(hwndLV, LVM_GETITEMTEXTA, i, LPARAM(@Item)));
  9888. end;
  9889. function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  9890. pszText: PWideChar; cchTextMax: Integer): Integer;
  9891. var
  9892. Item: TLVItemW;
  9893. begin
  9894. Item.iSubItem := iSubItem;
  9895. Item.cchTextMax := cchTextMax;
  9896. Item.pszText := pszText;
  9897. Result := Integer(SendMessageW(hwndLV, LVM_GETITEMTEXTW, i, LPARAM(@Item)));
  9898. end;
  9899. function ListView_SetItemText(hwndLV: HWND; i, iSubItem: Integer;
  9900. pszText: PWideChar): Bool;
  9901. var
  9902. Item: TLVItem;
  9903. begin
  9904. Item.iSubItem := iSubItem;
  9905. Item.pszText := pszText;
  9906. Result := Bool(SendMessage(hwndLV, LVM_SETITEMTEXT, i, LPARAM(@Item)));
  9907. end;
  9908. function ListView_SetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  9909. pszText: PAnsiChar): Bool;
  9910. var
  9911. Item: TLVItemA;
  9912. begin
  9913. Item.iSubItem := iSubItem;
  9914. Item.pszText := pszText;
  9915. Result := Bool(SendMessageA(hwndLV, LVM_SETITEMTEXTA, i, LPARAM(@Item)));
  9916. end;
  9917. function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  9918. pszText: PWideChar): Bool;
  9919. var
  9920. Item: TLVItemW;
  9921. begin
  9922. Item.iSubItem := iSubItem;
  9923. Item.pszText := pszText;
  9924. Result := Bool(SendMessageW(hwndLV, LVM_SETITEMTEXTW, i, LPARAM(@Item)));
  9925. end;
  9926. procedure ListView_SetItemCount(hwndLV: HWND; cItems: Integer);
  9927. begin
  9928. SendMessage(hwndLV, LVM_SETITEMCOUNT, cItems, 0);
  9929. end;
  9930. procedure ListView_SetItemCountEx(hwndLV: HWND; cItems: Integer; dwFlags: DWORD);
  9931. begin
  9932. SendMessage(hwndLV, LVM_SETITEMCOUNT, cItems, dwFlags);
  9933. end;
  9934. function ListView_SortItems(hwndLV: HWND; pfnCompare: TLVCompare;
  9935. lPrm: LPARAM): Bool;
  9936. begin
  9937. Result := Bool(SendMessage(hwndLV, LVM_SORTITEMS, WPARAM(LPARAM(lPrm)), LPARAM(@pfnCompare)));
  9938. end;
  9939. procedure ListView_SetItemPosition32(hwndLV: HWND; i, x, y: Integer);
  9940. var
  9941. ptNewPos: TPoint;
  9942. begin
  9943. ptNewPos.x := x;
  9944. ptNewPos.y := y;
  9945. SendMessage(hwndLV, LVM_SETITEMPOSITION32, i, LPARAM(@ptNewPos));
  9946. end;
  9947. function ListView_GetSelectedCount(hwndLV: HWND): UINT;
  9948. begin
  9949. Result := UINT(SendMessage(hwndLV, LVM_GETSELECTEDCOUNT, 0, 0));
  9950. end;
  9951. function ListView_GetItemSpacing(hwndLV: HWND; fSmall: Integer): DWORD;
  9952. begin
  9953. Result := DWORD(SendMessage(hwndLV, LVM_GETITEMSPACING, fSmall, 0));
  9954. end;
  9955. function ListView_GetISearchString(hwndLV: HWND; lpsz: PWideChar): Bool;
  9956. begin
  9957. Result := Bool(SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0, LPARAM(lpsz)));
  9958. end;
  9959. function ListView_GetISearchStringA(hwndLV: HWND; lpsz: PAnsiChar): Bool;
  9960. begin
  9961. Result := Bool(SendMessageA(hwndLV, LVM_GETISEARCHSTRINGA, 0, LPARAM(lpsz)));
  9962. end;
  9963. function ListView_GetISearchStringW(hwndLV: HWND; lpsz: PWideChar): Bool;
  9964. begin
  9965. Result := Bool(SendMessageW(hwndLV, LVM_GETISEARCHSTRINGW, 0, LPARAM(lpsz)));
  9966. end;
  9967. function ListView_SetIconSpacing(hwndLV: HWND; cx, cy: Word): DWORD;
  9968. begin
  9969. Result := DWORD(SendMessage(hwndLV, LVM_SETICONSPACING, 0, MakeLong(cx, cy)));
  9970. end;
  9971. function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL;
  9972. begin
  9973. Result := BOOL(SendMessage(hwndLV, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw));
  9974. end;
  9975. function ListView_SetExtendedListViewStyleEx(hwndLV: HWND; dwMask: DWORD; dw: DWORD): BOOL; inline;
  9976. begin
  9977. Result := BOOL(SendMessage(hwndLV, LVM_SETEXTENDEDLISTVIEWSTYLE, dwMask, dw));
  9978. end;
  9979. function ListView_GetExtendedListViewStyle(hwndLV: HWND): DWORD;
  9980. begin
  9981. Result := DWORD(SendMessage(hwndLV, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0));
  9982. end;
  9983. function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer;
  9984. code: DWORD; prc: PRect): BOOL;
  9985. begin
  9986. if prc <> nil then
  9987. begin
  9988. prc^.Top := iSubItem;
  9989. prc^.Left := code;
  9990. end;
  9991. Result := BOOL(SendMessage(hwndLV, LVM_GETSUBITEMRECT, iItem, LPARAM(prc)));
  9992. end;
  9993. function ListView_SubItemHitTest(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer;
  9994. begin
  9995. Result := Integer(SendMessage(hwndLV, LVM_SUBITEMHITTEST, 0, LPARAM(plvhti)));
  9996. end;
  9997. function ListView_SubItemHitTestEx(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer;
  9998. begin
  9999. Result := Integer(SendMessage(hwndLV, LVM_SUBITEMHITTEST, WPARAM(-1), LPARAM(plvhti)));
  10000. end;
  10001. function ListView_SetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  10002. pi: PInteger): BOOL;
  10003. begin
  10004. Result := BOOL(SendMessage(hwndLV, LVM_SETCOLUMNORDERARRAY, iCount,
  10005. LPARAM(pi)));
  10006. end;
  10007. function ListView_GetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  10008. pi: PInteger): BOOL;
  10009. begin
  10010. Result := BOOL(SendMessage(hwndLV, LVM_GETCOLUMNORDERARRAY, iCount,
  10011. LPARAM(pi)));
  10012. end;
  10013. function ListView_SetHotItem(hwndLV: HWND; i: Integer): Integer;
  10014. begin
  10015. Result := Integer(SendMessage(hwndLV, LVM_SETHOTITEM, i, 0));
  10016. end;
  10017. function ListView_GetHotItem(hwndLV: HWND): Integer;
  10018. begin
  10019. Result := Integer(SendMessage(hwndLV, LVM_GETHOTITEM, 0, 0));
  10020. end;
  10021. function ListView_SetHotCursor(hwndLV: HWND; hcur: HCURSOR): HCURSOR;
  10022. begin
  10023. Result := HCURSOR(SendMessage(hwndLV, LVM_SETHOTCURSOR, 0, hcur));
  10024. end;
  10025. function ListView_GetHotCursor(hwndLV: HWND): HCURSOR;
  10026. begin
  10027. Result := HCURSOR(SendMessage(hwndLV, LVM_GETHOTCURSOR, 0, 0));
  10028. end;
  10029. function ListView_ApproximateViewRect(hwndLV: HWND; iWidth, iHeight: Word;
  10030. iCount: Integer): DWORD;
  10031. begin
  10032. Result := DWORD(SendMessage(hwndLV, LVM_APPROXIMATEVIEWRECT, iCount,
  10033. MakeLParam(iWidth, iHeight)));
  10034. end;
  10035. function ListView_SetWorkAreas(hwndLV: HWND; nWorkAreas: Integer; prc: PRect): BOOL;
  10036. begin
  10037. Result := BOOL(SendMessage(hwndLV, LVM_SETWORKAREA, nWorkAreas, LPARAM(prc)));
  10038. end;
  10039. function ListView_GetSelectionMark(hwnd: HWND): Integer;
  10040. begin
  10041. Result := Integer(SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0));
  10042. end;
  10043. function ListView_SetSelectionMark(hwnd: HWND; i: Integer): Integer;
  10044. begin
  10045. Result := Integer(SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, i));
  10046. end;
  10047. function ListView_GetWorkAreas(hwnd: HWND; nWorkAreas: Integer; prc: PRect): BOOL;
  10048. begin
  10049. Result := BOOL(SendMessage(hwnd, LVM_GETWORKAREAS, nWorkAreas, LPARAM(prc)));
  10050. end;
  10051. function ListView_SetHoverTime(hwndLV: HWND; dwHoverTimeMs: DWORD): DWORD;
  10052. begin
  10053. Result := DWORD(SendMessage(hwndLV, LVM_SETHOVERTIME, 0, dwHoverTimeMs));
  10054. end;
  10055. function ListView_GetHoverTime(hwndLV: HWND): Integer;
  10056. begin
  10057. Result := Integer(SendMessage(hwndLV, LVM_GETHOVERTIME, 0, 0));
  10058. end;
  10059. function ListView_GetNumberOfWorkAreas(hwnd: HWND; pnWorkAreas: PInteger): Integer;
  10060. begin
  10061. Result := SendMessage(hwnd, LVM_GETNUMBEROFWORKAREAS, 0, LPARAM(pnWorkAreas));
  10062. end;
  10063. function ListView_SetToolTips(hwndLV: HWND; hwndNewHwnd: HWND): HWND;
  10064. begin
  10065. Result := HWND(SendMessage(hwndLV, LVM_SETTOOLTIPS, WPARAM(hwndNewHwnd), 0));
  10066. end;
  10067. function ListView_GetToolTips(hwndLV: HWND): HWND;
  10068. begin
  10069. Result := HWND(SendMessage(hwndLV, LVM_GETTOOLTIPS, 0, 0));
  10070. end;
  10071. function ListView_SortItemsEx(hwndLV: HWND; _pfnCompare: TLVCompare; _lPrm: LPARAM): BOOL;
  10072. begin
  10073. Result := BOOL(SendMessage(hwndLV, LVM_SORTITEMSEX, WPARAM(_lPrm), LPARAM(@_pfnCompare)));
  10074. end;
  10075. function ListView_SetSelectedColumn(hwnd: HWND; iCol: Integer): Integer;
  10076. begin
  10077. Result := SendMessage(hwnd, LVM_SETSELECTEDCOLUMN, WPARAM(iCol), 0);
  10078. end;
  10079. function ListView_SetView(hwnd: HWND; iView: Integer): Integer;
  10080. begin
  10081. Result := SendMessage(hwnd, LVM_SETVIEW, WPARAM(DWORD(iView)), 0);
  10082. end;
  10083. function ListView_GetView(hwnd: HWND): Integer;
  10084. begin
  10085. Result := DWORD(SendMessage(hwnd, LVM_GETVIEW, 0, 0));
  10086. end;
  10087. function ListView_InsertGroup(hwnd: HWND; index: Integer; const pgrp: TLVGroup): Integer;
  10088. begin
  10089. Result := SendMessage(hwnd, LVM_INSERTGROUP, WPARAM(index), LPARAM(@pgrp));
  10090. end;
  10091. function ListView_SetGroupInfo(hwnd: HWND; iGroupId: Integer; const pgrp: TLVGroup): Integer;
  10092. begin
  10093. Result := SendMessage(hwnd, LVM_SETGROUPINFO, WPARAM(iGroupId), LPARAM(@pgrp));
  10094. end;
  10095. function ListView_GetGroupInfo(hwnd: HWND; iGroupId: Integer; var pgrp: TLVGroup): Integer;
  10096. begin
  10097. Result := SendMessage(hwnd, LVM_GETGROUPINFO, WPARAM(iGroupId), LPARAM(@pgrp));
  10098. end;
  10099. function ListView_RemoveGroup(hwnd: HWND; iGroupId: Integer): Integer;
  10100. begin
  10101. Result := SendMessage(hwnd, LVM_REMOVEGROUP, WPARAM(iGroupId), 0);
  10102. end;
  10103. function ListView_MoveGroup(hwnd: HWND; iGroupId, toIndex: Integer): Integer;
  10104. begin
  10105. Result := SendMessage(hwnd, LVM_MOVEGROUP, WPARAM(iGroupId), LPARAM(toIndex));
  10106. end;
  10107. function ListView_GetGroupCount(hwnd: HWND): Integer;
  10108. begin
  10109. Result := SendMessage(hwnd, LVM_GETGROUPCOUNT, 0, 0);
  10110. end;
  10111. function ListView_GetGroupInfoByIndex(hwnd: HWND; iIndex: Integer; var pgrp: TLVGroup): Integer;
  10112. begin
  10113. Result := SendMessage(hwnd, LVM_GETGROUPINFOBYINDEX, WPARAM(iIndex), LPARAM(@pgrp));
  10114. end;
  10115. function ListView_MoveItemToGroup(hwnd: HWND; idItemFrom, idGroupTo: Integer): Integer;
  10116. begin
  10117. Result := SendMessage(hwnd, LVM_MOVEITEMTOGROUP, WPARAM(idItemFrom), LPARAM(idGroupTo));
  10118. end;
  10119. function ListView_GetGroupRect(hwnd: HWND; iGroupId, iType: Integer; var prc: TRect): Integer;
  10120. begin
  10121. prc.Top := iType;
  10122. Result := SendMessage(hwnd, LVM_GETGROUPRECT, WPARAM(iGroupId), LPARAM(@prc));
  10123. end;
  10124. function ListView_SetGroupMetrics(hwnd: HWND; const pGroupMetrics: TLVGroupMetrics): Integer;
  10125. begin
  10126. Result := SendMessage(hwnd, LVM_SETGROUPMETRICS, 0, LPARAM(@pGroupMetrics));
  10127. end;
  10128. function ListView_GetGroupMetrics(hwnd: HWND; var pGroupMetrics: TLVGroupMetrics): Integer;
  10129. begin
  10130. Result := SendMessage(hwnd, LVM_GETGROUPMETRICS, 0, LPARAM(@pGroupMetrics));
  10131. end;
  10132. function ListView_EnableGroupView(hwnd: HWND; fEnable: BOOL): Integer;
  10133. begin
  10134. Result := SendMessage(hwnd, LVM_ENABLEGROUPVIEW, WPARAM(fEnable), 0);
  10135. end;
  10136. function ListView_SortGroups(hwnd: HWND; pfnGroupCompare: TFNLVGroupCompare; plv: Pointer): Integer;
  10137. begin
  10138. Result := SendMessage(hwnd, LVM_SORTGROUPS, WPARAM(@pfnGroupCompare), LPARAM(plv));
  10139. end;
  10140. function ListView_InsertGroupSorted(hwnd: HWND; const structInsert: TLVInsertGroupSorted): Integer;
  10141. begin
  10142. Result := SendMessage(hwnd, LVM_INSERTGROUPSORTED, WPARAM(@structInsert), 0);
  10143. end;
  10144. function ListView_RemoveAllGroups(hwnd: HWND): Integer;
  10145. begin
  10146. Result := SendMessage(hwnd, LVM_REMOVEALLGROUPS, 0, 0);
  10147. end;
  10148. function ListView_HasGroup(hwnd: HWND; dwGroupId: Integer): Integer;
  10149. begin
  10150. Result := SendMessage(hwnd, LVM_HASGROUP, dwGroupId, 0);
  10151. end;
  10152. function ListView_SetGroupState(hwnd: HWND; dwGroupId, dwMask, dwState: UINT): Integer;
  10153. var
  10154. LGroup: TLVGroup;
  10155. begin
  10156. LGroup.cbSize := SizeOf(LGroup);
  10157. LGroup.mask := LVGF_STATE;
  10158. LGroup.stateMask := dwMask;
  10159. LGroup.state := dwState;
  10160. Result := SendMessage(hwnd, LVM_SETGROUPINFO, WPARAM(dwGroupId), LPARAM(@LGroup));
  10161. end;
  10162. function ListView_GetGroupState(hwnd: HWND; dwGroupId, dwMask: UINT): Integer;
  10163. begin
  10164. Result := SendMessage(hwnd, LVM_GETGROUPSTATE, WPARAM(dwGroupId), LPARAM(dwMask));
  10165. end;
  10166. function ListView_GetFocusedGroup(hwnd: HWND): Integer;
  10167. begin
  10168. Result := SendMessage(hwnd, LVM_GETFOCUSEDGROUP, 0, 0);
  10169. end;
  10170. function ListView_SetTileViewInfo(hwnd: HWND; const ptvi: TLVTileViewInfo): Integer;
  10171. begin
  10172. Result := SendMessage(hwnd, LVM_SETTILEVIEWINFO, 0, LPARAM(@ptvi));
  10173. end;
  10174. function ListView_GetTileViewInfo(hwnd: HWND; var ptvi: TLVTileViewInfo): Integer;
  10175. begin
  10176. Result := SendMessage(hwnd, LVM_GETTILEVIEWINFO, 0, LPARAM(@ptvi));
  10177. end;
  10178. function ListView_SetTileInfo(hwnd: HWND; const pti: TLVTileInfo): Integer;
  10179. begin
  10180. Result := SendMessage(hwnd, LVM_SETTILEINFO, 0, LPARAM(@pti));
  10181. end;
  10182. function ListView_GetTileInfo(hwnd: HWND; var pti: TLVTileInfo): Integer;
  10183. begin
  10184. Result := SendMessage(hwnd, LVM_GETTILEINFO, 0, LPARAM(@pti));
  10185. end;
  10186. function ListView_SetInsertMark(hwnd: HWND; const lvim: TLVInsertMark): BOOL;
  10187. begin
  10188. Result := BOOL(SendMessage(hwnd, LVM_SETINSERTMARK, 0, LPARAM(@lvim)));
  10189. end;
  10190. function ListView_GetInsertMark(hwnd: HWND; var lvim: TLVInsertMark): BOOL;
  10191. begin
  10192. Result := BOOL(SendMessage(hwnd, LVM_GETINSERTMARK, 0, LPARAM(@lvim)));
  10193. end;
  10194. function ListView_InsertMarkHitTest(hwnd: HWND; const point: TPoint;
  10195. const lvim: TLVInsertMark): Integer;
  10196. begin
  10197. Result := SendMessage(hwnd, LVM_INSERTMARKHITTEST, WPARAM(@point), LPARAM(@lvim));
  10198. end;
  10199. function ListView_GetInsertMarkRect(hwnd: HWND; var rc: TRect): Integer;
  10200. begin
  10201. Result := SendMessage(hwnd, LVM_GETINSERTMARKRECT, 0, LPARAM(@rc));
  10202. end;
  10203. function ListView_SetInsertMarkColor(hwnd: HWND; color: TColorRef): TColorRef;
  10204. begin
  10205. Result := TColorRef(SendMessage(hwnd, LVM_SETINSERTMARKCOLOR, 0, LPARAM(color)));
  10206. end;
  10207. function ListView_GetInsertMarkColor(hwnd: HWND): TColorRef;
  10208. begin
  10209. Result := TColorRef(SendMessage(hwnd, LVM_GETINSERTMARKCOLOR, 0, 0));
  10210. end;
  10211. function ListView_SetInfoTip(hwndLV: HWND; const plvInfoTip: TLVSetInfoTip): BOOL;
  10212. begin
  10213. Result := BOOL(SendMessage(hwndLV, LVM_SETINFOTIP, 0, LPARAM(@plvInfoTip)));
  10214. end;
  10215. function ListView_GetSelectedColumn(hwnd: HWND): UINT;
  10216. begin
  10217. Result := UINT(SendMessage(hwnd, LVM_GETSELECTEDCOLUMN, 0, 0));
  10218. end;
  10219. function ListView_IsGroupViewEnabled(hwnd: HWND): BOOL;
  10220. begin
  10221. Result := BOOL(SendMessage(hwnd, LVM_ISGROUPVIEWENABLED, 0, 0));
  10222. end;
  10223. function ListView_GetOutlineColor(hwnd: HWND): TColorRef;
  10224. begin
  10225. Result := TColorRef(SendMessage(hwnd, LVM_GETOUTLINECOLOR, 0, 0));
  10226. end;
  10227. function ListView_SetOutlineColor(hwnd: HWND; color: TColorRef): TColorRef;
  10228. begin
  10229. Result := TColorRef(SendMessage(hwnd, LVM_SETOUTLINECOLOR, 0, LPARAM(color)));
  10230. end;
  10231. function ListView_CancelEditLabel(hwnd: HWND): Integer;
  10232. begin
  10233. Result := SendMessage(hwnd, LVM_CANCELEDITLABEL, 0, 0);
  10234. end;
  10235. function ListView_MapIndexToID(hwnd: HWND; index: UINT): UINT;
  10236. begin
  10237. Result := UINT(SendMessage(hwnd, LVM_MAPINDEXTOID, WPARAM(index), 0));
  10238. end;
  10239. function ListView_MapIDToIndex(hwnd: HWND; id: UINT): UINT;
  10240. begin
  10241. Result := UINT(SendMessage(hwnd, LVM_MAPIDTOINDEX, WPARAM(id), 0));
  10242. end;
  10243. function ListView_IsItemVisible(hwnd: HWND; index: UINT): UINT;
  10244. begin
  10245. Result := UINT(SendMessage(hwnd, LVM_ISITEMVISIBLE, WPARAM(index), 0));
  10246. end;
  10247. function ListView_SetGroupHeaderImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST;
  10248. begin
  10249. Result := HIMAGELIST(SendMessage(hwnd, LVM_SETIMAGELIST, LVSIL_GROUPHEADER, LPARAM(himl)));
  10250. end;
  10251. function ListView_GetGroupHeaderImageList(hwnd: HWND): HIMAGELIST;
  10252. begin
  10253. Result := HIMAGELIST(SendMessage(hwnd, LVM_GETIMAGELIST, LVSIL_GROUPHEADER, 0));
  10254. end;
  10255. function ListView_GetEmptyText(hwnd: HWND; pszText: LPWSTR; cchText: UINT): BOOL;
  10256. begin
  10257. Result := BOOL(SendMessage(hwnd, LVM_GETEMPTYTEXT, WPARAM(cchText), LPARAM(pszText)));
  10258. end;
  10259. function ListView_GetFooterRect(hwnd: HWND; var prc: TRect): BOOL;
  10260. begin
  10261. Result := BOOL(SendMessage(hwnd, LVM_GETFOOTERRECT, 0, LPARAM(@prc)));
  10262. end;
  10263. function ListView_GetFooterInfo(hwnd: HWND; var plvfi: TLVFooterInfo): BOOL;
  10264. begin
  10265. Result := BOOL(SendMessage(hwnd, LVM_GETFOOTERINFO, 0, LPARAM(@plvfi)));
  10266. end;
  10267. function ListView_GetFooterItemRect(hwnd: HWND; iItem: UINT; var prc: TRect): BOOL;
  10268. begin
  10269. Result := BOOL(SendMessage(hwnd, LVM_GETFOOTERITEMRECT, iItem, LPARAM(@prc)));
  10270. end;
  10271. function ListView_GetFooterItem(hwnd: HWND; iItem: UINT; var pfi: TLVFooterItem): BOOL;
  10272. begin
  10273. Result := BOOL(SendMessage(hwnd, LVM_GETFOOTERITEM, iItem, LPARAM(@pfi)));
  10274. end;
  10275. function ListView_GetItemIndexRect(hwnd: HWND; const plvii: TLVItemIndex;
  10276. iSubItem, code: Integer; var prc: TRect): BOOL;
  10277. begin
  10278. prc.Top := iSubItem;
  10279. prc.Left := Code;
  10280. Result := BOOL(SendMessage(hwnd, LVM_GETITEMINDEXRECT, WPARAM(@plvii), LPARAM(@prc)));
  10281. end;
  10282. function ListView_SetItemIndexState(hwnd: HWND; const plvii: TLVItemIndex;
  10283. data, mask: UINT): HRESULT;
  10284. var
  10285. LItem: TLVItem;
  10286. begin
  10287. LItem.stateMask := mask;
  10288. LItem.state := data;
  10289. Result := HRESULT(SendMessage(hwnd, LVM_SETITEMSTATE, WPARAM(@plvii), LPARAM(@LItem)));
  10290. end;
  10291. function ListView_GetNextItemIndex(hwnd: HWND; var plvii: TLVItemIndex;
  10292. flags: LPARAM): BOOL;
  10293. begin
  10294. Result := BOOL(SendMessage(hwnd, LVM_GETNEXTITEMINDEX, WPARAM(@plvii),
  10295. MakeLParam(flags, 0)));
  10296. end;
  10297. function ListView_SetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  10298. begin
  10299. Result := BOOL(SendMessage(hwnd, LVM_SETBKIMAGE, 0, LPARAM(plvbki)));
  10300. end;
  10301. function ListView_SetBkImageA(hwnd: HWND; plvbki: PLVBKImageA): BOOL;
  10302. begin
  10303. Result := BOOL(SendMessageA(hwnd, LVM_SETBKIMAGEA, 0, LPARAM(plvbki)));
  10304. end;
  10305. function ListView_SetBkImageW(hwnd: HWND; plvbki: PLVBKImageW): BOOL;
  10306. begin
  10307. Result := BOOL(SendMessageW(hwnd, LVM_SETBKIMAGEW, 0, LPARAM(plvbki)));
  10308. end;
  10309. function ListView_GetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  10310. begin
  10311. Result := BOOL(SendMessage(hwnd, LVM_GETBKIMAGE, 0, LPARAM(plvbki)));
  10312. end;
  10313. function ListView_GetBkImageA(hwnd: HWND; plvbki: PLVBKImageA): BOOL;
  10314. begin
  10315. Result := BOOL(SendMessageA(hwnd, LVM_GETBKIMAGEA, 0, LPARAM(plvbki)));
  10316. end;
  10317. function ListView_GetBkImageW(hwnd: HWND; plvbki: PLVBKImageW): BOOL;
  10318. begin
  10319. Result := BOOL(SendMessageW(hwnd, LVM_GETBKIMAGEW, 0, LPARAM(plvbki)));
  10320. end;
  10321. { Tree View }
  10322. function TreeView_InsertItem(hwnd: HWND; const lpis: TTVInsertStruct): HTreeItem;
  10323. begin
  10324. Result := HTreeItem(SendMessage(hwnd, TVM_INSERTITEM, 0, LPARAM(@lpis)));
  10325. end;
  10326. function TreeView_InsertItemA(hwnd: HWND; const lpis: TTVInsertStructA): HTreeItem;
  10327. begin
  10328. Result := HTreeItem(SendMessageA(hwnd, TVM_INSERTITEMA, 0, LPARAM(@lpis)));
  10329. end;
  10330. function TreeView_InsertItemW(hwnd: HWND; const lpis: TTVInsertStructW): HTreeItem;
  10331. begin
  10332. Result := HTreeItem(SendMessageW(hwnd, TVM_INSERTITEMW, 0, LPARAM(@lpis)));
  10333. end;
  10334. function TreeView_DeleteItem(hwnd: HWND; hitem: HTreeItem): Bool;
  10335. begin
  10336. Result := Bool(SendMessage(hwnd, TVM_DELETEITEM, 0, LPARAM(hitem)));
  10337. end;
  10338. function TreeView_DeleteAllItems(hwnd: HWND): Bool;
  10339. begin
  10340. Result := Bool(SendMessage(hwnd, TVM_DELETEITEM, 0, LPARAM(TVI_ROOT)));
  10341. end;
  10342. function TreeView_Expand(hwnd: HWND; hitem: HTreeItem; code: Integer): Bool;
  10343. begin
  10344. Result := Bool(SendMessage(hwnd, TVM_EXPAND, code, LPARAM(hitem)));
  10345. end;
  10346. function TreeView_GetItemRect(hwnd: HWND; hitem: HTreeItem;
  10347. var prc: TRect; code: Bool): Bool;
  10348. begin
  10349. HTreeItem(Pointer(@prc)^) := hitem;
  10350. Result := Bool(SendMessage(hwnd, TVM_GETITEMRECT, WPARAM(code), LPARAM(@prc)));
  10351. end;
  10352. function TreeView_GetCount(hwnd: HWND): UINT;
  10353. begin
  10354. Result := UINT(SendMessage(hwnd, TVM_GETCOUNT, 0, 0));
  10355. end;
  10356. function TreeView_GetIndent(hwnd: HWND): UINT;
  10357. begin
  10358. Result := UINT(SendMessage(hwnd, TVM_GETINDENT, 0, 0));
  10359. end;
  10360. function TreeView_SetIndent(hwnd: HWND; indent: Integer): Bool;
  10361. begin
  10362. Result := Bool(SendMessage(hwnd, TVM_SETINDENT, indent, 0));
  10363. end;
  10364. function TreeView_GetImageList(hwnd: HWND; iImage: Integer): HIMAGELIST;
  10365. begin
  10366. Result := HIMAGELIST(SendMessage(hwnd, TVM_GETIMAGELIST, iImage, 0));
  10367. end;
  10368. function TreeView_SetImageList(hwnd: HWND; himl: HIMAGELIST;
  10369. iImage: Integer): HIMAGELIST;
  10370. begin
  10371. Result := HIMAGELIST(SendMessage(hwnd, TVM_SETIMAGELIST, iImage, LPARAM(himl)));
  10372. end;
  10373. function TreeView_GetNextItem(hwnd: HWND; hitem: HTreeItem; code: Integer): HTreeItem;
  10374. begin
  10375. Result := HTreeItem(SendMessage(hwnd, TVM_GETNEXTITEM, code, LPARAM(hitem)));
  10376. end;
  10377. function TreeView_GetChild(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10378. begin
  10379. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD);
  10380. end;
  10381. function TreeView_GetNextSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10382. begin
  10383. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT);
  10384. end;
  10385. function TreeView_GetPrevSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10386. begin
  10387. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS);
  10388. end;
  10389. function TreeView_GetParent(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10390. begin
  10391. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT);
  10392. end;
  10393. function TreeView_GetFirstVisible(hwnd: HWND): HTreeItem;
  10394. begin
  10395. Result := TreeView_GetNextItem(hwnd, nil, TVGN_FIRSTVISIBLE);
  10396. end;
  10397. function TreeView_GetNextVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10398. begin
  10399. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE);
  10400. end;
  10401. function TreeView_GetPrevVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10402. begin
  10403. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE);
  10404. end;
  10405. function TreeView_GetSelection(hwnd: HWND): HTreeItem;
  10406. begin
  10407. Result := TreeView_GetNextItem(hwnd, nil, TVGN_CARET);
  10408. end;
  10409. function TreeView_GetDropHilite(hwnd: HWND): HTreeItem;
  10410. begin
  10411. Result := TreeView_GetNextItem(hwnd, nil, TVGN_DROPHILITE);
  10412. end;
  10413. function TreeView_GetRoot(hwnd: HWND): HTreeItem;
  10414. begin
  10415. Result := TreeView_GetNextItem(hwnd, nil, TVGN_ROOT);
  10416. end;
  10417. function TreeView_GetLastVisible(hwnd: HWND): HTreeItem;
  10418. begin
  10419. Result := TreeView_GetNextItem(hwnd, nil, TVGN_LASTVISIBLE);
  10420. end;
  10421. function TreeView_GetNextSelected(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10422. begin
  10423. Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTSELECTED);
  10424. end;
  10425. function TreeView_Select(hwnd: HWND; hitem: HTreeItem;
  10426. code: Integer): HTreeItem;
  10427. begin
  10428. Result := HTreeItem(SendMessage(hwnd, TVM_SELECTITEM, code, LPARAM(hitem)));
  10429. end;
  10430. function TreeView_SelectItem(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10431. begin
  10432. Result := TreeView_Select(hwnd, hitem, TVGN_CARET);
  10433. end;
  10434. function TreeView_SelectDropTarget(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10435. begin
  10436. Result := TreeView_Select(hwnd, hitem, TVGN_DROPHILITE);
  10437. end;
  10438. function TreeView_SelectSetFirstVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  10439. begin
  10440. Result := TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE);
  10441. end;
  10442. function TreeView_GetItem(hwnd: HWND; var pitem: TTVItem): Bool;
  10443. begin
  10444. Result := Bool(SendMessage(hwnd, TVM_GETITEM, 0, LPARAM(@pitem)));
  10445. end;
  10446. function TreeView_GetItemA(hwnd: HWND; var pitem: TTVItemA): Bool;
  10447. begin
  10448. Result := Bool(SendMessageA(hwnd, TVM_GETITEMA, 0, LPARAM(@pitem)));
  10449. end;
  10450. function TreeView_GetItemW(hwnd: HWND; var pitem: TTVItemW): Bool;
  10451. begin
  10452. Result := Bool(SendMessageW(hwnd, TVM_GETITEMW, 0, LPARAM(@pitem)));
  10453. end;
  10454. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItem): Bool;
  10455. begin
  10456. Result := Bool(SendMessage(hwnd, TVM_SETITEM, 0, LPARAM(@pitem)));
  10457. end;
  10458. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItemEx): Bool;
  10459. begin
  10460. Result := Bool(SendMessage(hwnd, TVM_SETITEM, 0, LPARAM(@pitem)));
  10461. end;
  10462. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemA): Bool;
  10463. begin
  10464. Result := Bool(SendMessageA(hwnd, TVM_SETITEMA, 0, LPARAM(@pitem)));
  10465. end;
  10466. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemExA): Bool;
  10467. begin
  10468. Result := Bool(SendMessageA(hwnd, TVM_SETITEMA, 0, LPARAM(@pitem)));
  10469. end;
  10470. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemW): Bool;
  10471. begin
  10472. Result := Bool(SendMessageW(hwnd, TVM_SETITEMW, 0, LPARAM(@pitem)));
  10473. end;
  10474. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemExW): Bool;
  10475. begin
  10476. Result := Bool(SendMessageW(hwnd, TVM_SETITEMW, 0, LPARAM(@pitem)));
  10477. end;
  10478. function TreeView_EditLabel(hwnd: HWND; hitem: HTreeItem): HWND;
  10479. begin
  10480. Result := Winapi.Windows.HWND(SendMessage(hwnd, TVM_EDITLABEL, 0, LPARAM(hitem)));
  10481. end;
  10482. function TreeView_EditLabelA(hwnd: HWND; hitem: HTreeItem): HWND;
  10483. begin
  10484. Result := Winapi.Windows.HWND(SendMessageA(hwnd, TVM_EDITLABELA, 0, LPARAM(hitem)));
  10485. end;
  10486. function TreeView_EditLabelW(hwnd: HWND; hitem: HTreeItem): HWND;
  10487. begin
  10488. Result := Winapi.Windows.HWND(SendMessageW(hwnd, TVM_EDITLABELW, 0, LPARAM(hitem)));
  10489. end;
  10490. function TreeView_GetEditControl(hwnd: HWND): HWND;
  10491. begin
  10492. Result := Winapi.Windows.HWND(SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0));
  10493. end;
  10494. function TreeView_GetVisibleCount(hwnd: HWND): UINT;
  10495. begin
  10496. Result := UINT(SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0));
  10497. end;
  10498. function TreeView_HitTest(hwnd: HWND; var lpht: TTVHitTestInfo): HTreeItem;
  10499. begin
  10500. Result := HTreeItem(SendMessage(hwnd, TVM_HITTEST, 0, LPARAM(@lpht)));
  10501. end;
  10502. function TreeView_CreateDragImage(hwnd: HWND; hitem: HTreeItem): HIMAGELIST;
  10503. begin
  10504. Result := HIMAGELIST(SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0, LPARAM(hitem)));
  10505. end;
  10506. function TreeView_SortChildren(hwnd: HWND; hitem: HTreeItem;
  10507. recurse: Bool): Bool;
  10508. begin
  10509. Result := Bool(SendMessage(hwnd, TVM_SORTCHILDREN, WPARAM(recurse), LPARAM(hitem)));
  10510. end;
  10511. function TreeView_EnsureVisible(hwnd: HWND; hitem: HTreeItem): Bool;
  10512. begin
  10513. Result := Bool(SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, LPARAM(hitem)));
  10514. end;
  10515. function TreeView_SortChildrenCB(hwnd: HWND; const psort: TTVSortCB;
  10516. recurse: Integer): Bool;
  10517. begin
  10518. Result := Bool(SendMessage(hwnd, TVM_SORTCHILDRENCB, recurse, LPARAM(@psort)));
  10519. end;
  10520. function TreeView_EndEditLabelNow(hwnd: HWND; fCancel: Bool): Bool;
  10521. begin
  10522. Result := Bool(SendMessage(hwnd, TVM_ENDEDITLABELNOW, WPARAM(fCancel), 0));
  10523. end;
  10524. function TreeView_GetISearchString(hwndTV: HWND; lpsz: PWideChar): Bool;
  10525. begin
  10526. Result := Bool(SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0, LPARAM(lpsz)));
  10527. end;
  10528. function TreeView_GetISearchStringA(hwndTV: HWND; lpsz: PAnsiChar): Bool;
  10529. begin
  10530. Result := Bool(SendMessageA(hwndTV, TVM_GETISEARCHSTRINGA, 0, LPARAM(lpsz)));
  10531. end;
  10532. function TreeView_GetISearchStringW(hwndTV: HWND; lpsz: PWideChar): Bool;
  10533. begin
  10534. Result := Bool(SendMessageW(hwndTV, TVM_GETISEARCHSTRINGW, 0, LPARAM(lpsz)));
  10535. end;
  10536. function TreeView_SetToolTips(wnd: HWND; hwndTT: HWND): HWND;
  10537. begin
  10538. Result := HWND(SendMessage(wnd, TVM_SETTOOLTIPS, WPARAM(hwndTT), 0));
  10539. end;
  10540. function TreeView_GetToolTips(wnd: HWND): HWND;
  10541. begin
  10542. Result := HWND(SendMessage(wnd, TVM_GETTOOLTIPS, 0, 0));
  10543. end;
  10544. function TreeView_SetInsertMark(hwnd: HWND; hItem: Integer; fAfter: BOOL): BOOL;
  10545. begin
  10546. Result := BOOL(SendMessage(hwnd, TVM_SETINSERTMARK, WPARAM(fAfter), LPARAM(hItem)));
  10547. end;
  10548. function TreeView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  10549. begin
  10550. Result := BOOL(SendMessage(hwnd, TVM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  10551. end;
  10552. function TreeView_GetUnicodeFormat(hwnd: HWND): BOOL;
  10553. begin
  10554. Result := BOOL(SendMessage(hwnd, TVM_GETUNICODEFORMAT, 0, 0));
  10555. end;
  10556. function TreeView_SetItemHeight(hwnd: HWND; iHeight: Integer): Integer;
  10557. begin
  10558. Result := SendMessage(hwnd, TVM_SETITEMHEIGHT, iHeight, 0);
  10559. end;
  10560. function TreeView_GetItemHeight(hwnd: HWND): Integer;
  10561. begin
  10562. Result := SendMessage(hwnd, TVM_GETITEMHEIGHT, 0, 0);
  10563. end;
  10564. function TreeView_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  10565. begin
  10566. Result := COLORREF(SendMessage(hwnd, TVM_SETBKCOLOR, 0, LPARAM(clr)));
  10567. end;
  10568. function TreeView_SetTextColor(hwnd: HWND; clr: COLORREF): COLORREF;
  10569. begin
  10570. Result := COLORREF(SendMessage(hwnd, TVM_SETTEXTCOLOR, 0, LPARAM(clr)));
  10571. end;
  10572. function TreeView_GetBkColor(hwnd: HWND): COLORREF;
  10573. begin
  10574. Result := COLORREF(SendMessage(hwnd, TVM_GETBKCOLOR, 0, 0));
  10575. end;
  10576. function TreeView_GetTextColor(hwnd: HWND): COLORREF;
  10577. begin
  10578. Result := COLORREF(SendMessage(hwnd, TVM_GETTEXTCOLOR, 0, 0));
  10579. end;
  10580. function TreeView_SetScrollTime(hwnd: HWND; uTime: UINT): UINT;
  10581. begin
  10582. Result := UINT(SendMessage(hwnd, TVM_SETSCROLLTIME, uTime, 0));
  10583. end;
  10584. function TreeView_GetScrollTime(hwnd: HWND): UINT;
  10585. begin
  10586. Result := UINT(SendMessage(hwnd, TVM_GETSCROLLTIME, 0, 0));
  10587. end;
  10588. function TreeView_SetInsertMarkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  10589. begin
  10590. Result := COLORREF(SendMessage(hwnd, TVM_SETINSERTMARKCOLOR, 0, LPARAM(clr)));
  10591. end;
  10592. function TreeView_GetInsertMarkColor(hwnd: HWND): COLORREF;
  10593. begin
  10594. Result := COLORREF(SendMessage(hwnd, TVM_GETINSERTMARKCOLOR, 0, 0));
  10595. end;
  10596. function TreeView_SetItemState(hwndTV: HWND; hti: HTreeItem; State, Mask: UINT): UINT;
  10597. var
  10598. LItem: TTVItem;
  10599. begin
  10600. LItem.mask := TVIF_STATE;
  10601. LItem.hItem := hti;
  10602. LItem.stateMask := Mask;
  10603. LItem.state := State;
  10604. Result := UINT(SendMessage(hwndTV, TVM_SETITEM, 0, LPARAM(@LItem)));
  10605. end;
  10606. function TreeView_SetCheckState(hwndTV: HWND; hti: HTreeItem; fCheck: BOOL): UINT;
  10607. var
  10608. LState: UINT;
  10609. begin
  10610. if IndexToStateImageMask(Integer(fCheck)) = 0 then
  10611. LState := 1
  10612. else
  10613. LState := 2;
  10614. Result := TreeView_SetItemState(hwndTV, hti, LState, TVIS_STATEIMAGEMASK);
  10615. end;
  10616. function TreeView_GetItemState(hwndTV: HWND; hti: HTreeItem; mask: UINT): UINT;
  10617. begin
  10618. Result := UINT(SendMessage(hwndTV, TVM_GETITEMSTATE, WPARAM(hti), LPARAM(mask)));
  10619. end;
  10620. function TreeView_GetCheckState(hwndTV: HWND; hti: HTreeItem): UINT;
  10621. begin
  10622. Result := (UINT(SendMessage(hwndTV, TVM_GETITEMSTATE, WPARAM(hti), TVIS_STATEIMAGEMASK)) shr 12) - 1;
  10623. end;
  10624. function TreeView_SetLineColor(hwnd: HWND; clr: TColorRef): TColorRef;
  10625. begin
  10626. Result := TColorRef(SendMessage(hwnd, TVM_SETLINECOLOR, 0, LPARAM(clr)));
  10627. end;
  10628. function TreeView_GetLineColor(hwnd: HWND): Integer;
  10629. begin
  10630. Result := TColorRef(SendMessage(hwnd, TVM_GETLINECOLOR, 0, 0));
  10631. end;
  10632. function TreeView_MapAccIDToHTREEITEM(hwnd: HWND; id: UINT): HTreeItem;
  10633. begin
  10634. Result := HTreeItem(SendMessage(hwnd, TVM_MAPACCIDTOHTREEITEM, id, 0));
  10635. end;
  10636. function TreeView_MapHTREEITEMToAccID(hwnd: HWND; hti: HTreeItem): UINT;
  10637. begin
  10638. Result := UINT(SendMessage(hwnd, TVM_MAPHTREEITEMTOACCID, WPARAM(hti), 0));
  10639. end;
  10640. function TreeView_SetExtendedStyle(hwnd: HWND; dw: DWORD; mask: UINT): UINT;
  10641. begin
  10642. Result := DWORD(SendMessage(hwnd, TVM_SETEXTENDEDSTYLE, mask, dw));
  10643. end;
  10644. function TreeView_GetExtendedStyle(hwnd: HWND): DWORD;
  10645. begin
  10646. Result := DWORD(SendMessage(hwnd, TVM_GETEXTENDEDSTYLE, 0, 0));
  10647. end;
  10648. function TreeView_SetAutoScrollInfo(hwnd: HWND; uPixPerSec, uUpdateTime: UINT): LRESULT;
  10649. begin
  10650. Result := SendMessage(hwnd, TVM_SETAUTOSCROLLINFO, WPARAM(uPixPerSec), LPARAM(uUpdateTime));
  10651. end;
  10652. function TreeView_GetSelectedCount(hwnd: HWND): DWORD;
  10653. begin
  10654. Result := DWORD(SendMessage(hwnd, TVM_GETSELECTEDCOUNT, 0, 0));
  10655. end;
  10656. function TreeView_ShowInfoTip(hwnd: HWND; hti: HTreeItem): DWORD;
  10657. begin
  10658. Result := DWORD(SendMessage(hwnd, TVM_SHOWINFOTIP, 0, LPARAM(hti)));
  10659. end;
  10660. function TreeView_GetItemPartRect(hwnd: HWND; hitem: HTreeItem; var prc: TRect;
  10661. partid: TTVItemPart): BOOL;
  10662. var
  10663. Info: TTVGetItemPartRectInfo;
  10664. begin
  10665. Info.hti := hitem;
  10666. Info.prc := @prc;
  10667. Info.partID := partid;
  10668. Result := BOOL(SendMessage(hwnd, TVM_GETITEMPARTRECT, 0, LPARAM(@Info)));
  10669. end;
  10670. { Tab control }
  10671. function TabCtrl_HitTest(hwndTC: HWND; pinfo: PTCHitTestInfo): Integer;
  10672. begin
  10673. Result := SendMessage(hwndTC, TCM_HITTEST, 0, LPARAM(pinfo));
  10674. end;
  10675. function TabCtrl_HitTest(hwndTC: HWND; const pinfo: TTCHitTestInfo): Integer;
  10676. begin
  10677. Result := SendMessage(hwndTC, TCM_HITTEST, 0, LPARAM(@pinfo));
  10678. end;
  10679. function TabCtrl_SetItemExtra(hwndTC: HWND; cb: Integer): BOOL;
  10680. begin
  10681. Result := BOOL(SendMessage(hwndTC, TCM_SETITEMEXTRA, cb, 0));
  10682. end;
  10683. function TabCtrl_AdjustRect(hwnd: HWND; bLarger: BOOL; prc: PRect): Integer;
  10684. begin
  10685. Result := SendMessage(hwnd, TCM_ADJUSTRECT, WPARAM(bLarger), LPARAM(prc));
  10686. end;
  10687. function TabCtrl_SetItemSize(hwnd: HWND; x, y: Integer): DWORD;
  10688. begin
  10689. Result := DWORD(SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y)));
  10690. end;
  10691. procedure TabCtrl_RemoveImage(hwnd: HWND; i: Integer);
  10692. begin
  10693. SendMessage(hwnd, TCM_REMOVEIMAGE, i, 0);
  10694. end;
  10695. procedure TabCtrl_SetPadding(hwnd: HWND; cx, cy: Integer);
  10696. begin
  10697. SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx, cy));
  10698. end;
  10699. function TabCtrl_GetRowCount(hwnd: HWND): Integer;
  10700. begin
  10701. Result := SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0);
  10702. end;
  10703. function TabCtrl_GetToolTips(wnd: HWND): HWND;
  10704. begin
  10705. Result := HWND(SendMessage(wnd, TCM_GETTOOLTIPS, 0, 0));
  10706. end;
  10707. procedure TabCtrl_SetToolTips(hwnd: HWND; hwndTT: HWND);
  10708. begin
  10709. SendMessage(hwnd, TCM_SETTOOLTIPS, WPARAM(hwndTT), 0);
  10710. end;
  10711. function TabCtrl_GetCurFocus(hwnd: HWND): Integer;
  10712. begin
  10713. Result := SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0);
  10714. end;
  10715. procedure TabCtrl_SetCurFocus(hwnd: HWND; i: Integer);
  10716. begin
  10717. SendMessage(hwnd,TCM_SETCURFOCUS, i, 0);
  10718. end;
  10719. function TabCtrl_SetMinTabWidth(hwnd: HWND; x: Integer): Integer;
  10720. begin
  10721. Result := Integer(SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x));
  10722. end;
  10723. procedure TabCtrl_DeselectAll(hwnd: HWND; fExcludeFocus: BOOL);
  10724. begin
  10725. SendMessage(hwnd, TCM_DESELECTALL, WPARAM(fExcludeFocus), 0)
  10726. end;
  10727. function TabCtrl_HighlightItem(hwnd: HWND; i: Integer; fHighlight: WordBool): BOOL;
  10728. begin
  10729. Result := BOOL(SendMessage(hwnd, TCM_HIGHLIGHTITEM, i, MAKELONG(Word(fHighlight), 0)));
  10730. end;
  10731. function TabCtrl_SetExtendedStyle(hwnd: HWND; dw: DWORD): DWORD;
  10732. begin
  10733. Result := DWORD(SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw));
  10734. end;
  10735. function TabCtrl_GetExtendedStyle(hwnd: HWND): DWORD;
  10736. begin
  10737. Result := DWORD(SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0));
  10738. end;
  10739. function TabCtrl_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  10740. begin
  10741. Result := BOOL(SendMessage(hwnd, TCM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  10742. end;
  10743. function TabCtrl_GetUnicodeFormat(hwnd: HWND): BOOL;
  10744. begin
  10745. Result := BOOL(SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0));
  10746. end;
  10747. function TabCtrl_GetItemRect(hwnd: HWND; i: Integer; var prc: TRect): BOOL;
  10748. begin
  10749. Result := BOOL(SendMessage(hwnd, TCM_GETITEMRECT, i, LPARAM(@prc)));
  10750. end;
  10751. { Animate control }
  10752. function Animate_Create(hwndP: HWND; id: HMENU; dwStyle: DWORD; hInstance: HINST): HWND;
  10753. begin
  10754. Result := CreateWindow(ANIMATE_CLASS, nil, dwStyle, 0, 0, 0, 0, hwndP, id,
  10755. hInstance, nil);
  10756. end;
  10757. function Animate_Open(hwnd: HWND; szName: PChar): BOOL;
  10758. begin
  10759. Result := BOOL(SendMessage(hwnd, ACM_OPENA, 0, LPARAM(szName)));
  10760. end;
  10761. function Animate_OpenEx(hwnd: HWND; hInst: HINST; szName: PChar): BOOL;
  10762. begin
  10763. Result := BOOL(SendMessage(hwnd, ACM_OPENA, WPARAM(hInst), LPARAM(szName)));
  10764. end;
  10765. function Animate_Play(hwnd: HWND; from, _to: Word; rep: UINT): BOOL;
  10766. begin
  10767. Result := BOOL(SendMessage(hwnd, ACM_PLAY, rep, MAKELONG(from, _to)));
  10768. end;
  10769. function Animate_Stop(hwnd: HWND): BOOL;
  10770. begin
  10771. Result := BOOL(SendMessage(hwnd, ACM_STOP, 0, 0));
  10772. end;
  10773. function Animate_Close(hwnd: HWND): BOOL;
  10774. begin
  10775. Result := Animate_Open(hwnd, nil);
  10776. end;
  10777. function Animate_Seek(hwnd: HWND; frame: Word): BOOL;
  10778. begin
  10779. Result := Animate_Play(hwnd, frame, frame, 1);
  10780. end;
  10781. { MonthCal control }
  10782. function MonthCal_GetCurSel(hmc: HWND; var pst: TSystemTime): BOOL;
  10783. begin
  10784. Result := BOOL(SendMessage(hmc, MCM_GETCURSEL, 0, LPARAM(@pst)));
  10785. end;
  10786. function MonthCal_SetCurSel(hmc: HWND; const pst: TSystemTime): BOOL;
  10787. begin
  10788. Result := BOOL(SendMessage(hmc, MCM_SETCURSEL, 0, LPARAM(@pst)));
  10789. end;
  10790. function MonthCal_GetMaxSelCount(hmc: HWND): DWORD;
  10791. begin
  10792. Result := DWORD(SendMessage(hmc, MCM_GETMAXSELCOUNT, 0, 0));
  10793. end;
  10794. function MonthCal_SetMaxSelCount(hmc: HWND; n: UINT): BOOL;
  10795. begin
  10796. Result := BOOL(SendMessage(hmc, MCM_SETMAXSELCOUNT, n, 0));
  10797. end;
  10798. function MonthCal_GetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  10799. begin
  10800. Result := BOOL(SendMessage(hmc, MCM_GETSELRANGE, 0, LPARAM(rgst)));
  10801. end;
  10802. function MonthCal_SetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  10803. begin
  10804. Result := BOOL(SendMessage(hmc, MCM_SETSELRANGE, 0, LPARAM(rgst)));
  10805. end;
  10806. function MonthCal_GetMonthRange(hmc: HWND; gmr: DWORD; rgst: PSystemTime): DWORD;
  10807. begin
  10808. Result := DWORD(SendMessage(hmc, MCM_GETMONTHRANGE, gmr, LPARAM(rgst)));
  10809. end;
  10810. function MonthCal_SetDayState(hmc: HWND; cbds: Integer; const rgds: TNMDayState): BOOL;
  10811. begin
  10812. Result := BOOL(SendMessage(hmc, MCM_SETDAYSTATE, cbds, LPARAM(@rgds)));
  10813. end;
  10814. function MonthCal_GetMinReqRect(hmc: HWND; var prc: TRect): BOOL;
  10815. begin
  10816. Result := BOOL(SendMessage(hmc, MCM_GETMINREQRECT, 0, LPARAM(@prc)));
  10817. end;
  10818. function MonthCal_SetToday(hmc: HWND; const pst: TSystemTime): BOOL;
  10819. begin
  10820. Result := BOOL(SendMessage(hmc, MCM_SETTODAY, 0, LPARAM(@pst)));
  10821. end;
  10822. function MonthCal_GetToday(hmc: HWND; var pst: TSystemTime): BOOL;
  10823. begin
  10824. Result := BOOL(SendMessage(hmc, MCM_GETTODAY, 0, LPARAM(@pst)));
  10825. end;
  10826. function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD;
  10827. begin
  10828. // Fallback code to keep "old" code working
  10829. // Windows < Vista can't handle the larger struct
  10830. if (info.cbSize = SizeOf(TMCHitTestInfo)) and (Win32MajorVersion < 6) then
  10831. begin
  10832. if Win32MajorVersion = 0 then
  10833. InitVersionInfo;
  10834. if Win32MajorVersion < 6 then
  10835. info.cbSize := TMCHitTestInfo.SizeOf;
  10836. end;
  10837. Result := DWORD(SendMessage(hmc, MCM_HITTEST, 0, LPARAM(@info)));
  10838. end;
  10839. function MonthCal_SetColor(hmc: HWND; iColor: Integer; clr: TColorRef): TColorRef;
  10840. begin
  10841. Result := TColorRef(SendMessage(hmc, MCM_SETCOLOR, iColor, clr));
  10842. end;
  10843. function MonthCal_GetColor(hmc: HWND; iColor: Integer): TColorRef;
  10844. begin
  10845. Result := TColorRef(SendMessage(hmc, MCM_SETCOLOR, iColor, 0));
  10846. end;
  10847. function MonthCal_SetFirstDayOfWeek(hmc: HWND; iDay: Integer): Integer;
  10848. begin
  10849. Result := Integer(SendMessage(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay));
  10850. end;
  10851. function MonthCal_GetFirstDayOfWeek(hmc: HWND): Integer;
  10852. begin
  10853. Result := Integer(SendMessage(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0));
  10854. end;
  10855. function MonthCal_GetRange(hmc: HWND; rgst: PSystemTime): DWORD;
  10856. begin
  10857. Result := DWORD(SendMessage(hmc, MCM_GETRANGE, 0, LPARAM(rgst)));
  10858. end;
  10859. function Monthcal_SetRange(hmc: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  10860. begin
  10861. Result := BOOL(SendMessage(hmc, MCM_SETRANGE, gdtr, LPARAM(rgst)));
  10862. end;
  10863. function MonthCal_GetMonthDelta(hmc: HWND): Integer;
  10864. begin
  10865. Result := Integer(SendMessage(hmc, MCM_GETMONTHDELTA, 0, 0));
  10866. end;
  10867. function MonthCal_SetMonthDelta(hmc: HWND; n: Integer): Integer;
  10868. begin
  10869. Result := Integer(SendMessage(hmc, MCM_SETMONTHDELTA, n, 0));
  10870. end;
  10871. function MonthCal_GetMaxTodayWidth(hmc: HWND): DWORD;
  10872. begin
  10873. Result := DWORD(SendMessage(hmc, MCM_GETMAXTODAYWIDTH, 0, 0));
  10874. end;
  10875. function MonthCal_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  10876. begin
  10877. Result := BOOL(SendMessage(hwnd, MCM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  10878. end;
  10879. function MonthCal_GetUnicodeFormat(hwnd: HWND): BOOL;
  10880. begin
  10881. Result := BOOL(SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0));
  10882. end;
  10883. function MonthCal_GetCurrentView(hmc: HWND): DWORD;
  10884. begin
  10885. Result := DWORD(SendMessage(hmc, MCM_GETCURRENTVIEW, 0, 0));
  10886. end;
  10887. function MonthCal_GetCalendarCount(hmc: HWND): DWORD;
  10888. begin
  10889. Result := DWORD(SendMessage(hmc, MCM_GETCALENDARCOUNT, 0, 0));
  10890. end;
  10891. function MonthCal_GetCalendarGridInfo(hmc: HWND; pmcGridInfo: PMCGridInfo): BOOL;
  10892. begin
  10893. Result := BOOL(SendMessage(hmc, MCM_GETCALENDARGRIDINFO, 0, LPARAM(pmcGridInfo)));
  10894. end;
  10895. function MonthCal_GetCALID(hmc: HWND): CALID;
  10896. begin
  10897. Result := CALID(SendMessage(hmc, MCM_GETCALID, 0, 0));
  10898. end;
  10899. procedure MonthCal_SetCALID(hmc: HWND; calid: CALID);
  10900. begin
  10901. SendMessage(hmc, MCM_SETCALID, WPARAM(calid), 0);
  10902. end;
  10903. procedure MonthCal_SizeRectToMin(hmc: HWND; prc: PRect);
  10904. begin
  10905. SendMessage(hmc, MCM_SIZERECTTOMIN, 0, LPARAM(prc));
  10906. end;
  10907. procedure MonthCal_SetCalendarBorder(hmc: HWND; fset: BOOL; xyborder: Integer);
  10908. begin
  10909. SendMessage(hmc, MCM_SETCALENDARBORDER, WPARAM(fset), LPARAM(xyborder));
  10910. end;
  10911. function MonthCal_GetCalendarBorder(hmc: HWND): Integer;
  10912. begin
  10913. Result := Integer(SendMessage(hmc, MCM_GETCALENDARBORDER, 0, 0));
  10914. end;
  10915. function MonthCal_SetCurrentView(hmc: HWND; dwNewView: DWORD): BOOL;
  10916. begin
  10917. Result := BOOL(SendMessage(hmc, MCM_SETCURRENTVIEW, 0, LPARAM(dwNewView)));
  10918. end;
  10919. class function MCHITTESTINFO.SizeOf: Integer;
  10920. begin
  10921. if Win32MajorVersion = 0 then
  10922. InitVersionInfo;
  10923. if Win32MajorVersion >= 6 then
  10924. // Size of complete structure
  10925. Result := System.SizeOf(MCHITTESTINFO)
  10926. else
  10927. // Platforms prior to Vista do not recognize the additional fields
  10928. Result := System.SizeOf(MCHITTESTINFO) - (System.SizeOf(TRect) + System.SizeOf(Integer) * 3);
  10929. end;
  10930. { Date/Time Picker }
  10931. function DateTime_GetSystemTime(hdp: HWND; var pst: TSystemTime): DWORD;
  10932. begin
  10933. Result := DWORD(SendMessage(hdp, DTM_GETSYSTEMTIME, 0, LPARAM(@pst)));
  10934. end;
  10935. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;
  10936. begin
  10937. Result := BOOL(SendMessage(hdp, DTM_SETSYSTEMTIME, gd, LPARAM(@pst)));
  10938. end;
  10939. function DateTime_GetRange(hdp: HWND; rgst: PSystemTime): DWORD;
  10940. begin
  10941. Result := DWORD(SendMessage(hdp, DTM_GETRANGE, 0, LPARAM(rgst)));
  10942. end;
  10943. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  10944. begin
  10945. Result := BOOL(SendMessage(hdp, DTM_SETRANGE, gdtr, LPARAM(rgst)));
  10946. end;
  10947. function DateTime_SetFormat(hdp: HWND; sz: PWideChar): BOOL;
  10948. begin
  10949. Result := BOOL(SendMessage(hdp, DTM_SETFORMAT, 0, LPARAM(sz)));
  10950. end;
  10951. function DateTime_SetFormatA(hdp: HWND; sz: PAnsiChar): BOOL;
  10952. begin
  10953. Result := BOOL(SendMessageA(hdp, DTM_SETFORMATA, 0, LPARAM(sz)));
  10954. end;
  10955. function DateTime_SetFormatW(hdp: HWND; sz: PWideChar): BOOL;
  10956. begin
  10957. Result := BOOL(SendMessageW(hdp, DTM_SETFORMATW, 0, LPARAM(sz)));
  10958. end;
  10959. function DateTime_SetFormat(hdp: HWND; const sz: UnicodeString): BOOL;
  10960. begin
  10961. Result := BOOL(SendMessage(hdp, DTM_SETFORMAT, 0, LPARAM(PWideChar(sz))));
  10962. end;
  10963. function DateTime_SetFormatA(hdp: HWND; const sz: AnsiString): BOOL;
  10964. begin
  10965. Result := BOOL(SendMessageA(hdp, DTM_SETFORMATA, 0, LPARAM(PAnsiChar(sz))));
  10966. end;
  10967. function DateTime_SetFormatW(hdp: HWND; const sz: UnicodeString): BOOL;
  10968. begin
  10969. Result := BOOL(SendMessageW(hdp, DTM_SETFORMATW, 0, LPARAM(PWideChar(sz))));
  10970. end;
  10971. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): TColorRef;
  10972. begin
  10973. Result := TColorRef(SendMessage(hdp, DTM_SETMCCOLOR, iColor, clr));
  10974. end;
  10975. function DateTime_GetMonthCalColor(hdp: HWND; iColor: DWORD): TColorRef;
  10976. begin
  10977. Result := TColorRef(SendMessage(hdp, DTM_GETMCCOLOR, iColor, 0));
  10978. end;
  10979. function DateTime_GetMonthCal(hdp: HWND): HWND;
  10980. begin
  10981. Result := HWND(SendMessage(hdp, DTM_GETMONTHCAL, 0, 0));
  10982. end;
  10983. procedure DateTime_SetMonthCalFont(hdp: HWND; hfont: HFONT; fRedraw: BOOL);
  10984. begin
  10985. SendMessage(hdp, DTM_SETMCFONT, WPARAM(hfont), LPARAM(fRedraw));
  10986. end;
  10987. function DateTime_GetMonthCalFont(hdp: HWND): HFONT;
  10988. begin
  10989. Result := HFONT(SendMessage(hdp, DTM_GETMCFONT, 0, 0));
  10990. end;
  10991. procedure DateTime_SetMonthCalStyle(hdp: HWND; dwStyle: DWORD);
  10992. begin
  10993. SendMessage(hdp, DTM_SETMCSTYLE, 0, LPARAM(dwStyle));
  10994. end;
  10995. function DateTime_GetMonthCalStyle(hdp: HWND): DWORD;
  10996. begin
  10997. Result := DWORD(SendMessage(hdp, DTM_GETMCSTYLE, 0, 0));
  10998. end;
  10999. procedure DateTime_CloseMonthCal(hdp: HWND);
  11000. begin
  11001. SendMessage(hdp, DTM_CLOSEMONTHCAL, 0, 0);
  11002. end;
  11003. procedure DateTime_GetDateTimePickerInfo(hdp: HWND; var pdtpi: TDateTimePickerInfo);
  11004. begin
  11005. SendMessage(hdp, DTM_GETDATETIMEPICKERINFO, 0, LPARAM(@pdtpi));
  11006. end;
  11007. function DateTime_GetIdealSize(hdp: HWND; var psize: TSize): BOOL;
  11008. begin
  11009. Result := BOOL(SendMessage(hdp, DTM_GETIDEALSIZE, 0, LPARAM(@psize)));
  11010. end;
  11011. { IP Address edit control }
  11012. function MAKEIPRANGE(low, high: Byte): LPARAM;
  11013. begin
  11014. Result := high;
  11015. Result := (Result shl 8) + low;
  11016. end;
  11017. function MAKEIPADDRESS(b1, b2, b3, b4: DWORD): LPARAM;
  11018. begin
  11019. Result := (b1 shl 24) + (b2 shl 16) + (b3 shl 8) + b4;
  11020. end;
  11021. function FIRST_IPADDRESS(x: DWORD): DWORD;
  11022. begin
  11023. Result := (x shr 24) and $FF;
  11024. end;
  11025. function SECOND_IPADDRESS(x: DWORD): DWORD;
  11026. begin
  11027. Result := (x shr 16) and $FF;
  11028. end;
  11029. function THIRD_IPADDRESS(x: DWORD): DWORD;
  11030. begin
  11031. Result := (x shr 8) and $FF;
  11032. end;
  11033. function FOURTH_IPADDRESS(x: DWORD): DWORD;
  11034. begin
  11035. Result := x and $FF;
  11036. end;
  11037. { Pager control }
  11038. procedure Pager_SetChild(hwnd: HWND; hwndChild: HWND);
  11039. begin
  11040. SendMessage(hwnd, PGM_SETCHILD, 0, LPARAM(hwndChild));
  11041. end;
  11042. procedure Pager_RecalcSize(hwnd: HWND);
  11043. begin
  11044. SendMessage(hwnd, PGM_RECALCSIZE, 0, 0);
  11045. end;
  11046. procedure Pager_ForwardMouse(hwnd: HWND; bForward: BOOL);
  11047. begin
  11048. SendMessage(hwnd, PGM_FORWARDMOUSE, WPARAM(bForward), 0);
  11049. end;
  11050. function Pager_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  11051. begin
  11052. Result := COLORREF(SendMessage(hwnd, PGM_SETBKCOLOR, 0, LPARAM(clr)));
  11053. end;
  11054. function Pager_GetBkColor(hwnd: HWND): COLORREF;
  11055. begin
  11056. Result := COLORREF(SendMessage(hwnd, PGM_GETBKCOLOR, 0, 0));
  11057. end;
  11058. function Pager_SetBorder(hwnd: HWND; iBorder: Integer): Integer;
  11059. begin
  11060. Result := SendMessage(hwnd, PGM_SETBORDER, 0, iBorder);
  11061. end;
  11062. function Pager_GetBorder(hwnd: HWND): Integer;
  11063. begin
  11064. Result := SendMessage(hwnd, PGM_GETBORDER, 0, 0);
  11065. end;
  11066. function Pager_SetPos(hwnd: HWND; iPos: Integer): Integer;
  11067. begin
  11068. Result := SendMessage(hwnd, PGM_SETPOS, 0, iPos);
  11069. end;
  11070. function Pager_GetPos(hwnd: HWND): Integer;
  11071. begin
  11072. Result := SendMessage(hwnd, PGM_GETPOS, 0, 0);
  11073. end;
  11074. function Pager_SetButtonSize(hwnd: HWND; iSize: Integer): Integer;
  11075. begin
  11076. Result := SendMessage(hwnd, PGM_SETBUTTONSIZE, 0, iSize);
  11077. end;
  11078. function Pager_GetButtonSize(hwnd: HWND): Integer;
  11079. begin
  11080. Result := SendMessage(hwnd, PGM_GETBUTTONSIZE, 0,0);
  11081. end;
  11082. function Pager_GetButtonState(hwnd: HWND; iButton: Integer): DWORD;
  11083. begin
  11084. Result := DWORD(SendMessage(hwnd, PGM_GETBUTTONSTATE, 0, iButton));
  11085. end;
  11086. procedure Pager_GetDropTarget(hwnd: HWND; ppdt: Pointer{!!});
  11087. begin
  11088. SendMessage(hwnd, PGM_GETDROPTARGET, 0, LPARAM(ppdt));
  11089. end;
  11090. { Button Control Functions }
  11091. function Button_GetIdealSize(hwnd: HWND; var psize: TSize): BOOL;
  11092. begin
  11093. Result := BOOL(SendMessage(hwnd, BCM_GETIDEALSIZE, 0, LPARAM(@psize)));
  11094. end;
  11095. function Button_SetImageList(hwnd: HWND; const pbuttonImagelist: TButtonImagelist): BOOL;
  11096. begin
  11097. Result := BOOL(SendMessage(hwnd, BCM_SETIMAGELIST, 0, LPARAM(@pbuttonImagelist)));
  11098. end;
  11099. function Button_GetImageList(hwnd: HWND; var pbuttonImagelist: TButtonImageList): BOOL;
  11100. begin
  11101. Result := BOOL(SendMessage(hwnd, BCM_GETIMAGELIST, 0, LPARAM(@pbuttonImagelist)));
  11102. end;
  11103. function Button_SetTextMargin(hwnd: HWND; const pmargin: TRect): BOOL;
  11104. begin
  11105. Result := BOOL(SendMessage(hwnd, BCM_SETTEXTMARGIN, 0, LPARAM(@pmargin)));
  11106. end;
  11107. function Button_GetTextMargin(hwnd: HWND; var pmargin: TRect): BOOL;
  11108. begin
  11109. Result := BOOL(SendMessage(hwnd, BCM_GETTEXTMARGIN, 0, LPARAM(@pmargin)));
  11110. end;
  11111. function Button_SetDropDownState(hwnd: HWND; fDropDown: BOOL): BOOL;
  11112. begin
  11113. Result := BOOL(SendMessage(hwnd, BCM_SETDROPDOWNSTATE, WPARAM(fDropDown), 0));
  11114. end;
  11115. function Button_SetSplitInfo(hwnd: HWND; const pInfo: TButtonSplitinfo): BOOL;
  11116. begin
  11117. Result := BOOL(SendMessage(hwnd, BCM_SETSPLITINFO, 0, LPARAM(@pInfo)));
  11118. end;
  11119. function Button_GetSplitInfo(hwnd: HWND; var pInfo: TButtonSplitinfo): BOOL;
  11120. begin
  11121. Result := BOOL(SendMessage(hwnd, BCM_GETSPLITINFO, 0, LPARAM(@pInfo)));
  11122. end;
  11123. function Button_SetNote(hwnd: HWND; psz: LPCWSTR): BOOL;
  11124. begin
  11125. Result := BOOL(SendMessage(hwnd, BCM_SETNOTE, 0, LPARAM(psz)));
  11126. end;
  11127. function Button_SetNote(hwnd: HWND; const psz: UnicodeString): BOOL; overload;
  11128. begin
  11129. Result := BOOL(SendMessage(hwnd, BCM_SETNOTE, 0, LPARAM(PWideChar(psz))));
  11130. end;
  11131. function Button_GetNote(hwnd: HWND; psz: LPCWSTR; var pcc: Integer): BOOL;
  11132. begin
  11133. Result := BOOL(SendMessage(hwnd, BCM_GETNOTE, WPARAM(@pcc), LPARAM(psz)));
  11134. end;
  11135. function Button_GetNoteLength(hwnd: HWND): LRESULT;
  11136. begin
  11137. Result := SendMessage(hwnd, BCM_GETNOTELENGTH, 0, 0);
  11138. end;
  11139. function Button_SetElevationRequiredState(hwnd: HWND; fRequired: BOOL): LRESULT;
  11140. begin
  11141. Result := SendMessage(hwnd, BCM_SETSHIELD, 0, LPARAM(fRequired));
  11142. end;
  11143. { Edit Control Functions }
  11144. function Edit_SetCueBannerText(hwnd: HWND; lpwText: LPCWSTR): BOOL; inline;
  11145. begin
  11146. Result := BOOL(SendMessage(hwnd, EM_SETCUEBANNER, 0, lParam(lpwText)));
  11147. end;
  11148. function Edit_GetCueBannerText(hwnd: HWND; lpwText: LPCWSTR; cchText: Longint): BOOL; inline;
  11149. begin
  11150. Result := BOOL(SendMessage(hwnd, EM_GETCUEBANNER, wParam(lpwText), lParam(cchText)));
  11151. end;
  11152. function Edit_ShowBalloonTip(hwnd: HWND; const peditballoontip: TEditBalloonTip): BOOL;
  11153. begin
  11154. Result := BOOL(SendMessage(hwnd, EM_SHOWBALLOONTIP, 0, lParam(@peditballoontip)));
  11155. end;
  11156. function Edit_HideBalloonTip(hwnd: HWND): BOOL;
  11157. begin
  11158. Result := BOOL(SendMessage(hwnd, EM_HIDEBALLOONTIP, 0, 0));
  11159. end;
  11160. procedure Edit_SetHilite(hwndCtl: HWND; ichStart, ichEnd: Integer);
  11161. begin
  11162. SendMessage(hwndCtl, EM_SETHILITE, ichStart, ichEnd);
  11163. end;
  11164. function Edit_GetHilite(hwndCtl: HWND): LRESULT;
  11165. begin
  11166. Result := SendMessage(hwndCtl, EM_GETHILITE, 0, 0);
  11167. end;
  11168. { ComboBox Control Functions }
  11169. function ComboBox_SetMinVisible(hwnd: HWND; iMinVisible: Integer): BOOL;
  11170. begin
  11171. Result := BOOL(SendMessage(hwnd, CB_SETMINVISIBLE, WPARAM(iMinVisible), 0));
  11172. end;
  11173. function ComboBox_GetMinVisible(hwnd: HWND): Integer;
  11174. begin
  11175. Result := SendMessage(hwnd, CB_GETMINVISIBLE, 0, 0);
  11176. end;
  11177. function ComboBox_SetCueBannerText(hwnd: HWND; lpcwText: LPCWSTR): BOOL;
  11178. begin
  11179. Result := BOOL(SendMessage(hwnd, CB_SETCUEBANNER, 0, LPARAM(lpcwText)));
  11180. end;
  11181. function ComboBox_GetCueBannerText(hwnd: HWND; lpwText: LPCWSTR; cchText: Integer): BOOL;
  11182. begin
  11183. Result := BOOL(SendMessage(hwnd, CB_GETCUEBANNER, WPARAM(lpwText), LPARAM(@cchText)));
  11184. end;
  11185. { TrackMouseEvent }
  11186. function _TrackMouseEvent; external cctrl name '_TrackMouseEvent';
  11187. { Flat Scrollbar APIs }
  11188. function FlatSB_EnableScrollBar; external cctrl name 'FlatSB_EnableScrollBar';
  11189. function FlatSB_GetScrollInfo; external cctrl name 'FlatSB_GetScrollInfo';
  11190. function FlatSB_GetScrollPos; external cctrl name 'FlatSB_GetScrollPos';
  11191. function FlatSB_GetScrollProp; external cctrl name 'FlatSB_GetScrollProp';
  11192. function FlatSB_GetScrollRange; external cctrl name 'FlatSB_GetScrollRange';
  11193. function FlatSB_SetScrollInfo; external cctrl name 'FlatSB_SetScrollInfo';
  11194. function FlatSB_SetScrollPos; external cctrl name 'FlatSB_SetScrollPos';
  11195. function FlatSB_SetScrollProp; external cctrl name 'FlatSB_SetScrollProp';
  11196. function FlatSB_SetScrollPropPtr; external cctrl name 'FlatSB_SetScrollProp';
  11197. function FlatSB_SetScrollRange; external cctrl name 'FlatSB_SetScrollRange';
  11198. function FlatSB_ShowScrollBar; external cctrl name 'FlatSB_ShowScrollBar';
  11199. function InitializeFlatSB; external cctrl name 'InitializeFlatSB';
  11200. procedure UninitializeFlatSB; external cctrl name 'UninitializeFlatSB';
  11201. {$IFDEF CPUX64}
  11202. function FlatSB_GetScrollPropPtr; external cctrl name 'FlatSB_GetScrollPropPtr';
  11203. {$ELSE}
  11204. function FlatSB_GetScrollPropPtr; external cctrl name 'FlatSB_GetScrollProp';
  11205. {$ENDIF}
  11206. { Subclassing }
  11207. var
  11208. _SetWindowSubclass: function(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  11209. uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): BOOL; stdcall;
  11210. _GetWindowSubclass: function(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  11211. uIdSubclass: UINT_PTR; var pdwRefData: DWORD_PTR): BOOL; stdcall;
  11212. _RemoveWindowSubclass: function(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  11213. uIdSubclass: UINT_PTR): BOOL; stdcall;
  11214. _DefSubclassProc: function(hWnd: HWND; uMsg: UINT; wParam: WPARAM;
  11215. lParam: LPARAM): LRESULT; stdcall;
  11216. function SetWindowSubclass(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  11217. uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): BOOL;
  11218. begin
  11219. if Assigned(_SetWindowSubclass) then
  11220. Result := _SetWindowSubclass(hWnd, pfnSubclass, uIdSubclass, dwRefData)
  11221. else
  11222. begin
  11223. Result := False;
  11224. if ComCtl32DLL > 0 then
  11225. begin
  11226. _SetWindowSubclass := GetProcAddress(ComCtl32DLL, 'SetWindowSubclass'); // Do not localize
  11227. if Assigned(_SetWindowSubclass) then
  11228. Result := _SetWindowSubclass(hWnd, pfnSubclass, uIdSubclass, dwRefData);
  11229. end;
  11230. end;
  11231. end;
  11232. function GetWindowSubclass(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  11233. uIdSubclass: UINT_PTR; var pdwRefData: DWORD_PTR): BOOL;
  11234. begin
  11235. if Assigned(_GetWindowSubclass) then
  11236. Result := _GetWindowSubclass(hWnd, pfnSubclass, uIdSubclass, pdwRefData)
  11237. else
  11238. begin
  11239. Result := False;
  11240. if ComCtl32DLL > 0 then
  11241. begin
  11242. _GetWindowSubclass := GetProcAddress(ComCtl32DLL, 'GetWindowSubclass'); // Do not localize
  11243. if Assigned(_GetWindowSubclass) then
  11244. Result := _GetWindowSubclass(hWnd, pfnSubclass, uIdSubclass, pdwRefData);
  11245. end;
  11246. end;
  11247. end;
  11248. function RemoveWindowSubclass(hWnd: HWND; pfnSubclass: SUBCLASSPROC;
  11249. uIdSubclass: UINT_PTR): BOOL;
  11250. begin
  11251. if Assigned(_RemoveWindowSubclass) then
  11252. Result := _RemoveWindowSubclass(hWnd, pfnSubclass, uIdSubclass)
  11253. else
  11254. begin
  11255. Result := False;
  11256. if ComCtl32DLL > 0 then
  11257. begin
  11258. _RemoveWindowSubclass := GetProcAddress(ComCtl32DLL, 'RemoveWindowSubclass'); // Do not localize
  11259. if Assigned(_RemoveWindowSubclass) then
  11260. Result := _RemoveWindowSubclass(hWnd, pfnSubclass, uIdSubclass);
  11261. end;
  11262. end;
  11263. end;
  11264. function DefSubclassProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM;
  11265. lParam: LPARAM): LRESULT;
  11266. begin
  11267. if Assigned(_DefSubclassProc) then
  11268. Result := _DefSubclassProc(hWnd, uMsg, wParam, lParam)
  11269. else
  11270. begin
  11271. Result := 0;
  11272. if ComCtl32DLL > 0 then
  11273. begin
  11274. _DefSubclassProc := GetProcAddress(ComCtl32DLL, 'DefSubclassProc'); // Do not localize
  11275. if Assigned(_DefSubclassProc) then
  11276. Result := _DefSubclassProc(hWnd, uMsg, wParam, lParam);
  11277. end;
  11278. end;
  11279. end;
  11280. var
  11281. _LoadIconMetric: function(hinst: HINST; pszName: LPCWSTR; lims: Integer;
  11282. var phico: HICON): HResult; stdcall;
  11283. _LoadIconWithScaleDown: function(hinst: HINST; pszName: LPCWSTR; cx: Integer;
  11284. cy: Integer; var phico: HICON): HResult; stdcall;
  11285. _DrawShadowText: function(hdc: HDC; pszText: LPCWSTR; cch: UINT; const prc: TRect;
  11286. dwFlags: DWORD; crText: COLORREF; crShadow: COLORREF; ixOffset: Integer;
  11287. iyOffset: Integer): Integer; stdcall;
  11288. function LoadIconMetric(hinst: HINST; pszName: LPCWSTR; lims: Integer;
  11289. var phico: HICON): HResult;
  11290. begin
  11291. if Assigned(_LoadIconMetric) then
  11292. Result := _LoadIconMetric(hinst, pszName, lims, phico)
  11293. else
  11294. begin
  11295. Result := E_NOTIMPL;
  11296. if ComCtl32DLL > 0 then
  11297. begin
  11298. _LoadIconMetric := GetProcAddress(ComCtl32DLL, 'LoadIconMetric'); // Do not localize
  11299. if Assigned(_LoadIconMetric) then
  11300. Result := _LoadIconMetric(hinst, pszName, lims, phico);
  11301. end;
  11302. end;
  11303. end;
  11304. function LoadIconWithScaleDown(hinst: HINST; pszName: LPCWSTR; cx: Integer;
  11305. cy: Integer; var phico: HICON): HResult;
  11306. begin
  11307. if Assigned(_LoadIconWithScaleDown) then
  11308. Result := _LoadIconWithScaleDown(hinst, pszName, cx, cy, phico)
  11309. else
  11310. begin
  11311. Result := E_NOTIMPL;
  11312. if ComCtl32DLL > 0 then
  11313. begin
  11314. _LoadIconWithScaleDown := GetProcAddress(ComCtl32DLL, 'LoadIconWithScaleDown'); // Do not localize
  11315. if Assigned(_LoadIconWithScaleDown) then
  11316. Result := _LoadIconWithScaleDown(hinst, pszName, cx, cy, phico);
  11317. end;
  11318. end;
  11319. end;
  11320. function DrawShadowText(hdc: HDC; pszText: LPCWSTR; cch: UINT; const prc: TRect;
  11321. dwFlags: DWORD; crText: COLORREF; crShadow: COLORREF; ixOffset: Integer;
  11322. iyOffset: Integer): Integer;
  11323. begin
  11324. if Assigned(_DrawShadowText) then
  11325. Result := _DrawShadowText(hdc, pszText, cch, prc, dwFlags, crText, crShadow,
  11326. ixOffset, iyOffset)
  11327. else
  11328. begin
  11329. Result := 0;
  11330. if ComCtl32DLL > 0 then
  11331. begin
  11332. _DrawShadowText := GetProcAddress(ComCtl32DLL, 'DrawShadowText'); // Do not localize
  11333. if Assigned(_DrawShadowText) then
  11334. Result := _DrawShadowText(hdc, pszText, cch, prc, dwFlags, crText,
  11335. crShadow, ixOffset, iyOffset);
  11336. end;
  11337. end;
  11338. end;
  11339. var
  11340. _DrawScrollArrow: procedure(hdc: HDC; lprc: PRect; wControlState: UINT;
  11341. rgbOveride: COLORREF); stdcall;
  11342. procedure DrawScrollArrow(hdc: HDC; lprc: PRect; wControlState: UINT;
  11343. rgbOveride: COLORREF);
  11344. begin
  11345. if Assigned(_DrawScrollArrow) then
  11346. _DrawScrollArrow(hdc, lprc, wControlState, rgbOveride)
  11347. else
  11348. begin
  11349. if ComCtl32DLL > 0 then
  11350. begin
  11351. _DrawScrollArrow := GetProcAddress(ComCtl32DLL, 'DrawScrollArrow'); // Do not localize
  11352. if Assigned(_DrawScrollArrow) then
  11353. _DrawScrollArrow(hdc, lprc, wControlState, rgbOveride);
  11354. end;
  11355. end;
  11356. end;
  11357. { Task Dialog }
  11358. var
  11359. _TaskDialogIndirect: function(const pTaskConfig: TTaskDialogConfig;
  11360. pnButton: PInteger; pnRadioButton: PInteger;
  11361. pfVerificationFlagChecked: PBOOL): HRESULT; stdcall;
  11362. _TaskDialog: function(hwndParent: HWND; hInstance: HINST;
  11363. pszWindowTitle: LPCWSTR; pszMainInstruction: LPCWSTR; pszContent: LPCWSTR;
  11364. dwCommonButtons: DWORD; pszIcon: LPCWSTR; pnButton: PInteger): HRESULT; stdcall;
  11365. function TaskDialogIndirect(const pTaskConfig: TTaskDialogConfig;
  11366. pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT;
  11367. begin
  11368. if Assigned(_TaskDialogIndirect) then
  11369. Result := _TaskDialogIndirect(pTaskConfig, pnButton, pnRadioButton,
  11370. pfVerificationFlagChecked)
  11371. else
  11372. begin
  11373. InitComCtl;
  11374. Result := E_NOTIMPL;
  11375. if ComCtl32DLL <> 0 then
  11376. begin
  11377. @_TaskDialogIndirect := GetProcAddress(ComCtl32DLL, 'TaskDialogIndirect');
  11378. if Assigned(_TaskDialogIndirect) then
  11379. Result := _TaskDialogIndirect(pTaskConfig, pnButton, pnRadioButton,
  11380. pfVerificationFlagChecked)
  11381. end;
  11382. end;
  11383. end;
  11384. function TaskDialog(hwndParent: HWND; hInstance: HINST; pszWindowTitle,
  11385. pszMainInstruction, pszContent: LPCWSTR; dwCommonButtons: DWORD;
  11386. pszIcon: LPCWSTR; pnButton: PInteger): HRESULT;
  11387. begin
  11388. if Assigned(_TaskDialog) then
  11389. Result := _TaskDialog(hwndParent, hInstance, pszWindowTitle, pszMainInstruction,
  11390. pszContent, dwCommonButtons, pszIcon, pnButton)
  11391. else
  11392. begin
  11393. InitComCtl;
  11394. Result := E_NOTIMPL;
  11395. if ComCtl32DLL <> 0 then
  11396. begin
  11397. @_TaskDialog := GetProcAddress(ComCtl32DLL, 'TaskDialog');
  11398. if Assigned(_TaskDialog) then
  11399. Result := _TaskDialog(hwndParent, hInstance, pszWindowTitle, pszMainInstruction,
  11400. pszContent, dwCommonButtons, pszIcon, pnButton);
  11401. end;
  11402. end;
  11403. end;
  11404. end.