home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Source / Vcl / COMMCTRL.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-01-26  |  280.3 KB  |  8,805 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Run-time Library                 }
  5. {       Win32 common controls interface unit            }
  6. {                                                       }
  7. {       Copyright (c) 1996,98 Inprise Corporation       }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11.  
  12. unit Commctrl;
  13.  
  14. {$WEAKPACKAGEUNIT}
  15.  
  16. interface
  17.  
  18. (*$HPPEMIT '' *)
  19. (*$HPPEMIT '#include <CommCtrl.h>' *)
  20. (*$HPPEMIT '' *)
  21.  
  22. { Although the COMMCTRL unit requires the ActiveX unit, COMMCTRL.HPP does }
  23. { not require ActiveX.hpp to compile. Hence the $NOINCLUDE directive.     }
  24. (*$NOINCLUDE ActiveX *)
  25.  
  26. uses Messages, Windows, ActiveX;
  27.  
  28. { From prsht.h -- Interface for the Windows Property Sheet Pages }
  29.  
  30. const
  31.   {$EXTERNALSYM MAXPROPPAGES}
  32.   MAXPROPPAGES = 100;
  33.  
  34.   {$EXTERNALSYM PSP_DEFAULT}
  35.   PSP_DEFAULT             = $00000000;
  36.   {$EXTERNALSYM PSP_DLGINDIRECT}
  37.   PSP_DLGINDIRECT         = $00000001;
  38.   {$EXTERNALSYM PSP_USEHICON}
  39.   PSP_USEHICON            = $00000002;
  40.   {$EXTERNALSYM PSP_USEICONID}
  41.   PSP_USEICONID           = $00000004;
  42.   {$EXTERNALSYM PSP_USETITLE}
  43.   PSP_USETITLE            = $00000008;
  44.   {$EXTERNALSYM PSP_RTLREADING}
  45.   PSP_RTLREADING          = $00000010;
  46.   {$EXTERNALSYM PSP_HASHELP}
  47.   PSP_HASHELP             = $00000020;
  48.   {$EXTERNALSYM PSP_USEREFPARENT}
  49.   PSP_USEREFPARENT        = $00000040;
  50.   {$EXTERNALSYM PSP_USECALLBACK}
  51.   PSP_USECALLBACK         = $00000080;
  52.   {$EXTERNALSYM PSP_PREMATURE}
  53.   PSP_PREMATURE           = $00000400;
  54.   {$EXTERNALSYM PSP_HIDEHEADER}
  55.   PSP_HIDEHEADER          = $00000800;
  56.   {$EXTERNALSYM PSP_USEHEADERTITLE}
  57.   PSP_USEHEADERTITLE      = $00001000;
  58.   {$EXTERNALSYM PSP_USEHEADERSUBTITLE}
  59.   PSP_USEHEADERSUBTITLE   = $00002000;
  60.  
  61.   {$EXTERNALSYM PSPCB_RELEASE}
  62.   PSPCB_RELEASE           = 1;
  63.   {$EXTERNALSYM PSPCB_CREATE}
  64.   PSPCB_CREATE            = 2;
  65.  
  66.   {$EXTERNALSYM PSH_DEFAULT}
  67.   PSH_DEFAULT             = $00000000;
  68.   {$EXTERNALSYM PSH_PROPTITLE}
  69.   PSH_PROPTITLE           = $00000001;
  70.   {$EXTERNALSYM PSH_USEHICON}
  71.   PSH_USEHICON            = $00000002;
  72.   {$EXTERNALSYM PSH_USEICONID}
  73.   PSH_USEICONID           = $00000004;
  74.   {$EXTERNALSYM PSH_PROPSHEETPAGE}
  75.   PSH_PROPSHEETPAGE       = $00000008;
  76.   {$EXTERNALSYM PSH_WIZARDHASFINISH}
  77.   PSH_WIZARDHASFINISH     = $00000010;
  78.   PSH_MULTILINETABS       = $00000010;
  79.   {$EXTERNALSYM PSH_WIZARD}
  80.   PSH_WIZARD              = $00000020;
  81.   {$EXTERNALSYM PSH_USEPSTARTPAGE}
  82.   PSH_USEPSTARTPAGE       = $00000040;
  83.   {$EXTERNALSYM PSH_NOAPPLYNOW}
  84.   PSH_NOAPPLYNOW          = $00000080;
  85.   {$EXTERNALSYM PSH_USECALLBACK}
  86.   PSH_USECALLBACK         = $00000100;
  87.   {$EXTERNALSYM PSH_HASHELP}
  88.   PSH_HASHELP             = $00000200;
  89.   {$EXTERNALSYM PSH_MODELESS}
  90.   PSH_MODELESS            = $00000400;
  91.   {$EXTERNALSYM PSH_RTLREADING}
  92.   PSH_RTLREADING          = $00000800;
  93.   {$EXTERNALSYM PSH_WIZARDCONTEXTHELP}
  94.   PSH_WIZARDCONTEXTHELP   = $00001000;
  95.   {$EXTERNALSYM PSH_WIZARD97}
  96.   PSH_WIZARD97            = $00002000;
  97.   {$EXTERNALSYM PSH_WATERMARK}
  98.   PSH_WATERMARK           = $00008000;
  99.   {$EXTERNALSYM PSH_USEHBMWATERMARK}
  100.   PSH_USEHBMWATERMARK     = $00010000;  // user pass in a hbmWatermark instead of pszbmWatermark
  101.   {$EXTERNALSYM PSH_USEHPLWATERMARK}
  102.   PSH_USEHPLWATERMARK     = $00020000;  //
  103.   {$EXTERNALSYM PSH_STRETCHWATERMARK}
  104.   PSH_STRETCHWATERMARK    = $00040000;  // stretchwatermark also applies for the header
  105.   {$EXTERNALSYM PSH_HEADER}
  106.   PSH_HEADER              = $00080000;
  107.   {$EXTERNALSYM PSH_USEHBMHEADER}
  108.   PSH_USEHBMHEADER        = $00100000;
  109.   {$EXTERNALSYM PSH_USEPAGELANG}
  110.   PSH_USEPAGELANG         = $00200000;  // use frame dialog template matched to page
  111.  
  112.   {$EXTERNALSYM PSCB_INITIALIZED}
  113.   PSCB_INITIALIZED  = 1;
  114.   {$EXTERNALSYM PSCB_PRECREATE}
  115.   PSCB_PRECREATE    = 2;
  116.  
  117.   {$EXTERNALSYM PSN_FIRST}
  118.   PSN_FIRST               = -200;
  119.   {$EXTERNALSYM PSN_LAST}
  120.   PSN_LAST                = -299;
  121.  
  122.   {$EXTERNALSYM PSN_SETACTIVE}
  123.   PSN_SETACTIVE           = PSN_FIRST - 0;
  124.   {$EXTERNALSYM PSN_KILLACTIVE}
  125.   PSN_KILLACTIVE          = PSN_FIRST - 1;
  126.   {$EXTERNALSYM PSN_APPLY}
  127.   PSN_APPLY               = PSN_FIRST - 2;
  128.   {$EXTERNALSYM PSN_RESET}
  129.   PSN_RESET               = PSN_FIRST - 3;
  130.   {$EXTERNALSYM PSN_HELP}
  131.   PSN_HELP                = PSN_FIRST - 5;
  132.   {$EXTERNALSYM PSN_WIZBACK}
  133.   PSN_WIZBACK             = PSN_FIRST - 6;
  134.   {$EXTERNALSYM PSN_WIZNEXT}
  135.   PSN_WIZNEXT             = PSN_FIRST - 7;
  136.   {$EXTERNALSYM PSN_WIZFINISH}
  137.   PSN_WIZFINISH           = PSN_FIRST - 8;
  138.   {$EXTERNALSYM PSN_QUERYCANCEL}
  139.   PSN_QUERYCANCEL         = PSN_FIRST - 9;
  140.   {$EXTERNALSYM PSN_GETOBJECT}
  141.   PSN_GETOBJECT           = PSN_FIRST - 10;
  142.  
  143.   {$EXTERNALSYM PSNRET_NOERROR}
  144.   PSNRET_NOERROR              = 0;
  145.   {$EXTERNALSYM PSNRET_INVALID}
  146.   PSNRET_INVALID              = 1;
  147.   {$EXTERNALSYM PSNRET_INVALID_NOCHANGEPAGE}
  148.   PSNRET_INVALID_NOCHANGEPAGE = 2;
  149.  
  150.   {$EXTERNALSYM PSM_SETCURSEL}
  151.   PSM_SETCURSEL           = WM_USER + 101;
  152.   {$EXTERNALSYM PSM_REMOVEPAGE}
  153.   PSM_REMOVEPAGE          = WM_USER + 102;
  154.   {$EXTERNALSYM PSM_ADDPAGE}
  155.   PSM_ADDPAGE             = WM_USER + 103;
  156.   {$EXTERNALSYM PSM_CHANGED}
  157.   PSM_CHANGED             = WM_USER + 104;
  158.   {$EXTERNALSYM PSM_RESTARTWINDOWS}
  159.   PSM_RESTARTWINDOWS      = WM_USER + 105;
  160.   {$EXTERNALSYM PSM_REBOOTSYSTEM}
  161.   PSM_REBOOTSYSTEM        = WM_USER + 106;
  162.   {$EXTERNALSYM PSM_CANCELTOCLOSE}
  163.   PSM_CANCELTOCLOSE       = WM_USER + 107;
  164.   {$EXTERNALSYM PSM_QUERYSIBLINGS}
  165.   PSM_QUERYSIBLINGS       = WM_USER + 108;
  166.   {$EXTERNALSYM PSM_UNCHANGED}
  167.   PSM_UNCHANGED           = WM_USER + 109;
  168.   {$EXTERNALSYM PSM_APPLY}
  169.   PSM_APPLY               = WM_USER + 110;
  170.   {$EXTERNALSYM PSM_SETTITLE}
  171.   PSM_SETTITLE            = WM_USER + 111;
  172.   {$EXTERNALSYM PSM_SETTITLEW}
  173.   PSM_SETTITLEW           = WM_USER + 120;
  174.   {$EXTERNALSYM PSM_SETWIZBUTTONS}
  175.   PSM_SETWIZBUTTONS       = WM_USER + 112;
  176.   {$EXTERNALSYM PSM_PRESSBUTTON}
  177.   PSM_PRESSBUTTON         = WM_USER + 113;
  178.   {$EXTERNALSYM PSM_SETCURSELID}
  179.   PSM_SETCURSELID         = WM_USER + 114;
  180.   {$EXTERNALSYM PSM_SETFINISHTEXT}
  181.   PSM_SETFINISHTEXT       = WM_USER + 115;
  182.   {$EXTERNALSYM PSM_SETFINISHTEXTW}
  183.   PSM_SETFINISHTEXTW      = WM_USER + 121;
  184.   {$EXTERNALSYM PSM_GETTABCONTROL}
  185.   PSM_GETTABCONTROL       = WM_USER + 116;
  186.   {$EXTERNALSYM PSM_ISDIALOGMESSAGE}
  187.   PSM_ISDIALOGMESSAGE     = WM_USER + 117;
  188.  
  189.   {$EXTERNALSYM PSWIZB_BACK}
  190.   PSWIZB_BACK             = $00000001;
  191.   {$EXTERNALSYM PSWIZB_NEXT}
  192.   PSWIZB_NEXT             = $00000002;
  193.   {$EXTERNALSYM PSWIZB_FINISH}
  194.   PSWIZB_FINISH           = $00000004;
  195.   {$EXTERNALSYM PSWIZB_DISABLEDFINISH}
  196.   PSWIZB_DISABLEDFINISH   = $00000008;
  197.  
  198.   {$EXTERNALSYM PSBTN_BACK}
  199.   PSBTN_BACK              = 0;
  200.   {$EXTERNALSYM PSBTN_NEXT}
  201.   PSBTN_NEXT              = 1;
  202.   {$EXTERNALSYM PSBTN_FINISH}
  203.   PSBTN_FINISH            = 2;
  204.   {$EXTERNALSYM PSBTN_OK}
  205.   PSBTN_OK                = 3;
  206.   {$EXTERNALSYM PSBTN_APPLYNOW}
  207.   PSBTN_APPLYNOW          = 4;
  208.   {$EXTERNALSYM PSBTN_CANCEL}
  209.   PSBTN_CANCEL            = 5;
  210.   {$EXTERNALSYM PSBTN_HELP}
  211.   PSBTN_HELP              = 6;
  212.   {$EXTERNALSYM PSBTN_MAX}
  213.   PSBTN_MAX               = 6;
  214.  
  215.   {$EXTERNALSYM ID_PSRESTARTWINDOWS}
  216.   ID_PSRESTARTWINDOWS     = 2;
  217.   {$EXTERNALSYM ID_PSREBOOTSYSTEM}
  218.   ID_PSREBOOTSYSTEM       = ID_PSRESTARTWINDOWS or 1;
  219.  
  220.   {$EXTERNALSYM WIZ_CXDLG}
  221.   WIZ_CXDLG               = 276;
  222.   {$EXTERNALSYM WIZ_CYDLG}
  223.   WIZ_CYDLG               = 140;
  224.  
  225.   {$EXTERNALSYM WIZ_CXBMP}
  226.   WIZ_CXBMP               = 80;
  227.  
  228.   {$EXTERNALSYM WIZ_BODYX}
  229.   WIZ_BODYX               = 92;
  230.   {$EXTERNALSYM WIZ_BODYCX}
  231.   WIZ_BODYCX              = 184;
  232.  
  233.   {$EXTERNALSYM PROP_SM_CXDLG}
  234.   PROP_SM_CXDLG           = 212;
  235.   {$EXTERNALSYM PROP_SM_CYDLG}
  236.   PROP_SM_CYDLG           = 188;
  237.  
  238.   {$EXTERNALSYM PROP_MED_CXDLG}
  239.   PROP_MED_CXDLG          = 227;
  240.   {$EXTERNALSYM PROP_MED_CYDLG}
  241.   PROP_MED_CYDLG          = 215;
  242.  
  243.   {$EXTERNALSYM PROP_LG_CXDLG}
  244.   PROP_LG_CXDLG           = 252;
  245.   {$EXTERNALSYM PROP_LG_CYDLG}
  246.   PROP_LG_CYDLG           = 218;
  247.  
  248. type
  249.   HPropSheetPage = Pointer;
  250.  
  251.   PPropSheetPageA = ^TPropSheetPageA;
  252.   PPropSheetPageW = ^TPropSheetPageW;
  253.   PPropSheetPage = PPropSheetPageA;
  254.  
  255.   {$EXTERNALSYM LPFNPSPCALLBACKA}
  256.   LPFNPSPCALLBACKA = function(Wnd: HWnd; Msg: Integer;
  257.     PPSP: PPropSheetPageA): Integer stdcall;
  258.   {$EXTERNALSYM LPFNPSPCALLBACKW}
  259.   LPFNPSPCALLBACKW = function(Wnd: HWnd; Msg: Integer;
  260.     PPSP: PPropSheetPageW): Integer stdcall;
  261.   {$EXTERNALSYM LPFNPSPCALLBACK}
  262.   LPFNPSPCALLBACK = LPFNPSPCALLBACKA;
  263.   TFNPSPCallbackA = LPFNPSPCALLBACKA;
  264.   TFNPSPCallbackW = LPFNPSPCALLBACKW;
  265.   TFNPSPCallback = TFNPSPCallbackA;
  266.  
  267.   {$EXTERNALSYM _PROPSHEETPAGEA}
  268.   _PROPSHEETPAGEA = record
  269.     dwSize: Longint;
  270.     dwFlags: Longint;
  271.     hInstance: THandle;
  272.     case Integer of
  273.       0: (
  274.         pszTemplate: PAnsiChar);
  275.       1: (
  276.         pResource: Pointer;
  277.         case Integer of
  278.           0: (
  279.             hIcon: THandle);
  280.           1: (
  281.             pszIcon: PAnsiChar;
  282.             pszTitle: PAnsiChar;
  283.             pfnDlgProc: Pointer;
  284.             lParam: Longint;
  285.             pfnCallback: TFNPSPCallbackA;
  286.             pcRefParent: PInteger;
  287.             pszHeaderTitle: PAnsiChar;      // this is displayed in the header
  288.             pszHeaderSubTitle: PAnsiChar)); //
  289.   end;
  290.   {$EXTERNALSYM _PROPSHEETPAGEW}
  291.   _PROPSHEETPAGEW = record
  292.     dwSize: Longint;
  293.     dwFlags: Longint;
  294.     hInstance: THandle;
  295.     case Integer of
  296.       0: (
  297.         pszTemplate: PWideChar);
  298.       1: (
  299.         pResource: Pointer;
  300.         case Integer of
  301.           0: (
  302.             hIcon: THandle);
  303.           1: (
  304.             pszIcon: PWideChar;
  305.             pszTitle: PWideChar;
  306.             pfnDlgProc: Pointer;
  307.             lParam: Longint;
  308.             pfnCallback: TFNPSPCallbackW;
  309.             pcRefParent: PInteger;
  310.             pszHeaderTitle: PWideChar;      // this is displayed in the header
  311.             pszHeaderSubTitle: PWideChar)); //
  312.   end;
  313.   {$EXTERNALSYM _PROPSHEETPAGE}
  314.   _PROPSHEETPAGE = _PROPSHEETPAGEA;
  315.   TPropSheetPageA = _PROPSHEETPAGEA;
  316.   TPropSheetPageW = _PROPSHEETPAGEW;
  317.   TPropSheetPage = TPropSheetPageA;
  318.   {$EXTERNALSYM PROPSHEETPAGEA}
  319.   PROPSHEETPAGEA = _PROPSHEETPAGEA;
  320.   {$EXTERNALSYM PROPSHEETPAGEW}
  321.   PROPSHEETPAGEW = _PROPSHEETPAGEW;
  322.   {$EXTERNALSYM PROPSHEETPAGE}
  323.   PROPSHEETPAGE = PROPSHEETPAGEA;
  324.  
  325.  
  326.   {$EXTERNALSYM PFNPROPSHEETCALLBACK}
  327.   PFNPROPSHEETCALLBACK = function(Wnd: HWnd; Msg: Integer;
  328.     LParam: Integer): Integer stdcall;
  329.   TFNPropSheetCallback = PFNPROPSHEETCALLBACK;
  330.  
  331.   PPropSheetHeaderA = ^TPropSheetHeaderA;
  332.   PPropSheetHeaderW = ^TPropSheetHeaderW;
  333.   PPropSheetHeader = PPropSheetHeaderA;
  334.   {$EXTERNALSYM _PROPSHEETHEADERA}
  335.   _PROPSHEETHEADERA = record
  336.     dwSize: Longint;
  337.     dwFlags: Longint;
  338.     hwndParent: HWnd;
  339.     hInstance: THandle;
  340.     case Integer of
  341.       0: (
  342.     hIcon: THandle);
  343.       1: (
  344.     pszIcon: PAnsiChar;
  345.     pszCaption: PAnsiChar;
  346.     nPages: Integer;
  347.     case Integer of
  348.       0: (
  349.         nStartPage: Integer);
  350.       1: (
  351.         pStartPage: PAnsiChar;
  352.         case Integer of
  353.           0: (
  354.         ppsp: PPropSheetPageA);
  355.           1: (
  356.         phpage: Pointer;
  357.         pfnCallback: TFNPropSheetCallback;
  358.                 case Integer of
  359.                   0: (
  360.                     hbmWatermark: HBITMAP);
  361.                   1: (
  362.                     pszbmWatermark: PAnsiChar;
  363.                     hplWatermark: HPALETTE;
  364.                     // Header bitmap shares the palette with watermark
  365.                     case Integer of
  366.                       0: (
  367.                         hbmHeader: HBITMAP);
  368.                       1: (
  369.                         pszbmHeader: PAnsiChar)))));
  370.   end;
  371.   {$EXTERNALSYM _PROPSHEETHEADERW}
  372.   _PROPSHEETHEADERW = record
  373.     dwSize: Longint;
  374.     dwFlags: Longint;
  375.     hwndParent: HWnd;
  376.     hInstance: THandle;
  377.     case Integer of
  378.       0: (
  379.     hIcon: THandle);
  380.       1: (
  381.     pszIcon: PWideChar;
  382.     pszCaption: PWideChar;
  383.     nPages: Integer;
  384.     case Integer of
  385.       0: (
  386.         nStartPage: Integer);
  387.       1: (
  388.         pStartPage: PWideChar;
  389.         case Integer of
  390.           0: (
  391.         ppsp: PPropSheetPageW);
  392.           1: (
  393.         phpage: Pointer;
  394.         pfnCallback: TFNPropSheetCallback;
  395.                 case Integer of
  396.                   0: (
  397.                     hbmWatermark: HBITMAP);
  398.                   1: (
  399.                     pszbmWatermark: PWideChar;
  400.                     hplWatermark: HPALETTE;
  401.                     // Header bitmap shares the palette with watermark
  402.                     case Integer of
  403.                       0: (
  404.                         hbmHeader: HBITMAP);
  405.                       1: (
  406.                         pszbmHeader: PWideChar)))));
  407.   end;
  408.   {$EXTERNALSYM _PROPSHEETHEADER}
  409.   _PROPSHEETHEADER = _PROPSHEETHEADERA;
  410.   TPropSheetHeaderA = _PROPSHEETHEADERA;
  411.   TPropSheetHeaderW = _PROPSHEETHEADERW;
  412.   TPropSheetHeader = TPropSheetHeaderA;
  413.  
  414.   {$EXTERNALSYM LPFNADDPROPSHEETPAGE}
  415.   LPFNADDPROPSHEETPAGE = function(hPSP: HPropSheetPage;
  416.     lParam: Longint): BOOL stdcall;
  417.   TFNAddPropSheetPage = LPFNADDPROPSHEETPAGE;
  418.  
  419.   {$EXTERNALSYM LPFNADDPROPSHEETPAGES}
  420.   LPFNADDPROPSHEETPAGES = function(lpvoid: Pointer; pfn: TFNAddPropSheetPage;
  421.     lParam: Longint): BOOL stdcall;
  422.   TFNAddPropSheetPages = LPFNADDPROPSHEETPAGES;
  423.  
  424. {$EXTERNALSYM CreatePropertySheetPageA}
  425. function CreatePropertySheetPageA(var PSP: TPropSheetPageA): HPropSheetPage; stdcall;
  426. {$EXTERNALSYM CreatePropertySheetPageW}
  427. function CreatePropertySheetPageW(var PSP: TPropSheetPageW): HPropSheetPage; stdcall;
  428. {$EXTERNALSYM CreatePropertySheetPage}
  429. function CreatePropertySheetPage(var PSP: TPropSheetPage): HPropSheetPage; stdcall;
  430. {$EXTERNALSYM DestroyPropertySheetPage}
  431. function DestroyPropertySheetPage(hPSP: HPropSheetPage): BOOL; stdcall;
  432. {$EXTERNALSYM PropertySheetA}
  433. function PropertySheetA(var PSH: TPropSheetHeaderA): Integer; stdcall;
  434. {$EXTERNALSYM PropertySheetW}
  435. function PropertySheetW(var PSH: TPropSheetHeaderW): Integer; stdcall;
  436. {$EXTERNALSYM PropertySheet}
  437. function PropertySheet(var PSH: TPropSheetHeader): Integer; stdcall;
  438.  
  439. { From commctrl.h }
  440.  
  441. type
  442.   {$EXTERNALSYM tagINITCOMMONCONTROLSEX}
  443.   tagINITCOMMONCONTROLSEX = packed record
  444.     dwSize: DWORD;             // size of this structure
  445.     dwICC: DWORD;              // flags indicating which classes to be initialized
  446.   end;
  447.   PInitCommonControlsEx = ^TInitCommonControlsEx;
  448.   TInitCommonControlsEx = tagINITCOMMONCONTROLSEX;
  449.   
  450. const
  451.   {$EXTERNALSYM ICC_LISTVIEW_CLASSES}
  452.   ICC_LISTVIEW_CLASSES   = $00000001; // listview, header
  453.   {$EXTERNALSYM ICC_TREEVIEW_CLASSES}
  454.   ICC_TREEVIEW_CLASSES   = $00000002; // treeview, tooltips
  455.   {$EXTERNALSYM ICC_BAR_CLASSES}
  456.   ICC_BAR_CLASSES        = $00000004; // toolbar, statusbar, trackbar, tooltips
  457.   {$EXTERNALSYM ICC_TAB_CLASSES}
  458.   ICC_TAB_CLASSES        = $00000008; // tab, tooltips
  459.   {$EXTERNALSYM ICC_UPDOWN_CLASS}
  460.   ICC_UPDOWN_CLASS       = $00000010; // updown
  461.   {$EXTERNALSYM ICC_PROGRESS_CLASS}
  462.   ICC_PROGRESS_CLASS     = $00000020; // progress
  463.   {$EXTERNALSYM ICC_HOTKEY_CLASS}
  464.   ICC_HOTKEY_CLASS       = $00000040; // hotkey
  465.   {$EXTERNALSYM ICC_ANIMATE_CLASS}
  466.   ICC_ANIMATE_CLASS      = $00000080; // animate
  467.   {$EXTERNALSYM ICC_WIN95_CLASSES}
  468.   ICC_WIN95_CLASSES      = $000000FF;
  469.   {$EXTERNALSYM ICC_DATE_CLASSES}
  470.   ICC_DATE_CLASSES       = $00000100; // month picker, date picker, time picker, updown
  471.   {$EXTERNALSYM ICC_USEREX_CLASSES}
  472.   ICC_USEREX_CLASSES     = $00000200; // comboex
  473.   {$EXTERNALSYM ICC_COOL_CLASSES}
  474.   ICC_COOL_CLASSES       = $00000400; // rebar (coolbar) control
  475.   {$EXTERNALSYM ICC_INTERNET_CLASSES}
  476.   ICC_INTERNET_CLASSES   = $00000800;
  477.   {$EXTERNALSYM ICC_PAGESCROLLER_CLASS}
  478.   ICC_PAGESCROLLER_CLASS = $00001000; // page scroller
  479.   {$EXTERNALSYM ICC_NATIVEFNTCTL_CLASS}
  480.   ICC_NATIVEFNTCTL_CLASS = $00002000; // native font control
  481.  
  482. {$EXTERNALSYM InitCommonControls}
  483. procedure InitCommonControls; stdcall;
  484. {$EXTERNALSYM InitCommonControlsEx}
  485. function InitCommonControlsEx(var ICC: TInitCommonControlsEx): Bool; { Re-defined below }
  486.  
  487. const
  488.   {$EXTERNALSYM IMAGE_BITMAP}
  489.   IMAGE_BITMAP = 0;
  490.  
  491. const
  492.   {$EXTERNALSYM ODT_HEADER}
  493.   ODT_HEADER              = 100;
  494.   {$EXTERNALSYM ODT_TAB}
  495.   ODT_TAB                 = 101;
  496.   {$EXTERNALSYM ODT_LISTVIEW}
  497.   ODT_LISTVIEW            = 102;
  498.  
  499.  
  500. { ====== Ranges for control message IDs ======================= }
  501.  
  502. const
  503.   {$EXTERNALSYM LVM_FIRST}
  504.   LVM_FIRST               = $1000;      { ListView messages }
  505.   {$EXTERNALSYM TV_FIRST}
  506.   TV_FIRST                = $1100;      { TreeView messages }
  507.   {$EXTERNALSYM HDM_FIRST}
  508.   HDM_FIRST               = $1200;      { Header messages }
  509.   {$EXTERNALSYM TCM_FIRST}
  510.   TCM_FIRST               = $1300;      { Tab control messages }
  511.   {$EXTERNALSYM PGM_FIRST}
  512.   PGM_FIRST               = $1400;      { Pager control messages }
  513.   {$EXTERNALSYM CCM_FIRST}
  514.   CCM_FIRST               = $2000;      { Common control shared messages }
  515.  
  516.   {$EXTERNALSYM CCM_SETBKCOLOR}
  517.   CCM_SETBKCOLOR          = CCM_FIRST + 1; // lParam is bkColor
  518.  
  519. type
  520.   {$EXTERNALSYM tagCOLORSCHEME}
  521.   tagCOLORSCHEME = packed record
  522.     dwSize: DWORD;
  523.     clrBtnHighlight: COLORREF;    // highlight color
  524.     clrBtnShadow: COLORREF;       // shadow color
  525.   end;
  526.   PColorScheme = ^TColorScheme;
  527.   TColorScheme = tagCOLORSCHEME;
  528.  
  529. const
  530.   {$EXTERNALSYM CCM_SETCOLORSCHEME}
  531.   CCM_SETCOLORSCHEME      = CCM_FIRST + 2; // lParam is color scheme
  532.   {$EXTERNALSYM CCM_GETCOLORSCHEME}
  533.   CCM_GETCOLORSCHEME      = CCM_FIRST + 3; // fills in COLORSCHEME pointed to by lParam
  534.   {$EXTERNALSYM CCM_GETDROPTARGET}
  535.   CCM_GETDROPTARGET       = CCM_FIRST + 4;
  536.   {$EXTERNALSYM CCM_SETUNICODEFORMAT}
  537.   CCM_SETUNICODEFORMAT    = CCM_FIRST + 5;
  538.   {$EXTERNALSYM CCM_GETUNICODEFORMAT}
  539.   CCM_GETUNICODEFORMAT    = CCM_FIRST + 6;
  540.  
  541.   {$EXTERNALSYM INFOTIPSIZE}
  542.   INFOTIPSIZE = 1024;  // for tooltips
  543.  
  544. { ====== WM_NOTIFY codes (NMHDR.code values) ================== }
  545.  
  546. const
  547.   {$EXTERNALSYM NM_FIRST}
  548.   NM_FIRST                 = 0-  0;       { generic to all controls }
  549.   {$EXTERNALSYM NM_LAST}
  550.   NM_LAST                  = 0- 99;
  551.  
  552.   {$EXTERNALSYM LVN_FIRST}
  553.   LVN_FIRST                = 0-100;       { listview }
  554.   {$EXTERNALSYM LVN_LAST}
  555.   LVN_LAST                 = 0-199;
  556.  
  557.   {$EXTERNALSYM HDN_FIRST}
  558.   HDN_FIRST                = 0-300;       { header }
  559.   {$EXTERNALSYM HDN_LAST}
  560.   HDN_LAST                 = 0-399;
  561.  
  562.   {$EXTERNALSYM TVN_FIRST}
  563.   TVN_FIRST                = 0-400;       { treeview }
  564.   {$EXTERNALSYM TVN_LAST}
  565.   TVN_LAST                 = 0-499;
  566.  
  567.   {$EXTERNALSYM TTN_FIRST}
  568.   TTN_FIRST                = 0-520;       { tooltips }
  569.   {$EXTERNALSYM TTN_LAST}
  570.   TTN_LAST                 = 0-549;
  571.  
  572.   {$EXTERNALSYM TCN_FIRST}
  573.   TCN_FIRST                = 0-550;       { tab control }
  574.   {$EXTERNALSYM TCN_LAST}
  575.   TCN_LAST                 = 0-580;
  576.  
  577. { Shell reserved           (0-580) -  (0-589) }
  578.  
  579.   {$EXTERNALSYM CDN_FIRST}
  580.   CDN_FIRST                = 0-601;       { common dialog (new) }
  581.   {$EXTERNALSYM CDN_LAST}
  582.   CDN_LAST                 = 0-699;
  583.  
  584.   {$EXTERNALSYM TBN_FIRST}
  585.   TBN_FIRST                = 0-700;       { toolbar }
  586.   {$EXTERNALSYM TBN_LAST}
  587.   TBN_LAST                 = 0-720;
  588.  
  589.   {$EXTERNALSYM UDN_FIRST}
  590.   UDN_FIRST                = 0-721;       { updown }
  591.   {$EXTERNALSYM UDN_LAST}
  592.   UDN_LAST                 = 0-740;
  593.  
  594.   {$EXTERNALSYM MCN_FIRST}
  595.   MCN_FIRST                = 0-750;       { monthcal }
  596.   {$EXTERNALSYM MCN_LAST}
  597.   MCN_LAST                 = 0-759;
  598.  
  599.   {$EXTERNALSYM DTN_FIRST}
  600.   DTN_FIRST                = 0-760;       { datetimepick }
  601.   {$EXTERNALSYM DTN_LAST}
  602.   DTN_LAST                 = 0-799;
  603.  
  604.   {$EXTERNALSYM CBEN_FIRST}
  605.   CBEN_FIRST               = 0-800;       { combo box ex }
  606.   {$EXTERNALSYM CBEN_LAST}
  607.   CBEN_LAST                = 0-830;
  608.  
  609.   {$EXTERNALSYM RBN_FIRST}
  610.   RBN_FIRST                = 0-831;       { coolbar }
  611.   {$EXTERNALSYM RBN_LAST}
  612.   RBN_LAST                 = 0-859;
  613.  
  614.   {$EXTERNALSYM IPN_FIRST}
  615.   IPN_FIRST               = 0-860;       { internet address }
  616.   {$EXTERNALSYM IPN_LAST}
  617.   IPN_LAST                = 0-879;       { internet address }
  618.  
  619.   {$EXTERNALSYM SBN_FIRST}
  620.   SBN_FIRST               = 0-880;       { status bar }
  621.   {$EXTERNALSYM SBN_LAST}
  622.   SBN_LAST                = 0-899;
  623.  
  624.   {$EXTERNALSYM PGN_FIRST}
  625.   PGN_FIRST               = 0-900;       { Pager Control }
  626.   {$EXTERNALSYM PGN_LAST}
  627.   PGN_LAST                = 0-950;
  628.  
  629.   {$EXTERNALSYM MSGF_COMMCTRL_BEGINDRAG}
  630.   MSGF_COMMCTRL_BEGINDRAG     = $4200;
  631.   {$EXTERNALSYM MSGF_COMMCTRL_SIZEHEADER}
  632.   MSGF_COMMCTRL_SIZEHEADER    = $4201;
  633.   {$EXTERNALSYM MSGF_COMMCTRL_DRAGSELECT}
  634.   MSGF_COMMCTRL_DRAGSELECT    = $4202;
  635.   {$EXTERNALSYM MSGF_COMMCTRL_TOOLBARCUST}
  636.   MSGF_COMMCTRL_TOOLBARCUST   = $4203;
  637.  
  638.  
  639. { ====== Generic WM_NOTIFY notification codes ================= }
  640.  
  641. const
  642.   {$EXTERNALSYM NM_OUTOFMEMORY}
  643.   NM_OUTOFMEMORY           = NM_FIRST-1;
  644.   {$EXTERNALSYM NM_CLICK}
  645.   NM_CLICK                 = NM_FIRST-2;
  646.   {$EXTERNALSYM NM_DBLCLK}
  647.   NM_DBLCLK                = NM_FIRST-3;
  648.   {$EXTERNALSYM NM_RETURN}
  649.   NM_RETURN                = NM_FIRST-4;
  650.   {$EXTERNALSYM NM_RCLICK}
  651.   NM_RCLICK                = NM_FIRST-5;
  652.   {$EXTERNALSYM NM_RDBLCLK}
  653.   NM_RDBLCLK               = NM_FIRST-6;
  654.   {$EXTERNALSYM NM_SETFOCUS}
  655.   NM_SETFOCUS              = NM_FIRST-7;
  656.   {$EXTERNALSYM NM_KILLFOCUS}
  657.   NM_KILLFOCUS             = NM_FIRST-8;
  658.   {$EXTERNALSYM NM_CUSTOMDRAW}
  659.   NM_CUSTOMDRAW            = NM_FIRST-12;
  660.   {$EXTERNALSYM NM_HOVER}
  661.   NM_HOVER                 = NM_FIRST-13;
  662.   {$EXTERNALSYM NM_NCHITTEST}
  663.   NM_NCHITTEST             = NM_FIRST-14;   // uses NMMOUSE struct
  664.   {$EXTERNALSYM NM_KEYDOWN}
  665.   NM_KEYDOWN               = NM_FIRST-15;   // uses NMKEY struct
  666.   {$EXTERNALSYM NM_RELEASEDCAPTURE}
  667.   NM_RELEASEDCAPTURE       = NM_FIRST-16;
  668.   {$EXTERNALSYM NM_SETCURSOR}
  669.   NM_SETCURSOR             = NM_FIRST-17;   // uses NMMOUSE struct
  670.   {$EXTERNALSYM NM_CHAR}
  671.   NM_CHAR                  = NM_FIRST-18;   // uses NMCHAR struct
  672.  
  673. type
  674.   {$EXTERNALSYM tagNMMOUSE}
  675.   tagNMMOUSE = packed record
  676.     hdr: TNMHdr;
  677.     dwItemSpec: DWORD;
  678.     dwItemData: DWORD;
  679.     pt: TPoint;
  680.     dwHitInfo: DWORD; // any specifics about where on the item or control the mouse is
  681.   end;
  682.   PNMMouse = ^TNMMouse;
  683.   TNMMouse = tagNMMOUSE;
  684.  
  685.   PNMClick = ^TNMClick;
  686.   TNMClick = tagNMMOUSE;
  687.  
  688.   // Generic structure to request an object of a specific type.
  689.   {$EXTERNALSYM tagNMOBJECTNOTIFY}
  690.   tagNMOBJECTNOTIFY = packed record
  691.     hdr: TNMHdr;
  692.     iItem: Integer;
  693.     piid: PGUID;
  694.     pObject: Pointer;
  695.     hResult: HRESULT;
  696.     dwFlags: DWORD;    // control specific flags (hints as to where in iItem it hit)
  697.   end;
  698.   PNMObjectNotify = ^TNMObjectNotify;
  699.   TNMObjectNotify = tagNMOBJECTNOTIFY;
  700.  
  701.   // Generic structure for a key
  702.   {$EXTERNALSYM tagNMKEY}
  703.   tagNMKEY = packed record
  704.     hdr: TNMHdr;
  705.     nVKey: UINT;
  706.     uFlags: UINT;
  707.   end;
  708.   PNMKey = ^TNMKey;
  709.   TNMKey = tagNMKEY;
  710.  
  711.   // Generic structure for a character
  712.   {$EXTERNALSYM tagNMCHAR}
  713.   tagNMCHAR = packed record
  714.     hdr: TNMHdr;
  715.     ch: UINT;
  716.     dwItemPrev: DWORD;     // Item previously selected
  717.     dwItemNext: DWORD;     // Item to be selected
  718.   end;
  719.   PNMChar = ^TNMChar;
  720.   TNMChar = tagNMCHAR;
  721.  
  722. { ==================== CUSTOM DRAW ========================================== }
  723.  
  724. const
  725.   // custom draw return flags
  726.   // values under 0x00010000 are reserved for global custom draw values.
  727.   // above that are for specific controls
  728.   {$EXTERNALSYM CDRF_DODEFAULT}
  729.   CDRF_DODEFAULT          = $00000000;
  730.   {$EXTERNALSYM CDRF_NEWFONT}
  731.   CDRF_NEWFONT            = $00000002;
  732.   {$EXTERNALSYM CDRF_SKIPDEFAULT}
  733.   CDRF_SKIPDEFAULT        = $00000004;
  734.  
  735.   {$EXTERNALSYM CDRF_NOTIFYPOSTPAINT}
  736.   CDRF_NOTIFYPOSTPAINT    = $00000010;
  737.   {$EXTERNALSYM CDRF_NOTIFYITEMDRAW}
  738.   CDRF_NOTIFYITEMDRAW     = $00000020;
  739.   {$EXTERNALSYM CDRF_NOTIFYSUBITEMDRAW}
  740.   CDRF_NOTIFYSUBITEMDRAW  = $00000020;  // flags are the same, we can distinguish by context
  741.   {$EXTERNALSYM CDRF_NOTIFYPOSTERASE}
  742.   CDRF_NOTIFYPOSTERASE    = $00000040;
  743.  
  744.   // drawstage flags
  745.   // values under = $00010000 are reserved for global custom draw values.
  746.   // above that are for specific controls
  747.   {$EXTERNALSYM CDDS_PREPAINT}
  748.   CDDS_PREPAINT           = $00000001;
  749.   {$EXTERNALSYM CDDS_POSTPAINT}
  750.   CDDS_POSTPAINT          = $00000002;
  751.   {$EXTERNALSYM CDDS_PREERASE}
  752.   CDDS_PREERASE           = $00000003;
  753.   {$EXTERNALSYM CDDS_POSTERASE}
  754.   CDDS_POSTERASE          = $00000004;
  755.   // the = $000010000 bit means it's individual item specific
  756.   {$EXTERNALSYM CDDS_ITEM}
  757.   CDDS_ITEM               = $00010000;
  758.   {$EXTERNALSYM CDDS_ITEMPREPAINT}
  759.   CDDS_ITEMPREPAINT       = CDDS_ITEM or CDDS_PREPAINT;
  760.   {$EXTERNALSYM CDDS_ITEMPOSTPAINT}
  761.   CDDS_ITEMPOSTPAINT      = CDDS_ITEM or CDDS_POSTPAINT;
  762.   {$EXTERNALSYM CDDS_ITEMPREERASE}
  763.   CDDS_ITEMPREERASE       = CDDS_ITEM or CDDS_PREERASE;
  764.   {$EXTERNALSYM CDDS_ITEMPOSTERASE}
  765.   CDDS_ITEMPOSTERASE      = CDDS_ITEM or CDDS_POSTERASE;
  766.   {$EXTERNALSYM CDDS_SUBITEM}
  767.   CDDS_SUBITEM            = $00020000;
  768.  
  769.   // itemState flags
  770.   {$EXTERNALSYM CDIS_SELECTED}
  771.   CDIS_SELECTED       = $0001;
  772.   {$EXTERNALSYM CDIS_GRAYED}
  773.   CDIS_GRAYED         = $0002;
  774.   {$EXTERNALSYM CDIS_DISABLED}
  775.   CDIS_DISABLED       = $0004;
  776.   {$EXTERNALSYM CDIS_CHECKED}
  777.   CDIS_CHECKED        = $0008;
  778.   {$EXTERNALSYM CDIS_FOCUS}
  779.   CDIS_FOCUS          = $0010;
  780.   {$EXTERNALSYM CDIS_DEFAULT}
  781.   CDIS_DEFAULT        = $0020;
  782.   {$EXTERNALSYM CDIS_HOT}
  783.   CDIS_HOT            = $0040;
  784.   {$EXTERNALSYM CDIS_MARKED}
  785.   CDIS_MARKED         = $0080;
  786.   {$EXTERNALSYM CDIS_INDETERMINATE}
  787.   CDIS_INDETERMINATE  = $0100;
  788.  
  789. type
  790.   {$EXTERNALSYM tagNMCUSTOMDRAWINFO}
  791.   tagNMCUSTOMDRAWINFO = packed record
  792.     hdr: TNMHdr;
  793.     dwDrawStage: DWORD;
  794.     hdc: HDC;
  795.     rc: TRect;
  796.     dwItemSpec: DWORD;  // this is control specific, but it's how to specify an item.  valid only with CDDS_ITEM bit set
  797.     uItemState: UINT;
  798.     lItemlParam: LPARAM;
  799.   end;
  800.   PNMCustomDraw = ^TNMCustomDraw;
  801.   TNMCustomDraw = tagNMCUSTOMDRAWINFO;
  802.  
  803.   {$EXTERNALSYM tagNMTTCUSTOMDRAW}
  804.   tagNMTTCUSTOMDRAW = packed record
  805.     nmcd: TNMCustomDraw;
  806.     uDrawFlags: UINT;
  807.   end;
  808.   PNMTTCustomDraw = ^TNMTTCustomDraw;
  809.   TNMTTCustomDraw = tagNMTTCUSTOMDRAW;
  810.  
  811. { ====== IMAGE LIST =========================================== }
  812.  
  813. const
  814.   {$EXTERNALSYM CLR_NONE}
  815.   CLR_NONE                = $FFFFFFFF;
  816.   {$EXTERNALSYM CLR_DEFAULT}
  817.   CLR_DEFAULT             = $FF000000;
  818.  
  819. type
  820.   {$EXTERNALSYM HIMAGELIST}
  821.   HIMAGELIST = THandle;
  822.  
  823.   {$EXTERNALSYM _IMAGELISTDRAWPARAMS}
  824.   _IMAGELISTDRAWPARAMS = packed record
  825.     cbSize: DWORD;
  826.     himl: HIMAGELIST;
  827.     i: Integer;
  828.     hdcDst: HDC;
  829.     x: Integer;
  830.     y: Integer;
  831.     cx: Integer;
  832.     cy: Integer;
  833.     xBitmap: Integer;        // x offest from the upperleft of bitmap
  834.     yBitmap: Integer;        // y offset from the upperleft of bitmap
  835.     rgbBk: COLORREF;
  836.     rgbFg: COLORREF;
  837.     fStyle: UINT;
  838.     dwRop: DWORD;
  839.   end;
  840.   PImageListDrawParams = ^TImageListDrawParams;
  841.   TImageListDrawParams = _IMAGELISTDRAWPARAMS;
  842.  
  843. const
  844.   {$EXTERNALSYM ILC_MASK}
  845.   ILC_MASK                = $0001;
  846.   {$EXTERNALSYM ILC_COLOR}
  847.   ILC_COLOR               = $00FE;
  848.   {$EXTERNALSYM ILC_COLORDDB}
  849.   ILC_COLORDDB            = $00FE;
  850.   {$EXTERNALSYM ILC_COLOR4}
  851.   ILC_COLOR4              = $0004;
  852.   {$EXTERNALSYM ILC_COLOR8}
  853.   ILC_COLOR8              = $0008;
  854.   {$EXTERNALSYM ILC_COLOR16}
  855.   ILC_COLOR16             = $0010;
  856.   {$EXTERNALSYM ILC_COLOR24}
  857.   ILC_COLOR24             = $0018;
  858.   {$EXTERNALSYM ILC_COLOR32}
  859.   ILC_COLOR32             = $0020;
  860.   {$EXTERNALSYM ILC_PALETTE}
  861.   ILC_PALETTE             = $0800;
  862.  
  863. {$EXTERNALSYM ImageList_Create}
  864. function ImageList_Create(CX, CY: Integer; Flags: UINT;
  865.   Initial, Grow: Integer): HIMAGELIST; stdcall;
  866. {$EXTERNALSYM ImageList_Destroy}
  867. function ImageList_Destroy(ImageList: HIMAGELIST): Bool; stdcall;
  868. {$EXTERNALSYM ImageList_GetImageCount}
  869. function ImageList_GetImageCount(ImageList: HIMAGELIST): Integer; stdcall;
  870. {$EXTERNALSYM ImageList_SetImageCount}
  871. function ImageList_SetImageCount(himl: HIMAGELIST; uNewCount: UINT): Integer; stdcall;
  872. {$EXTERNALSYM ImageList_Add}
  873. function ImageList_Add(ImageList: HIMAGELIST; Image, Mask: HBitmap): Integer; stdcall;
  874. {$EXTERNALSYM ImageList_ReplaceIcon}
  875. function ImageList_ReplaceIcon(ImageList: HIMAGELIST; Index: Integer;
  876.   Icon: HIcon): Integer; stdcall;
  877. {$EXTERNALSYM ImageList_SetBkColor}
  878. function ImageList_SetBkColor(ImageList: HIMAGELIST; ClrBk: TColorRef): TColorRef; stdcall;
  879. {$EXTERNALSYM ImageList_GetBkColor}
  880. function ImageList_GetBkColor(ImageList: HIMAGELIST): TColorRef; stdcall;
  881. {$EXTERNALSYM ImageList_SetOverlayImage}
  882. function ImageList_SetOverlayImage(ImageList: HIMAGELIST; Image: Integer;
  883.   Overlay: Integer): Bool; stdcall;
  884.  
  885. {$EXTERNALSYM ImageList_AddIcon}
  886. function ImageList_AddIcon(ImageList: HIMAGELIST; Icon: HIcon): Integer;
  887.  
  888. const
  889.   {$EXTERNALSYM ILD_NORMAL}
  890.   ILD_NORMAL              = $0000;
  891.   {$EXTERNALSYM ILD_TRANSPARENT}
  892.   ILD_TRANSPARENT         = $0001;
  893.   {$EXTERNALSYM ILD_MASK}
  894.   ILD_MASK                = $0010;
  895.   {$EXTERNALSYM ILD_IMAGE}
  896.   ILD_IMAGE               = $0020;
  897.   {$EXTERNALSYM ILD_ROP}
  898.   ILD_ROP                 = $0040;
  899.   {$EXTERNALSYM ILD_BLEND25}
  900.   ILD_BLEND25             = $0002;
  901.   {$EXTERNALSYM ILD_BLEND50}
  902.   ILD_BLEND50             = $0004;
  903.   {$EXTERNALSYM ILD_OVERLAYMASK}
  904.   ILD_OVERLAYMASK         = $0F00;
  905.  
  906. {$EXTERNALSYM IndexToOverlayMask}
  907. function IndexToOverlayMask(Index: Integer): Integer;
  908.  
  909. const
  910.   {$EXTERNALSYM ILD_SELECTED}
  911.   ILD_SELECTED            = ILD_BLEND50;
  912.   {$EXTERNALSYM ILD_FOCUS}
  913.   ILD_FOCUS               = ILD_BLEND25;
  914.   {$EXTERNALSYM ILD_BLEND}
  915.   ILD_BLEND               = ILD_BLEND50;
  916.   {$EXTERNALSYM CLR_HILIGHT}
  917.   CLR_HILIGHT             = CLR_DEFAULT;
  918.  
  919. {$EXTERNALSYM ImageList_Draw}
  920. function ImageList_Draw(ImageList: HIMAGELIST; Index: Integer;
  921.   Dest: HDC; X, Y: Integer; Style: UINT): Bool; stdcall;
  922.  
  923. {$EXTERNALSYM ImageList_Replace}
  924. function ImageList_Replace(ImageList: HIMAGELIST; Index: Integer;
  925.   Image, Mask: HBitmap): Bool; stdcall;
  926. {$EXTERNALSYM ImageList_AddMasked}
  927. function ImageList_AddMasked(ImageList: HIMAGELIST; Image: HBitmap;
  928.   Mask: TColorRef): Integer; stdcall;
  929. {$EXTERNALSYM ImageList_DrawEx}
  930. function ImageList_DrawEx(ImageList: HIMAGELIST; Index: Integer;
  931.   Dest: HDC; X, Y, DX, DY: Integer; Bk, Fg: TColorRef; Style: Cardinal): Bool; stdcall;
  932. {$EXTERNALSYM ImageList_DrawIndirect}
  933. function ImageList_DrawIndirect(pimldp: PImageListDrawParams): Integer; stdcall;
  934. {$EXTERNALSYM ImageList_Remove}
  935. function ImageList_Remove(ImageList: HIMAGELIST; Index: Integer): Bool; stdcall;
  936. {$EXTERNALSYM ImageList_GetIcon}
  937. function ImageList_GetIcon(ImageList: HIMAGELIST; Index: Integer;
  938.   Flags: Cardinal): HIcon; stdcall;
  939. {$EXTERNALSYM ImageList_LoadImageA}
  940. function ImageList_LoadImageA(Instance: THandle; Bmp: PAnsiChar; CX, Grow: Integer;
  941.   Mask: TColorRef; pType, Flags: Cardinal): HIMAGELIST; stdcall;
  942. {$EXTERNALSYM ImageList_LoadImageW}
  943. function ImageList_LoadImageW(Instance: THandle; Bmp: PWideChar; CX, Grow: Integer;
  944.   Mask: TColorRef; pType, Flags: Cardinal): HIMAGELIST; stdcall;
  945. {$EXTERNALSYM ImageList_LoadImage}
  946. function ImageList_LoadImage(Instance: THandle; Bmp: PChar; CX, Grow: Integer;
  947.   Mask: TColorRef; pType, Flags: Cardinal): HIMAGELIST; stdcall;
  948.  
  949. const
  950.   {$EXTERNALSYM ILCF_MOVE}
  951.   ILCF_MOVE   = $00000000;
  952.   {$EXTERNALSYM ILCF_SWAP}
  953.   ILCF_SWAP   = $00000001;
  954.  
  955. {$EXTERNALSYM ImageList_Copy}
  956. function ImageList_Copy(himlDst: HIMAGELIST; iDst: Integer; himlSrc: HIMAGELIST;
  957.   Src: Integer; uFlags: UINT): Integer; stdcall;
  958.  
  959. {$EXTERNALSYM ImageList_BeginDrag}
  960. function ImageList_BeginDrag(ImageList: HIMAGELIST; Track: Integer;
  961.   XHotSpot, YHotSpot: Integer): Bool; stdcall;
  962. {$EXTERNALSYM ImageList_EndDrag}
  963. function ImageList_EndDrag: Bool; stdcall;
  964. {$EXTERNALSYM ImageList_DragEnter}
  965. function ImageList_DragEnter(LockWnd: HWnd; X, Y: Integer): Bool; stdcall;
  966. {$EXTERNALSYM ImageList_DragLeave}
  967. function ImageList_DragLeave(LockWnd: HWnd): Bool; stdcall;
  968. {$EXTERNALSYM ImageList_DragMove}
  969. function ImageList_DragMove(X, Y: Integer): Bool; stdcall;
  970. {$EXTERNALSYM ImageList_SetDragCursorImage}
  971. function ImageList_SetDragCursorImage(ImageList: HIMAGELIST; Drag: Integer;
  972.   XHotSpot, YHotSpot: Integer): Bool; stdcall;
  973. {$EXTERNALSYM ImageList_DragShowNolock}
  974. function ImageList_DragShowNolock(Show: Bool): Bool; stdcall;
  975. {$EXTERNALSYM ImageList_GetDragImage}
  976. function ImageList_GetDragImage(Point, HotSpot: PPoint): HIMAGELIST; stdcall;
  977.  
  978. { macros }
  979. {$EXTERNALSYM ImageList_RemoveAll}
  980. procedure ImageList_RemoveAll(ImageList: HIMAGELIST);
  981. {$EXTERNALSYM ImageList_ExtractIcon}
  982. function ImageList_ExtractIcon(Instance: THandle; ImageList: HIMAGELIST;
  983.   Image: Integer): HIcon;
  984. {$EXTERNALSYM ImageList_LoadBitmap}
  985. function ImageList_LoadBitmap(Instance: THandle; Bmp: PChar;
  986.   CX, Grow: Integer; MasK: TColorRef): HIMAGELIST;
  987.  
  988. {$EXTERNALSYM ImageList_Read}
  989. function ImageList_Read(Stream: IStream): HIMAGELIST; stdcall;
  990. {$EXTERNALSYM ImageList_Write}
  991. function ImageList_Write(ImageList: HIMAGELIST; Stream: IStream): BOOL; stdcall;
  992.  
  993. type
  994.   PImageInfo = ^TImageInfo;
  995.   {$EXTERNALSYM _IMAGEINFO}
  996.   _IMAGEINFO = packed record
  997.     hbmImage: HBitmap;
  998.     hbmMask: HBitmap;
  999.     Unused1: Integer;
  1000.     Unused2: Integer;
  1001.     rcImage: TRect;
  1002.   end;
  1003.   TImageInfo = _IMAGEINFO;
  1004.   {$EXTERNALSYM IMAGEINFO}
  1005.   IMAGEINFO = _IMAGEINFO;
  1006.  
  1007. {$EXTERNALSYM ImageList_GetIconSize}
  1008. function ImageList_GetIconSize(ImageList: HIMAGELIST; var CX, CY: Integer): Bool; stdcall;
  1009. {$EXTERNALSYM ImageList_SetIconSize}
  1010. function ImageList_SetIconSize(ImageList: HIMAGELIST; CX, CY: Integer): Bool; stdcall;
  1011. {$EXTERNALSYM ImageList_GetImageInfo}
  1012. function ImageList_GetImageInfo(ImageList: HIMAGELIST; Index: Integer;
  1013.   var ImageInfo: TImageInfo): Bool; stdcall;
  1014. {$EXTERNALSYM ImageList_Merge}
  1015. function ImageList_Merge(ImageList1: HIMAGELIST; Index1: Integer;
  1016.   ImageList2: HIMAGELIST; Index2: Integer; DX, DY: Integer): Bool; stdcall;
  1017. {$EXTERNALSYM ImageList_Duplicate}
  1018. function ImageList_Duplicate(himl: HIMAGELIST): HIMAGELIST; stdcall;
  1019.  
  1020. { ====== HEADER CONTROL ========================== }
  1021.  
  1022. const
  1023.   {$EXTERNALSYM WC_HEADER}
  1024.   WC_HEADER = 'SysHeader32';
  1025.  
  1026.   {$EXTERNALSYM HDS_HORZ}
  1027.   HDS_HORZ                = $00000000;
  1028.   {$EXTERNALSYM HDS_BUTTONS}
  1029.   HDS_BUTTONS             = $00000002;
  1030.   {$EXTERNALSYM HDS_HOTTRACK}
  1031.   HDS_HOTTRACK            = $00000004;
  1032.   {$EXTERNALSYM HDS_HIDDEN}
  1033.   HDS_HIDDEN              = $00000008;
  1034.   {$EXTERNALSYM HDS_DRAGDROP}
  1035.   HDS_DRAGDROP            = $00000040;
  1036.   {$EXTERNALSYM HDS_FULLDRAG}
  1037.   HDS_FULLDRAG            = $00000080;
  1038.  
  1039. type
  1040.   PHDItemA = ^THDItemA;
  1041.   PHDItemW = ^THDItemW;
  1042.   PHDItem = PHDItemA;
  1043.   {$EXTERNALSYM _HD_ITEMA}
  1044.   _HD_ITEMA = packed record
  1045.     Mask: Cardinal;
  1046.     cxy: Integer;
  1047.     pszText: PAnsiChar;
  1048.     hbm: HBITMAP;
  1049.     cchTextMax: Integer;
  1050.     fmt: Integer;
  1051.     lParam: LPARAM;
  1052.     iImage: Integer;        // index of bitmap in ImageList
  1053.     iOrder: Integer;        // where to draw this item
  1054.   end;
  1055.   {$EXTERNALSYM _HD_ITEMW}
  1056.   _HD_ITEMW = packed record
  1057.     Mask: Cardinal;
  1058.     cxy: Integer;
  1059.     pszText: PWideChar;
  1060.     hbm: HBITMAP;
  1061.     cchTextMax: Integer;
  1062.     fmt: Integer;
  1063.     lParam: LPARAM;
  1064.     iImage: Integer;        // index of bitmap in ImageList
  1065.     iOrder: Integer;        // where to draw this item
  1066.   end;
  1067.   {$EXTERNALSYM _HD_ITEM}
  1068.   _HD_ITEM = _HD_ITEMA;
  1069.   THDItemA = _HD_ITEMA;
  1070.   THDItemW = _HD_ITEMW;
  1071.   THDItem = THDItemA;
  1072.   {$EXTERNALSYM HD_ITEMA}
  1073.   HD_ITEMA = _HD_ITEMA;
  1074.   {$EXTERNALSYM HD_ITEMW}
  1075.   HD_ITEMW = _HD_ITEMW;
  1076.   {$EXTERNALSYM HD_ITEM}
  1077.   HD_ITEM = HD_ITEMA;
  1078.  
  1079. const
  1080.   {$EXTERNALSYM HDI_WIDTH}
  1081.   HDI_WIDTH               = $0001;
  1082.   {$EXTERNALSYM HDI_HEIGHT}
  1083.   HDI_HEIGHT              = HDI_WIDTH;
  1084.   {$EXTERNALSYM HDI_TEXT}
  1085.   HDI_TEXT                = $0002;
  1086.   {$EXTERNALSYM HDI_FORMAT}
  1087.   HDI_FORMAT              = $0004;
  1088.   {$EXTERNALSYM HDI_LPARAM}
  1089.   HDI_LPARAM              = $0008;
  1090.   {$EXTERNALSYM HDI_BITMAP}
  1091.   HDI_BITMAP              = $0010;
  1092.   {$EXTERNALSYM HDI_IMAGE}
  1093.   HDI_IMAGE               = $0020;
  1094.   {$EXTERNALSYM HDI_DI_SETITEM}
  1095.   HDI_DI_SETITEM          = $0040;
  1096.   {$EXTERNALSYM HDI_ORDER}
  1097.   HDI_ORDER               = $0080;
  1098.  
  1099.   {$EXTERNALSYM HDF_LEFT}
  1100.   HDF_LEFT                = 0;
  1101.   {$EXTERNALSYM HDF_RIGHT}
  1102.   HDF_RIGHT               = 1;
  1103.   {$EXTERNALSYM HDF_CENTER}
  1104.   HDF_CENTER              = 2;
  1105.   {$EXTERNALSYM HDF_JUSTIFYMASK}
  1106.   HDF_JUSTIFYMASK         = $0003;
  1107.   {$EXTERNALSYM HDF_RTLREADING}
  1108.   HDF_RTLREADING          = 4; 
  1109.  
  1110.   {$EXTERNALSYM HDF_OWNERDRAW}
  1111.   HDF_OWNERDRAW           = $8000;
  1112.   {$EXTERNALSYM HDF_STRING}
  1113.   HDF_STRING              = $4000;
  1114.   {$EXTERNALSYM HDF_BITMAP}
  1115.   HDF_BITMAP              = $2000;
  1116.   {$EXTERNALSYM HDF_BITMAP_ON_RIGHT}
  1117.   HDF_BITMAP_ON_RIGHT     = $1000;
  1118.   {$EXTERNALSYM HDF_IMAGE}
  1119.   HDF_IMAGE               = $0800;
  1120.  
  1121.   {$EXTERNALSYM HDM_GETITEMCOUNT}
  1122.   HDM_GETITEMCOUNT        = HDM_FIRST + 0;
  1123.  
  1124. {$EXTERNALSYM Header_GetItemCount}
  1125. function Header_GetItemCount(Header: HWnd): Integer;
  1126.  
  1127. const
  1128.   {$EXTERNALSYM HDM_INSERTITEMW}
  1129.   HDM_INSERTITEMW          = HDM_FIRST + 10;
  1130.   {$EXTERNALSYM HDM_INSERTITEMA}
  1131.   HDM_INSERTITEMA          = HDM_FIRST + 1;
  1132.   {$EXTERNALSYM HDM_INSERTITEM}
  1133.   HDM_INSERTITEM           = HDM_INSERTITEMA;
  1134.  
  1135. {$EXTERNALSYM Header_InsertItem}
  1136. function Header_InsertItem(Header: HWnd; Index: Integer;
  1137.   const Item: THDItem): Integer;
  1138.  
  1139. const
  1140.   {$EXTERNALSYM HDM_DELETEITEM}
  1141.   HDM_DELETEITEM          = HDM_FIRST + 2;
  1142.  
  1143. {$EXTERNALSYM Header_DeleteItem}
  1144. function Header_DeleteItem(Header: HWnd; Index: Integer): Bool;
  1145.  
  1146. const
  1147.   {$EXTERNALSYM HDM_GETITEMW}
  1148.   HDM_GETITEMW             = HDM_FIRST + 11;
  1149.   {$EXTERNALSYM HDM_GETITEMA}
  1150.   HDM_GETITEMA             = HDM_FIRST + 3;
  1151.   {$EXTERNALSYM HDM_GETITEM}
  1152.   HDM_GETITEM              = HDM_GETITEMA;
  1153.  
  1154. {$EXTERNALSYM Header_GetItem}
  1155. function Header_GetItem(Header: HWnd; Index: Integer;
  1156.   var Item: THDItem): Bool;
  1157.  
  1158. const
  1159.   {$EXTERNALSYM HDM_SETITEMA}
  1160.   HDM_SETITEMA            = HDM_FIRST + 4;
  1161.   {$EXTERNALSYM HDM_SETITEMW}
  1162.   HDM_SETITEMW            = HDM_FIRST + 12;
  1163.   {$EXTERNALSYM HDM_SETITEM}
  1164.   HDM_SETITEM             = HDM_SETITEMA;
  1165.  
  1166. {$EXTERNALSYM Header_SetItem}
  1167. function Header_SetItem(Header: HWnd; Index: Integer; const Item: THDItem): Bool;
  1168.  
  1169. type
  1170.   PHDLayout = ^THDLayout;
  1171.   {$EXTERNALSYM _HD_LAYOUT}
  1172.   _HD_LAYOUT = packed record
  1173.     Rect: ^TRect;
  1174.     WindowPos: PWindowPos;
  1175.   end;
  1176.   THDLayout = _HD_LAYOUT;
  1177.   {$EXTERNALSYM HD_LAYOUT}
  1178.   HD_LAYOUT = _HD_LAYOUT;
  1179.  
  1180. const
  1181.   {$EXTERNALSYM HDM_LAYOUT}
  1182.   HDM_LAYOUT              = HDM_FIRST + 5;
  1183.  
  1184. {$EXTERNALSYM Header_Layout}
  1185. function Header_Layout(Header: HWnd; Layout: PHDLayout): Bool;
  1186.  
  1187. const
  1188.   {$EXTERNALSYM HHT_NOWHERE}
  1189.   HHT_NOWHERE             = $0001;
  1190.   {$EXTERNALSYM HHT_ONHEADER}
  1191.   HHT_ONHEADER            = $0002;
  1192.   {$EXTERNALSYM HHT_ONDIVIDER}
  1193.   HHT_ONDIVIDER           = $0004;
  1194.   {$EXTERNALSYM HHT_ONDIVOPEN}
  1195.   HHT_ONDIVOPEN           = $0008;
  1196.   {$EXTERNALSYM HHT_ABOVE}
  1197.   HHT_ABOVE               = $0100;
  1198.   {$EXTERNALSYM HHT_BELOW}
  1199.   HHT_BELOW               = $0200;
  1200.   {$EXTERNALSYM HHT_TORIGHT}
  1201.   HHT_TORIGHT             = $0400;
  1202.   {$EXTERNALSYM HHT_TOLEFT}
  1203.   HHT_TOLEFT              = $0800;
  1204.  
  1205. type
  1206.   PHDHitTestInfo = ^THDHitTestInfo;
  1207.   {$EXTERNALSYM _HD_HITTESTINFO}
  1208.   _HD_HITTESTINFO = packed record
  1209.     Point: TPoint;
  1210.     Flags: Cardinal;
  1211.     Item: Integer;
  1212.   end;
  1213.   THDHitTestInfo = _HD_HITTESTINFO;
  1214.   {$EXTERNALSYM HD_HITTESTINFO}
  1215.   HD_HITTESTINFO = _HD_HITTESTINFO;
  1216.  
  1217. const
  1218.   {$EXTERNALSYM HDM_HITTEST}
  1219.   HDM_HITTEST             = HDM_FIRST + 6;
  1220.   {$EXTERNALSYM HDM_GETITEMRECT}
  1221.   HDM_GETITEMRECT         = HDM_FIRST + 7;
  1222.   {$EXTERNALSYM HDM_SETIMAGELIST}
  1223.   HDM_SETIMAGELIST        = HDM_FIRST + 8;
  1224.   {$EXTERNALSYM HDM_GETIMAGELIST}
  1225.   HDM_GETIMAGELIST        = HDM_FIRST + 9;
  1226.   {$EXTERNALSYM HDM_ORDERTOINDEX}
  1227.   HDM_ORDERTOINDEX        = HDM_FIRST + 15;
  1228.   {$EXTERNALSYM HDM_CREATEDRAGIMAGE}
  1229.   HDM_CREATEDRAGIMAGE     = HDM_FIRST + 16;  // wparam = which item = by index;
  1230.   {$EXTERNALSYM HDM_GETORDERARRAY}
  1231.   HDM_GETORDERARRAY       = HDM_FIRST + 17;
  1232.   {$EXTERNALSYM HDM_SETORDERARRAY}
  1233.   HDM_SETORDERARRAY       = HDM_FIRST + 18;
  1234.   {$EXTERNALSYM HDM_SETHOTDIVIDER}
  1235.   HDM_SETHOTDIVIDER       = HDM_FIRST + 19;
  1236.   {$EXTERNALSYM HDM_SETUNICODEFORMAT}
  1237.   HDM_SETUNICODEFORMAT    = CCM_SETUNICODEFORMAT;
  1238.   {$EXTERNALSYM HDM_GETUNICODEFORMAT}
  1239.   HDM_GETUNICODEFORMAT    = CCM_GETUNICODEFORMAT;
  1240.  
  1241. {$EXTERNALSYM Header_GetItemRect}
  1242. function Header_GetItemRect(hwnd: HWND; iItem: Integer; lprc: PRect): Integer;
  1243. {$EXTERNALSYM Header_SetImageList}
  1244. function Header_SetImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST;
  1245. {$EXTERNALSYM Header_GetImageList}
  1246. function Header_GetImageList(hwnd: HWND): HIMAGELIST;
  1247. {$EXTERNALSYM Header_OrderToIndex}
  1248. function Header_OrderToIndex(hwnd: HWND; i: Integer): Integer;
  1249. {$EXTERNALSYM Header_CreateDragImage}
  1250. function Header_CreateDragImage(hwnd: HWND; i: Integer): HIMAGELIST;
  1251. {$EXTERNALSYM Header_GetOrderArray}
  1252. function Header_GetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  1253. {$EXTERNALSYM Header_SetOrderArray}
  1254. function Header_SetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  1255.  
  1256. // lparam = int array of size HDM_GETITEMCOUNT
  1257. // the array specifies the order that all items should be displayed.
  1258. // e.g.  { 2, 0, 1}
  1259. // says the index 2 item should be shown in the 0ths position
  1260. //      index 0 should be shown in the 1st position
  1261. //      index 1 should be shown in the 2nd position
  1262.  
  1263. {$EXTERNALSYM Header_SetHotDivider}
  1264. function Header_SetHotDivider(hwnd: HWND; fPos: BOOL; dw: DWORD): Integer;
  1265.  
  1266. // convenience message for external dragdrop
  1267. // wParam = BOOL  specifying whether the lParam is a dwPos of the cursor
  1268. //              position or the index of which divider to hotlight
  1269. // lParam = depends on wParam  (-1 and wParm = FALSE turns off hotlight)
  1270.  
  1271. {$EXTERNALSYM Header_SetUnicodeFormat}
  1272. function Header_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  1273. {$EXTERNALSYM Header_GetUnicodeFormat}
  1274. function Header_GetUnicodeFormat(hwnd: HWND): Integer;
  1275.  
  1276. const
  1277.   {$EXTERNALSYM HDN_ITEMCHANGINGA}
  1278.   HDN_ITEMCHANGINGA        = HDN_FIRST-0;
  1279.   {$EXTERNALSYM HDN_ITEMCHANGEDA}
  1280.   HDN_ITEMCHANGEDA         = HDN_FIRST-1;
  1281.   {$EXTERNALSYM HDN_ITEMCLICKA}
  1282.   HDN_ITEMCLICKA           = HDN_FIRST-2;
  1283.   {$EXTERNALSYM HDN_ITEMDBLCLICKA}
  1284.   HDN_ITEMDBLCLICKA        = HDN_FIRST-3;
  1285.   {$EXTERNALSYM HDN_DIVIDERDBLCLICKA}
  1286.   HDN_DIVIDERDBLCLICKA     = HDN_FIRST-5;
  1287.   {$EXTERNALSYM HDN_BEGINTRACKA}
  1288.   HDN_BEGINTRACKA          = HDN_FIRST-6;
  1289.   {$EXTERNALSYM HDN_ENDTRACKA}
  1290.   HDN_ENDTRACKA            = HDN_FIRST-7;
  1291.   {$EXTERNALSYM HDN_TRACKA}
  1292.   HDN_TRACKA               = HDN_FIRST-8;
  1293.   {$EXTERNALSYM HDN_GETDISPINFOA}
  1294.   HDN_GETDISPINFOA         = HDN_FIRST-9;
  1295.   {$EXTERNALSYM HDN_BEGINDRAG}
  1296.   HDN_BEGINDRAG            = HDN_FIRST-10;
  1297.   {$EXTERNALSYM HDN_ENDDRAG}
  1298.   HDN_ENDDRAG              = HDN_FIRST-11;
  1299.  
  1300.   {$EXTERNALSYM HDN_ITEMCHANGINGW}
  1301.   HDN_ITEMCHANGINGW        = HDN_FIRST-20;
  1302.   {$EXTERNALSYM HDN_ITEMCHANGEDW}
  1303.   HDN_ITEMCHANGEDW         = HDN_FIRST-21;
  1304.   {$EXTERNALSYM HDN_ITEMCLICKW}
  1305.   HDN_ITEMCLICKW           = HDN_FIRST-22;
  1306.   {$EXTERNALSYM HDN_ITEMDBLCLICKW}
  1307.   HDN_ITEMDBLCLICKW        = HDN_FIRST-23;
  1308.   {$EXTERNALSYM HDN_DIVIDERDBLCLICKW}
  1309.   HDN_DIVIDERDBLCLICKW     = HDN_FIRST-25;
  1310.   {$EXTERNALSYM HDN_BEGINTRACKW}
  1311.   HDN_BEGINTRACKW          = HDN_FIRST-26;
  1312.   {$EXTERNALSYM HDN_ENDTRACKW}
  1313.   HDN_ENDTRACKW            = HDN_FIRST-27;
  1314.   {$EXTERNALSYM HDN_TRACKW}
  1315.   HDN_TRACKW               = HDN_FIRST-28;
  1316.   {$EXTERNALSYM HDN_GETDISPINFOW}
  1317.   HDN_GETDISPINFOW         = HDN_FIRST-29;
  1318.  
  1319.   {$EXTERNALSYM HDN_ITEMCHANGING}
  1320.   HDN_ITEMCHANGING        = HDN_ITEMCHANGINGA;
  1321.   {$EXTERNALSYM HDN_ITEMCHANGED}
  1322.   HDN_ITEMCHANGED         = HDN_ITEMCHANGEDA;
  1323.   {$EXTERNALSYM HDN_ITEMCLICK}
  1324.   HDN_ITEMCLICK           = HDN_ITEMCLICKA;
  1325.   {$EXTERNALSYM HDN_ITEMDBLCLICK}
  1326.   HDN_ITEMDBLCLICK        = HDN_ITEMDBLCLICKA;
  1327.   {$EXTERNALSYM HDN_DIVIDERDBLCLICK}
  1328.   HDN_DIVIDERDBLCLICK     = HDN_DIVIDERDBLCLICKA;
  1329.   {$EXTERNALSYM HDN_BEGINTRACK}
  1330.   HDN_BEGINTRACK          = HDN_BEGINTRACKA;
  1331.   {$EXTERNALSYM HDN_ENDTRACK}
  1332.   HDN_ENDTRACK            = HDN_ENDTRACKA;
  1333.   {$EXTERNALSYM HDN_TRACK}
  1334.   HDN_TRACK               = HDN_TRACKA;
  1335.   {$EXTERNALSYM HDN_GETDISPINFO}
  1336.   HDN_GETDISPINFO         = HDN_GETDISPINFOA;
  1337.  
  1338. type
  1339.   {$EXTERNALSYM tagNMHEADERA}
  1340.   tagNMHEADERA = packed record
  1341.     Hdr: TNMHdr;
  1342.     Item: Integer;
  1343.     Button: Integer;
  1344.     PItem: PHDItemA;
  1345.   end;
  1346.   {$EXTERNALSYM tagNMHEADERW}
  1347.   tagNMHEADERW = packed record
  1348.     Hdr: TNMHdr;
  1349.     Item: Integer;
  1350.     Button: Integer;
  1351.     PItem: PHDItemW;
  1352.   end;
  1353.   {$EXTERNALSYM tagNMHEADER}
  1354.   tagNMHEADER = tagNMHEADERA;
  1355.   {$EXTERNALSYM HD_NOTIFYA}
  1356.   HD_NOTIFYA = tagNMHEADERA;
  1357.   {$EXTERNALSYM HD_NOTIFYW}
  1358.   HD_NOTIFYW = tagNMHEADERW;
  1359.   {$EXTERNALSYM HD_NOTIFY}
  1360.   HD_NOTIFY = HD_NOTIFYA;
  1361.   PHDNotifyA = ^THDNotifyA;
  1362.   PHDNotifyW = ^THDNotifyW;
  1363.   PHDNotify = PHDNotifyA;
  1364.   THDNotifyA = tagNMHEADERA;
  1365.   THDNotifyW = tagNMHEADERW;
  1366.   THDNotify = THDNotifyA;
  1367.  
  1368.   {$EXTERNALSYM tagNMHDDISPINFOA}
  1369.   tagNMHDDISPINFOA = packed record
  1370.     hdr: TNMHdr;
  1371.     iItem: Integer;
  1372.     mask: UINT;
  1373.     pszText: PAnsiChar;
  1374.     cchTextMax: Integer;
  1375.     iImage: Integer;
  1376.     lParam: LPARAM;
  1377.   end;
  1378.   {$EXTERNALSYM tagNMHDDISPINFOW}
  1379.   tagNMHDDISPINFOW = packed record
  1380.     hdr: TNMHdr;
  1381.     iItem: Integer;
  1382.     mask: UINT;
  1383.     pszText: PWideChar;
  1384.     cchTextMax: Integer;
  1385.     iImage: Integer;
  1386.     lParam: LPARAM;
  1387.   end;
  1388.   {$EXTERNALSYM tagNMHDDISPINFO}
  1389.   tagNMHDDISPINFO = tagNMHDDISPINFOA;
  1390.   PNMHDispInfoA = ^TNMHDispInfoA;
  1391.   PNMHDispInfoW = ^TNMHDispInfoW;
  1392.   PNMHDispInfo = PNMHDispInfoA;
  1393.   TNMHDispInfoA = tagNMHDDISPINFOA;
  1394.   TNMHDispInfoW = tagNMHDDISPINFOW;
  1395.   TNMHDispInfo = TNMHDispInfoA;
  1396.  
  1397.  
  1398. { ====== TOOLBAR CONTROL =================== }
  1399.  
  1400. const
  1401.   {$EXTERNALSYM TOOLBARCLASSNAME}
  1402.   TOOLBARCLASSNAME = 'ToolbarWindow32';
  1403.  
  1404. type
  1405.   PTBButton = ^TTBButton;
  1406.   {$EXTERNALSYM _TBBUTTON}
  1407.   _TBBUTTON = packed record
  1408.     iBitmap: Integer;
  1409.     idCommand: Integer;
  1410.     fsState: Byte;
  1411.     fsStyle: Byte;
  1412.     bReserved: array[1..2] of Byte;
  1413.     dwData: Longint;
  1414.     iString: Integer;
  1415.   end;
  1416.   TTBButton = _TBBUTTON;
  1417.  
  1418.   PColorMap = ^TColorMap;
  1419.   {$EXTERNALSYM _COLORMAP}
  1420.   _COLORMAP = packed record
  1421.     cFrom: TColorRef;
  1422.     cTo: TColorRef;
  1423.   end;
  1424.   TColorMap = _COLORMAP;
  1425.   {$EXTERNALSYM COLORMAP}
  1426.   COLORMAP = _COLORMAP;
  1427.  
  1428. {$EXTERNALSYM CreateToolBarEx}
  1429. function CreateToolBarEx(Wnd: HWnd; ws: Longint; ID: UINT;
  1430.   Bitmaps: Integer; BMInst: THandle; BMID: Cardinal; Buttons: PTBButton;
  1431.   NumButtons: Integer; dxButton, dyButton: Integer;
  1432.   dxBitmap, dyBitmap: Integer; StructSize: UINT): HWnd; stdcall;
  1433.  
  1434. {$EXTERNALSYM CreateMappedBitmap}
  1435. function CreateMappedBitmap(Instance: THandle; Bitmap: Integer;
  1436.   Flags: UINT; ColorMap: PColorMap; NumMaps: Integer): HBitmap; stdcall;
  1437.  
  1438. const
  1439.  
  1440.   {$EXTERNALSYM CMB_MASKED}
  1441.   CMB_MASKED              = $02;
  1442.  
  1443.   {$EXTERNALSYM TBSTATE_CHECKED}
  1444.   TBSTATE_CHECKED         = $01;
  1445.   {$EXTERNALSYM TBSTATE_PRESSED}
  1446.   TBSTATE_PRESSED         = $02;
  1447.   {$EXTERNALSYM TBSTATE_ENABLED}
  1448.   TBSTATE_ENABLED         = $04;
  1449.   {$EXTERNALSYM TBSTATE_HIDDEN}
  1450.   TBSTATE_HIDDEN          = $08;
  1451.   {$EXTERNALSYM TBSTATE_INDETERMINATE}
  1452.   TBSTATE_INDETERMINATE   = $10;
  1453.   {$EXTERNALSYM TBSTATE_WRAP}
  1454.   TBSTATE_WRAP            = $20;
  1455.   {$EXTERNALSYM TBSTATE_ELLIPSES}
  1456.   TBSTATE_ELLIPSES        = $40;
  1457.   {$EXTERNALSYM TBSTATE_MARKED}
  1458.   TBSTATE_MARKED          = $80;
  1459.  
  1460.   {$EXTERNALSYM TBSTYLE_BUTTON}
  1461.   TBSTYLE_BUTTON          = $00;
  1462.   {$EXTERNALSYM TBSTYLE_SEP}
  1463.   TBSTYLE_SEP             = $01;
  1464.   {$EXTERNALSYM TBSTYLE_CHECK}
  1465.   TBSTYLE_CHECK           = $02;
  1466.   {$EXTERNALSYM TBSTYLE_GROUP}
  1467.   TBSTYLE_GROUP           = $04;
  1468.   {$EXTERNALSYM TBSTYLE_CHECKGROUP}
  1469.   TBSTYLE_CHECKGROUP      = TBSTYLE_GROUP or TBSTYLE_CHECK;
  1470.   {$EXTERNALSYM TBSTYLE_DROPDOWN}
  1471.   TBSTYLE_DROPDOWN        = $08;
  1472.   {$EXTERNALSYM TBSTYLE_AUTOSIZE}
  1473.   TBSTYLE_AUTOSIZE        = $0010; // automatically calculate the cx of the button
  1474.   {$EXTERNALSYM TBSTYLE_NOPREFIX}
  1475.   TBSTYLE_NOPREFIX        = $0020; // if this button should not have accel prefix
  1476.  
  1477.   {$EXTERNALSYM TBSTYLE_TOOLTIPS}
  1478.   TBSTYLE_TOOLTIPS        = $0100;
  1479.   {$EXTERNALSYM TBSTYLE_WRAPABLE}
  1480.   TBSTYLE_WRAPABLE        = $0200;
  1481.   {$EXTERNALSYM TBSTYLE_ALTDRAG}
  1482.   TBSTYLE_ALTDRAG         = $0400;
  1483.   {$EXTERNALSYM TBSTYLE_FLAT}
  1484.   TBSTYLE_FLAT            = $0800;
  1485.   {$EXTERNALSYM TBSTYLE_LIST}
  1486.   TBSTYLE_LIST            = $1000;
  1487.   {$EXTERNALSYM TBSTYLE_CUSTOMERASE}
  1488.   TBSTYLE_CUSTOMERASE     = $2000;
  1489.   {$EXTERNALSYM TBSTYLE_REGISTERDROP}
  1490.   TBSTYLE_REGISTERDROP    = $4000;
  1491.   {$EXTERNALSYM TBSTYLE_TRANSPARENT}
  1492.   TBSTYLE_TRANSPARENT     = $8000;
  1493.   {$EXTERNALSYM TBSTYLE_EX_DRAWDDARROWS}
  1494.   TBSTYLE_EX_DRAWDDARROWS = $00000001;
  1495.  
  1496. type
  1497.   // Custom Draw Structure
  1498.   {$EXTERNALSYM _NMTBCUSTOMDRAW}
  1499.   _NMTBCUSTOMDRAW = packed record
  1500.     nmcd: TNMCustomDraw;
  1501.     hbrMonoDither: HBRUSH;
  1502.     hbrLines: HBRUSH;                // For drawing lines on buttons
  1503.     hpenLines: HPEN;                 // For drawing lines on buttons
  1504.     clrText: COLORREF;               // Color of text
  1505.     clrMark: COLORREF;               // Color of text bk when marked. (only if TBSTATE_MARKED)
  1506.     clrTextHighlight: COLORREF;      // Color of text when highlighted
  1507.     clrBtnFace: COLORREF;            // Background of the button
  1508.     clrBtnHighlight: COLORREF;       // 3D highlight
  1509.     clrHighlightHotTrack: COLORREF;  // In conjunction with fHighlightHotTrack
  1510.                                      // will cause button to highlight like a menu
  1511.     rcText: TRect;                   // Rect for text
  1512.     nStringBkMode: Integer;
  1513.     nHLStringBkMode: Integer;
  1514.   end;
  1515.   PNMTBCustomDraw = ^TNMTBCustomDraw;
  1516.   TNMTBCustomDraw = _NMTBCUSTOMDRAW;
  1517.  
  1518. const
  1519.   // Toolbar custom draw return flags
  1520.   {$EXTERNALSYM TBCDRF_NOEDGES}
  1521.   TBCDRF_NOEDGES              = $00010000;  // Don't draw button edges
  1522.   {$EXTERNALSYM TBCDRF_HILITEHOTTRACK}
  1523.   TBCDRF_HILITEHOTTRACK       = $00020000;  // Use color of the button bk when hottracked
  1524.   {$EXTERNALSYM TBCDRF_NOOFFSET}
  1525.   TBCDRF_NOOFFSET             = $00040000;  // Don't offset button if pressed
  1526.   {$EXTERNALSYM TBCDRF_NOMARK}
  1527.   TBCDRF_NOMARK               = $00080000;  // Don't draw default highlight of image/text for TBSTATE_MARKED
  1528.   {$EXTERNALSYM TBCDRF_NOETCHEDEFFECT}
  1529.   TBCDRF_NOETCHEDEFFECT       = $00100000;  // Don't draw etched effect for disabled items
  1530.  
  1531.   {$EXTERNALSYM TB_ENABLEBUTTON}
  1532.   TB_ENABLEBUTTON         = WM_USER + 1;
  1533.   {$EXTERNALSYM TB_CHECKBUTTON}
  1534.   TB_CHECKBUTTON          = WM_USER + 2;
  1535.   {$EXTERNALSYM TB_PRESSBUTTON}
  1536.   TB_PRESSBUTTON          = WM_USER + 3;
  1537.   {$EXTERNALSYM TB_HIDEBUTTON}
  1538.   TB_HIDEBUTTON           = WM_USER + 4;
  1539.   {$EXTERNALSYM TB_INDETERMINATE}
  1540.   TB_INDETERMINATE        = WM_USER + 5;
  1541.   {$EXTERNALSYM TB_MARKBUTTON}
  1542.   TB_MARKBUTTON           = WM_USER + 6;
  1543.   {$EXTERNALSYM TB_ISBUTTONENABLED}
  1544.   TB_ISBUTTONENABLED      = WM_USER + 9;
  1545.   {$EXTERNALSYM TB_ISBUTTONCHECKED}
  1546.   TB_ISBUTTONCHECKED      = WM_USER + 10;
  1547.   {$EXTERNALSYM TB_ISBUTTONPRESSED}
  1548.   TB_ISBUTTONPRESSED      = WM_USER + 11;
  1549.   {$EXTERNALSYM TB_ISBUTTONHIDDEN}
  1550.   TB_ISBUTTONHIDDEN       = WM_USER + 12;
  1551.   {$EXTERNALSYM TB_ISBUTTONINDETERMINATE}
  1552.   TB_ISBUTTONINDETERMINATE = WM_USER + 13;
  1553.   {$EXTERNALSYM TB_ISBUTTONHIGHLIGHTED}
  1554.   TB_ISBUTTONHIGHLIGHTED   = WM_USER + 14;
  1555.   {$EXTERNALSYM TB_SETSTATE}
  1556.   TB_SETSTATE             = WM_USER + 17;
  1557.   {$EXTERNALSYM TB_GETSTATE}
  1558.   TB_GETSTATE             = WM_USER + 18;
  1559.   {$EXTERNALSYM TB_ADDBITMAP}
  1560.   TB_ADDBITMAP            = WM_USER + 19;
  1561.  
  1562. type
  1563.   PTBAddBitmap = ^TTBAddBitmap;
  1564.   {$EXTERNALSYM tagTBADDBITMAP}
  1565.   tagTBADDBITMAP = packed record
  1566.     hInst: THandle;
  1567.     nID: UINT;
  1568.   end;
  1569.   TTBAddBitmap = tagTBADDBITMAP;
  1570.   {$EXTERNALSYM TBADDBITMAP}
  1571.   TBADDBITMAP = tagTBADDBITMAP;
  1572.  
  1573. const
  1574.   {$EXTERNALSYM HINST_COMMCTRL}
  1575.   HINST_COMMCTRL = THandle(-1);
  1576.  
  1577.   {$EXTERNALSYM IDB_STD_SMALL_COLOR}
  1578.   IDB_STD_SMALL_COLOR     = 0;
  1579.   {$EXTERNALSYM IDB_STD_LARGE_COLOR}
  1580.   IDB_STD_LARGE_COLOR     = 1;
  1581.   {$EXTERNALSYM IDB_VIEW_SMALL_COLOR}
  1582.   IDB_VIEW_SMALL_COLOR    = 4;
  1583.   {$EXTERNALSYM IDB_VIEW_LARGE_COLOR}
  1584.   IDB_VIEW_LARGE_COLOR    = 5;
  1585.   {$EXTERNALSYM IDB_HIST_SMALL_COLOR}
  1586.   IDB_HIST_SMALL_COLOR    = 8;
  1587.   {$EXTERNALSYM IDB_HIST_LARGE_COLOR}
  1588.   IDB_HIST_LARGE_COLOR    = 9;
  1589.  
  1590. { icon indexes for standard bitmap }
  1591.   {$EXTERNALSYM STD_CUT}
  1592.   STD_CUT                 = 0;
  1593.   {$EXTERNALSYM STD_COPY}
  1594.   STD_COPY                = 1;
  1595.   {$EXTERNALSYM STD_PASTE}
  1596.   STD_PASTE               = 2;
  1597.   {$EXTERNALSYM STD_UNDO}
  1598.   STD_UNDO                = 3;
  1599.   {$EXTERNALSYM STD_REDOW}
  1600.   STD_REDOW               = 4;
  1601.   {$EXTERNALSYM STD_DELETE}
  1602.   STD_DELETE              = 5;
  1603.   {$EXTERNALSYM STD_FILENEW}
  1604.   STD_FILENEW             = 6;
  1605.   {$EXTERNALSYM STD_FILEOPEN}
  1606.   STD_FILEOPEN            = 7;
  1607.   {$EXTERNALSYM STD_FILESAVE}
  1608.   STD_FILESAVE            = 8;
  1609.   {$EXTERNALSYM STD_PRINTPRE}
  1610.   STD_PRINTPRE            = 9;
  1611.   {$EXTERNALSYM STD_PROPERTIES}
  1612.   STD_PROPERTIES          = 10;
  1613.   {$EXTERNALSYM STD_HELP}
  1614.   STD_HELP                = 11;
  1615.   {$EXTERNALSYM STD_FIND}
  1616.   STD_FIND                = 12;
  1617.   {$EXTERNALSYM STD_REPLACE}
  1618.   STD_REPLACE             = 13;
  1619.   {$EXTERNALSYM STD_PRINT}
  1620.   STD_PRINT               = 14;
  1621.  
  1622. { icon indexes for standard view bitmap }
  1623.  
  1624.   {$EXTERNALSYM VIEW_LARGEICONS}
  1625.   VIEW_LARGEICONS         = 0;
  1626.   {$EXTERNALSYM VIEW_SMALLICONS}
  1627.   VIEW_SMALLICONS         = 1;
  1628.   {$EXTERNALSYM VIEW_LIST}
  1629.   VIEW_LIST               = 2;
  1630.   {$EXTERNALSYM VIEW_DETAILS}
  1631.   VIEW_DETAILS            = 3;
  1632.   {$EXTERNALSYM VIEW_SORTNAME}
  1633.   VIEW_SORTNAME           = 4;
  1634.   {$EXTERNALSYM VIEW_SORTSIZE}
  1635.   VIEW_SORTSIZE           = 5;
  1636.   {$EXTERNALSYM VIEW_SORTDATE}
  1637.   VIEW_SORTDATE           = 6;
  1638.   {$EXTERNALSYM VIEW_SORTTYPE}
  1639.   VIEW_SORTTYPE           = 7;
  1640.   {$EXTERNALSYM VIEW_PARENTFOLDER}
  1641.   VIEW_PARENTFOLDER       = 8;
  1642.   {$EXTERNALSYM VIEW_NETCONNECT}
  1643.   VIEW_NETCONNECT         = 9;
  1644.   {$EXTERNALSYM VIEW_NETDISCONNECT}
  1645.   VIEW_NETDISCONNECT      = 10;
  1646.   {$EXTERNALSYM VIEW_NEWFOLDER}
  1647.   VIEW_NEWFOLDER          = 11;
  1648.   {$EXTERNALSYM VIEW_VIEWMENU}
  1649.   VIEW_VIEWMENU           = 12;
  1650.  
  1651. { icon indexes for history bitmap }
  1652.  
  1653.   {$EXTERNALSYM HIST_BACK}
  1654.   HIST_BACK               = 0;
  1655.   {$EXTERNALSYM HIST_FORWARD}
  1656.   HIST_FORWARD            = 1;
  1657.   {$EXTERNALSYM HIST_FAVORITES}
  1658.   HIST_FAVORITES          = 2;
  1659.   {$EXTERNALSYM HIST_ADDTOFAVORITES}
  1660.   HIST_ADDTOFAVORITES     = 3;
  1661.   {$EXTERNALSYM HIST_VIEWTREE}
  1662.   HIST_VIEWTREE           = 4;
  1663.  
  1664.   {$EXTERNALSYM TB_ADDBUTTONSA}
  1665.   TB_ADDBUTTONSA          = WM_USER + 20;
  1666.   {$EXTERNALSYM TB_INSERTBUTTONA}
  1667.   TB_INSERTBUTTONA        = WM_USER + 21;
  1668.   {$EXTERNALSYM TB_DELETEBUTTON}
  1669.   TB_DELETEBUTTON         = WM_USER + 22;
  1670.   {$EXTERNALSYM TB_GETBUTTON}
  1671.   TB_GETBUTTON            = WM_USER + 23;
  1672.   {$EXTERNALSYM TB_BUTTONCOUNT}
  1673.   TB_BUTTONCOUNT          = WM_USER + 24;
  1674.   {$EXTERNALSYM TB_COMMANDTOINDEX}
  1675.   TB_COMMANDTOINDEX       = WM_USER + 25;
  1676.  
  1677. type
  1678.   PTBSaveParamsA = ^TTBSaveParamsA;
  1679.   PTBSaveParamsW = ^TTBSaveParamsW;
  1680.   PTBSaveParams = PTBSaveParamsA;
  1681.   {$EXTERNALSYM tagTBSAVEPARAMSA}
  1682.   tagTBSAVEPARAMSA = packed record
  1683.     hkr: THandle;
  1684.     pszSubKey: PAnsiChar;
  1685.     pszValueName: PAnsiChar;
  1686.   end;
  1687.   {$EXTERNALSYM tagTBSAVEPARAMSW}
  1688.   tagTBSAVEPARAMSW = packed record
  1689.     hkr: THandle;
  1690.     pszSubKey: PWideChar;
  1691.     pszValueName: PWideChar;
  1692.   end;
  1693.   {$EXTERNALSYM tagTBSAVEPARAMS}
  1694.   tagTBSAVEPARAMS = tagTBSAVEPARAMSA;
  1695.   TTBSaveParamsA = tagTBSAVEPARAMSA;
  1696.   TTBSaveParamsW = tagTBSAVEPARAMSW;
  1697.   TTBSaveParams = TTBSaveParamsA;
  1698.   {$EXTERNALSYM TBSAVEPARAMSA}
  1699.   TBSAVEPARAMSA = tagTBSAVEPARAMSA;
  1700.   {$EXTERNALSYM TBSAVEPARAMSW}
  1701.   TBSAVEPARAMSW = tagTBSAVEPARAMSW;
  1702.   {$EXTERNALSYM TBSAVEPARAMS}
  1703.   TBSAVEPARAMS = TBSAVEPARAMSA;
  1704.  
  1705. const
  1706.   {$EXTERNALSYM TB_SAVERESTOREA}
  1707.   TB_SAVERESTOREA          = WM_USER + 26;
  1708.   {$EXTERNALSYM TB_ADDSTRINGA}
  1709.   TB_ADDSTRINGA            = WM_USER + 28;
  1710.   {$EXTERNALSYM TB_GETBUTTONTEXTA}
  1711.   TB_GETBUTTONTEXTA        = WM_USER + 45;
  1712.   {$EXTERNALSYM TBN_GETBUTTONINFOA}
  1713.   TBN_GETBUTTONINFOA       = TBN_FIRST-0;
  1714.  
  1715.   {$EXTERNALSYM TB_SAVERESTOREW}
  1716.   TB_SAVERESTOREW          = WM_USER + 76;
  1717.   {$EXTERNALSYM TB_ADDSTRINGW}
  1718.   TB_ADDSTRINGW            = WM_USER + 77;
  1719.   {$EXTERNALSYM TB_GETBUTTONTEXTW}
  1720.   TB_GETBUTTONTEXTW        = WM_USER + 75;
  1721.   {$EXTERNALSYM TBN_GETBUTTONINFOW}
  1722.   TBN_GETBUTTONINFOW       = TBN_FIRST-20;
  1723.  
  1724.   {$EXTERNALSYM TB_SAVERESTORE}
  1725.   TB_SAVERESTORE          = TB_SAVERESTOREA;
  1726.   {$EXTERNALSYM TB_ADDSTRING}
  1727.   TB_ADDSTRING            = TB_ADDSTRINGA;
  1728.   {$EXTERNALSYM TB_GETBUTTONTEXT}
  1729.   TB_GETBUTTONTEXT        = TB_GETBUTTONTEXTA;
  1730.   {$EXTERNALSYM TBN_GETBUTTONINFO}
  1731.   TBN_GETBUTTONINFO       = TBN_GETBUTTONINFOA;
  1732.  
  1733.   {$EXTERNALSYM TB_CUSTOMIZE}
  1734.   TB_CUSTOMIZE            = WM_USER + 27;
  1735.   {$EXTERNALSYM TB_GETITEMRECT}
  1736.   TB_GETITEMRECT          = WM_USER + 29;
  1737.   {$EXTERNALSYM TB_BUTTONSTRUCTSIZE}
  1738.   TB_BUTTONSTRUCTSIZE     = WM_USER + 30;
  1739.   {$EXTERNALSYM TB_SETBUTTONSIZE}
  1740.   TB_SETBUTTONSIZE        = WM_USER + 31;
  1741.   {$EXTERNALSYM TB_SETBITMAPSIZE}
  1742.   TB_SETBITMAPSIZE        = WM_USER + 32;
  1743.   {$EXTERNALSYM TB_AUTOSIZE}
  1744.   TB_AUTOSIZE             = WM_USER + 33;
  1745.   {$EXTERNALSYM TB_GETTOOLTIPS}
  1746.   TB_GETTOOLTIPS          = WM_USER + 35;
  1747.   {$EXTERNALSYM TB_SETTOOLTIPS}
  1748.   TB_SETTOOLTIPS          = WM_USER + 36;
  1749.   {$EXTERNALSYM TB_SETPARENT}
  1750.   TB_SETPARENT            = WM_USER + 37;
  1751.   {$EXTERNALSYM TB_SETROWS}
  1752.   TB_SETROWS              = WM_USER + 39;
  1753.   {$EXTERNALSYM TB_GETROWS}
  1754.   TB_GETROWS              = WM_USER + 40;
  1755.   {$EXTERNALSYM TB_SETCMDID}
  1756.   TB_SETCMDID             = WM_USER + 42;
  1757.   {$EXTERNALSYM TB_CHANGEBITMAP}
  1758.   TB_CHANGEBITMAP         = WM_USER + 43;
  1759.   {$EXTERNALSYM TB_GETBITMAP}
  1760.   TB_GETBITMAP            = WM_USER + 44;
  1761.   {$EXTERNALSYM TB_REPLACEBITMAP}
  1762.   TB_REPLACEBITMAP        = WM_USER + 46;
  1763.   {$EXTERNALSYM TB_SETINDENT}
  1764.   TB_SETINDENT            = WM_USER + 47;
  1765.   {$EXTERNALSYM TB_SETIMAGELIST}
  1766.   TB_SETIMAGELIST         = WM_USER + 48;
  1767.   {$EXTERNALSYM TB_GETIMAGELIST}
  1768.   TB_GETIMAGELIST         = WM_USER + 49;
  1769.   {$EXTERNALSYM TB_LOADIMAGES}
  1770.   TB_LOADIMAGES           = WM_USER + 50;
  1771.   {$EXTERNALSYM TB_GETRECT}
  1772.   TB_GETRECT              = WM_USER + 51; { wParam is the Cmd instead of index }
  1773.   {$EXTERNALSYM TB_SETHOTIMAGELIST}
  1774.   TB_SETHOTIMAGELIST      = WM_USER + 52;
  1775.   {$EXTERNALSYM TB_GETHOTIMAGELIST}
  1776.   TB_GETHOTIMAGELIST      = WM_USER + 53;
  1777.   {$EXTERNALSYM TB_SETDISABLEDIMAGELIST}
  1778.   TB_SETDISABLEDIMAGELIST = WM_USER + 54;
  1779.   {$EXTERNALSYM TB_GETDISABLEDIMAGELIST}
  1780.   TB_GETDISABLEDIMAGELIST = WM_USER + 55;
  1781.   {$EXTERNALSYM TB_SETSTYLE}
  1782.   TB_SETSTYLE             = WM_USER + 56;
  1783.   {$EXTERNALSYM TB_GETSTYLE}
  1784.   TB_GETSTYLE             = WM_USER + 57;
  1785.   {$EXTERNALSYM TB_GETBUTTONSIZE}
  1786.   TB_GETBUTTONSIZE        = WM_USER + 58;
  1787.   {$EXTERNALSYM TB_SETBUTTONWIDTH}
  1788.   TB_SETBUTTONWIDTH       = WM_USER + 59;
  1789.   {$EXTERNALSYM TB_SETMAXTEXTROWS}
  1790.   TB_SETMAXTEXTROWS       = WM_USER + 60;
  1791.   {$EXTERNALSYM TB_GETTEXTROWS}
  1792.   TB_GETTEXTROWS          = WM_USER + 61;
  1793.  
  1794.   {$EXTERNALSYM TB_GETOBJECT}
  1795.   TB_GETOBJECT            = WM_USER + 62;  // wParam == IID, lParam void **ppv
  1796.   {$EXTERNALSYM TB_GETHOTITEM}
  1797.   TB_GETHOTITEM           = WM_USER + 71;
  1798.   {$EXTERNALSYM TB_SETHOTITEM}
  1799.   TB_SETHOTITEM           = WM_USER + 72;  // wParam == iHotItem
  1800.   {$EXTERNALSYM TB_SETANCHORHIGHLIGHT}
  1801.   TB_SETANCHORHIGHLIGHT   = WM_USER + 73;  // wParam == TRUE/FALSE
  1802.   {$EXTERNALSYM TB_GETANCHORHIGHLIGHT}
  1803.   TB_GETANCHORHIGHLIGHT   = WM_USER + 74;
  1804.   {$EXTERNALSYM TB_MAPACCELERATORA}
  1805.   TB_MAPACCELERATORA      = WM_USER + 78;  // wParam == ch, lParam int * pidBtn
  1806.  
  1807. type
  1808.   {$EXTERNALSYM TBINSERTMARK}
  1809.   TBINSERTMARK = packed record
  1810.     iButton: Integer;
  1811.     dwFlags: DWORD;
  1812.   end;
  1813.   PTBInsertMark = ^TTBInsertMark;
  1814.   TTBInsertMark = TBINSERTMARK;
  1815.  
  1816. const
  1817.   {$EXTERNALSYM TBIMHT_AFTER}
  1818.   TBIMHT_AFTER      = $00000001; // TRUE = insert After iButton, otherwise before
  1819.   {$EXTERNALSYM TBIMHT_BACKGROUND}
  1820.   TBIMHT_BACKGROUND = $00000002; // TRUE iff missed buttons completely
  1821.  
  1822.   {$EXTERNALSYM TB_GETINSERTMARK}
  1823.   TB_GETINSERTMARK        = WM_USER + 79;  // lParam == LPTBINSERTMARK
  1824.   {$EXTERNALSYM TB_SETINSERTMARK}
  1825.   TB_SETINSERTMARK        = WM_USER + 80;  // lParam == LPTBINSERTMARK
  1826.   {$EXTERNALSYM TB_INSERTMARKHITTEST}
  1827.   TB_INSERTMARKHITTEST    = WM_USER + 81;  // wParam == LPPOINT lParam == LPTBINSERTMARK
  1828.   {$EXTERNALSYM TB_MOVEBUTTON}
  1829.   TB_MOVEBUTTON           = WM_USER + 82;
  1830.   {$EXTERNALSYM TB_GETMAXSIZE}
  1831.   TB_GETMAXSIZE           = WM_USER + 83;  // lParam == LPSIZE
  1832.   {$EXTERNALSYM TB_SETEXTENDEDSTYLE}
  1833.   TB_SETEXTENDEDSTYLE     = WM_USER + 84;  // For TBSTYLE_EX_*
  1834.   {$EXTERNALSYM TB_GETEXTENDEDSTYLE}
  1835.   TB_GETEXTENDEDSTYLE     = WM_USER + 85;  // For TBSTYLE_EX_*
  1836.   {$EXTERNALSYM TB_GETPADDING}
  1837.   TB_GETPADDING           = WM_USER + 86;
  1838.   {$EXTERNALSYM TB_SETPADDING}
  1839.   TB_SETPADDING           = WM_USER + 87;
  1840.   {$EXTERNALSYM TB_SETINSERTMARKCOLOR}
  1841.   TB_SETINSERTMARKCOLOR   = WM_USER + 88;
  1842.   {$EXTERNALSYM TB_GETINSERTMARKCOLOR}
  1843.   TB_GETINSERTMARKCOLOR   = WM_USER + 89;
  1844.  
  1845.   {$EXTERNALSYM TB_SETCOLORSCHEME}
  1846.   TB_SETCOLORSCHEME       = CCM_SETCOLORSCHEME;  // lParam is color scheme
  1847.   {$EXTERNALSYM TB_GETCOLORSCHEME}
  1848.   TB_GETCOLORSCHEME       = CCM_GETCOLORSCHEME;    // fills in COLORSCHEME pointed to by lParam
  1849.  
  1850.   {$EXTERNALSYM TB_SETUNICODEFORMAT}
  1851.   TB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  1852.   {$EXTERNALSYM TB_GETUNICODEFORMAT}
  1853.   TB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  1854.  
  1855.   {$EXTERNALSYM TB_MAPACCELERATORW}
  1856.   TB_MAPACCELERATORW      = WM_USER + 90;  // wParam == ch, lParam int * pidBtn
  1857.   {$EXTERNALSYM TB_MAPACCELERATOR}
  1858.   TB_MAPACCELERATOR       = TB_MAPACCELERATORA;
  1859.  
  1860. type
  1861.   {$EXTERNALSYM TBREPLACEBITMAP}
  1862.   TBREPLACEBITMAP = packed record
  1863.     hInstOld: THandle;
  1864.     nIDOld: Cardinal;
  1865.     hInstNew: THandle;
  1866.     nIDNew: Cardinal;
  1867.     nButtons: Integer;
  1868.   end;
  1869.   PTBReplaceBitmap = ^TTBReplaceBitmap;
  1870.   TTBReplaceBitmap = TBREPLACEBITMAP;
  1871.  
  1872. const  
  1873.   {$EXTERNALSYM TBBF_LARGE}
  1874.   TBBF_LARGE              = $0001;
  1875.  
  1876.   {$EXTERNALSYM TB_GETBITMAPFLAGS}
  1877.   TB_GETBITMAPFLAGS       = WM_USER + 41;
  1878.  
  1879.   {$EXTERNALSYM TBIF_IMAGE}
  1880.   TBIF_IMAGE              = $00000001;
  1881.   {$EXTERNALSYM TBIF_TEXT}
  1882.   TBIF_TEXT               = $00000002;
  1883.   {$EXTERNALSYM TBIF_STATE}
  1884.   TBIF_STATE              = $00000004;
  1885.   {$EXTERNALSYM TBIF_STYLE}
  1886.   TBIF_STYLE              = $00000008;
  1887.   {$EXTERNALSYM TBIF_LPARAM}
  1888.   TBIF_LPARAM             = $00000010;
  1889.   {$EXTERNALSYM TBIF_COMMAND}
  1890.   TBIF_COMMAND            = $00000020;
  1891.   {$EXTERNALSYM TBIF_SIZE}
  1892.   TBIF_SIZE               = $00000040;
  1893.  
  1894. type
  1895.   {$EXTERNALSYM TBBUTTONINFOA}
  1896.   TBBUTTONINFOA = packed record
  1897.     cbSize: UINT;
  1898.     dwMask: DWORD;
  1899.     idCommand: Integer;
  1900.     iImage: Integer;
  1901.     fsState: Byte;
  1902.     fsStyle: Byte;
  1903.     cx: Word;
  1904.     lParam: DWORD;
  1905.     pszText: PAnsiChar;
  1906.     cchText: Integer;
  1907.   end;
  1908.   {$EXTERNALSYM TBBUTTONINFOW}
  1909.   TBBUTTONINFOW = packed record
  1910.     cbSize: UINT;
  1911.     dwMask: DWORD;
  1912.     idCommand: Integer;
  1913.     iImage: Integer;
  1914.     fsState: Byte;
  1915.     fsStyle: Byte;
  1916.     cx: Word;
  1917.     lParam: DWORD;
  1918.     pszText: PWideChar;
  1919.     cchText: Integer;
  1920.   end;
  1921.   {$EXTERNALSYM TBBUTTONINFO}
  1922.   TBBUTTONINFO = TBBUTTONINFOA;
  1923.   PTBButtonInfoA = ^TTBButtonInfoA;
  1924.   PTBButtonInfoW = ^TTBButtonInfoW;
  1925.   PTBButtonInfo = PTBButtonInfoA;
  1926.   TTBButtonInfoA = TBBUTTONINFOA;
  1927.   TTBButtonInfoW = TBBUTTONINFOW;
  1928.   TTBButtonInfo = TTBButtonInfoA;
  1929.  
  1930. const
  1931.   // BUTTONINFO APIs do NOT support the string pool.
  1932.   {$EXTERNALSYM TB_GETBUTTONINFOW}
  1933.   TB_GETBUTTONINFOW        = WM_USER + 63;
  1934.   {$EXTERNALSYM TB_SETBUTTONINFOW}
  1935.   TB_SETBUTTONINFOW        = WM_USER + 64;
  1936.   {$EXTERNALSYM TB_GETBUTTONINFOA}
  1937.   TB_GETBUTTONINFOA        = WM_USER + 65;
  1938.   {$EXTERNALSYM TB_SETBUTTONINFOA}
  1939.   TB_SETBUTTONINFOA        = WM_USER + 66;
  1940.   {$EXTERNALSYM TB_GETBUTTONINFO}
  1941.   TB_GETBUTTONINFO         = TB_GETBUTTONINFOA;
  1942.   {$EXTERNALSYM TB_SETBUTTONINFO}
  1943.   TB_SETBUTTONINFO         = TB_SETBUTTONINFOA;
  1944.  
  1945.   {$EXTERNALSYM TB_INSERTBUTTONW}
  1946.   TB_INSERTBUTTONW        = WM_USER + 67;
  1947.   {$EXTERNALSYM TB_ADDBUTTONSW}
  1948.   TB_ADDBUTTONSW          = WM_USER + 68;
  1949.  
  1950.   {$EXTERNALSYM TB_HITTEST}
  1951.   TB_HITTEST              = WM_USER + 69;
  1952.  
  1953.   // New post Win95/NT4 for InsertButton and AddButton.  if iString member
  1954.   // is a pointer to a string, it will be handled as a string like listview
  1955.   // = although LPSTR_TEXTCALLBACK is not supported;.
  1956.   {$EXTERNALSYM TB_INSERTBUTTON}
  1957.   TB_INSERTBUTTON         = TB_INSERTBUTTONA;
  1958.   {$EXTERNALSYM TB_ADDBUTTONS}
  1959.   TB_ADDBUTTONS           = TB_ADDBUTTONSA;
  1960.  
  1961.   {$EXTERNALSYM TB_SETDRAWTEXTFLAGS}
  1962.   TB_SETDRAWTEXTFLAGS     = WM_USER + 70;  // wParam == mask lParam == bit values
  1963.  
  1964.   {$EXTERNALSYM TBN_BEGINDRAG}
  1965.   TBN_BEGINDRAG           = TBN_FIRST-1;
  1966.   {$EXTERNALSYM TBN_ENDDRAG}
  1967.   TBN_ENDDRAG             = TBN_FIRST-2;
  1968.   {$EXTERNALSYM TBN_BEGINADJUST}
  1969.   TBN_BEGINADJUST         = TBN_FIRST-3;
  1970.   {$EXTERNALSYM TBN_ENDADJUST}
  1971.   TBN_ENDADJUST           = TBN_FIRST-4;
  1972.   {$EXTERNALSYM TBN_RESET}
  1973.   TBN_RESET               = TBN_FIRST-5;
  1974.   {$EXTERNALSYM TBN_QUERYINSERT}
  1975.   TBN_QUERYINSERT         = TBN_FIRST-6;
  1976.   {$EXTERNALSYM TBN_QUERYDELETE}
  1977.   TBN_QUERYDELETE         = TBN_FIRST-7;
  1978.   {$EXTERNALSYM TBN_TOOLBARCHANGE}
  1979.   TBN_TOOLBARCHANGE       = TBN_FIRST-8;
  1980.   {$EXTERNALSYM TBN_CUSTHELP}
  1981.   TBN_CUSTHELP            = TBN_FIRST-9;
  1982.   {$EXTERNALSYM TBN_DROPDOWN}
  1983.   TBN_DROPDOWN            = TBN_FIRST-10;
  1984.   {$EXTERNALSYM TBN_CLOSEUP}
  1985.   TBN_CLOSEUP             = TBN_FIRST-11;
  1986.   {$EXTERNALSYM TBN_GETOBJECT}
  1987.   TBN_GETOBJECT           = TBN_FIRST-12;
  1988.  
  1989. type
  1990.   // Structure for TBN_HOTITEMCHANGE notification
  1991.   {$EXTERNALSYM tagNMTBHOTITEM}
  1992.   tagNMTBHOTITEM = packed record
  1993.     hdr: TNMHdr;
  1994.     idOld: Integer;
  1995.     idNew: Integer;
  1996.     dwFlags: DWORD;           // HICF_*
  1997.   end;
  1998.   PNMTBHotItem = ^TNMTBHotItem;
  1999.   TNMTBHotItem = tagNMTBHOTITEM;
  2000.  
  2001. const
  2002.   // Hot item change flags
  2003.   {$EXTERNALSYM HICF_OTHER}
  2004.   HICF_OTHER          = $00000000;
  2005.   {$EXTERNALSYM HICF_MOUSE}
  2006.   HICF_MOUSE          = $00000001;          // Triggered by mouse
  2007.   {$EXTERNALSYM HICF_ARROWKEYS}
  2008.   HICF_ARROWKEYS      = $00000002;          // Triggered by arrow keys
  2009.   {$EXTERNALSYM HICF_ACCELERATOR}
  2010.   HICF_ACCELERATOR    = $00000004;          // Triggered by accelerator
  2011.   {$EXTERNALSYM HICF_DUPACCEL}
  2012.   HICF_DUPACCEL       = $00000008;          // This accelerator is not unique
  2013.   {$EXTERNALSYM HICF_ENTERING}
  2014.   HICF_ENTERING       = $00000010;          // idOld is invalid
  2015.   {$EXTERNALSYM HICF_LEAVING}
  2016.   HICF_LEAVING        = $00000020;          // idNew is invalid
  2017.   {$EXTERNALSYM HICF_RESELECT}
  2018.   HICF_RESELECT       = $00000040;          // hot item reselected
  2019.  
  2020.   {$EXTERNALSYM TBN_HOTITEMCHANGE}
  2021.   TBN_HOTITEMCHANGE       = TBN_FIRST - 13;
  2022.   {$EXTERNALSYM TBN_DRAGOUT}
  2023.   TBN_DRAGOUT             = TBN_FIRST - 14; // this is sent when the user clicks down on a button then drags off the button
  2024.   {$EXTERNALSYM TBN_DELETINGBUTTON}
  2025.   TBN_DELETINGBUTTON      = TBN_FIRST - 15; // uses TBNOTIFY
  2026.   {$EXTERNALSYM TBN_GETDISPINFOA}
  2027.   TBN_GETDISPINFOA        = TBN_FIRST - 16; // This is sent when the  toolbar needs  some display information
  2028.   {$EXTERNALSYM TBN_GETDISPINFOW}
  2029.   TBN_GETDISPINFOW        = TBN_FIRST - 17; // This is sent when the  toolbar needs  some display information
  2030.   {$EXTERNALSYM TBN_GETINFOTIPA}
  2031.   TBN_GETINFOTIPA         = TBN_FIRST - 18;
  2032.   {$EXTERNALSYM TBN_GETINFOTIPW}
  2033.   TBN_GETINFOTIPW         = TBN_FIRST - 19;
  2034.  
  2035. type
  2036.   {$EXTERNALSYM tagNMTBGETINFOTIPA}
  2037.   tagNMTBGETINFOTIPA = packed record
  2038.     hdr: TNMHdr;
  2039.     pszText: PAnsiChar;
  2040.     cchTextMax: Integer;
  2041.     iItem: Integer;
  2042.     lParam: LPARAM;
  2043.   end;
  2044.   {$EXTERNALSYM tagNMTBGETINFOTIPW}
  2045.   tagNMTBGETINFOTIPW = packed record
  2046.     hdr: TNMHdr;
  2047.     pszText: PWideChar;
  2048.     cchTextMax: Integer;
  2049.     iItem: Integer;
  2050.     lParam: LPARAM;
  2051.   end;
  2052.   {$EXTERNALSYM tagNMTBGETINFOTIP}
  2053.   tagNMTBGETINFOTIP = tagNMTBGETINFOTIPA;
  2054.   PNMTBGetInfoTipA = ^TNMTBGetInfoTipA;
  2055.   PNMTBGetInfoTipW = ^TNMTBGetInfoTipW;
  2056.   PNMTBGetInfoTip = PNMTBGetInfoTipA;
  2057.   TNMTBGetInfoTipA = tagNMTBGETINFOTIPA;
  2058.   TNMTBGetInfoTipW = tagNMTBGETINFOTIPW;
  2059.   TNMTBGetInfoTip = TNMTBGetInfoTipA;
  2060.  
  2061. const
  2062.   {$EXTERNALSYM TBNF_IMAGE}
  2063.   TBNF_IMAGE              = $00000001;
  2064.   {$EXTERNALSYM TBNF_TEXT}
  2065.   TBNF_TEXT               = $00000002;
  2066.   {$EXTERNALSYM TBNF_DI_SETITEM}
  2067.   TBNF_DI_SETITEM         = $10000000;
  2068.  
  2069. type
  2070.   {$EXTERNALSYM NMTBDISPINFOA}
  2071.   NMTBDISPINFOA = packed record
  2072.     hdr: TNMHdr;
  2073.     dwMask: DWORD;      // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  2074.     idCommand: Integer; // [in] id of button we're requesting info for
  2075.     lParam: DWORD;      // [in] lParam of button
  2076.     iImage: Integer;    // [out] image index
  2077.     pszText: PAnsiChar;    // [out] new text for item
  2078.     cchText: Integer;   // [in] size of buffer pointed to by pszText
  2079.   end;
  2080.   {$EXTERNALSYM NMTBDISPINFOW}
  2081.   NMTBDISPINFOW = packed record
  2082.     hdr: TNMHdr;
  2083.     dwMask: DWORD;      // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  2084.     idCommand: Integer; // [in] id of button we're requesting info for
  2085.     lParam: DWORD;      // [in] lParam of button
  2086.     iImage: Integer;    // [out] image index
  2087.     pszText: PWideChar;    // [out] new text for item
  2088.     cchText: Integer;   // [in] size of buffer pointed to by pszText
  2089.   end;
  2090.   {$EXTERNALSYM NMTBDISPINFO}
  2091.   NMTBDISPINFO = NMTBDISPINFOA;
  2092.   PNMTBDispInfoA = ^TNMTBDispInfoA;
  2093.   PNMTBDispInfoW = ^TNMTBDispInfoW;
  2094.   PNMTBDispInfo = PNMTBDispInfoA;
  2095.   TNMTBDispInfoA = NMTBDISPINFOA;
  2096.   TNMTBDispInfoW = NMTBDISPINFOW;
  2097.   TNMTBDispInfo = TNMTBDispInfoA;
  2098.  
  2099. const
  2100.   // Return codes for TBN_DROPDOWN
  2101.   {$EXTERNALSYM TBDDRET_DEFAULT}
  2102.   TBDDRET_DEFAULT         = 0;
  2103.   {$EXTERNALSYM TBDDRET_NODEFAULT}
  2104.   TBDDRET_NODEFAULT       = 1;
  2105.   {$EXTERNALSYM TBDDRET_TREATPRESSED}
  2106.   TBDDRET_TREATPRESSED    = 2;       // Treat as a standard press button
  2107.  
  2108. type
  2109.   {$EXTERNALSYM tagNMTOOLBARA}
  2110.   tagNMTOOLBARA = packed record
  2111.     hdr: TNMHdr;
  2112.     iItem: Integer;
  2113.     tbButton: TTBButton;
  2114.     cchText: Integer;
  2115.     pszText: PAnsiChar;
  2116.   end;
  2117.   {$EXTERNALSYM tagNMTOOLBARW}
  2118.   tagNMTOOLBARW = packed record
  2119.     hdr: TNMHdr;
  2120.     iItem: Integer;
  2121.     tbButton: TTBButton;
  2122.     cchText: Integer;
  2123.     pszText: PWideChar;
  2124.   end;
  2125.   {$EXTERNALSYM tagNMTOOLBAR}
  2126.   tagNMTOOLBAR = tagNMTOOLBARA;
  2127.   PNMToolBarA = ^TNMToolBarA;
  2128.   PNMToolBarW = ^TNMToolBarW;
  2129.   PNMToolBar = PNMToolBarA;
  2130.   TNMToolBarA = tagNMTOOLBARA;
  2131.   TNMToolBarW = tagNMTOOLBARW;
  2132.   TNMToolBar = TNMToolBarA;
  2133.  
  2134. { ====== REBAR CONTROL =================== }
  2135.  
  2136. const
  2137.   {$EXTERNALSYM REBARCLASSNAME}
  2138.   REBARCLASSNAME = 'ReBarWindow32';
  2139.  
  2140. type
  2141.   {$EXTERNALSYM tagREBARINFO}
  2142.   tagREBARINFO = packed record
  2143.     cbSize: UINT;
  2144.     fMask: UINT;
  2145.     himl: HIMAGELIST;
  2146.   end;
  2147.   PReBarInfo = ^TReBarInfo;
  2148.   TReBarInfo = tagREBARINFO;
  2149.  
  2150. const
  2151.   {$EXTERNALSYM RBIM_IMAGELIST}
  2152.   RBIM_IMAGELIST    = $00000001;
  2153.  
  2154.   {$EXTERNALSYM RBS_TOOLTIPS}
  2155.   RBS_TOOLTIPS      = $00000100;
  2156.   {$EXTERNALSYM RBS_VARHEIGHT}
  2157.   RBS_VARHEIGHT     = $00000200;
  2158.   {$EXTERNALSYM RBS_BANDBORDERS}
  2159.   RBS_BANDBORDERS   = $00000400;
  2160.   {$EXTERNALSYM RBS_FIXEDORDER}
  2161.   RBS_FIXEDORDER    = $00000800;
  2162.  
  2163.   {$EXTERNALSYM RBS_REGISTERDROP}
  2164.   RBS_REGISTERDROP  = $00001000;
  2165.   {$EXTERNALSYM RBS_AUTOSIZE}
  2166.   RBS_AUTOSIZE      = $00002000;
  2167.   {$EXTERNALSYM RBS_VERTICALGRIPPER}
  2168.   RBS_VERTICALGRIPPER = $00004000;  // this always has the vertical gripper (default for horizontal mode)
  2169.   {$EXTERNALSYM RBS_DBLCLKTOGGLE}
  2170.   RBS_DBLCLKTOGGLE  = $00008000;
  2171.  
  2172.   {$EXTERNALSYM RBBS_BREAK}
  2173.   RBBS_BREAK        = $00000001;  // break to new line
  2174.   {$EXTERNALSYM RBBS_FIXEDSIZE}
  2175.   RBBS_FIXEDSIZE    = $00000002;  // band can't be sized
  2176.   {$EXTERNALSYM RBBS_CHILDEDGE}
  2177.   RBBS_CHILDEDGE    = $00000004;  // edge around top and bottom of child window
  2178.   {$EXTERNALSYM RBBS_HIDDEN}
  2179.   RBBS_HIDDEN       = $00000008;  // don't show
  2180.   {$EXTERNALSYM RBBS_NOVERT}
  2181.   RBBS_NOVERT       = $00000010;  // don't show when vertical
  2182.   {$EXTERNALSYM RBBS_FIXEDBMP}
  2183.   RBBS_FIXEDBMP     = $00000020;  // bitmap doesn't move during band resize
  2184.   {$EXTERNALSYM RBBS_VARIABLEHEIGHT}
  2185.   RBBS_VARIABLEHEIGHT = $00000040;  // allow autosizing of this child vertically
  2186.   {$EXTERNALSYM RBBS_GRIPPERALWAYS}
  2187.   RBBS_GRIPPERALWAYS  = $00000080;  // always show the gripper
  2188.   {$EXTERNALSYM RBBS_NOGRIPPER}
  2189.   RBBS_NOGRIPPER      = $00000100;  // never show the gripper
  2190.  
  2191.   {$EXTERNALSYM RBBIM_STYLE}
  2192.   RBBIM_STYLE       = $00000001;
  2193.   {$EXTERNALSYM RBBIM_COLORS}
  2194.   RBBIM_COLORS      = $00000002;
  2195.   {$EXTERNALSYM RBBIM_TEXT}
  2196.   RBBIM_TEXT        = $00000004;
  2197.   {$EXTERNALSYM RBBIM_IMAGE}
  2198.   RBBIM_IMAGE       = $00000008;
  2199.   {$EXTERNALSYM RBBIM_CHILD}
  2200.   RBBIM_CHILD       = $00000010;
  2201.   {$EXTERNALSYM RBBIM_CHILDSIZE}
  2202.   RBBIM_CHILDSIZE   = $00000020;
  2203.   {$EXTERNALSYM RBBIM_SIZE}
  2204.   RBBIM_SIZE        = $00000040;
  2205.   {$EXTERNALSYM RBBIM_BACKGROUND}
  2206.   RBBIM_BACKGROUND  = $00000080;
  2207.   {$EXTERNALSYM RBBIM_ID}
  2208.   RBBIM_ID          = $00000100;
  2209.   {$EXTERNALSYM RBBIM_IDEALSIZE}
  2210.   RBBIM_IDEALSIZE     = $00000200;
  2211.   {$EXTERNALSYM RBBIM_LPARAM}
  2212.   RBBIM_LPARAM        = $00000400;
  2213.   {$EXTERNALSYM RBBIM_HEADERSIZE}
  2214.   RBBIM_HEADERSIZE    = $00000800;  // control the size of the header
  2215.  
  2216. type
  2217.   {$EXTERNALSYM tagREBARBANDINFOA}
  2218.   tagREBARBANDINFOA = packed record
  2219.     cbSize: UINT;
  2220.     fMask: UINT;
  2221.     fStyle: UINT;
  2222.     clrFore: TColorRef;
  2223.     clrBack: TColorRef;
  2224.     lpText: PAnsiChar;
  2225.     cch: UINT;
  2226.     iImage: Integer;
  2227.     hwndChild: HWnd;
  2228.     cxMinChild: UINT;
  2229.     cyMinChild: UINT;
  2230.     cx: UINT;
  2231.     hbmBack: HBitmap;
  2232.     wID: UINT;
  2233.     cyChild: UINT;
  2234.     cyMaxChild: UINT;
  2235.     cyIntegral: UINT;
  2236.     cxIdeal: UINT;
  2237.     lParam: LPARAM;
  2238.     cxHeader: UINT;
  2239.   end;
  2240.   {$EXTERNALSYM tagREBARBANDINFOW}
  2241.   tagREBARBANDINFOW = packed record
  2242.     cbSize: UINT;
  2243.     fMask: UINT;
  2244.     fStyle: UINT;
  2245.     clrFore: TColorRef;
  2246.     clrBack: TColorRef;
  2247.     lpText: PWideChar;
  2248.     cch: UINT;
  2249.     iImage: Integer;
  2250.     hwndChild: HWnd;
  2251.     cxMinChild: UINT;
  2252.     cyMinChild: UINT;
  2253.     cx: UINT;
  2254.     hbmBack: HBitmap;
  2255.     wID: UINT;
  2256.     cyChild: UINT;
  2257.     cyMaxChild: UINT;
  2258.     cyIntegral: UINT;
  2259.     cxIdeal: UINT;
  2260.     lParam: LPARAM;
  2261.     cxHeader: UINT;
  2262.   end;
  2263.   {$EXTERNALSYM tagREBARBANDINFO}
  2264.   tagREBARBANDINFO = tagREBARBANDINFOA;
  2265.   PReBarBandInfoA = ^TReBarBandInfoA;
  2266.   PReBarBandInfoW = ^TReBarBandInfoW;
  2267.   PReBarBandInfo = PReBarBandInfoA;
  2268.   TReBarBandInfoA = tagREBARBANDINFOA;
  2269.   TReBarBandInfoW = tagREBARBANDINFOW;
  2270.   TReBarBandInfo = TReBarBandInfoA;
  2271.  
  2272. const
  2273.   {$EXTERNALSYM RB_INSERTBANDA}
  2274.   RB_INSERTBANDA     = WM_USER +  1;
  2275.   {$EXTERNALSYM RB_DELETEBAND}
  2276.   RB_DELETEBAND      = WM_USER +  2;
  2277.   {$EXTERNALSYM RB_GETBARINFO}
  2278.   RB_GETBARINFO      = WM_USER +  3;
  2279.   {$EXTERNALSYM RB_SETBARINFO}
  2280.   RB_SETBARINFO      = WM_USER +  4;
  2281.   RB_GETBANDINFO_PRE_IE4     = WM_USER +  5;
  2282.   {$EXTERNALSYM RB_SETBANDINFOA}
  2283.   RB_SETBANDINFOA    = WM_USER +  6;
  2284.   {$EXTERNALSYM RB_SETPARENT}
  2285.   RB_SETPARENT       = WM_USER +  7;
  2286.   {$EXTERNALSYM RB_HITTEST}
  2287.   RB_HITTEST         = WM_USER +  8;
  2288.   {$EXTERNALSYM RB_GETRECT}
  2289.   RB_GETRECT         = WM_USER +  9;
  2290.   {$EXTERNALSYM RB_INSERTBANDW}
  2291.   RB_INSERTBANDW     = WM_USER +  10;
  2292.   {$EXTERNALSYM RB_SETBANDINFOW}
  2293.   RB_SETBANDINFOW    = WM_USER +  11;
  2294.   {$EXTERNALSYM RB_GETBANDCOUNT}
  2295.   RB_GETBANDCOUNT    = WM_USER +  12;
  2296.   {$EXTERNALSYM RB_GETROWCOUNT}
  2297.   RB_GETROWCOUNT     = WM_USER +  13;
  2298.   {$EXTERNALSYM RB_GETROWHEIGHT}
  2299.   RB_GETROWHEIGHT    = WM_USER +  14;
  2300.   {$EXTERNALSYM RB_IDTOINDEX}
  2301.   RB_IDTOINDEX       = WM_USER +  16; // wParam == id
  2302.   {$EXTERNALSYM RB_GETTOOLTIPS}
  2303.   RB_GETTOOLTIPS     = WM_USER +  17;
  2304.   {$EXTERNALSYM RB_SETTOOLTIPS}
  2305.   RB_SETTOOLTIPS     = WM_USER +  18;
  2306.   {$EXTERNALSYM RB_SETBKCOLOR}
  2307.   RB_SETBKCOLOR      = WM_USER +  19; // sets the default BK color
  2308.   {$EXTERNALSYM RB_GETBKCOLOR}
  2309.   RB_GETBKCOLOR      = WM_USER +  20; // defaults to CLR_NONE
  2310.   {$EXTERNALSYM RB_SETTEXTCOLOR}
  2311.   RB_SETTEXTCOLOR    = WM_USER +  21;
  2312.   {$EXTERNALSYM RB_GETTEXTCOLOR}
  2313.   RB_GETTEXTCOLOR    = WM_USER +  22; // defaults to 0x00000000
  2314.   {$EXTERNALSYM RB_SIZETORECT}
  2315.   RB_SIZETORECT      = WM_USER +  23; // resize the rebar/break bands and such to this rect (lparam;
  2316.  
  2317.   // for manual drag control
  2318.   // lparam == cursor pos
  2319.         // -1 means do it yourself.
  2320.         // -2 means use what you had saved before
  2321.   {$EXTERNALSYM RB_BEGINDRAG}
  2322.   RB_BEGINDRAG    = WM_USER + 24;
  2323.   {$EXTERNALSYM RB_ENDDRAG}
  2324.   RB_ENDDRAG      = WM_USER + 25;
  2325.   {$EXTERNALSYM RB_DRAGMOVE}
  2326.   RB_DRAGMOVE     = WM_USER + 26;
  2327.   {$EXTERNALSYM RB_GETBARHEIGHT}
  2328.   RB_GETBARHEIGHT = WM_USER + 27;
  2329.   {$EXTERNALSYM RB_GETBANDINFOW}
  2330.   RB_GETBANDINFOW = WM_USER + 28;
  2331.   {$EXTERNALSYM RB_GETBANDINFOA}
  2332.   RB_GETBANDINFOA = WM_USER + 29;
  2333.  
  2334.   {$EXTERNALSYM RB_MINIMIZEBAND}
  2335.   RB_MINIMIZEBAND = WM_USER + 30;
  2336.   {$EXTERNALSYM RB_MAXIMIZEBAND}
  2337.   RB_MAXIMIZEBAND = WM_USER + 31;
  2338.  
  2339.   {$EXTERNALSYM RB_GETDROPTARGET}
  2340.   RB_GETDROPTARGET = CCM_GETDROPTARGET;
  2341.  
  2342.   {$EXTERNALSYM RB_GETBANDBORDERS}
  2343.   RB_GETBANDBORDERS = WM_USER + 34;  // returns in lparam = lprc the amount of edges added to band wparam
  2344.  
  2345.   {$EXTERNALSYM RB_SHOWBAND}
  2346.   RB_SHOWBAND     = WM_USER + 35;      // show/hide band
  2347.   {$EXTERNALSYM RB_SETPALETTE}
  2348.   RB_SETPALETTE   = WM_USER + 37;
  2349.   {$EXTERNALSYM RB_GETPALETTE}
  2350.   RB_GETPALETTE   = WM_USER + 38;
  2351.   {$EXTERNALSYM RB_MOVEBAND}
  2352.   RB_MOVEBAND     = WM_USER + 39;
  2353.  
  2354.   {$EXTERNALSYM RB_SETUNICODEFORMAT}
  2355.   RB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  2356.   {$EXTERNALSYM RB_GETUNICODEFORMAT}
  2357.   RB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  2358.  
  2359.   {$EXTERNALSYM RB_INSERTBAND}
  2360.   RB_INSERTBAND      = RB_INSERTBANDA;
  2361.   {$EXTERNALSYM RB_SETBANDINFO}
  2362.   RB_SETBANDINFO     = RB_SETBANDINFOA;
  2363.   {$EXTERNALSYM RB_GETBANDINFO}
  2364.   RB_GETBANDINFO     = RB_GETBANDINFOA;
  2365.  
  2366.   {$EXTERNALSYM RBN_HEIGHTCHANGE}
  2367.   RBN_HEIGHTCHANGE   = RBN_FIRST - 0;
  2368.  
  2369.   {$EXTERNALSYM RBN_GETOBJECT}
  2370.   RBN_GETOBJECT       = RBN_FIRST - 1;
  2371.   {$EXTERNALSYM RBN_LAYOUTCHANGED}
  2372.   RBN_LAYOUTCHANGED   = RBN_FIRST - 2;
  2373.   {$EXTERNALSYM RBN_AUTOSIZE}
  2374.   RBN_AUTOSIZE        = RBN_FIRST - 3;
  2375.   {$EXTERNALSYM RBN_BEGINDRAG}
  2376.   RBN_BEGINDRAG       = RBN_FIRST - 4;
  2377.   {$EXTERNALSYM RBN_ENDDRAG}
  2378.   RBN_ENDDRAG         = RBN_FIRST - 5;
  2379.   {$EXTERNALSYM RBN_DELETINGBAND}
  2380.   RBN_DELETINGBAND    = RBN_FIRST - 6;     // Uses NMREBAR
  2381.   {$EXTERNALSYM RBN_DELETEDBAND}
  2382.   RBN_DELETEDBAND     = RBN_FIRST - 7;     // Uses NMREBAR
  2383.   {$EXTERNALSYM RBN_CHILDSIZE}
  2384.   RBN_CHILDSIZE       = RBN_FIRST - 8;
  2385.  
  2386. type
  2387.   {$EXTERNALSYM tagNMREBARCHILDSIZE}
  2388.   tagNMREBARCHILDSIZE = packed record
  2389.     hdr: TNMHdr;
  2390.     uBand: UINT;
  2391.     wID: UINT;
  2392.     rcChild: TRect;
  2393.     rcBand: TRect;
  2394.   end;
  2395.   PNMReBarChildSize = ^TNMReBarChildSize;
  2396.   TNMReBarChildSize = tagNMREBARCHILDSIZE;
  2397.  
  2398.   {$EXTERNALSYM tagNMREBAR}
  2399.   tagNMREBAR = packed record
  2400.     hdr: TNMHdr;
  2401.     dwMask: DWORD;           // RBNM_*
  2402.     uBand: UINT;
  2403.     fStyle: UINT;
  2404.     wID: UINT;
  2405.     lParam: LPARAM;
  2406.   end;
  2407.   PNMReBar = ^TNMReBar;
  2408.   TNMReBar = tagNMREBAR;
  2409.  
  2410. const
  2411.   // Mask flags for NMREBAR
  2412.   {$EXTERNALSYM RBNM_ID}
  2413.   RBNM_ID         = $00000001;
  2414.   {$EXTERNALSYM RBNM_STYLE}
  2415.   RBNM_STYLE      = $00000002;
  2416.   {$EXTERNALSYM RBNM_LPARAM}
  2417.   RBNM_LPARAM     = $00000004;
  2418.  
  2419. type
  2420.   {$EXTERNALSYM tagNMRBAUTOSIZE}
  2421.   tagNMRBAUTOSIZE = packed record
  2422.     hdr: TNMHdr;
  2423.     fChanged: BOOL;
  2424.     rcTarget: TRect;
  2425.     rcActual: TRect;
  2426.   end;
  2427.   PNMRBAutoSize = ^TNMRBAutoSize;
  2428.   TNMRBAutoSize = tagNMRBAUTOSIZE;
  2429.  
  2430. const
  2431.   {$EXTERNALSYM RBHT_NOWHERE}
  2432.   RBHT_NOWHERE    = $0001;
  2433.   {$EXTERNALSYM RBHT_CAPTION}
  2434.   RBHT_CAPTION    = $0002;
  2435.   {$EXTERNALSYM RBHT_CLIENT}
  2436.   RBHT_CLIENT     = $0003;
  2437.   {$EXTERNALSYM RBHT_GRABBER}
  2438.   RBHT_GRABBER    = $0004;
  2439.  
  2440. type
  2441.   {$EXTERNALSYM _RB_HITTESTINFO}
  2442.   _RB_HITTESTINFO = packed record
  2443.     pt: TPoint;
  2444.     flags: UINT;
  2445.     iBand: Integer;
  2446.   end;
  2447.   PRBHitTestInfo = ^TRBHitTestInfo;
  2448.   TRBHitTestInfo = _RB_HITTESTINFO;
  2449.  
  2450. { ====== TOOLTIPS CONTROL ========================== }
  2451.  
  2452. const
  2453.   {$EXTERNALSYM TOOLTIPS_CLASS}
  2454.   TOOLTIPS_CLASS = 'tooltips_class32';
  2455.  
  2456. type
  2457.   PToolInfoA = ^TToolInfoA;
  2458.   PToolInfoW = ^TToolInfoW;
  2459.   PToolInfo = PToolInfoA;
  2460.   {$EXTERNALSYM tagTOOLINFOA}
  2461.   tagTOOLINFOA = packed record
  2462.     cbSize: UINT;
  2463.     uFlags: UINT;
  2464.     hwnd: HWND;
  2465.     uId: UINT;
  2466.     Rect: TRect;
  2467.     hInst: THandle;
  2468.     lpszText: PAnsiChar;
  2469.     lParam: LPARAM;
  2470.   end;
  2471.   {$EXTERNALSYM tagTOOLINFOW}
  2472.   tagTOOLINFOW = packed record
  2473.     cbSize: UINT;
  2474.     uFlags: UINT;
  2475.     hwnd: HWND;
  2476.     uId: UINT;
  2477.     Rect: TRect;
  2478.     hInst: THandle;
  2479.     lpszText: PWideChar;
  2480.     lParam: LPARAM;
  2481.   end;
  2482.   {$EXTERNALSYM tagTOOLINFO}
  2483.   tagTOOLINFO = tagTOOLINFOA;
  2484.   TToolInfoA = tagTOOLINFOA;
  2485.   TToolInfoW = tagTOOLINFOW;
  2486.   TToolInfo = TToolInfoA;
  2487.   {$EXTERNALSYM TOOLINFOA}
  2488.   TOOLINFOA = tagTOOLINFOA;
  2489.   {$EXTERNALSYM TOOLINFOW}
  2490.   TOOLINFOW = tagTOOLINFOW;
  2491.   {$EXTERNALSYM TOOLINFO}
  2492.   TOOLINFO = TOOLINFOA;
  2493.  
  2494. const
  2495.   {$EXTERNALSYM TTS_ALWAYSTIP}
  2496.   TTS_ALWAYSTIP           = $01;
  2497.   {$EXTERNALSYM TTS_NOPREFIX}
  2498.   TTS_NOPREFIX            = $02;
  2499.  
  2500.   {$EXTERNALSYM TTF_IDISHWND}
  2501.   TTF_IDISHWND            = $0001;
  2502.  
  2503.   // Use this to center around trackpoint in trackmode
  2504.   // -OR- to center around tool in normal mode.
  2505.   // Use TTF_ABSOLUTE to place the tip exactly at the track coords when
  2506.   // in tracking mode.  TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
  2507.   // to center the tip absolutely about the track point.
  2508.  
  2509.   {$EXTERNALSYM TTF_CENTERTIP}
  2510.   TTF_CENTERTIP           = $0002;
  2511.   {$EXTERNALSYM TTF_RTLREADING}
  2512.   TTF_RTLREADING          = $0004;
  2513.   {$EXTERNALSYM TTF_SUBCLASS}
  2514.   TTF_SUBCLASS            = $0010;
  2515.   {$EXTERNALSYM TTF_TRACK}
  2516.   TTF_TRACK               = $0020;
  2517.   {$EXTERNALSYM TTF_ABSOLUTE}
  2518.   TTF_ABSOLUTE            = $0080;
  2519.   {$EXTERNALSYM TTF_TRANSPARENT}
  2520.   TTF_TRANSPARENT         = $0100;
  2521.   {$EXTERNALSYM TTF_DI_SETITEM}
  2522.   TTF_DI_SETITEM          = $8000;       // valid only on the TTN_NEEDTEXT callback
  2523.  
  2524.   {$EXTERNALSYM TTDT_AUTOMATIC}
  2525.   TTDT_AUTOMATIC          = 0;
  2526.   {$EXTERNALSYM TTDT_RESHOW}
  2527.   TTDT_RESHOW             = 1;
  2528.   {$EXTERNALSYM TTDT_AUTOPOP}
  2529.   TTDT_AUTOPOP            = 2;
  2530.   {$EXTERNALSYM TTDT_INITIAL}
  2531.   TTDT_INITIAL            = 3;
  2532.  
  2533.   {$EXTERNALSYM TTM_ACTIVATE}
  2534.   TTM_ACTIVATE            = WM_USER + 1;
  2535.   {$EXTERNALSYM TTM_SETDELAYTIME}
  2536.   TTM_SETDELAYTIME        = WM_USER + 3;
  2537.  
  2538.   {$EXTERNALSYM TTM_ADDTOOLA}
  2539.   TTM_ADDTOOLA             = WM_USER + 4;
  2540.   {$EXTERNALSYM TTM_DELTOOLA}
  2541.   TTM_DELTOOLA             = WM_USER + 5;
  2542.   {$EXTERNALSYM TTM_NEWTOOLRECTA}
  2543.   TTM_NEWTOOLRECTA         = WM_USER + 6;
  2544.   {$EXTERNALSYM TTM_GETTOOLINFOA}
  2545.   TTM_GETTOOLINFOA         = WM_USER + 8;
  2546.   {$EXTERNALSYM TTM_SETTOOLINFOA}
  2547.   TTM_SETTOOLINFOA         = WM_USER + 9;
  2548.   {$EXTERNALSYM TTM_HITTESTA}
  2549.   TTM_HITTESTA             = WM_USER + 10;
  2550.   {$EXTERNALSYM TTM_GETTEXTA}
  2551.   TTM_GETTEXTA             = WM_USER + 11;
  2552.   {$EXTERNALSYM TTM_UPDATETIPTEXTA}
  2553.   TTM_UPDATETIPTEXTA       = WM_USER + 12;
  2554.   {$EXTERNALSYM TTM_ENUMTOOLSA}
  2555.   TTM_ENUMTOOLSA           = WM_USER + 14;
  2556.   {$EXTERNALSYM TTM_GETCURRENTTOOLA}
  2557.   TTM_GETCURRENTTOOLA      = WM_USER + 15;
  2558.  
  2559.   {$EXTERNALSYM TTM_ADDTOOLW}
  2560.   TTM_ADDTOOLW             = WM_USER + 50;
  2561.   {$EXTERNALSYM TTM_DELTOOLW}
  2562.   TTM_DELTOOLW             = WM_USER + 51;
  2563.   {$EXTERNALSYM TTM_NEWTOOLRECTW}
  2564.   TTM_NEWTOOLRECTW         = WM_USER + 52;
  2565.   {$EXTERNALSYM TTM_GETTOOLINFOW}
  2566.   TTM_GETTOOLINFOW         = WM_USER + 53;
  2567.   {$EXTERNALSYM TTM_SETTOOLINFOW}
  2568.   TTM_SETTOOLINFOW         = WM_USER + 54;
  2569.   {$EXTERNALSYM TTM_HITTESTW}
  2570.   TTM_HITTESTW             = WM_USER + 55;
  2571.   {$EXTERNALSYM TTM_GETTEXTW}
  2572.   TTM_GETTEXTW             = WM_USER + 56;
  2573.   {$EXTERNALSYM TTM_UPDATETIPTEXTW}
  2574.   TTM_UPDATETIPTEXTW       = WM_USER + 57;
  2575.   {$EXTERNALSYM TTM_ENUMTOOLSW}
  2576.   TTM_ENUMTOOLSW           = WM_USER + 58;
  2577.   {$EXTERNALSYM TTM_GETCURRENTTOOLW}
  2578.   TTM_GETCURRENTTOOLW      = WM_USER + 59;
  2579.   {$EXTERNALSYM TTM_WINDOWFROMPOINT}
  2580.   TTM_WINDOWFROMPOINT      = WM_USER + 16;
  2581.   {$EXTERNALSYM TTM_TRACKACTIVATE}
  2582.   TTM_TRACKACTIVATE        = WM_USER + 17;  // wParam = TRUE/FALSE start end  lparam = LPTOOLINFO
  2583.   {$EXTERNALSYM TTM_TRACKPOSITION}
  2584.   TTM_TRACKPOSITION        = WM_USER + 18;  // lParam = dwPos
  2585.   {$EXTERNALSYM TTM_SETTIPBKCOLOR}
  2586.   TTM_SETTIPBKCOLOR        = WM_USER + 19;
  2587.   {$EXTERNALSYM TTM_SETTIPTEXTCOLOR}
  2588.   TTM_SETTIPTEXTCOLOR      = WM_USER + 20;
  2589.   {$EXTERNALSYM TTM_GETDELAYTIME}
  2590.   TTM_GETDELAYTIME         = WM_USER + 21;
  2591.   {$EXTERNALSYM TTM_GETTIPBKCOLOR}
  2592.   TTM_GETTIPBKCOLOR        = WM_USER + 22;
  2593.   {$EXTERNALSYM TTM_GETTIPTEXTCOLOR}
  2594.   TTM_GETTIPTEXTCOLOR      = WM_USER + 23;
  2595.   {$EXTERNALSYM TTM_SETMAXTIPWIDTH}
  2596.   TTM_SETMAXTIPWIDTH       = WM_USER + 24;
  2597.   {$EXTERNALSYM TTM_GETMAXTIPWIDTH}
  2598.   TTM_GETMAXTIPWIDTH       = WM_USER + 25;
  2599.   {$EXTERNALSYM TTM_SETMARGIN}
  2600.   TTM_SETMARGIN            = WM_USER + 26;  // lParam = lprc
  2601.   {$EXTERNALSYM TTM_GETMARGIN}
  2602.   TTM_GETMARGIN            = WM_USER + 27;  // lParam = lprc
  2603.   {$EXTERNALSYM TTM_POP}
  2604.   TTM_POP                  = WM_USER + 28;
  2605.   {$EXTERNALSYM TTM_UPDATE}
  2606.   TTM_UPDATE               = WM_USER + 29;
  2607.  
  2608.   {$EXTERNALSYM TTM_ADDTOOL}
  2609.   TTM_ADDTOOL             = TTM_ADDTOOLA;
  2610.   {$EXTERNALSYM TTM_DELTOOL}
  2611.   TTM_DELTOOL             = TTM_DELTOOLA;
  2612.   {$EXTERNALSYM TTM_NEWTOOLRECT}
  2613.   TTM_NEWTOOLRECT         = TTM_NEWTOOLRECTA;
  2614.   {$EXTERNALSYM TTM_GETTOOLINFO}
  2615.   TTM_GETTOOLINFO         = TTM_GETTOOLINFOA;
  2616.   {$EXTERNALSYM TTM_SETTOOLINFO}
  2617.   TTM_SETTOOLINFO         = TTM_SETTOOLINFOA;
  2618.   {$EXTERNALSYM TTM_HITTEST}
  2619.   TTM_HITTEST             = TTM_HITTESTA;
  2620.   {$EXTERNALSYM TTM_GETTEXT}
  2621.   TTM_GETTEXT             = TTM_GETTEXTA;
  2622.   {$EXTERNALSYM TTM_UPDATETIPTEXT}
  2623.   TTM_UPDATETIPTEXT       = TTM_UPDATETIPTEXTA;
  2624.   {$EXTERNALSYM TTM_ENUMTOOLS}
  2625.   TTM_ENUMTOOLS           = TTM_ENUMTOOLSA;
  2626.   {$EXTERNALSYM TTM_GETCURRENTTOOL}
  2627.   TTM_GETCURRENTTOOL      = TTM_GETCURRENTTOOLA;
  2628.  
  2629.   {$EXTERNALSYM TTM_RELAYEVENT}
  2630.   TTM_RELAYEVENT          = WM_USER + 7;
  2631.   {$EXTERNALSYM TTM_GETTOOLCOUNT}
  2632.   TTM_GETTOOLCOUNT        = WM_USER +13;
  2633.  
  2634.  
  2635. type
  2636.   PTTHitTestInfoA = ^TTTHitTestInfoA;
  2637.   PTTHitTestInfoW = ^TTTHitTestInfoW;
  2638.   PTTHitTestInfo = PTTHitTestInfoA;
  2639.   {$EXTERNALSYM _TT_HITTESTINFOA}
  2640.   _TT_HITTESTINFOA = packed record
  2641.     hwnd: HWND;
  2642.     pt: TPoint;
  2643.     ti: TToolInfoA;
  2644.   end;
  2645.   {$EXTERNALSYM _TT_HITTESTINFOW}
  2646.   _TT_HITTESTINFOW = packed record
  2647.     hwnd: HWND;
  2648.     pt: TPoint;
  2649.     ti: TToolInfoW;
  2650.   end;
  2651.   {$EXTERNALSYM _TT_HITTESTINFO}
  2652.   _TT_HITTESTINFO = _TT_HITTESTINFOA;
  2653.   TTTHitTestInfoA = _TT_HITTESTINFOA;
  2654.   TTTHitTestInfoW = _TT_HITTESTINFOW;
  2655.   TTTHitTestInfo = TTTHitTestInfoA;
  2656.   {$EXTERNALSYM TTHITTESTINFOA}
  2657.   TTHITTESTINFOA = _TT_HITTESTINFOA;
  2658.   {$EXTERNALSYM TTHITTESTINFOW}
  2659.   TTHITTESTINFOW = _TT_HITTESTINFOW;
  2660.   {$EXTERNALSYM TTHITTESTINFO}
  2661.   TTHITTESTINFO = TTHITTESTINFOA;
  2662.  
  2663.  
  2664. const
  2665.   {$EXTERNALSYM TTN_NEEDTEXTA}
  2666.   TTN_NEEDTEXTA            = TTN_FIRST - 0;
  2667.   {$EXTERNALSYM TTN_NEEDTEXTW}
  2668.   TTN_NEEDTEXTW            = TTN_FIRST - 10;
  2669.  
  2670.   {$EXTERNALSYM TTN_NEEDTEXT}
  2671.   TTN_NEEDTEXT            = TTN_NEEDTEXTA;
  2672.  
  2673.   {$EXTERNALSYM TTN_SHOW}
  2674.   TTN_SHOW                = TTN_FIRST - 1;
  2675.   {$EXTERNALSYM TTN_POP}
  2676.   TTN_POP                 = TTN_FIRST - 2;
  2677.  
  2678. type
  2679. //  {$EXTERNALSYM tagNMTTDISPINFOA}
  2680.   tagNMTTDISPINFOA = packed record
  2681.     hdr: TNMHdr;
  2682.     lpszText: PAnsiChar;
  2683.     szText: array[0..79] of AnsiChar;
  2684.     hinst: HINST;
  2685.     uFlags: UINT;
  2686.     lParam: LPARAM;
  2687.   end;
  2688. //  {$EXTERNALSYM tagNMTTDISPINFOW}
  2689.   tagNMTTDISPINFOW = packed record
  2690.     hdr: TNMHdr;
  2691.     lpszText: PWideChar;
  2692.     szText: array[0..79] of WideChar;
  2693.     hinst: HINST;
  2694.     uFlags: UINT;
  2695.     lParam: LPARAM;
  2696.   end;
  2697.   {$EXTERNALSYM tagNMTTDISPINFO}
  2698.   tagNMTTDISPINFO = tagNMTTDISPINFOA;
  2699.   PNMTTDispInfoA = ^TNMTTDispInfoA;
  2700.   PNMTTDispInfoW = ^TNMTTDispInfoW;
  2701.   PNMTTDispInfo = PNMTTDispInfoA;
  2702.   TNMTTDispInfoA = tagNMTTDISPINFOA;
  2703.   TNMTTDispInfoW = tagNMTTDISPINFOW;
  2704.   TNMTTDispInfo = TNMTTDispInfoA;
  2705.  
  2706.   {$EXTERNALSYM tagTOOLTIPTEXTA}
  2707.   tagTOOLTIPTEXTA = tagNMTTDISPINFOA;
  2708.   {$EXTERNALSYM tagTOOLTIPTEXTW}
  2709.   tagTOOLTIPTEXTW = tagNMTTDISPINFOW;
  2710.   {$EXTERNALSYM tagTOOLTIPTEXT}
  2711.   tagTOOLTIPTEXT = tagTOOLTIPTEXTA;
  2712.   {$EXTERNALSYM TOOLTIPTEXTA}
  2713.   TOOLTIPTEXTA = tagNMTTDISPINFOA;
  2714.   {$EXTERNALSYM TOOLTIPTEXTW}
  2715.   TOOLTIPTEXTW = tagNMTTDISPINFOW;
  2716.   {$EXTERNALSYM TOOLTIPTEXT}
  2717.   TOOLTIPTEXT = TOOLTIPTEXTA;
  2718.   TToolTipTextA = tagNMTTDISPINFOA;
  2719.   TToolTipTextW = tagNMTTDISPINFOW;
  2720.   TToolTipText = TToolTipTextA;
  2721.   PToolTipTextA = ^TToolTipTextA;
  2722.   PToolTipTextW = ^TToolTipTextW;
  2723.   PToolTipText = PToolTipTextA;
  2724. { ====== STATUS BAR CONTROL ================= }
  2725.  
  2726. const
  2727.   {$EXTERNALSYM SBARS_SIZEGRIP}
  2728.   SBARS_SIZEGRIP          = $0100;
  2729.  
  2730. {$EXTERNALSYM DrawStatusTextA}
  2731. procedure DrawStatusTextA(hDC: HDC; lprc: PRect; pzsText: PAnsiChar;
  2732.   uFlags: UINT); stdcall;
  2733. {$EXTERNALSYM DrawStatusTextW}
  2734. procedure DrawStatusTextW(hDC: HDC; lprc: PRect; pzsText: PWideChar;
  2735.   uFlags: UINT); stdcall;
  2736. {$EXTERNALSYM DrawStatusText}
  2737. procedure DrawStatusText(hDC: HDC; lprc: PRect; pzsText: PChar;
  2738.   uFlags: UINT); stdcall;
  2739. {$EXTERNALSYM CreateStatusWindowA}
  2740. function CreateStatusWindowA(Style: Longint; lpszText: PAnsiChar;
  2741.   hwndParent: HWND; wID: UINT): HWND; stdcall;
  2742. {$EXTERNALSYM CreateStatusWindowW}
  2743. function CreateStatusWindowW(Style: Longint; lpszText: PWideChar;
  2744.   hwndParent: HWND; wID: UINT): HWND; stdcall;
  2745. {$EXTERNALSYM CreateStatusWindow}
  2746. function CreateStatusWindow(Style: Longint; lpszText: PChar;
  2747.   hwndParent: HWND; wID: UINT): HWND; stdcall;
  2748.  
  2749. const
  2750.   {$EXTERNALSYM STATUSCLASSNAME}
  2751.   STATUSCLASSNAME = 'msctls_statusbar32';
  2752.  
  2753. const
  2754.   {$EXTERNALSYM SB_SETTEXTA}
  2755.   SB_SETTEXTA             = WM_USER+1;
  2756.   {$EXTERNALSYM SB_GETTEXTA}
  2757.   SB_GETTEXTA             = WM_USER+2;
  2758.   {$EXTERNALSYM SB_GETTEXTLENGTHA}
  2759.   SB_GETTEXTLENGTHA       = WM_USER+3;
  2760.   {$EXTERNALSYM SB_SETTIPTEXTA}
  2761.   SB_SETTIPTEXTA          = WM_USER+16;
  2762.   {$EXTERNALSYM SB_GETTIPTEXTA}
  2763.   SB_GETTIPTEXTA          = WM_USER+18;
  2764.  
  2765.   {$EXTERNALSYM SB_SETTEXTW}
  2766.   SB_SETTEXTW             = WM_USER+11;
  2767.   {$EXTERNALSYM SB_GETTEXTW}
  2768.   SB_GETTEXTW             = WM_USER+13;
  2769.   {$EXTERNALSYM SB_GETTEXTLENGTHW}
  2770.   SB_GETTEXTLENGTHW       = WM_USER+12;
  2771.   {$EXTERNALSYM SB_SETTIPTEXTW}
  2772.   SB_SETTIPTEXTW          = WM_USER+17;
  2773.   {$EXTERNALSYM SB_GETTIPTEXTW}
  2774.   SB_GETTIPTEXTW          = WM_USER+19;
  2775.  
  2776.   {$EXTERNALSYM SB_SETTEXT}
  2777.   SB_SETTEXT             = SB_SETTEXTA;
  2778.   {$EXTERNALSYM SB_GETTEXT}
  2779.   SB_GETTEXT             = SB_GETTEXTA;
  2780.   {$EXTERNALSYM SB_GETTEXTLENGTH}
  2781.   SB_GETTEXTLENGTH       = SB_GETTEXTLENGTHA;
  2782.   {$EXTERNALSYM SB_SETTIPTEXT}
  2783.   SB_SETTIPTEXT          = SB_SETTIPTEXTA;
  2784.   {$EXTERNALSYM SB_GETTIPTEXT}
  2785.   SB_GETTIPTEXT          = SB_GETTIPTEXTA;
  2786.  
  2787.   {$EXTERNALSYM SB_SETPARTS}
  2788.   SB_SETPARTS             = WM_USER+4;
  2789.   {$EXTERNALSYM SB_GETPARTS}
  2790.   SB_GETPARTS             = WM_USER+6;
  2791.   {$EXTERNALSYM SB_GETBORDERS}
  2792.   SB_GETBORDERS           = WM_USER+7;
  2793.   {$EXTERNALSYM SB_SETMINHEIGHT}
  2794.   SB_SETMINHEIGHT         = WM_USER+8;
  2795.   {$EXTERNALSYM SB_SIMPLE}
  2796.   SB_SIMPLE               = WM_USER+9;
  2797.   {$EXTERNALSYM SB_GETRECT}
  2798.   SB_GETRECT              = WM_USER + 10;
  2799.   {$EXTERNALSYM SB_ISSIMPLE}
  2800.   SB_ISSIMPLE             = WM_USER+14;
  2801.   {$EXTERNALSYM SB_SETICON}
  2802.   SB_SETICON              = WM_USER+15;
  2803.   {$EXTERNALSYM SB_GETICON}
  2804.   SB_GETICON              = WM_USER+20;
  2805.   {$EXTERNALSYM SB_SETUNICODEFORMAT}
  2806.   SB_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  2807.   {$EXTERNALSYM SB_GETUNICODEFORMAT}
  2808.   SB_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  2809.  
  2810.   {$EXTERNALSYM SBT_OWNERDRAW}
  2811.   SBT_OWNERDRAW            = $1000;
  2812.   {$EXTERNALSYM SBT_NOBORDERS}
  2813.   SBT_NOBORDERS            = $0100;
  2814.   {$EXTERNALSYM SBT_POPOUT}
  2815.   SBT_POPOUT               = $0200;
  2816.   {$EXTERNALSYM SBT_RTLREADING}
  2817.   SBT_RTLREADING           = $0400;
  2818.   {$EXTERNALSYM SBT_TOOLTIPS}
  2819.   SBT_TOOLTIPS             = $0800;
  2820.  
  2821.   {$EXTERNALSYM SB_SETBKCOLOR}
  2822.   SB_SETBKCOLOR            = CCM_SETBKCOLOR;      // lParam = bkColor
  2823.  
  2824.   // status bar notifications
  2825.   {$EXTERNALSYM SBN_SIMPLEMODECHANGE}
  2826.   SBN_SIMPLEMODECHANGE     = SBN_FIRST - 0;
  2827.  
  2828. { ====== MENU HELP ========================== }
  2829.  
  2830. {$EXTERNALSYM MenuHelp}
  2831. procedure MenuHelp(Msg: UINT; wParam: WPARAM; lParam: LPARAM;
  2832.   hMainMenu: HMENU; hInst: THandle; hwndStatus: HWND; lpwIDs: PUINT); stdcall;
  2833. {$EXTERNALSYM ShowHideMenuCtl}
  2834. function ShowHideMenuCtl(hWnd: HWND; uFlags: UINT; lpInfo: PINT): Bool; stdcall;
  2835. {$EXTERNALSYM GetEffectiveClientRect}
  2836. procedure GetEffectiveClientRect(hWnd: HWND; lprc: PRect; lpInfo: PINT); stdcall;
  2837.  
  2838. const
  2839.   {$EXTERNALSYM MINSYSCOMMAND}
  2840.   MINSYSCOMMAND   = SC_SIZE;
  2841.  
  2842.  
  2843. { ====== TRACKBAR CONTROL =================== }
  2844.  
  2845.   {$EXTERNALSYM TRACKBAR_CLASS}
  2846.   TRACKBAR_CLASS = 'msctls_trackbar32';
  2847.  
  2848. const
  2849.   {$EXTERNALSYM TBS_AUTOTICKS}
  2850.   TBS_AUTOTICKS           = $0001;
  2851.   {$EXTERNALSYM TBS_VERT}
  2852.   TBS_VERT                = $0002;
  2853.   {$EXTERNALSYM TBS_HORZ}
  2854.   TBS_HORZ                = $0000;
  2855.   {$EXTERNALSYM TBS_TOP}
  2856.   TBS_TOP                 = $0004;
  2857.   {$EXTERNALSYM TBS_BOTTOM}
  2858.   TBS_BOTTOM              = $0000;
  2859.   {$EXTERNALSYM TBS_LEFT}
  2860.   TBS_LEFT                = $0004;
  2861.   {$EXTERNALSYM TBS_RIGHT}
  2862.   TBS_RIGHT               = $0000;
  2863.   {$EXTERNALSYM TBS_BOTH}
  2864.   TBS_BOTH                = $0008;
  2865.   {$EXTERNALSYM TBS_NOTICKS}
  2866.   TBS_NOTICKS             = $0010;
  2867.   {$EXTERNALSYM TBS_ENABLESELRANGE}
  2868.   TBS_ENABLESELRANGE      = $0020;
  2869.   {$EXTERNALSYM TBS_FIXEDLENGTH}
  2870.   TBS_FIXEDLENGTH         = $0040;
  2871.   {$EXTERNALSYM TBS_NOTHUMB}
  2872.   TBS_NOTHUMB             = $0080;
  2873.   {$EXTERNALSYM TBS_TOOLTIPS}
  2874.   TBS_TOOLTIPS            = $0100;
  2875.  
  2876.   {$EXTERNALSYM TBM_GETPOS}
  2877.   TBM_GETPOS              = WM_USER;
  2878.   {$EXTERNALSYM TBM_GETRANGEMIN}
  2879.   TBM_GETRANGEMIN         = WM_USER+1;
  2880.   {$EXTERNALSYM TBM_GETRANGEMAX}
  2881.   TBM_GETRANGEMAX         = WM_USER+2;
  2882.   {$EXTERNALSYM TBM_GETTIC}
  2883.   TBM_GETTIC              = WM_USER+3;
  2884.   {$EXTERNALSYM TBM_SETTIC}
  2885.   TBM_SETTIC              = WM_USER+4;
  2886.   {$EXTERNALSYM TBM_SETPOS}
  2887.   TBM_SETPOS              = WM_USER+5;
  2888.   {$EXTERNALSYM TBM_SETRANGE}
  2889.   TBM_SETRANGE            = WM_USER+6;
  2890.   {$EXTERNALSYM TBM_SETRANGEMIN}
  2891.   TBM_SETRANGEMIN         = WM_USER+7;
  2892.   {$EXTERNALSYM TBM_SETRANGEMAX}
  2893.   TBM_SETRANGEMAX         = WM_USER+8;
  2894.   {$EXTERNALSYM TBM_CLEARTICS}
  2895.   TBM_CLEARTICS           = WM_USER+9;
  2896.   {$EXTERNALSYM TBM_SETSEL}
  2897.   TBM_SETSEL              = WM_USER+10;
  2898.   {$EXTERNALSYM TBM_SETSELSTART}
  2899.   TBM_SETSELSTART         = WM_USER+11;
  2900.   {$EXTERNALSYM TBM_SETSELEND}
  2901.   TBM_SETSELEND           = WM_USER+12;
  2902.   {$EXTERNALSYM TBM_GETPTICS}
  2903.   TBM_GETPTICS            = WM_USER+14;
  2904.   {$EXTERNALSYM TBM_GETTICPOS}
  2905.   TBM_GETTICPOS           = WM_USER+15;
  2906.   {$EXTERNALSYM TBM_GETNUMTICS}
  2907.   TBM_GETNUMTICS          = WM_USER+16;
  2908.   {$EXTERNALSYM TBM_GETSELSTART}
  2909.   TBM_GETSELSTART         = WM_USER+17;
  2910.   {$EXTERNALSYM TBM_GETSELEND}
  2911.   TBM_GETSELEND           = WM_USER+18;
  2912.   {$EXTERNALSYM TBM_CLEARSEL}
  2913.   TBM_CLEARSEL            = WM_USER+19;
  2914.   {$EXTERNALSYM TBM_SETTICFREQ}
  2915.   TBM_SETTICFREQ          = WM_USER+20;
  2916.   {$EXTERNALSYM TBM_SETPAGESIZE}
  2917.   TBM_SETPAGESIZE         = WM_USER+21;
  2918.   {$EXTERNALSYM TBM_GETPAGESIZE}
  2919.   TBM_GETPAGESIZE         = WM_USER+22;
  2920.   {$EXTERNALSYM TBM_SETLINESIZE}
  2921.   TBM_SETLINESIZE         = WM_USER+23;
  2922.   {$EXTERNALSYM TBM_GETLINESIZE}
  2923.   TBM_GETLINESIZE         = WM_USER+24;
  2924.   {$EXTERNALSYM TBM_GETTHUMBRECT}
  2925.   TBM_GETTHUMBRECT        = WM_USER+25;
  2926.   {$EXTERNALSYM TBM_GETCHANNELRECT}
  2927.   TBM_GETCHANNELRECT      = WM_USER+26;
  2928.   {$EXTERNALSYM TBM_SETTHUMBLENGTH}
  2929.   TBM_SETTHUMBLENGTH      = WM_USER+27;
  2930.   {$EXTERNALSYM TBM_GETTHUMBLENGTH}
  2931.   TBM_GETTHUMBLENGTH      = WM_USER+28;
  2932.   {$EXTERNALSYM TBM_SETTOOLTIPS}
  2933.   TBM_SETTOOLTIPS         = WM_USER+29;
  2934.   {$EXTERNALSYM TBM_GETTOOLTIPS}
  2935.   TBM_GETTOOLTIPS         = WM_USER+30;
  2936.   {$EXTERNALSYM TBM_SETTIPSIDE}
  2937.   TBM_SETTIPSIDE          = WM_USER+31;
  2938.  
  2939.   // TrackBar Tip Side flags
  2940.   {$EXTERNALSYM TBTS_TOP}
  2941.   TBTS_TOP                = 0;
  2942.   {$EXTERNALSYM TBTS_LEFT}
  2943.   TBTS_LEFT               = 1;
  2944.   {$EXTERNALSYM TBTS_BOTTOM}
  2945.   TBTS_BOTTOM             = 2;
  2946.   {$EXTERNALSYM TBTS_RIGHT}
  2947.   TBTS_RIGHT              = 3;
  2948.  
  2949.   {$EXTERNALSYM TBM_SETBUDDY}
  2950.   TBM_SETBUDDY            = WM_USER+32; // wparam = BOOL fLeft; (or right)
  2951.   {$EXTERNALSYM TBM_GETBUDDY}
  2952.   TBM_GETBUDDY            = WM_USER+33; // wparam = BOOL fLeft; (or right)
  2953.   {$EXTERNALSYM TBM_SETUNICODEFORMAT}
  2954.   TBM_SETUNICODEFORMAT    = CCM_SETUNICODEFORMAT;
  2955.   {$EXTERNALSYM TBM_GETUNICODEFORMAT}
  2956.   TBM_GETUNICODEFORMAT    = CCM_GETUNICODEFORMAT;
  2957.  
  2958.   {$EXTERNALSYM TB_LINEUP}
  2959.   TB_LINEUP               = 0;
  2960.   {$EXTERNALSYM TB_LINEDOWN}
  2961.   TB_LINEDOWN             = 1;
  2962.   {$EXTERNALSYM TB_PAGEUP}
  2963.   TB_PAGEUP               = 2;
  2964.   {$EXTERNALSYM TB_PAGEDOWN}
  2965.   TB_PAGEDOWN             = 3;
  2966.   {$EXTERNALSYM TB_THUMBPOSITION}
  2967.   TB_THUMBPOSITION        = 4;
  2968.   {$EXTERNALSYM TB_THUMBTRACK}
  2969.   TB_THUMBTRACK           = 5;
  2970.   {$EXTERNALSYM TB_TOP}
  2971.   TB_TOP                  = 6;
  2972.   {$EXTERNALSYM TB_BOTTOM}
  2973.   TB_BOTTOM               = 7;
  2974.   {$EXTERNALSYM TB_ENDTRACK}
  2975.   TB_ENDTRACK             = 8;
  2976.  
  2977.   // custom draw item specs
  2978.   {$EXTERNALSYM TBCD_TICS}
  2979.   TBCD_TICS    = $0001;
  2980.   {$EXTERNALSYM TBCD_THUMB}
  2981.   TBCD_THUMB   = $0002;
  2982.   {$EXTERNALSYM TBCD_CHANNEL}
  2983.   TBCD_CHANNEL = $0003;
  2984.  
  2985. { ====== DRAG LIST CONTROL ================== }
  2986.  
  2987. type
  2988.   PDragListInfo = ^TDragListInfo;
  2989.   {$EXTERNALSYM tagDRAGLISTINFO}
  2990.   tagDRAGLISTINFO = packed record
  2991.     uNotification: UINT;
  2992.     hWnd: HWND;
  2993.     ptCursor: TPoint;
  2994.   end;
  2995.   TDragListInfo = tagDRAGLISTINFO;
  2996.   {$EXTERNALSYM DRAGLISTINFO}
  2997.   DRAGLISTINFO = tagDRAGLISTINFO;
  2998.  
  2999. const
  3000.   {$EXTERNALSYM DL_BEGINDRAG}
  3001.   DL_BEGINDRAG            = WM_USER+133;
  3002.   {$EXTERNALSYM DL_DRAGGING}
  3003.   DL_DRAGGING             = WM_USER+134;
  3004.   {$EXTERNALSYM DL_DROPPED}
  3005.   DL_DROPPED              = WM_USER+135;
  3006.   {$EXTERNALSYM DL_CANCELDRAG}
  3007.   DL_CANCELDRAG           = WM_USER+136;
  3008.  
  3009.   {$EXTERNALSYM DL_CURSORSET}
  3010.   DL_CURSORSET            = 0;
  3011.   {$EXTERNALSYM DL_STOPCURSOR}
  3012.   DL_STOPCURSOR           = 1;
  3013.   {$EXTERNALSYM DL_COPYCURSOR}
  3014.   DL_COPYCURSOR           = 2;
  3015.   {$EXTERNALSYM DL_MOVECURSOR}
  3016.   DL_MOVECURSOR           = 3;
  3017.  
  3018. const
  3019.   {$EXTERNALSYM DRAGLISTMSGSTRING}
  3020.   DRAGLISTMSGSTRING = 'commctrl_DragListMsg';
  3021.  
  3022. {$EXTERNALSYM MakeDragList}
  3023. procedure MakeDragList(hLB: HWND); stdcall;
  3024. {$EXTERNALSYM DrawInsert}
  3025. procedure DrawInsert(hwndParent: HWND; hLB: HWND; nItem: Integer); stdcall;
  3026. {$EXTERNALSYM LBItemFromPt}
  3027. function LBItemFromPt(hLB: HWND; pt: TPoint; bAutoScroll: Bool): Integer; stdcall;
  3028.  
  3029.  
  3030. { ====== UPDOWN CONTROL ========================== }
  3031.  
  3032. const
  3033.   {$EXTERNALSYM UPDOWN_CLASS}
  3034.   UPDOWN_CLASS = 'msctls_updown32';
  3035.  
  3036. type
  3037.   PUDAccel = ^TUDAccel;
  3038.   {$EXTERNALSYM _UDACCEL}
  3039.   _UDACCEL = packed record
  3040.     nSec: UINT;
  3041.     nInc: UINT;
  3042.   end;
  3043.   TUDAccel = _UDACCEL;
  3044.   {$EXTERNALSYM UDACCEL}
  3045.   UDACCEL = _UDACCEL;
  3046.  
  3047. const
  3048.   {$EXTERNALSYM UD_MAXVAL}
  3049.   UD_MAXVAL               = $7fff;
  3050.   {$EXTERNALSYM UD_MINVAL}
  3051.   UD_MINVAL               = -UD_MAXVAL;
  3052.  
  3053.   {$EXTERNALSYM UDS_WRAP}
  3054.   UDS_WRAP                = $0001;
  3055.   {$EXTERNALSYM UDS_SETBUDDYINT}
  3056.   UDS_SETBUDDYINT         = $0002;
  3057.   {$EXTERNALSYM UDS_ALIGNRIGHT}
  3058.   UDS_ALIGNRIGHT          = $0004;
  3059.   {$EXTERNALSYM UDS_ALIGNLEFT}
  3060.   UDS_ALIGNLEFT           = $0008;
  3061.   {$EXTERNALSYM UDS_AUTOBUDDY}
  3062.   UDS_AUTOBUDDY           = $0010;
  3063.   {$EXTERNALSYM UDS_ARROWKEYS}
  3064.   UDS_ARROWKEYS           = $0020;
  3065.   {$EXTERNALSYM UDS_HORZ}
  3066.   UDS_HORZ                = $0040;
  3067.   {$EXTERNALSYM UDS_NOTHOUSANDS}
  3068.   UDS_NOTHOUSANDS         = $0080;
  3069.   {$EXTERNALSYM UDS_HOTTRACK}
  3070.   UDS_HOTTRACK            = $0100;
  3071.  
  3072.  
  3073.   {$EXTERNALSYM UDM_SETRANGE}
  3074.   UDM_SETRANGE            = WM_USER+101;
  3075.   {$EXTERNALSYM UDM_GETRANGE}
  3076.   UDM_GETRANGE            = WM_USER+102;
  3077.   {$EXTERNALSYM UDM_SETPOS}
  3078.   UDM_SETPOS              = WM_USER+103;
  3079.   {$EXTERNALSYM UDM_GETPOS}
  3080.   UDM_GETPOS              = WM_USER+104;
  3081.   {$EXTERNALSYM UDM_SETBUDDY}
  3082.   UDM_SETBUDDY            = WM_USER+105;
  3083.   {$EXTERNALSYM UDM_GETBUDDY}
  3084.   UDM_GETBUDDY            = WM_USER+106;
  3085.   {$EXTERNALSYM UDM_SETACCEL}
  3086.   UDM_SETACCEL            = WM_USER+107;
  3087.   {$EXTERNALSYM UDM_GETACCEL}
  3088.   UDM_GETACCEL            = WM_USER+108;
  3089.   {$EXTERNALSYM UDM_SETBASE}
  3090.   UDM_SETBASE             = WM_USER+109;
  3091.   {$EXTERNALSYM UDM_GETBASE}
  3092.   UDM_GETBASE             = WM_USER+110;
  3093.   {$EXTERNALSYM UDM_SETRANGE32}
  3094.   UDM_SETRANGE32          = WM_USER+111;
  3095.   {$EXTERNALSYM UDM_GETRANGE32}
  3096.   UDM_GETRANGE32          = WM_USER+112; // wParam & lParam are LPINT
  3097.   {$EXTERNALSYM UDM_SETUNICODEFORMAT}
  3098.   UDM_SETUNICODEFORMAT    = CCM_SETUNICODEFORMAT;
  3099.   {$EXTERNALSYM UDM_GETUNICODEFORMAT}
  3100.   UDM_GETUNICODEFORMAT    = CCM_GETUNICODEFORMAT;
  3101.  
  3102. {$EXTERNALSYM CreateUpDownControl}
  3103. function CreateUpDownControl(dwStyle: Longint; X, Y, CX, CY: Integer;
  3104.   hParent: HWND;  nID: Integer; hInst: THandle; hBuddy: HWND;
  3105.   nUpper, nLower, nPos: Integer): HWND; stdcall;
  3106.  
  3107. type
  3108.   PNMUpDown = ^TNMUpDown;
  3109.   {$EXTERNALSYM _NM_UPDOWN}
  3110.   _NM_UPDOWN = packed record
  3111.     hdr: TNMHDR;
  3112.     iPos: Integer;
  3113.     iDelta: Integer;
  3114.   end;
  3115.   TNMUpDown = _NM_UPDOWN;
  3116.   {$EXTERNALSYM NM_UPDOWN}
  3117.   NM_UPDOWN = _NM_UPDOWN;
  3118.  
  3119. const
  3120.   {$EXTERNALSYM UDN_DELTAPOS}
  3121.   UDN_DELTAPOS = UDN_FIRST - 1;
  3122.  
  3123.  
  3124. { ====== PROGRESS CONTROL ========================= }
  3125.  
  3126. const
  3127.   {$EXTERNALSYM PROGRESS_CLASS}
  3128.   PROGRESS_CLASS = 'msctls_progress32';
  3129.  
  3130. type
  3131.   {$EXTERNALSYM PBRANGE}
  3132.   PBRANGE = record
  3133.     iLow: Integer;
  3134.     iHigh: Integer;
  3135.   end;
  3136.   PPBRange = ^TPBRange;
  3137.   TPBRange = PBRANGE;
  3138.  
  3139. const
  3140.   {$EXTERNALSYM PBS_SMOOTH}
  3141.   PBS_SMOOTH              = 01;
  3142.   {$EXTERNALSYM PBS_VERTICAL}
  3143.   PBS_VERTICAL            = 04;
  3144.   
  3145.   {$EXTERNALSYM PBM_SETRANGE}
  3146.   PBM_SETRANGE            = WM_USER+1;
  3147.   {$EXTERNALSYM PBM_SETPOS}
  3148.   PBM_SETPOS              = WM_USER+2;
  3149.   {$EXTERNALSYM PBM_DELTAPOS}
  3150.   PBM_DELTAPOS            = WM_USER+3;
  3151.   {$EXTERNALSYM PBM_SETSTEP}
  3152.   PBM_SETSTEP             = WM_USER+4;
  3153.   {$EXTERNALSYM PBM_STEPIT}
  3154.   PBM_STEPIT              = WM_USER+5;
  3155.   {$EXTERNALSYM PBM_SETRANGE32}
  3156.   PBM_SETRANGE32          = WM_USER+6;   // lParam = high, wParam = low
  3157.   {$EXTERNALSYM PBM_GETRANGE}
  3158.   PBM_GETRANGE            = WM_USER+7;   // lParam = PPBRange or Nil
  3159.                      // wParam = False: Result = high
  3160.                      // wParam = True: Result = low
  3161.   {$EXTERNALSYM PBM_GETPOS}
  3162.   PBM_GETPOS              = WM_USER+8;
  3163.   {$EXTERNALSYM PBM_SETBARCOLOR}
  3164.   PBM_SETBARCOLOR         = WM_USER+9;        // lParam = bar color
  3165.   {$EXTERNALSYM PBM_SETBKCOLOR}
  3166.   PBM_SETBKCOLOR          = CCM_SETBKCOLOR;  // lParam = bkColor
  3167.  
  3168.  
  3169. {  ====== HOTKEY CONTROL ========================== }
  3170.  
  3171. const
  3172.   {$EXTERNALSYM HOTKEYF_SHIFT}
  3173.   HOTKEYF_SHIFT           = $01;
  3174.   {$EXTERNALSYM HOTKEYF_CONTROL}
  3175.   HOTKEYF_CONTROL         = $02;
  3176.   {$EXTERNALSYM HOTKEYF_ALT}
  3177.   HOTKEYF_ALT             = $04;
  3178.   {$EXTERNALSYM HOTKEYF_EXT}
  3179.   HOTKEYF_EXT             = $08;
  3180.  
  3181.   {$EXTERNALSYM HKCOMB_NONE}
  3182.   HKCOMB_NONE             = $0001;
  3183.   {$EXTERNALSYM HKCOMB_S}
  3184.   HKCOMB_S                = $0002;
  3185.   {$EXTERNALSYM HKCOMB_C}
  3186.   HKCOMB_C                = $0004;
  3187.   {$EXTERNALSYM HKCOMB_A}
  3188.   HKCOMB_A                = $0008;
  3189.   {$EXTERNALSYM HKCOMB_SC}
  3190.   HKCOMB_SC               = $0010;
  3191.   {$EXTERNALSYM HKCOMB_SA}
  3192.   HKCOMB_SA               = $0020;
  3193.   {$EXTERNALSYM HKCOMB_CA}
  3194.   HKCOMB_CA               = $0040;
  3195.   {$EXTERNALSYM HKCOMB_SCA}
  3196.   HKCOMB_SCA              = $0080;
  3197.  
  3198.  
  3199.   {$EXTERNALSYM HKM_SETHOTKEY}
  3200.   HKM_SETHOTKEY           = WM_USER+1;
  3201.   {$EXTERNALSYM HKM_GETHOTKEY}
  3202.   HKM_GETHOTKEY           = WM_USER+2;
  3203.   {$EXTERNALSYM HKM_SETRULES}
  3204.   HKM_SETRULES            = WM_USER+3;
  3205.  
  3206. const
  3207.   HOTKEYCLASS = 'msctls_hotkey32';
  3208.  
  3209.  
  3210. { ====== COMMON CONTROL STYLES ================ }
  3211.  
  3212. const
  3213.   {$EXTERNALSYM CCS_TOP}
  3214.   CCS_TOP                 = $00000001;
  3215.   {$EXTERNALSYM CCS_NOMOVEY}
  3216.   CCS_NOMOVEY             = $00000002;
  3217.   {$EXTERNALSYM CCS_BOTTOM}
  3218.   CCS_BOTTOM              = $00000003;
  3219.   {$EXTERNALSYM CCS_NORESIZE}
  3220.   CCS_NORESIZE            = $00000004;
  3221.   {$EXTERNALSYM CCS_NOPARENTALIGN}
  3222.   CCS_NOPARENTALIGN       = $00000008;
  3223.   {$EXTERNALSYM CCS_ADJUSTABLE}
  3224.   CCS_ADJUSTABLE          = $00000020;
  3225.   {$EXTERNALSYM CCS_NODIVIDER}
  3226.   CCS_NODIVIDER           = $00000040;
  3227.   {$EXTERNALSYM CCS_VERT}
  3228.   CCS_VERT                = $00000080;
  3229.   {$EXTERNALSYM CCS_LEFT}
  3230.   CCS_LEFT                = (CCS_VERT or CCS_TOP);
  3231.   {$EXTERNALSYM CCS_RIGHT}
  3232.   CCS_RIGHT               = (CCS_VERT or CCS_BOTTOM);
  3233.   {$EXTERNALSYM CCS_NOMOVEX}
  3234.   CCS_NOMOVEX             = (CCS_VERT or CCS_NOMOVEY);
  3235.  
  3236.  
  3237. { ====== LISTVIEW CONTROL ====================== }
  3238.  
  3239. const
  3240.   {$EXTERNALSYM WC_LISTVIEW}
  3241.   WC_LISTVIEW = 'SysListView32';
  3242.  
  3243. const
  3244.  
  3245.   { List View Styles }
  3246.   {$EXTERNALSYM LVS_ICON}
  3247.   LVS_ICON                = $0000;
  3248.   {$EXTERNALSYM LVS_REPORT}
  3249.   LVS_REPORT              = $0001;
  3250.   {$EXTERNALSYM LVS_SMALLICON}
  3251.   LVS_SMALLICON           = $0002;
  3252.   {$EXTERNALSYM LVS_LIST}
  3253.   LVS_LIST                = $0003;
  3254.   {$EXTERNALSYM LVS_TYPEMASK}
  3255.   LVS_TYPEMASK            = $0003;
  3256.   {$EXTERNALSYM LVS_SINGLESEL}
  3257.   LVS_SINGLESEL           = $0004;
  3258.   {$EXTERNALSYM LVS_SHOWSELALWAYS}
  3259.   LVS_SHOWSELALWAYS       = $0008;
  3260.   {$EXTERNALSYM LVS_SORTASCENDING}
  3261.   LVS_SORTASCENDING       = $0010;
  3262.   {$EXTERNALSYM LVS_SORTDESCENDING}
  3263.   LVS_SORTDESCENDING      = $0020;
  3264.   {$EXTERNALSYM LVS_SHAREIMAGELISTS}
  3265.   LVS_SHAREIMAGELISTS     = $0040;
  3266.   {$EXTERNALSYM LVS_NOLABELWRAP}
  3267.   LVS_NOLABELWRAP         = $0080;
  3268.   {$EXTERNALSYM LVS_AUTOARRANGE}
  3269.   LVS_AUTOARRANGE         = $0100;
  3270.   {$EXTERNALSYM LVS_EDITLABELS}
  3271.   LVS_EDITLABELS          = $0200;
  3272.   {$EXTERNALSYM LVS_OWNERDATA}
  3273.   LVS_OWNERDATA           = $1000; 
  3274.   {$EXTERNALSYM LVS_NOSCROLL}
  3275.   LVS_NOSCROLL            = $2000;
  3276.  
  3277.   {$EXTERNALSYM LVS_TYPESTYLEMASK}
  3278.   LVS_TYPESTYLEMASK       = $FC00;
  3279.  
  3280.   {$EXTERNALSYM LVS_ALIGNTOP}
  3281.   LVS_ALIGNTOP            = $0000;
  3282.   {$EXTERNALSYM LVS_ALIGNLEFT}
  3283.   LVS_ALIGNLEFT           = $0800;
  3284.   {$EXTERNALSYM LVS_ALIGNMASK}
  3285.   LVS_ALIGNMASK           = $0c00;
  3286.  
  3287.   {$EXTERNALSYM LVS_OWNERDRAWFIXED}
  3288.   LVS_OWNERDRAWFIXED      = $0400;
  3289.   {$EXTERNALSYM LVS_NOCOLUMNHEADER}
  3290.   LVS_NOCOLUMNHEADER      = $4000;
  3291.   {$EXTERNALSYM LVS_NOSORTHEADER}
  3292.   LVS_NOSORTHEADER        = $8000;
  3293.  
  3294.   { List View Extended Styles }
  3295.   {$EXTERNALSYM LVS_EX_GRIDLINES}
  3296.   LVS_EX_GRIDLINES        = $00000001;
  3297.   {$EXTERNALSYM LVS_EX_SUBITEMIMAGES}
  3298.   LVS_EX_SUBITEMIMAGES    = $00000002;
  3299.   {$EXTERNALSYM LVS_EX_CHECKBOXES}
  3300.   LVS_EX_CHECKBOXES       = $00000004;
  3301.   {$EXTERNALSYM LVS_EX_TRACKSELECT}
  3302.   LVS_EX_TRACKSELECT      = $00000008;
  3303.   {$EXTERNALSYM LVS_EX_HEADERDRAGDROP}
  3304.   LVS_EX_HEADERDRAGDROP   = $00000010;
  3305.   {$EXTERNALSYM LVS_EX_FULLROWSELECT}
  3306.   LVS_EX_FULLROWSELECT    = $00000020; // applies to report mode only
  3307.   {$EXTERNALSYM LVS_EX_ONECLICKACTIVATE}
  3308.   LVS_EX_ONECLICKACTIVATE = $00000040;
  3309.   {$EXTERNALSYM LVS_EX_TWOCLICKACTIVATE}
  3310.   LVS_EX_TWOCLICKACTIVATE = $00000080;
  3311.   {$EXTERNALSYM LVS_EX_FLATSB}
  3312.   LVS_EX_FLATSB           = $00000100;
  3313.   {$EXTERNALSYM LVS_EX_REGIONAL}
  3314.   LVS_EX_REGIONAL         = $00000200;
  3315.   {$EXTERNALSYM LVS_EX_INFOTIP}
  3316.   LVS_EX_INFOTIP          = $00000400; // listview does InfoTips for you
  3317.   {$EXTERNALSYM LVS_EX_UNDERLINEHOT}
  3318.   LVS_EX_UNDERLINEHOT     = $00000800;
  3319.   {$EXTERNALSYM LVS_EX_UNDERLINECOLD}
  3320.   LVS_EX_UNDERLINECOLD    = $00001000;
  3321.   {$EXTERNALSYM LVS_EX_MULTIWORKAREAS}
  3322.   LVS_EX_MULTIWORKAREAS   = $00002000;
  3323.  
  3324. const
  3325.   {$EXTERNALSYM LVM_SETUNICODEFORMAT}
  3326.   LVM_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  3327.  
  3328. {$EXTERNALSYM ListView_SetUnicodeFormat}
  3329. function ListView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  3330.  
  3331. const
  3332.   {$EXTERNALSYM LVM_GETUNICODEFORMAT}
  3333.   LVM_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  3334.  
  3335. {$EXTERNALSYM ListView_GetUnicodeFormat}
  3336. function ListView_GetUnicodeFormat(hwnd: HWND): BOOL;
  3337.  
  3338. const
  3339.   {$EXTERNALSYM LVM_GETBKCOLOR}
  3340.   LVM_GETBKCOLOR          = LVM_FIRST + 0;
  3341.  
  3342. {$EXTERNALSYM ListView_GetBkColor}
  3343. function ListView_GetBkColor(hWnd: HWND): TColorRef;
  3344.  
  3345. const
  3346.   {$EXTERNALSYM LVM_SETBKCOLOR}
  3347.   LVM_SETBKCOLOR          = LVM_FIRST + 1;
  3348.  
  3349. {$EXTERNALSYM ListView_SetBkColor}
  3350. function ListView_SetBkColor(hWnd: HWND; clrBk: TColorRef): Bool;
  3351.  
  3352. const
  3353.   {$EXTERNALSYM LVM_GETIMAGELIST}
  3354.   LVM_GETIMAGELIST        = LVM_FIRST + 2;
  3355.  
  3356. {$EXTERNALSYM ListView_GetImageList}
  3357. function ListView_GetImageList(hWnd: HWND; iImageList: Integer): HIMAGELIST;
  3358.  
  3359. const
  3360.   {$EXTERNALSYM LVSIL_NORMAL}
  3361.   LVSIL_NORMAL            = 0;
  3362.   {$EXTERNALSYM LVSIL_SMALL}
  3363.   LVSIL_SMALL             = 1;
  3364.   {$EXTERNALSYM LVSIL_STATE}
  3365.   LVSIL_STATE             = 2;
  3366.  
  3367. const
  3368.   {$EXTERNALSYM LVM_SETIMAGELIST}
  3369.   LVM_SETIMAGELIST        = LVM_FIRST + 3;
  3370.  
  3371. {$EXTERNALSYM ListView_SetImageList}
  3372. function ListView_SetImageList(hWnd: HWND; himl: HIMAGELIST;
  3373.   iImageList: Integer): HIMAGELIST;
  3374.  
  3375. const
  3376.   {$EXTERNALSYM LVM_GETITEMCOUNT}
  3377.   LVM_GETITEMCOUNT        = LVM_FIRST + 4;
  3378.  
  3379. {$EXTERNALSYM ListView_GetItemCount}
  3380. function ListView_GetItemCount(hWnd: HWND): Integer;
  3381.  
  3382. const
  3383.   {$EXTERNALSYM LVIF_TEXT}
  3384.   LVIF_TEXT               = $0001;
  3385.   {$EXTERNALSYM LVIF_IMAGE}
  3386.   LVIF_IMAGE              = $0002;
  3387.   {$EXTERNALSYM LVIF_PARAM}
  3388.   LVIF_PARAM              = $0004;
  3389.   {$EXTERNALSYM LVIF_STATE}
  3390.   LVIF_STATE              = $0008;
  3391.   {$EXTERNALSYM LVIF_INDENT}
  3392.   LVIF_INDENT             = $0010;
  3393.   {$EXTERNALSYM LVIF_NORECOMPUTE}
  3394.   LVIF_NORECOMPUTE        = $0800;
  3395.  
  3396.   {$EXTERNALSYM LVIS_FOCUSED}
  3397.   LVIS_FOCUSED            = $0001;
  3398.   {$EXTERNALSYM LVIS_SELECTED}
  3399.   LVIS_SELECTED           = $0002;
  3400.   {$EXTERNALSYM LVIS_CUT}
  3401.   LVIS_CUT                = $0004;
  3402.   {$EXTERNALSYM LVIS_DROPHILITED}
  3403.   LVIS_DROPHILITED        = $0008;
  3404.   {$EXTERNALSYM LVIS_ACTIVATING}
  3405.   LVIS_ACTIVATING         = $0020;
  3406.  
  3407.   {$EXTERNALSYM LVIS_OVERLAYMASK}
  3408.   LVIS_OVERLAYMASK        = $0F00;
  3409.   {$EXTERNALSYM LVIS_STATEIMAGEMASK}
  3410.   LVIS_STATEIMAGEMASK     = $F000;
  3411.  
  3412. {$EXTERNALSYM IndexToStateImageMask}
  3413. function IndexToStateImageMask(I: Longint): Longint;
  3414.  
  3415. const
  3416.   {$EXTERNALSYM I_INDENTCALLBACK}
  3417.   I_INDENTCALLBACK        = -1;
  3418.  
  3419. type
  3420.   PLVItemA = ^TLVItemA;
  3421.   PLVItemW = ^TLVItemW;
  3422.   PLVItem = PLVItemA;
  3423.   {$EXTERNALSYM tagLVITEMA}
  3424.   tagLVITEMA = packed record
  3425.     mask: UINT;
  3426.     iItem: Integer;
  3427.     iSubItem: Integer;
  3428.     state: UINT;
  3429.     stateMask: UINT;
  3430.     pszText: PAnsiChar;
  3431.     cchTextMax: Integer;
  3432.     iImage: Integer;
  3433.     lParam: LPARAM;
  3434.     iIndent: Integer;
  3435.   end;
  3436.   {$EXTERNALSYM tagLVITEMW}
  3437.   tagLVITEMW = packed record
  3438.     mask: UINT;
  3439.     iItem: Integer;
  3440.     iSubItem: Integer;
  3441.     state: UINT;
  3442.     stateMask: UINT;
  3443.     pszText: PWideChar;
  3444.     cchTextMax: Integer;
  3445.     iImage: Integer;
  3446.     lParam: LPARAM;
  3447.     iIndent: Integer;
  3448.   end;
  3449.   {$EXTERNALSYM tagLVITEM}
  3450.   tagLVITEM = tagLVITEMA;
  3451.   {$EXTERNALSYM _LV_ITEMA}
  3452.   _LV_ITEMA = tagLVITEMA;
  3453.   {$EXTERNALSYM _LV_ITEMW}
  3454.   _LV_ITEMW = tagLVITEMW;
  3455.   {$EXTERNALSYM _LV_ITEM}
  3456.   _LV_ITEM = _LV_ITEMA;
  3457.   TLVItemA = tagLVITEMA;
  3458.   TLVItemW = tagLVITEMW;
  3459.   TLVItem = TLVItemA;
  3460.   {$EXTERNALSYM LV_ITEMA}
  3461.   LV_ITEMA = tagLVITEMA;
  3462.   {$EXTERNALSYM LV_ITEMW}
  3463.   LV_ITEMW = tagLVITEMW;
  3464.   {$EXTERNALSYM LV_ITEM}
  3465.   LV_ITEM = LV_ITEMA;
  3466.  
  3467. const
  3468.   {$EXTERNALSYM LPSTR_TEXTCALLBACKA}
  3469.   LPSTR_TEXTCALLBACKA = LPSTR(-1);
  3470.   {$EXTERNALSYM LPSTR_TEXTCALLBACKW}
  3471.   LPSTR_TEXTCALLBACKW = LPWSTR(-1);
  3472.  
  3473.   {$EXTERNALSYM LPSTR_TEXTCALLBACK}
  3474.   LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
  3475.  
  3476.   {$EXTERNALSYM I_IMAGECALLBACK}
  3477.   I_IMAGECALLBACK         = -1;
  3478.  
  3479. const
  3480.   {$EXTERNALSYM LVM_GETITEMA}
  3481.   LVM_GETITEMA            = LVM_FIRST + 5;
  3482.   {$EXTERNALSYM LVM_SETITEMA}
  3483.   LVM_SETITEMA            = LVM_FIRST + 6;
  3484.   {$EXTERNALSYM LVM_INSERTITEMA}
  3485.   LVM_INSERTITEMA         = LVM_FIRST + 7;
  3486.  
  3487.   {$EXTERNALSYM LVM_GETITEMW}
  3488.   LVM_GETITEMW            = LVM_FIRST + 75;
  3489.   {$EXTERNALSYM LVM_SETITEMW}
  3490.   LVM_SETITEMW            = LVM_FIRST + 76;
  3491.   {$EXTERNALSYM LVM_INSERTITEMW}
  3492.   LVM_INSERTITEMW         = LVM_FIRST + 77;
  3493.  
  3494.   {$EXTERNALSYM LVM_GETITEM}
  3495.   LVM_GETITEM            = LVM_GETITEMA;
  3496.   {$EXTERNALSYM LVM_SETITEM}
  3497.   LVM_SETITEM            = LVM_SETITEMA;
  3498.   {$EXTERNALSYM LVM_INSERTITEM}
  3499.   LVM_INSERTITEM         = LVM_INSERTITEMA;
  3500.  
  3501.   {$EXTERNALSYM LVM_DELETEITEM}
  3502.   LVM_DELETEITEM          = LVM_FIRST + 8;
  3503.   {$EXTERNALSYM LVM_DELETEALLITEMS}
  3504.   LVM_DELETEALLITEMS      = LVM_FIRST + 9;
  3505.   {$EXTERNALSYM LVM_GETCALLBACKMASK}
  3506.   LVM_GETCALLBACKMASK     = LVM_FIRST + 10;
  3507.   {$EXTERNALSYM LVM_SETCALLBACKMASK}
  3508.   LVM_SETCALLBACKMASK     = LVM_FIRST + 11;
  3509.  
  3510. {$EXTERNALSYM ListView_GetItemA}
  3511. function ListView_GetItemA(hWnd: HWND; var pItem: TLVItemA): Bool;
  3512. {$EXTERNALSYM ListView_GetItemW}
  3513. function ListView_GetItemW(hWnd: HWND; var pItem: TLVItemW): Bool;
  3514. {$EXTERNALSYM ListView_GetItem}
  3515. function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;
  3516. {$EXTERNALSYM ListView_SetItemA}
  3517. function ListView_SetItemA(hWnd: HWND; const pItem: TLVItemA): Bool;
  3518. {$EXTERNALSYM ListView_SetItemW}
  3519. function ListView_SetItemW(hWnd: HWND; const pItem: TLVItemW): Bool;
  3520. {$EXTERNALSYM ListView_SetItem}
  3521. function ListView_SetItem(hWnd: HWND; const pItem: TLVItem): Bool;
  3522. {$EXTERNALSYM ListView_InsertItemA}
  3523. function ListView_InsertItemA(hWnd: HWND; const pItem: TLVItemA): Integer;
  3524. {$EXTERNALSYM ListView_InsertItemW}
  3525. function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer;
  3526. {$EXTERNALSYM ListView_InsertItem}
  3527. function ListView_InsertItem(hWnd: HWND; const pItem: TLVItem): Integer;
  3528. {$EXTERNALSYM ListView_DeleteItem}
  3529. function ListView_DeleteItem(hWnd: HWND; i: Integer): Bool;
  3530. {$EXTERNALSYM ListView_DeleteAllItems}
  3531. function ListView_DeleteAllItems(hWnd: HWND): Bool;
  3532. {$EXTERNALSYM ListView_GetCallbackMask}
  3533. function ListView_GetCallbackMask(hWnd: HWND): UINT;
  3534. {$EXTERNALSYM ListView_SetCallbackMask}
  3535. function ListView_SetCallbackMask(hWnd: HWND; mask: UINT): Bool;
  3536.  
  3537. const
  3538.   {$EXTERNALSYM LVNI_ALL}
  3539.   LVNI_ALL                = $0000;
  3540.   {$EXTERNALSYM LVNI_FOCUSED}
  3541.   LVNI_FOCUSED            = $0001;
  3542.   {$EXTERNALSYM LVNI_SELECTED}
  3543.   LVNI_SELECTED           = $0002;
  3544.   {$EXTERNALSYM LVNI_CUT}
  3545.   LVNI_CUT                = $0004;
  3546.   {$EXTERNALSYM LVNI_DROPHILITED}
  3547.   LVNI_DROPHILITED        = $0008;
  3548.  
  3549.   {$EXTERNALSYM LVNI_ABOVE}
  3550.   LVNI_ABOVE              = $0100;
  3551.   {$EXTERNALSYM LVNI_BELOW}
  3552.   LVNI_BELOW              = $0200;
  3553.   {$EXTERNALSYM LVNI_TOLEFT}
  3554.   LVNI_TOLEFT             = $0400;
  3555.   {$EXTERNALSYM LVNI_TORIGHT}
  3556.   LVNI_TORIGHT            = $0800;
  3557.  
  3558.  
  3559. const
  3560.   {$EXTERNALSYM LVM_GETNEXTITEM}
  3561.   LVM_GETNEXTITEM         = LVM_FIRST + 12;
  3562.  
  3563. {$EXTERNALSYM ListView_GetNextItem}
  3564. function ListView_GetNextItem(hWnd: HWND; iStart: Integer; Flags: UINT): Integer;
  3565.  
  3566. const
  3567.   {$EXTERNALSYM LVFI_PARAM}
  3568.   LVFI_PARAM              = $0001;
  3569.   {$EXTERNALSYM LVFI_STRING}
  3570.   LVFI_STRING             = $0002;
  3571.   {$EXTERNALSYM LVFI_PARTIAL}
  3572.   LVFI_PARTIAL            = $0008;
  3573.   {$EXTERNALSYM LVFI_WRAP}
  3574.   LVFI_WRAP               = $0020;
  3575.   {$EXTERNALSYM LVFI_NEARESTXY}
  3576.   LVFI_NEARESTXY          = $0040;
  3577.  
  3578.  
  3579. type
  3580.   PLVFindInfoA = ^TLVFindInfoA;
  3581.   PLVFindInfoW = ^TLVFindInfoW;
  3582.   PLVFindInfo = PLVFindInfoA;
  3583.   {$EXTERNALSYM tagLVFINDINFOA}
  3584.   tagLVFINDINFOA = packed record
  3585.     flags: UINT;
  3586.     psz: PAnsiChar;
  3587.     lParam: LPARAM;
  3588.     pt: TPoint;
  3589.     vkDirection: UINT;
  3590.   end;
  3591.   {$EXTERNALSYM tagLVFINDINFOW}
  3592.   tagLVFINDINFOW = packed record
  3593.     flags: UINT;
  3594.     psz: PWideChar;
  3595.     lParam: LPARAM;
  3596.     pt: TPoint;
  3597.     vkDirection: UINT;
  3598.   end;
  3599.   {$EXTERNALSYM tagLVFINDINFO}
  3600.   tagLVFINDINFO = tagLVFINDINFOA;
  3601.   {$EXTERNALSYM _LV_FINDINFOA}
  3602.   _LV_FINDINFOA = tagLVFINDINFOA;
  3603.   {$EXTERNALSYM _LV_FINDINFOW}
  3604.   _LV_FINDINFOW = tagLVFINDINFOW;
  3605.   {$EXTERNALSYM _LV_FINDINFO}
  3606.   _LV_FINDINFO = _LV_FINDINFOA;
  3607.   TLVFindInfoA = tagLVFINDINFOA;
  3608.   TLVFindInfoW = tagLVFINDINFOW;
  3609.   TLVFindInfo = TLVFindInfoA;
  3610.   {$EXTERNALSYM LV_FINDINFOA}
  3611.   LV_FINDINFOA = tagLVFINDINFOA;
  3612.   {$EXTERNALSYM LV_FINDINFOW}
  3613.   LV_FINDINFOW = tagLVFINDINFOW;
  3614.   {$EXTERNALSYM LV_FINDINFO}
  3615.   LV_FINDINFO = LV_FINDINFOA;
  3616.  
  3617. const
  3618.   {$EXTERNALSYM LVM_FINDITEMA}
  3619.   LVM_FINDITEMA            = LVM_FIRST + 13;
  3620.   {$EXTERNALSYM LVM_FINDITEMW}
  3621.   LVM_FINDITEMW            = LVM_FIRST + 83;
  3622.   {$EXTERNALSYM LVM_FINDITEM}
  3623.   LVM_FINDITEM            = LVM_FINDITEMA;
  3624.  
  3625. {$EXTERNALSYM ListView_FindItemA}
  3626. function ListView_FindItemA(hWnd: HWND; iStart: Integer;
  3627.   const plvfi: TLVFindInfoA): Integer;
  3628. {$EXTERNALSYM ListView_FindItemW}
  3629. function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  3630.   const plvfi: TLVFindInfoW): Integer;
  3631. {$EXTERNALSYM ListView_FindItem}
  3632. function ListView_FindItem(hWnd: HWND; iStart: Integer;
  3633.   const plvfi: TLVFindInfo): Integer;
  3634.  
  3635. const
  3636.   {$EXTERNALSYM LVIR_BOUNDS}
  3637.   LVIR_BOUNDS             = 0;
  3638.   {$EXTERNALSYM LVIR_ICON}
  3639.   LVIR_ICON               = 1;
  3640.   {$EXTERNALSYM LVIR_LABEL}
  3641.   LVIR_LABEL              = 2;
  3642.   {$EXTERNALSYM LVIR_SELECTBOUNDS}
  3643.   LVIR_SELECTBOUNDS       = 3;
  3644.  
  3645.  
  3646. const
  3647.   {$EXTERNALSYM LVM_GETITEMRECT}
  3648.   LVM_GETITEMRECT         = LVM_FIRST + 14;
  3649.  
  3650. {$EXTERNALSYM ListView_GetItemRect}
  3651. function ListView_GetItemRect(hWnd: HWND; i: Integer; var prc: TRect;
  3652.   Code: Integer): Bool;
  3653.  
  3654. const
  3655.   {$EXTERNALSYM LVM_SETITEMPOSITION}
  3656.   LVM_SETITEMPOSITION     = LVM_FIRST + 15;
  3657.  
  3658. {$EXTERNALSYM ListView_SetItemPosition}
  3659. function ListView_SetItemPosition(hWnd: HWND; i, x, y: Integer): Bool;
  3660.  
  3661. const
  3662.   {$EXTERNALSYM LVM_GETITEMPOSITION}
  3663.   LVM_GETITEMPOSITION     = LVM_FIRST + 16;
  3664.  
  3665. {$EXTERNALSYM ListView_GetItemPosition}
  3666. function ListView_GetItemPosition(hwndLV: HWND; i: Integer; var ppt: TPoint): Bool;
  3667.  
  3668. const
  3669.   {$EXTERNALSYM LVM_GETSTRINGWIDTHA}
  3670.   LVM_GETSTRINGWIDTHA      = LVM_FIRST + 17;
  3671.   {$EXTERNALSYM LVM_GETSTRINGWIDTHW}
  3672.   LVM_GETSTRINGWIDTHW      = LVM_FIRST + 87;
  3673.   {$EXTERNALSYM LVM_GETSTRINGWIDTH}
  3674.   LVM_GETSTRINGWIDTH      = LVM_GETSTRINGWIDTHA;
  3675.  
  3676. {$EXTERNALSYM ListView_GetStringWidthA}
  3677. function ListView_GetStringWidthA(hwndLV: HWND; psz: PAnsiChar): Integer;
  3678. {$EXTERNALSYM ListView_GetStringWidthW}
  3679. function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer;
  3680. {$EXTERNALSYM ListView_GetStringWidth}
  3681. function ListView_GetStringWidth(hwndLV: HWND; psz: PChar): Integer;
  3682.  
  3683. const
  3684.   {$EXTERNALSYM LVHT_NOWHERE}
  3685.   LVHT_NOWHERE            = $0001;
  3686.   {$EXTERNALSYM LVHT_ONITEMICON}
  3687.   LVHT_ONITEMICON         = $0002;
  3688.   {$EXTERNALSYM LVHT_ONITEMLABEL}
  3689.   LVHT_ONITEMLABEL        = $0004;
  3690.   {$EXTERNALSYM LVHT_ONITEMSTATEICON}
  3691.   LVHT_ONITEMSTATEICON    = $0008;
  3692.   {$EXTERNALSYM LVHT_ONITEM}
  3693.   LVHT_ONITEM             = LVHT_ONITEMICON or LVHT_ONITEMLABEL or
  3694.                 LVHT_ONITEMSTATEICON;
  3695.   {$EXTERNALSYM LVHT_ABOVE}
  3696.   LVHT_ABOVE              = $0008;
  3697.   {$EXTERNALSYM LVHT_BELOW}
  3698.   LVHT_BELOW              = $0010;
  3699.   {$EXTERNALSYM LVHT_TORIGHT}
  3700.   LVHT_TORIGHT            = $0020;
  3701.   {$EXTERNALSYM LVHT_TOLEFT}
  3702.   LVHT_TOLEFT             = $0040;
  3703.  
  3704. type
  3705.   PLVHitTestInfo = ^TLVHitTestInfo;
  3706.   {$EXTERNALSYM tagLVHITTESTINFO}
  3707.   tagLVHITTESTINFO = packed record
  3708.     pt: TPoint;
  3709.     flags: UINT;
  3710.     iItem: Integer;
  3711.     iSubItem: Integer;    // this is was NOT in win95.  valid only for LVM_SUBITEMHITTEST
  3712.   end;
  3713.   TLVHitTestInfo = tagLVHITTESTINFO;
  3714.   {$EXTERNALSYM LV_HITTESTINFO}
  3715.   LV_HITTESTINFO = tagLVHITTESTINFO;
  3716.   {$EXTERNALSYM _LV_HITTESTINFO}
  3717.   _LV_HITTESTINFO = tagLVHITTESTINFO;
  3718.  
  3719. const
  3720.   {$EXTERNALSYM LVM_HITTEST}
  3721.   LVM_HITTEST             = LVM_FIRST + 18;
  3722.  
  3723. {$EXTERNALSYM ListView_HitTest}
  3724. function ListView_HitTest(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer;
  3725.  
  3726. const
  3727.   {$EXTERNALSYM LVM_ENSUREVISIBLE}
  3728.   LVM_ENSUREVISIBLE       = LVM_FIRST + 19;
  3729.  
  3730. {$EXTERNALSYM ListView_EnsureVisible}
  3731. function ListView_EnsureVisible(hwndLV: HWND; i: Integer; fPartialOK: Bool): Bool;
  3732.  
  3733. const
  3734.   {$EXTERNALSYM LVM_SCROLL}
  3735.   LVM_SCROLL              = LVM_FIRST + 20;
  3736.  
  3737. {$EXTERNALSYM ListView_Scroll}
  3738. function ListView_Scroll(hwndLV: HWnd; DX, DY: Integer): Bool;
  3739.  
  3740. const
  3741.   {$EXTERNALSYM LVM_REDRAWITEMS}
  3742.   LVM_REDRAWITEMS         = LVM_FIRST + 21;
  3743.  
  3744. {$EXTERNALSYM ListView_RedrawItems}
  3745. function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool;
  3746.  
  3747. const
  3748.   {$EXTERNALSYM LVA_DEFAULT}
  3749.   LVA_DEFAULT             = $0000;
  3750.   {$EXTERNALSYM LVA_ALIGNLEFT}
  3751.   LVA_ALIGNLEFT           = $0001;
  3752.   {$EXTERNALSYM LVA_ALIGNTOP}
  3753.   LVA_ALIGNTOP            = $0002;
  3754.   LVA_ALIGNRIGHT          = $0003;
  3755.   LVA_ALIGNBOTTOM         = $0004;
  3756.   {$EXTERNALSYM LVA_SNAPTOGRID}
  3757.   LVA_SNAPTOGRID          = $0005;
  3758.  
  3759.   LVA_SORTASCENDING       = $0100;
  3760.   LVA_SORTDESCENDING      = $0200;
  3761.  
  3762.   {$EXTERNALSYM LVM_ARRANGE}
  3763.   LVM_ARRANGE             = LVM_FIRST + 22;
  3764.  
  3765. {$EXTERNALSYM ListView_Arrange}
  3766. function ListView_Arrange(hwndLV: HWND; Code: UINT): Bool;
  3767.  
  3768.  
  3769. const
  3770.   {$EXTERNALSYM LVM_EDITLABELA}
  3771.   LVM_EDITLABELA           = LVM_FIRST + 23;
  3772.   {$EXTERNALSYM LVM_EDITLABELW}
  3773.   LVM_EDITLABELW           = LVM_FIRST + 118;
  3774.   {$EXTERNALSYM LVM_EDITLABEL}
  3775.   LVM_EDITLABEL           = LVM_EDITLABELA;
  3776.  
  3777. {$EXTERNALSYM ListView_EditLabelA}
  3778. function ListView_EditLabelA(hwndLV: HWND; i: Integer): HWND;
  3779. {$EXTERNALSYM ListView_EditLabelW}
  3780. function ListView_EditLabelW(hwndLV: HWND; i: Integer): HWND;
  3781. {$EXTERNALSYM ListView_EditLabel}
  3782. function ListView_EditLabel(hwndLV: HWND; i: Integer): HWND;
  3783.  
  3784. const
  3785.   {$EXTERNALSYM LVM_GETEDITCONTROL}
  3786.   LVM_GETEDITCONTROL      = LVM_FIRST + 24;
  3787.  
  3788. {$EXTERNALSYM ListView_GetEditControl}
  3789. function ListView_GetEditControl(hwndLV: HWND): HWND;
  3790.  
  3791. type
  3792.   PLVColumnA = ^TLVColumnA;
  3793.   PLVColumnW = ^TLVColumnW;
  3794.   PLVColumn = PLVColumnA;
  3795.   {$EXTERNALSYM tagLVCOLUMNA}
  3796.   tagLVCOLUMNA = packed record
  3797.     mask: UINT;
  3798.     fmt: Integer;
  3799.     cx: Integer;
  3800.     pszText: PAnsiChar;
  3801.     cchTextMax: Integer;
  3802.     iSubItem: Integer;
  3803.     iImage: Integer;
  3804.     iOrder: Integer;
  3805.   end;
  3806.   {$EXTERNALSYM tagLVCOLUMNW}
  3807.   tagLVCOLUMNW = packed record
  3808.     mask: UINT;
  3809.     fmt: Integer;
  3810.     cx: Integer;
  3811.     pszText: PWideChar;
  3812.     cchTextMax: Integer;
  3813.     iSubItem: Integer;
  3814.     iImage: Integer;
  3815.     iOrder: Integer;
  3816.   end;
  3817.   {$EXTERNALSYM tagLVCOLUMN}
  3818.   tagLVCOLUMN = tagLVCOLUMNA;
  3819.   {$EXTERNALSYM _LV_COLUMNA}
  3820.   _LV_COLUMNA = tagLVCOLUMNA;
  3821.   {$EXTERNALSYM _LV_COLUMNW}
  3822.   _LV_COLUMNW = tagLVCOLUMNW;
  3823.   {$EXTERNALSYM _LV_COLUMN}
  3824.   _LV_COLUMN = _LV_COLUMNA;
  3825.   TLVColumnA = tagLVCOLUMNA;
  3826.   TLVColumnW = tagLVCOLUMNW;
  3827.   TLVColumn = TLVColumnA;
  3828.   {$EXTERNALSYM LV_COLUMNA}
  3829.   LV_COLUMNA = tagLVCOLUMNA;
  3830.   {$EXTERNALSYM LV_COLUMNW}
  3831.   LV_COLUMNW = tagLVCOLUMNW;
  3832.   {$EXTERNALSYM LV_COLUMN}
  3833.   LV_COLUMN = LV_COLUMNA;
  3834.  
  3835. const
  3836.   {$EXTERNALSYM LVCF_FMT}
  3837.   LVCF_FMT                = $0001;
  3838.   {$EXTERNALSYM LVCF_WIDTH}
  3839.   LVCF_WIDTH              = $0002;
  3840.   {$EXTERNALSYM LVCF_TEXT}
  3841.   LVCF_TEXT               = $0004;
  3842.   {$EXTERNALSYM LVCF_SUBITEM}
  3843.   LVCF_SUBITEM            = $0008;
  3844.   {$EXTERNALSYM LVCF_IMAGE}
  3845.   LVCF_IMAGE              = $0010;
  3846.   {$EXTERNALSYM LVCF_ORDER}
  3847.   LVCF_ORDER              = $0020;
  3848.  
  3849.   {$EXTERNALSYM LVCFMT_LEFT}
  3850.   LVCFMT_LEFT             = $0000; 
  3851.   {$EXTERNALSYM LVCFMT_RIGHT}
  3852.   LVCFMT_RIGHT            = $0001;
  3853.   {$EXTERNALSYM LVCFMT_CENTER}
  3854.   LVCFMT_CENTER           = $0002; 
  3855.   {$EXTERNALSYM LVCFMT_JUSTIFYMASK}
  3856.   LVCFMT_JUSTIFYMASK      = $0003;
  3857.   {$EXTERNALSYM LVCFMT_IMAGE}
  3858.   LVCFMT_IMAGE            = $0800;
  3859.   {$EXTERNALSYM LVCFMT_BITMAP_ON_RIGHT}
  3860.   LVCFMT_BITMAP_ON_RIGHT  = $1000;
  3861.   {$EXTERNALSYM LVCFMT_COL_HAS_IMAGES}
  3862.   LVCFMT_COL_HAS_IMAGES   = $8000;
  3863.  
  3864.   {$EXTERNALSYM LVM_GETCOLUMNA}
  3865.   LVM_GETCOLUMNA          = LVM_FIRST + 25;
  3866.   {$EXTERNALSYM LVM_GETCOLUMNW}
  3867.   LVM_GETCOLUMNW          = LVM_FIRST + 95;
  3868.   {$EXTERNALSYM LVM_GETCOLUMN}
  3869.   LVM_GETCOLUMN           = LVM_GETCOLUMNA;
  3870.  
  3871. {$EXTERNALSYM ListView_GetColumnA}
  3872. function ListView_GetColumnA(hwnd: HWND; iCol: Integer;
  3873.   var pcol: TLVColumnA): Bool;
  3874. {$EXTERNALSYM ListView_GetColumnW}
  3875. function ListView_GetColumnW(hwnd: HWND; iCol: Integer;
  3876.   var pcol: TLVColumnW): Bool;
  3877. {$EXTERNALSYM ListView_GetColumn}
  3878. function ListView_GetColumn(hwnd: HWND; iCol: Integer;
  3879.   var pcol: TLVColumn): Bool;
  3880.  
  3881. const
  3882.   {$EXTERNALSYM LVM_SETCOLUMNA}
  3883.   LVM_SETCOLUMNA           = LVM_FIRST + 26;
  3884.   {$EXTERNALSYM LVM_SETCOLUMNW}
  3885.   LVM_SETCOLUMNW           = LVM_FIRST + 96;
  3886.   {$EXTERNALSYM LVM_SETCOLUMN}
  3887.   LVM_SETCOLUMN           = LVM_SETCOLUMNA;
  3888.  
  3889. {$EXTERNALSYM ListView_SetColumnA}
  3890. function ListView_SetColumnA(hwnd: HWnd; iCol: Integer; const pcol: TLVColumnA): Bool;
  3891. {$EXTERNALSYM ListView_SetColumnW}
  3892. function ListView_SetColumnW(hwnd: HWnd; iCol: Integer; const pcol: TLVColumnW): Bool;
  3893. {$EXTERNALSYM ListView_SetColumn}
  3894. function ListView_SetColumn(hwnd: HWnd; iCol: Integer; const pcol: TLVColumn): Bool;
  3895.  
  3896. const
  3897.   {$EXTERNALSYM LVM_INSERTCOLUMNA}
  3898.   LVM_INSERTCOLUMNA        = LVM_FIRST + 27;
  3899.   {$EXTERNALSYM LVM_INSERTCOLUMNW}
  3900.   LVM_INSERTCOLUMNW        = LVM_FIRST + 97;
  3901.   {$EXTERNALSYM LVM_INSERTCOLUMN}
  3902.   LVM_INSERTCOLUMN        = LVM_INSERTCOLUMNA;
  3903.  
  3904. {$EXTERNALSYM ListView_InsertColumnA}
  3905. function ListView_InsertColumnA(hwnd: HWND; iCol: Integer;
  3906.   const pcol: TLVColumnA): Integer;
  3907. {$EXTERNALSYM ListView_InsertColumnW}
  3908. function ListView_InsertColumnW(hwnd: HWND; iCol: Integer;
  3909.   const pcol: TLVColumnW): Integer;
  3910. {$EXTERNALSYM ListView_InsertColumn}
  3911. function ListView_InsertColumn(hwnd: HWND; iCol: Integer;
  3912.   const pcol: TLVColumn): Integer;
  3913.  
  3914. const
  3915.   {$EXTERNALSYM LVM_DELETECOLUMN}
  3916.   LVM_DELETECOLUMN        = LVM_FIRST + 28;
  3917.  
  3918. {$EXTERNALSYM ListView_DeleteColumn}
  3919. function ListView_DeleteColumn(hwnd: HWND; iCol: Integer): Bool;
  3920.  
  3921. const
  3922.   {$EXTERNALSYM LVM_GETCOLUMNWIDTH}
  3923.   LVM_GETCOLUMNWIDTH      = LVM_FIRST + 29;
  3924.  
  3925. {$EXTERNALSYM ListView_GetColumnWidth}
  3926. function ListView_GetColumnWidth(hwnd: HWND; iCol: Integer): Integer;
  3927.  
  3928. const
  3929.   {$EXTERNALSYM LVSCW_AUTOSIZE}
  3930.   LVSCW_AUTOSIZE              = -1;
  3931.   {$EXTERNALSYM LVSCW_AUTOSIZE_USEHEADER}
  3932.   LVSCW_AUTOSIZE_USEHEADER    = -2;
  3933.   {$EXTERNALSYM LVM_SETCOLUMNWIDTH}
  3934.   LVM_SETCOLUMNWIDTH          = LVM_FIRST + 30;
  3935.  
  3936. {$EXTERNALSYM ListView_SetColumnWidth}
  3937. function ListView_SetColumnWidth(hwnd: HWnd; iCol: Integer; cx: Integer): Bool;
  3938.  
  3939. const
  3940.   {$EXTERNALSYM LVM_GETHEADER}
  3941.   LVM_GETHEADER               = LVM_FIRST + 31;
  3942.  
  3943. {$EXTERNALSYM ListView_GetHeader}
  3944. function ListView_GetHeader(hwnd: HWND): HWND;
  3945.  
  3946. const
  3947.   {$EXTERNALSYM LVM_CREATEDRAGIMAGE}
  3948.   LVM_CREATEDRAGIMAGE     = LVM_FIRST + 33;
  3949.  
  3950. {$EXTERNALSYM ListView_CreateDragImage}
  3951. function ListView_CreateDragImage(hwnd: HWND; i: Integer;
  3952.   const lpptUpLeft: TPoint): HIMAGELIST;
  3953.  
  3954. const
  3955.   {$EXTERNALSYM LVM_GETVIEWRECT}
  3956.   LVM_GETVIEWRECT         = LVM_FIRST + 34;
  3957.  
  3958. {$EXTERNALSYM ListView_GetViewRect}
  3959. function ListView_GetViewRect(hwnd: HWND; var prc: TRect): Bool;
  3960.  
  3961. const
  3962.   {$EXTERNALSYM LVM_GETTEXTCOLOR}
  3963.   LVM_GETTEXTCOLOR        = LVM_FIRST + 35;
  3964.  
  3965. {$EXTERNALSYM ListView_GetTextColor}
  3966. function ListView_GetTextColor(hwnd: HWND): TColorRef;
  3967.  
  3968. const
  3969.   {$EXTERNALSYM LVM_SETTEXTCOLOR}
  3970.   LVM_SETTEXTCOLOR        = LVM_FIRST + 36;
  3971.  
  3972. {$EXTERNALSYM ListView_SetTextColor}
  3973. function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool;
  3974.  
  3975. const
  3976.   {$EXTERNALSYM LVM_GETTEXTBKCOLOR}
  3977.   LVM_GETTEXTBKCOLOR      = LVM_FIRST + 37;
  3978.  
  3979. {$EXTERNALSYM ListView_GetTextBkColor}
  3980. function ListView_GetTextBkColor(hwnd: HWND): TColorRef;
  3981.  
  3982. const
  3983.   {$EXTERNALSYM LVM_SETTEXTBKCOLOR}
  3984.   LVM_SETTEXTBKCOLOR      = LVM_FIRST + 38;
  3985.  
  3986. {$EXTERNALSYM ListView_SetTextBkColor}
  3987. function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool;
  3988.  
  3989. const
  3990.   {$EXTERNALSYM LVM_GETTOPINDEX}
  3991.   LVM_GETTOPINDEX         = LVM_FIRST + 39;
  3992.  
  3993. {$EXTERNALSYM ListView_GetTopIndex}
  3994. function ListView_GetTopIndex(hwndLV: HWND): Integer;
  3995.  
  3996. const
  3997.   {$EXTERNALSYM LVM_GETCOUNTPERPAGE}
  3998.   LVM_GETCOUNTPERPAGE     = LVM_FIRST + 40;
  3999.  
  4000. {$EXTERNALSYM ListView_GetCountPerPage}
  4001. function ListView_GetCountPerPage(hwndLV: HWND): Integer;
  4002.  
  4003. const
  4004.   {$EXTERNALSYM LVM_GETORIGIN}
  4005.   LVM_GETORIGIN           = LVM_FIRST + 41;
  4006.  
  4007. {$EXTERNALSYM ListView_GetOrigin}
  4008. function ListView_GetOrigin(hwndLV: HWND; var ppt: TPoint): Bool;
  4009.  
  4010. const
  4011.   {$EXTERNALSYM LVM_UPDATE}
  4012.   LVM_UPDATE              = LVM_FIRST + 42;
  4013.  
  4014. {$EXTERNALSYM ListView_Update}
  4015. function ListView_Update(hwndLV: HWND; i: Integer): Bool;
  4016.  
  4017. const
  4018.   {$EXTERNALSYM LVM_SETITEMSTATE}
  4019.   LVM_SETITEMSTATE        = LVM_FIRST + 43;
  4020.  
  4021. {$EXTERNALSYM ListView_SetItemState}
  4022. function ListView_SetItemState(hwndLV: HWND; i: Integer; data, mask: UINT): Bool;
  4023.  
  4024. const
  4025.   {$EXTERNALSYM LVM_GETITEMSTATE}
  4026.   LVM_GETITEMSTATE        = LVM_FIRST + 44;
  4027.  
  4028. {$EXTERNALSYM ListView_GetItemState}
  4029. function ListView_GetItemState(hwndLV: HWND; i, mask: Integer): Integer;
  4030.  
  4031. {$EXTERNALSYM ListView_GetCheckState}
  4032. function ListView_GetCheckState(hwndLV: HWND; i: Integer): UINT;
  4033. procedure ListView_SetCheckState(hwndLV: HWND; i: Integer; Checked: Boolean);
  4034.  
  4035. const
  4036.   {$EXTERNALSYM LVM_GETITEMTEXTA}
  4037.   LVM_GETITEMTEXTA         = LVM_FIRST + 45;
  4038.   {$EXTERNALSYM LVM_GETITEMTEXTW}
  4039.   LVM_GETITEMTEXTW         = LVM_FIRST + 115;
  4040.   {$EXTERNALSYM LVM_GETITEMTEXT}
  4041.   LVM_GETITEMTEXT         = LVM_GETITEMTEXTA;
  4042.  
  4043. {$EXTERNALSYM ListView_GetItemTextA}
  4044. function ListView_GetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  4045.   pszText: PAnsiChar; cchTextMax: Integer): Integer;
  4046. {$EXTERNALSYM ListView_GetItemTextW}
  4047. function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  4048.   pszText: PWideChar; cchTextMax: Integer): Integer;
  4049. {$EXTERNALSYM ListView_GetItemText}
  4050. function ListView_GetItemText(hwndLV: HWND; i, iSubItem: Integer;
  4051.   pszText: PChar; cchTextMax: Integer): Integer;
  4052.  
  4053. const
  4054.   {$EXTERNALSYM LVM_SETITEMTEXTA}
  4055.   LVM_SETITEMTEXTA         = LVM_FIRST + 46;
  4056.   {$EXTERNALSYM LVM_SETITEMTEXTW}
  4057.   LVM_SETITEMTEXTW         = LVM_FIRST + 116;
  4058.   {$EXTERNALSYM LVM_SETITEMTEXT}
  4059.   LVM_SETITEMTEXT         = LVM_SETITEMTEXTA;
  4060.  
  4061. {$EXTERNALSYM ListView_SetItemTextA}
  4062. function ListView_SetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  4063.   pszText: PAnsiChar): Bool;
  4064. {$EXTERNALSYM ListView_SetItemTextW}
  4065. function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  4066.   pszText: PWideChar): Bool;
  4067. {$EXTERNALSYM ListView_SetItemText}
  4068. function ListView_SetItemText(hwndLV: HWND; i, iSubItem: Integer;
  4069.   pszText: PChar): Bool;
  4070.  
  4071. const
  4072.   // these flags only apply to LVS_OWNERDATA listviews in report or list mode
  4073.   {$EXTERNALSYM LVSICF_NOINVALIDATEALL}
  4074.   LVSICF_NOINVALIDATEALL  = $00000001;
  4075.   {$EXTERNALSYM LVSICF_NOSCROLL}
  4076.   LVSICF_NOSCROLL         = $00000002;
  4077.  
  4078.   {$EXTERNALSYM LVM_SETITEMCOUNT}
  4079.   LVM_SETITEMCOUNT        = LVM_FIRST + 47;
  4080.  
  4081. {$EXTERNALSYM ListView_SetItemCount}
  4082. procedure ListView_SetItemCount(hwndLV: HWND; cItems: Integer);
  4083.  
  4084. {$EXTERNALSYM ListView_SetItemCountEx}
  4085. procedure ListView_SetItemCountEx(hwndLV: HWND; cItems: Integer; dwFlags: DWORD);
  4086.  
  4087. type
  4088.   {$EXTERNALSYM PFNLVCOMPARE}
  4089.   PFNLVCOMPARE = function(lParam1, lParam2, lParamSort: Integer): Integer stdcall;
  4090.   TLVCompare = PFNLVCOMPARE;
  4091.  
  4092. const
  4093.   {$EXTERNALSYM LVM_SORTITEMS}
  4094.   LVM_SORTITEMS           = LVM_FIRST + 48;
  4095.  
  4096. {$EXTERNALSYM ListView_SortItems}
  4097. function ListView_SortItems(hwndLV: HWND; pfnCompare: TLVCompare;
  4098.   lPrm: Longint): Bool;
  4099.  
  4100. const
  4101.   {$EXTERNALSYM LVM_SETITEMPOSITION32}
  4102.   LVM_SETITEMPOSITION32   = LVM_FIRST + 49;
  4103.  
  4104. {$EXTERNALSYM ListView_SetItemPosition32}
  4105. procedure ListView_SetItemPosition32(hwndLV: HWND; i, x, y: Integer);
  4106.  
  4107. const
  4108.   {$EXTERNALSYM LVM_GETSELECTEDCOUNT}
  4109.   LVM_GETSELECTEDCOUNT    = LVM_FIRST + 50;
  4110.  
  4111. {$EXTERNALSYM ListView_GetSelectedCount}
  4112. function ListView_GetSelectedCount(hwndLV: HWND): UINT;
  4113.  
  4114. const
  4115.   {$EXTERNALSYM LVM_GETITEMSPACING}
  4116.   LVM_GETITEMSPACING      = LVM_FIRST + 51;
  4117.  
  4118. {$EXTERNALSYM ListView_GetItemSpacing}
  4119. function ListView_GetItemSpacing(hwndLV: HWND; fSmall: Integer): Longint;
  4120.  
  4121. const
  4122.   {$EXTERNALSYM LVM_GETISEARCHSTRINGA}
  4123.   LVM_GETISEARCHSTRINGA    = LVM_FIRST + 52;
  4124.   {$EXTERNALSYM LVM_GETISEARCHSTRINGW}
  4125.   LVM_GETISEARCHSTRINGW    = LVM_FIRST + 117;
  4126.   {$EXTERNALSYM LVM_GETISEARCHSTRING}
  4127.   LVM_GETISEARCHSTRING    = LVM_GETISEARCHSTRINGA;
  4128.  
  4129. {$EXTERNALSYM ListView_GetISearchStringA}
  4130. function ListView_GetISearchStringA(hwndLV: HWND; lpsz: PAnsiChar): Bool;
  4131. {$EXTERNALSYM ListView_GetISearchStringW}
  4132. function ListView_GetISearchStringW(hwndLV: HWND; lpsz: PWideChar): Bool;
  4133. {$EXTERNALSYM ListView_GetISearchString}
  4134. function ListView_GetISearchString(hwndLV: HWND; lpsz: PChar): Bool;
  4135.  
  4136. const
  4137.   {$EXTERNALSYM LVM_SETICONSPACING}
  4138.   LVM_SETICONSPACING      = LVM_FIRST + 53;
  4139.  
  4140. // -1 for cx and cy means we'll use the default (system settings)
  4141. // 0 for cx or cy means use the current setting (allows you to change just one param)
  4142. {$EXTERNALSYM ListView_SetIconSpacing}
  4143. function ListView_SetIconSpacing(hwndLV: HWND; cx, cy: Word): DWORD;
  4144.  
  4145. const
  4146.   {$EXTERNALSYM LVM_SETEXTENDEDLISTVIEWSTYLE}
  4147.   LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
  4148.  
  4149. {$EXTERNALSYM ListView_SetExtendedListViewStyle}
  4150. function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL;
  4151.  
  4152. const
  4153.   {$EXTERNALSYM LVM_GETEXTENDEDLISTVIEWSTYLE}
  4154.   LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 55;
  4155.  
  4156. {$EXTERNALSYM ListView_GetExtendedListViewStyle}
  4157. function ListView_GetExtendedListViewStyle(hwndLV: HWND): DWORD;
  4158.  
  4159. const
  4160.   {$EXTERNALSYM LVM_GETSUBITEMRECT}
  4161.   LVM_GETSUBITEMRECT      = LVM_FIRST + 56;
  4162.  
  4163. {$EXTERNALSYM ListView_GetSubItemRect}
  4164. function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer;
  4165.   code: DWORD; prc: PRect): BOOL;
  4166.  
  4167. const
  4168.   {$EXTERNALSYM LVM_SUBITEMHITTEST}
  4169.   LVM_SUBITEMHITTEST      = LVM_FIRST + 57;
  4170.  
  4171. {$EXTERNALSYM ListView_SubItemHitTest}
  4172. function ListView_SubItemHitTest(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer;
  4173.  
  4174. const
  4175.   {$EXTERNALSYM LVM_SETCOLUMNORDERARRAY}
  4176.   LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58;
  4177.  
  4178. {$EXTERNALSYM ListView_SetColumnOrderArray}
  4179. function ListView_SetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  4180.   pi: PInteger): BOOL;
  4181.  
  4182. const
  4183.   {$EXTERNALSYM LVM_GETCOLUMNORDERARRAY}
  4184.   LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59;
  4185.  
  4186. {$EXTERNALSYM ListView_GetColumnOrderArray}
  4187. function ListView_GetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  4188.   pi: PInteger): BOOL;
  4189.  
  4190. const
  4191.   {$EXTERNALSYM LVM_SETHOTITEM}
  4192.   LVM_SETHOTITEM  = LVM_FIRST + 60;
  4193.  
  4194. {$EXTERNALSYM ListView_SetHotItem}
  4195. function ListView_SetHotItem(hwndLV: HWND; i: Integer): Integer;
  4196.  
  4197. const
  4198.   {$EXTERNALSYM LVM_GETHOTITEM}
  4199.   LVM_GETHOTITEM  = LVM_FIRST + 61;
  4200.  
  4201. {$EXTERNALSYM ListView_GetHotItem}
  4202. function ListView_GetHotItem(hwndLV: HWND): Integer;
  4203.  
  4204. const
  4205.   {$EXTERNALSYM LVM_SETHOTCURSOR}
  4206.   LVM_SETHOTCURSOR  = LVM_FIRST + 62;
  4207.  
  4208. {$EXTERNALSYM ListView_SetHotCursor}
  4209. function ListView_SetHotCursor(hwndLV: HWND; hcur: HCURSOR): HCURSOR;
  4210.  
  4211. const
  4212.   {$EXTERNALSYM LVM_GETHOTCURSOR}
  4213.   LVM_GETHOTCURSOR  = LVM_FIRST + 63;
  4214.  
  4215. {$EXTERNALSYM ListView_GetHotCursor}
  4216. function ListView_GetHotCursor(hwndLV: HWND): HCURSOR;
  4217.  
  4218. const
  4219.   {$EXTERNALSYM LVM_APPROXIMATEVIEWRECT}
  4220.   LVM_APPROXIMATEVIEWRECT = LVM_FIRST + 64;
  4221.  
  4222. {$EXTERNALSYM ListView_ApproximateViewRect}
  4223. function ListView_ApproximateViewRect(hwndLV: HWND; iWidth, iHeight: Word;
  4224.   iCount: Integer): DWORD;
  4225.  
  4226. const
  4227.   {$EXTERNALSYM LV_MAX_WORKAREAS}
  4228.   LV_MAX_WORKAREAS        = 16;
  4229.   {$EXTERNALSYM LVM_SETWORKAREA}
  4230.   LVM_SETWORKAREA         = LVM_FIRST + 65;
  4231.  
  4232. {$EXTERNALSYM ListView_SetWorkAreas}
  4233. function ListView_SetWorkAreas(hwndLV: HWND; prc: PRect): BOOL;
  4234.  
  4235. const
  4236.   {$EXTERNALSYM LVM_GETSELECTIONMARK}
  4237.   LVM_GETSELECTIONMARK    = LVM_FIRST + 66;
  4238.  
  4239. {$EXTERNALSYM ListView_GetSelectionMark}
  4240. function ListView_GetSelectionMark(hwnd: HWND): Integer;
  4241.  
  4242. const
  4243.   {$EXTERNALSYM LVM_SETSELECTIONMARK}
  4244.   LVM_SETSELECTIONMARK    = LVM_FIRST + 67;
  4245.  
  4246. {$EXTERNALSYM ListView_SetSelectionMark}
  4247. function ListView_SetSelectionMark(hwnd: HWND; i: Integer): Integer;
  4248.  
  4249. const
  4250.   {$EXTERNALSYM LVM_GETWORKAREAS}
  4251.   LVM_GETWORKAREAS        = LVM_FIRST + 70;
  4252.  
  4253. {$EXTERNALSYM ListView_GetWorkAreas}
  4254. function ListView_GetWorkAreas(hwnd: HWND; nWorkAreas: Integer; prc: PRect): BOOL;
  4255.  
  4256. const
  4257.   {$EXTERNALSYM LVM_SETHOVERTIME}
  4258.   LVM_SETHOVERTIME        = LVM_FIRST + 71;
  4259.  
  4260. {$EXTERNALSYM ListView_SetHoverTime}
  4261. function ListView_SetHoverTime(hwndLV: HWND; dwHoverTimeMs: DWORD): DWORD;
  4262.  
  4263. const
  4264.   {$EXTERNALSYM LVM_GETHOVERTIME}
  4265.   LVM_GETHOVERTIME        = LVM_FIRST + 72;
  4266.  
  4267. {$EXTERNALSYM ListView_GetHoverTime}
  4268. function ListView_GetHoverTime(hwndLV: HWND): Integer;
  4269.  
  4270. const
  4271.   {$EXTERNALSYM LVM_GETNUMBEROFWORKAREAS}
  4272.   LVM_GETNUMBEROFWORKAREAS  = LVM_FIRST + 73;
  4273.  
  4274. {$EXTERNALSYM ListView_GetNumberOfWorkAreas}
  4275. function ListView_GetNumberOfWorkAreas(hwnd: HWND; pnWorkAreas: PInteger): Integer;
  4276.  
  4277. const
  4278.   {$EXTERNALSYM LVM_SETTOOLTIPS}
  4279.   LVM_SETTOOLTIPS       = LVM_FIRST + 74;
  4280.  
  4281. {$EXTERNALSYM ListView_SetToolTips}
  4282. function ListView_SetToolTips(hwndLV: HWND; hwndNewHwnd: HWND): HWND;
  4283.  
  4284. const
  4285.   {$EXTERNALSYM LVM_GETTOOLTIPS}
  4286.   LVM_GETTOOLTIPS       = LVM_FIRST + 78;
  4287.  
  4288. {$EXTERNALSYM ListView_GetToolTips}
  4289. function ListView_GetToolTips(hwndLV: HWND): HWND;
  4290.  
  4291. type
  4292. {$EXTERNALSYM tagLVBKIMAGEA}
  4293.   tagLVBKIMAGEA = packed record
  4294.     ulFlags: ULONG;              // LVBKIF_*
  4295.     hbm: HBITMAP;
  4296.     pszImage: PAnsiChar;
  4297.     cchImageMax: UINT;
  4298.     xOffsetPercent: Integer;
  4299.     yOffsetPercent: Integer;
  4300.   end;
  4301. {$EXTERNALSYM tagLVBKIMAGEW}
  4302.   tagLVBKIMAGEW = packed record
  4303.     ulFlags: ULONG;              // LVBKIF_*
  4304.     hbm: HBITMAP;
  4305.     pszImage: PWideChar;
  4306.     cchImageMax: UINT;
  4307.     xOffsetPercent: Integer;
  4308.     yOffsetPercent: Integer;
  4309.   end;
  4310.   {$EXTERNALSYM tagLVBKIMAGE}
  4311.   tagLVBKIMAGE = tagLVBKIMAGEA;
  4312.   PLVBKImageA = ^TLVBKImageA;
  4313.   PLVBKImageW = ^TLVBKImageW;
  4314.   PLVBKImage = PLVBKImageA;
  4315.   TLVBKImageA = tagLVBKIMAGEA;
  4316.   TLVBKImageW = tagLVBKIMAGEW;
  4317.   TLVBKImage = TLVBKImageA;
  4318.  
  4319. const
  4320.   {$EXTERNALSYM LVBKIF_SOURCE_NONE}
  4321.   LVBKIF_SOURCE_NONE      = $00000000;
  4322.   {$EXTERNALSYM LVBKIF_SOURCE_HBITMAP}
  4323.   LVBKIF_SOURCE_HBITMAP   = $00000001;
  4324.   {$EXTERNALSYM LVBKIF_SOURCE_URL}
  4325.   LVBKIF_SOURCE_URL       = $00000002;
  4326.   {$EXTERNALSYM LVBKIF_SOURCE_MASK}
  4327.   LVBKIF_SOURCE_MASK      = $00000003;
  4328.   {$EXTERNALSYM LVBKIF_STYLE_NORMAL}
  4329.   LVBKIF_STYLE_NORMAL     = $00000000;
  4330.   {$EXTERNALSYM LVBKIF_STYLE_TILE}
  4331.   LVBKIF_STYLE_TILE       = $00000010;
  4332.   {$EXTERNALSYM LVBKIF_STYLE_MASK}
  4333.   LVBKIF_STYLE_MASK       = $00000010;
  4334.  
  4335.   {$EXTERNALSYM LVM_SETBKIMAGEA}
  4336.   LVM_SETBKIMAGEA         = LVM_FIRST + 68;
  4337.   {$EXTERNALSYM LVM_SETBKIMAGEW}
  4338.   LVM_SETBKIMAGEW         = LVM_FIRST + 138;
  4339.   {$EXTERNALSYM LVM_GETBKIMAGEA}
  4340.   LVM_GETBKIMAGEA         = LVM_FIRST + 69;
  4341.   {$EXTERNALSYM LVM_GETBKIMAGEW}
  4342.   LVM_GETBKIMAGEW         = LVM_FIRST + 139;
  4343.  
  4344.   {$EXTERNALSYM LVM_SETBKIMAGE}
  4345.   LVM_SETBKIMAGE = LVM_SETBKIMAGEA;
  4346.   {$EXTERNALSYM LVM_GETBKIMAGE}
  4347.   LVM_GETBKIMAGE = LVM_GETBKIMAGEA;
  4348.  
  4349. {$EXTERNALSYM ListView_SetBkImage}
  4350. function ListView_SetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  4351.  
  4352. {$EXTERNALSYM ListView_GetBkImage}
  4353. function ListView_GetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  4354.  
  4355. type
  4356.   {$EXTERNALSYM tagNMLISTVIEW}
  4357.   tagNMLISTVIEW = packed record
  4358.     hdr: TNMHDR;
  4359.     iItem: Integer;
  4360.     iSubItem: Integer;
  4361.     uNewState: UINT;
  4362.     uOldState: UINT;
  4363.     uChanged: UINT;
  4364.     ptAction: TPoint;
  4365.     lParam: LPARAM;
  4366.   end;
  4367.   {$EXTERNALSYM _NM_LISTVIEW}
  4368.   _NM_LISTVIEW = tagNMLISTVIEW;
  4369.   {$EXTERNALSYM NM_LISTVIEW}
  4370.   NM_LISTVIEW = tagNMLISTVIEW;
  4371.   PNMListView = ^TNMListView;
  4372.   TNMListView = tagNMLISTVIEW;
  4373.  
  4374.   // NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
  4375.   // therefore all the fields are the same except for extra uKeyFlags
  4376.   // they are used to store key flags at the time of the single click with
  4377.   // delayed activation - because by the time the timer goes off a user may
  4378.   // not hold the keys (shift, ctrl) any more
  4379.   {$EXTERNALSYM tagNMITEMACTIVATE}
  4380.   tagNMITEMACTIVATE = packed record
  4381.     hdr: TNMHdr;
  4382.     iItem: Integer;
  4383.     iSubItem: Integer;
  4384.     uNewState: UINT;
  4385.     uOldState: UINT;
  4386.     uChanged: UINT;
  4387.     ptAction: TPoint;
  4388.     lParam: LPARAM;
  4389.     uKeyFlags: UINT;
  4390.   end;
  4391.   PNMItemActivate = ^TNMItemActivate;
  4392.   TNMItemActivate = tagNMITEMACTIVATE;
  4393.  
  4394. const
  4395.   // key flags stored in uKeyFlags
  4396.   {$EXTERNALSYM LVKF_ALT}
  4397.   LVKF_ALT       = $0001;
  4398.   {$EXTERNALSYM LVKF_CONTROL}
  4399.   LVKF_CONTROL   = $0002;
  4400.   {$EXTERNALSYM LVKF_SHIFT}
  4401.   LVKF_SHIFT     = $0004;
  4402.  
  4403. type
  4404.   {$EXTERNALSYM tagNMLVCUSTOMDRAW}
  4405.   tagNMLVCUSTOMDRAW = packed record
  4406.     nmcd: TNMCustomDraw;
  4407.     clrText: COLORREF;
  4408.     clrTextBk: COLORREF;
  4409.     iSubItem: Integer;
  4410.   end;
  4411.   PNMLVCustomDraw = ^TNMLVCustomDraw;
  4412.   TNMLVCustomDraw = tagNMLVCUSTOMDRAW;
  4413.  
  4414.   {$EXTERNALSYM tagNMLVCACHEHINT}
  4415.   tagNMLVCACHEHINT = packed record
  4416.     hdr: TNMHDR;
  4417.     iFrom: Integer;
  4418.     iTo: Integer;
  4419.   end;
  4420.   PNMLVCacheHint = ^TNMLVCacheHint;
  4421.   TNMLVCacheHint = tagNMLVCACHEHINT;
  4422.   PNMCacheHint = ^TNMCacheHint;
  4423.   TNMCacheHint = tagNMLVCACHEHINT;
  4424.  
  4425.   {$EXTERNALSYM tagNMLVFINDITEM}
  4426.   tagNMLVFINDITEM = packed record
  4427.     hdr: TNMHdr;
  4428.     iStart: Integer;
  4429.     lvfi: TLVFindInfo;
  4430.   end;
  4431.   PNMLVFinditem = ^TNMLVFinditem;
  4432.   TNMLVFinditem = tagNMLVFINDITEM;
  4433.   PNMFinditem = ^TNMFinditem;
  4434.   TNMFinditem = tagNMLVFINDITEM;
  4435.  
  4436.   {$EXTERNALSYM tagNMLVODSTATECHANGE}
  4437.   tagNMLVODSTATECHANGE = packed record
  4438.     hdr: TNMHdr;
  4439.     iFrom: Integer;
  4440.     iTo: Integer;
  4441.     uNewState: UINT;
  4442.     uOldState: UINT;
  4443.   end;
  4444.   PNMLVODStateChange = ^TNMLVODStateChange;
  4445.   TNMLVODStateChange = tagNMLVODSTATECHANGE;
  4446.  
  4447. const
  4448.   {$EXTERNALSYM LVN_ITEMCHANGING}
  4449.   LVN_ITEMCHANGING        = LVN_FIRST-0;
  4450.   {$EXTERNALSYM LVN_ITEMCHANGED}
  4451.   LVN_ITEMCHANGED         = LVN_FIRST-1;
  4452.   {$EXTERNALSYM LVN_INSERTITEM}
  4453.   LVN_INSERTITEM          = LVN_FIRST-2;
  4454.   {$EXTERNALSYM LVN_DELETEITEM}
  4455.   LVN_DELETEITEM          = LVN_FIRST-3;
  4456.   {$EXTERNALSYM LVN_DELETEALLITEMS}
  4457.   LVN_DELETEALLITEMS      = LVN_FIRST-4;
  4458.   {$EXTERNALSYM LVN_COLUMNCLICK}
  4459.   LVN_COLUMNCLICK         = LVN_FIRST-8;
  4460.   {$EXTERNALSYM LVN_BEGINDRAG}
  4461.   LVN_BEGINDRAG           = LVN_FIRST-9;
  4462.   {$EXTERNALSYM LVN_BEGINRDRAG}
  4463.   LVN_BEGINRDRAG          = LVN_FIRST-11;
  4464.  
  4465.   {$EXTERNALSYM LVN_ODCACHEHINT}
  4466.   LVN_ODCACHEHINT         = LVN_FIRST-13;
  4467.   {$EXTERNALSYM LVN_ODFINDITEMA}
  4468.   LVN_ODFINDITEMA         = LVN_FIRST-52;
  4469.   {$EXTERNALSYM LVN_ODFINDITEMW}
  4470.   LVN_ODFINDITEMW         = LVN_FIRST-79;
  4471.  
  4472.   {$EXTERNALSYM LVN_ITEMACTIVATE}
  4473.   LVN_ITEMACTIVATE        = LVN_FIRST-14;
  4474.   {$EXTERNALSYM LVN_ODSTATECHANGED}
  4475.   LVN_ODSTATECHANGED      = LVN_FIRST-15;
  4476.  
  4477.   {$EXTERNALSYM LVN_ODFINDITEM}
  4478.   LVN_ODFINDITEM          = LVN_ODFINDITEMA; 
  4479.  
  4480.   {$EXTERNALSYM LVN_BEGINLABELEDITA}
  4481.   LVN_BEGINLABELEDITA      = LVN_FIRST-5;
  4482.   {$EXTERNALSYM LVN_ENDLABELEDITA}
  4483.   LVN_ENDLABELEDITA        = LVN_FIRST-6;
  4484.   {$EXTERNALSYM LVN_BEGINLABELEDITW}
  4485.   LVN_BEGINLABELEDITW      = LVN_FIRST-75;
  4486.   {$EXTERNALSYM LVN_ENDLABELEDITW}
  4487.   LVN_ENDLABELEDITW        = LVN_FIRST-76;
  4488.   {$EXTERNALSYM LVN_BEGINLABELEDIT}
  4489.   LVN_BEGINLABELEDIT      = LVN_BEGINLABELEDITA;
  4490.   {$EXTERNALSYM LVN_ENDLABELEDIT}
  4491.   LVN_ENDLABELEDIT        = LVN_ENDLABELEDITA;
  4492.  
  4493.   {$EXTERNALSYM LVN_HOTTRACK}
  4494.   LVN_HOTTRACK            = LVN_FIRST-21;
  4495.   
  4496.   {$EXTERNALSYM LVN_GETDISPINFOA}
  4497.   LVN_GETDISPINFOA        = LVN_FIRST-50;
  4498.   {$EXTERNALSYM LVN_SETDISPINFOA}
  4499.   LVN_SETDISPINFOA        = LVN_FIRST-51;
  4500.   {$EXTERNALSYM LVN_GETDISPINFOW}
  4501.   LVN_GETDISPINFOW        = LVN_FIRST-77;
  4502.   {$EXTERNALSYM LVN_SETDISPINFOW}
  4503.   LVN_SETDISPINFOW        = LVN_FIRST-78;
  4504.   {$EXTERNALSYM LVN_GETDISPINFO}
  4505.   LVN_GETDISPINFO        = LVN_GETDISPINFOA;
  4506.   {$EXTERNALSYM LVN_SETDISPINFO}
  4507.   LVN_SETDISPINFO        = LVN_SETDISPINFOA;
  4508.  
  4509.   {$EXTERNALSYM LVIF_DI_SETITEM}
  4510.   LVIF_DI_SETITEM         = $1000;
  4511.  
  4512. type
  4513.   PLVDispInfoA = ^TLVDispInfoA;
  4514.   PLVDispInfoW = ^TLVDispInfoW;
  4515.   PLVDispInfo = PLVDispInfoA;
  4516.   {$EXTERNALSYM tagLVDISPINFO}
  4517.   tagLVDISPINFO = packed record
  4518.     hdr: TNMHDR;
  4519.     item: TLVItemA;
  4520.   end;
  4521.   {$EXTERNALSYM _LV_DISPINFO}
  4522.   _LV_DISPINFO = tagLVDISPINFO;
  4523.   {$EXTERNALSYM tagLVDISPINFOW}
  4524.   tagLVDISPINFOW = packed record
  4525.     hdr: TNMHDR;
  4526.     item: TLVItemW;
  4527.   end;
  4528.   {$EXTERNALSYM _LV_DISPINFOW}
  4529.   _LV_DISPINFOW = tagLVDISPINFOW;
  4530.   TLVDispInfoA = tagLVDISPINFO;
  4531.   TLVDispInfoW = tagLVDISPINFOW;
  4532.   TLVDispInfo = TLVDispInfoA;
  4533.   {$EXTERNALSYM LV_DISPINFOA}
  4534.   LV_DISPINFOA = tagLVDISPINFO;
  4535.   {$EXTERNALSYM LV_DISPINFOW}
  4536.   LV_DISPINFOW = tagLVDISPINFOW;
  4537.   {$EXTERNALSYM LV_DISPINFO}
  4538.   LV_DISPINFO = LV_DISPINFOA;
  4539.  
  4540. const
  4541.   {$EXTERNALSYM LVN_KEYDOWN}
  4542.   LVN_KEYDOWN             = LVN_FIRST-55;
  4543.  
  4544. type
  4545.   PLVKeyDown = ^TLVKeyDown;
  4546.   {$EXTERNALSYM tagLVKEYDOWN}
  4547.   tagLVKEYDOWN = packed record
  4548.     hdr: TNMHDR;
  4549.     wVKey: Word;
  4550.     flags: UINT;
  4551.   end;
  4552.   {$EXTERNALSYM _LV_KEYDOWN}
  4553.   _LV_KEYDOWN = tagLVKEYDOWN;
  4554.   TLVKeyDown = tagLVKEYDOWN;
  4555.   {$EXTERNALSYM LV_KEYDOWN}
  4556.   LV_KEYDOWN = tagLVKEYDOWN;
  4557.  
  4558. const
  4559.   {$EXTERNALSYM LVN_MARQUEEBEGIN}
  4560.   LVN_MARQUEEBEGIN        = LVN_FIRST-56;
  4561.  
  4562. type
  4563.   {$EXTERNALSYM tagNMLVGETINFOTIPA}
  4564.   tagNMLVGETINFOTIPA = packed record
  4565.     hdr: TNMHdr;
  4566.     dwFlags: DWORD;
  4567.     pszText: PAnsiChar;
  4568.     cchTextMax: Integer;
  4569.     iItem: Integer;
  4570.     iSubItem: Integer;
  4571.     lParam: LPARAM;
  4572.   end;
  4573.   {$EXTERNALSYM tagNMLVGETINFOTIPW}
  4574.   tagNMLVGETINFOTIPW = packed record
  4575.     hdr: TNMHdr;
  4576.     dwFlags: DWORD;
  4577.     pszText: PWideChar;
  4578.     cchTextMax: Integer;
  4579.     iItem: Integer;
  4580.     iSubItem: Integer;
  4581.     lParam: LPARAM;
  4582.   end;
  4583.   {$EXTERNALSYM tagNMLVGETINFOTIP}
  4584.   tagNMLVGETINFOTIP = tagNMLVGETINFOTIPA;
  4585.   PNMLVGetInfoTipA = ^TNMLVGetInfoTipA;
  4586.   PNMLVGetInfoTipW = ^TNMLVGetInfoTipW;
  4587.   PNMLVGetInfoTip = PNMLVGetInfoTipA;
  4588.   TNMLVGetInfoTipA = tagNMLVGETINFOTIPA;
  4589.   TNMLVGetInfoTipW = tagNMLVGETINFOTIPW;
  4590.   TNMLVGetInfoTip = TNMLVGetInfoTipA;
  4591.  
  4592. const
  4593.   // NMLVGETINFOTIPA.dwFlag values
  4594.   {$EXTERNALSYM LVGIT_UNFOLDED}
  4595.   LVGIT_UNFOLDED  = $0001;
  4596.  
  4597.   {$EXTERNALSYM LVN_GETINFOTIPA}
  4598.   LVN_GETINFOTIPA          = LVN_FIRST-57;
  4599.   {$EXTERNALSYM LVN_GETINFOTIPW}
  4600.   LVN_GETINFOTIPW          = LVN_FIRST-58;
  4601.  
  4602.   {$EXTERNALSYM LVN_GETINFOTIP}
  4603.   LVN_GETINFOTIP          = LVN_GETINFOTIPA;
  4604.  
  4605. { ====== TREEVIEW CONTROL =================== }
  4606.  
  4607. const
  4608.   {$EXTERNALSYM WC_TREEVIEW}
  4609.   WC_TREEVIEW = 'SysTreeView32';
  4610.  
  4611. const
  4612.   {$EXTERNALSYM TVS_HASBUTTONS}
  4613.   TVS_HASBUTTONS          = $0001;
  4614.   {$EXTERNALSYM TVS_HASLINES}
  4615.   TVS_HASLINES            = $0002;
  4616.   {$EXTERNALSYM TVS_LINESATROOT}
  4617.   TVS_LINESATROOT         = $0004;
  4618.   {$EXTERNALSYM TVS_EDITLABELS}
  4619.   TVS_EDITLABELS          = $0008;
  4620.   {$EXTERNALSYM TVS_DISABLEDRAGDROP}
  4621.   TVS_DISABLEDRAGDROP     = $0010;
  4622.   {$EXTERNALSYM TVS_SHOWSELALWAYS}
  4623.   TVS_SHOWSELALWAYS       = $0020;
  4624.   {$EXTERNALSYM TVS_RTLREADING}
  4625.   TVS_RTLREADING          = $0040;
  4626.   {$EXTERNALSYM TVS_NOTOOLTIPS}
  4627.   TVS_NOTOOLTIPS          = $0080;
  4628.   {$EXTERNALSYM TVS_CHECKBOXES}
  4629.   TVS_CHECKBOXES          = $0100;
  4630.   {$EXTERNALSYM TVS_TRACKSELECT}
  4631.   TVS_TRACKSELECT         = $0200;
  4632.   {$EXTERNALSYM TVS_SINGLEEXPAND}
  4633.   TVS_SINGLEEXPAND        = $0400;
  4634.   {$EXTERNALSYM TVS_INFOTIP}
  4635.   TVS_INFOTIP             = $0800;
  4636.   {$EXTERNALSYM TVS_FULLROWSELECT}
  4637.   TVS_FULLROWSELECT       = $1000;
  4638.   {$EXTERNALSYM TVS_NOSCROLL}
  4639.   TVS_NOSCROLL            = $2000;
  4640.   {$EXTERNALSYM TVS_NONEVENHEIGHT}
  4641.   TVS_NONEVENHEIGHT       = $4000;
  4642.  
  4643. type
  4644.   {$EXTERNALSYM HTREEITEM}
  4645.   HTREEITEM = ^_TREEITEM;
  4646.   {$EXTERNALSYM _TREEITEM}
  4647.   _TREEITEM = packed record
  4648.   end;
  4649.  
  4650. const
  4651.   {$EXTERNALSYM TVIF_TEXT}
  4652.   TVIF_TEXT               = $0001;
  4653.   {$EXTERNALSYM TVIF_IMAGE}
  4654.   TVIF_IMAGE              = $0002;
  4655.   {$EXTERNALSYM TVIF_PARAM}
  4656.   TVIF_PARAM              = $0004;
  4657.   {$EXTERNALSYM TVIF_STATE}
  4658.   TVIF_STATE              = $0008;
  4659.   {$EXTERNALSYM TVIF_HANDLE}
  4660.   TVIF_HANDLE             = $0010;
  4661.   {$EXTERNALSYM TVIF_SELECTEDIMAGE}
  4662.   TVIF_SELECTEDIMAGE      = $0020;
  4663.   {$EXTERNALSYM TVIF_CHILDREN}
  4664.   TVIF_CHILDREN           = $0040;
  4665.   {$EXTERNALSYM TVIF_INTEGRAL}
  4666.   TVIF_INTEGRAL           = $0080;
  4667.  
  4668.   {$EXTERNALSYM TVIS_FOCUSED}
  4669.   TVIS_FOCUSED            = $0001;
  4670.   {$EXTERNALSYM TVIS_SELECTED}
  4671.   TVIS_SELECTED           = $0002;
  4672.   {$EXTERNALSYM TVIS_CUT}
  4673.   TVIS_CUT                = $0004;
  4674.   {$EXTERNALSYM TVIS_DROPHILITED}
  4675.   TVIS_DROPHILITED        = $0008;
  4676.   {$EXTERNALSYM TVIS_BOLD}
  4677.   TVIS_BOLD               = $0010;
  4678.   {$EXTERNALSYM TVIS_EXPANDED}
  4679.   TVIS_EXPANDED           = $0020;
  4680.   {$EXTERNALSYM TVIS_EXPANDEDONCE}
  4681.   TVIS_EXPANDEDONCE       = $0040;
  4682.   {$EXTERNALSYM TVIS_EXPANDPARTIAL}
  4683.   TVIS_EXPANDPARTIAL      = $0080;
  4684.  
  4685.   {$EXTERNALSYM TVIS_OVERLAYMASK}
  4686.   TVIS_OVERLAYMASK        = $0F00;
  4687.   {$EXTERNALSYM TVIS_STATEIMAGEMASK}
  4688.   TVIS_STATEIMAGEMASK     = $F000;
  4689.   {$EXTERNALSYM TVIS_USERMASK}
  4690.   TVIS_USERMASK           = $F000;
  4691.  
  4692.  
  4693. const
  4694.   {$EXTERNALSYM I_CHILDRENCALLBACK}
  4695.   I_CHILDRENCALLBACK  = -1;
  4696.  
  4697. type
  4698.   PTVItemA = ^TTVItemA;
  4699.   PTVItemW = ^TTVItemW;
  4700.   PTVItem = PTVItemA;
  4701.   {$EXTERNALSYM tagTVITEMA}
  4702.   tagTVITEMA = packed record
  4703.     mask: UINT;
  4704.     hItem: HTreeItem;
  4705.     state: UINT;
  4706.     stateMask: UINT;
  4707.     pszText: PAnsiChar;
  4708.     cchTextMax: Integer;
  4709.     iImage: Integer;
  4710.     iSelectedImage: Integer;
  4711.     cChildren: Integer;
  4712.     lParam: LPARAM;
  4713.   end;
  4714.   {$EXTERNALSYM tagTVITEMW}
  4715.   tagTVITEMW = packed record
  4716.     mask: UINT;
  4717.     hItem: HTreeItem;
  4718.     state: UINT;
  4719.     stateMask: UINT;
  4720.     pszText: PWideChar;
  4721.     cchTextMax: Integer;
  4722.     iImage: Integer;
  4723.     iSelectedImage: Integer;
  4724.     cChildren: Integer;
  4725.     lParam: LPARAM;
  4726.   end;
  4727.   {$EXTERNALSYM tagTVITEM}
  4728.   tagTVITEM = tagTVITEMA;
  4729.   {$EXTERNALSYM _TV_ITEMA}
  4730.   _TV_ITEMA = tagTVITEMA;
  4731.   {$EXTERNALSYM _TV_ITEMW}
  4732.   _TV_ITEMW = tagTVITEMW;
  4733.   {$EXTERNALSYM _TV_ITEM}
  4734.   _TV_ITEM = _TV_ITEMA;
  4735.   TTVItemA = tagTVITEMA;
  4736.   TTVItemW = tagTVITEMW;
  4737.   TTVItem = TTVItemA;
  4738.   {$EXTERNALSYM TV_ITEMA}
  4739.   TV_ITEMA = tagTVITEMA;
  4740.   {$EXTERNALSYM TV_ITEMW}
  4741.   TV_ITEMW = tagTVITEMW;
  4742.   {$EXTERNALSYM TV_ITEM}
  4743.   TV_ITEM = TV_ITEMA;
  4744.  
  4745.   // only used for Get and Set messages.  no notifies
  4746.   {$EXTERNALSYM tagTVITEMEXA}
  4747.   tagTVITEMEXA = packed record
  4748.     mask: UINT;
  4749.     hItem: HTREEITEM;
  4750.     state: UINT;
  4751.     stateMask: UINT;
  4752.     pszText: PAnsiChar;
  4753.     cchTextMax: Integer;
  4754.     iImage: Integer;
  4755.     iSelectedImage: Integer;
  4756.     cChildren: Integer;
  4757.     lParam: LPARAM;
  4758.     iIntegral: Integer;
  4759.   end;
  4760.   {$EXTERNALSYM tagTVITEMEXW}
  4761.   tagTVITEMEXW = packed record
  4762.     mask: UINT;
  4763.     hItem: HTREEITEM;
  4764.     state: UINT;
  4765.     stateMask: UINT;
  4766.     pszText: PWideChar;
  4767.     cchTextMax: Integer;
  4768.     iImage: Integer;
  4769.     iSelectedImage: Integer;
  4770.     cChildren: Integer;
  4771.     lParam: LPARAM;
  4772.     iIntegral: Integer;
  4773.   end;
  4774.   {$EXTERNALSYM tagTVITEMEX}
  4775.   tagTVITEMEX = tagTVITEMEXA;
  4776.   PTVItemExA = ^TTVItemExA;
  4777.   PTVItemExW = ^TTVItemExW;
  4778.   PTVItemEx = PTVItemExA;
  4779.   TTVItemExA = tagTVITEMEXA;
  4780.   TTVItemExW = tagTVITEMEXW;
  4781.   TTVItemEx = TTVItemExA;
  4782.  
  4783. const
  4784.   {$EXTERNALSYM TVI_ROOT}
  4785.   TVI_ROOT                = HTreeItem($FFFF0000);
  4786.   {$EXTERNALSYM TVI_FIRST}
  4787.   TVI_FIRST               = HTreeItem($FFFF0001);
  4788.   {$EXTERNALSYM TVI_LAST}
  4789.   TVI_LAST                = HTreeItem($FFFF0002);
  4790.   {$EXTERNALSYM TVI_SORT}
  4791.   TVI_SORT                = HTreeItem($FFFF0003);
  4792.  
  4793. type
  4794.   PTVInsertStructA = ^TTVInsertStructA;
  4795.   PTVInsertStructW = ^TTVInsertStructW;
  4796.   PTVInsertStruct = PTVInsertStructA;
  4797.   {$EXTERNALSYM tagTVINSERTSTRUCTA}
  4798.   tagTVINSERTSTRUCTA = packed record
  4799.     hParent: HTreeItem;
  4800.     hInsertAfter: HTreeItem;
  4801.     case Integer of
  4802.       0: (itemex: TTVItemExA);
  4803.       1: (item: TTVItemA);
  4804.   end;
  4805.   {$EXTERNALSYM tagTVINSERTSTRUCTW}
  4806.   tagTVINSERTSTRUCTW = packed record
  4807.     hParent: HTreeItem;
  4808.     hInsertAfter: HTreeItem;
  4809.     case Integer of
  4810.       0: (itemex: TTVItemExW);
  4811.       1: (item: TTVItemW);
  4812.   end;
  4813.   {$EXTERNALSYM tagTVINSERTSTRUCT}
  4814.   tagTVINSERTSTRUCT = tagTVINSERTSTRUCTA;
  4815.   {$EXTERNALSYM _TV_INSERTSTRUCTA}
  4816.   _TV_INSERTSTRUCTA = tagTVINSERTSTRUCTA;
  4817.   {$EXTERNALSYM _TV_INSERTSTRUCTW}
  4818.   _TV_INSERTSTRUCTW = tagTVINSERTSTRUCTW;
  4819.   {$EXTERNALSYM _TV_INSERTSTRUCT}
  4820.   _TV_INSERTSTRUCT = _TV_INSERTSTRUCTA;
  4821.   TTVInsertStructA = tagTVINSERTSTRUCTA;
  4822.   TTVInsertStructW = tagTVINSERTSTRUCTW;
  4823.   TTVInsertStruct = TTVInsertStructA;
  4824.   {$EXTERNALSYM TV_INSERTSTRUCTA}
  4825.   TV_INSERTSTRUCTA = tagTVINSERTSTRUCTA;
  4826.   {$EXTERNALSYM TV_INSERTSTRUCTW}
  4827.   TV_INSERTSTRUCTW = tagTVINSERTSTRUCTW;
  4828.   {$EXTERNALSYM TV_INSERTSTRUCT}
  4829.   TV_INSERTSTRUCT = TV_INSERTSTRUCTA;
  4830.  
  4831. const
  4832.   {$EXTERNALSYM TVM_INSERTITEMA}
  4833.   TVM_INSERTITEMA          = TV_FIRST + 0;
  4834.   {$EXTERNALSYM TVM_INSERTITEMW}
  4835.   TVM_INSERTITEMW          = TV_FIRST + 50;
  4836.   {$EXTERNALSYM TVM_INSERTITEM}
  4837.   TVM_INSERTITEM          = TVM_INSERTITEMA;
  4838.  
  4839. {$EXTERNALSYM TreeView_InsertItem}
  4840. function TreeView_InsertItem(hwnd: HWND; const lpis: TTVInsertStruct): HTreeItem;
  4841.  
  4842. const
  4843.   {$EXTERNALSYM TVM_DELETEITEM}
  4844.   TVM_DELETEITEM          = TV_FIRST + 1;
  4845.  
  4846. {$EXTERNALSYM TreeView_DeleteItem}
  4847. function TreeView_DeleteItem(hwnd: HWND; hitem: HTreeItem): Bool;
  4848.  
  4849. {$EXTERNALSYM TreeView_DeleteAllItems}
  4850. function TreeView_DeleteAllItems(hwnd: HWND): Bool;
  4851.  
  4852. const
  4853.   {$EXTERNALSYM TVM_EXPAND}
  4854.   TVM_EXPAND              = TV_FIRST + 2;
  4855.  
  4856. {$EXTERNALSYM TreeView_Expand}
  4857. function TreeView_Expand(hwnd: HWND; hitem: HTreeItem; code: Integer): Bool;
  4858.  
  4859. const
  4860.   {$EXTERNALSYM TVE_COLLAPSE}
  4861.   TVE_COLLAPSE            = $0001;
  4862.   {$EXTERNALSYM TVE_EXPAND}
  4863.   TVE_EXPAND              = $0002;
  4864.   {$EXTERNALSYM TVE_TOGGLE}
  4865.   TVE_TOGGLE              = $0003;
  4866.   {$EXTERNALSYM TVE_EXPANDPARTIAL}
  4867.   TVE_EXPANDPARTIAL       = $4000;
  4868.   {$EXTERNALSYM TVE_COLLAPSERESET}
  4869.   TVE_COLLAPSERESET       = $8000;
  4870.  
  4871. const
  4872.   {$EXTERNALSYM TVM_GETITEMRECT}
  4873.   TVM_GETITEMRECT         = TV_FIRST + 4;
  4874.  
  4875. {$EXTERNALSYM TreeView_GetItemRect}
  4876. function TreeView_GetItemRect(hwnd: HWND; hitem: HTreeItem;
  4877.   var prc: TRect; code: Bool): Bool;
  4878.  
  4879. const
  4880.   {$EXTERNALSYM TVM_GETCOUNT}
  4881.   TVM_GETCOUNT            = TV_FIRST + 5;
  4882.  
  4883. {$EXTERNALSYM TreeView_GetCount}
  4884. function TreeView_GetCount(hwnd: HWND): UINT;
  4885.  
  4886. const
  4887.   {$EXTERNALSYM TVM_GETINDENT}
  4888.   TVM_GETINDENT           = TV_FIRST + 6;
  4889.  
  4890. {$EXTERNALSYM TreeView_GetIndent}
  4891. function TreeView_GetIndent(hwnd: HWND): UINT;
  4892.  
  4893. const
  4894.   {$EXTERNALSYM TVM_SETINDENT}
  4895.   TVM_SETINDENT           = TV_FIRST + 7;
  4896.  
  4897. {$EXTERNALSYM TreeView_SetIndent}
  4898. function TreeView_SetIndent(hwnd: HWND; indent: Integer): Bool;
  4899.  
  4900. const
  4901.   {$EXTERNALSYM TVM_GETIMAGELIST}
  4902.   TVM_GETIMAGELIST        = TV_FIRST + 8;
  4903.  
  4904. {$EXTERNALSYM TreeView_GetImageList}
  4905. function TreeView_GetImageList(hwnd: HWND; iImage: Integer): HIMAGELIST;
  4906.  
  4907. const
  4908.   {$EXTERNALSYM TVSIL_NORMAL}
  4909.   TVSIL_NORMAL            = 0;
  4910.   {$EXTERNALSYM TVSIL_STATE}
  4911.   TVSIL_STATE             = 2;
  4912.  
  4913.  
  4914. const
  4915.   {$EXTERNALSYM TVM_SETIMAGELIST}
  4916.   TVM_SETIMAGELIST        = TV_FIRST + 9;
  4917.  
  4918. {$EXTERNALSYM TreeView_SetImageList}
  4919. function TreeView_SetImageList(hwnd: HWND; himl: HIMAGELIST;
  4920.   iImage: Integer): HIMAGELIST;
  4921.  
  4922. const
  4923.   {$EXTERNALSYM TVM_GETNEXTITEM}
  4924.   TVM_GETNEXTITEM         = TV_FIRST + 10;
  4925.  
  4926. {$EXTERNALSYM TreeView_GetNextItem}
  4927. function TreeView_GetNextItem(hwnd: HWND; hitem: HTreeItem;
  4928.   code: Integer): HTreeItem;
  4929.  
  4930. const
  4931.   {$EXTERNALSYM TVGN_ROOT}
  4932.   TVGN_ROOT               = $0000;
  4933.   {$EXTERNALSYM TVGN_NEXT}
  4934.   TVGN_NEXT               = $0001;
  4935.   {$EXTERNALSYM TVGN_PREVIOUS}
  4936.   TVGN_PREVIOUS           = $0002;
  4937.   {$EXTERNALSYM TVGN_PARENT}
  4938.   TVGN_PARENT             = $0003;
  4939.   {$EXTERNALSYM TVGN_CHILD}
  4940.   TVGN_CHILD              = $0004;
  4941.   {$EXTERNALSYM TVGN_FIRSTVISIBLE}
  4942.   TVGN_FIRSTVISIBLE       = $0005;
  4943.   {$EXTERNALSYM TVGN_NEXTVISIBLE}
  4944.   TVGN_NEXTVISIBLE        = $0006;
  4945.   {$EXTERNALSYM TVGN_PREVIOUSVISIBLE}
  4946.   TVGN_PREVIOUSVISIBLE    = $0007;
  4947.   {$EXTERNALSYM TVGN_DROPHILITE}
  4948.   TVGN_DROPHILITE         = $0008;
  4949.   {$EXTERNALSYM TVGN_CARET}
  4950.   TVGN_CARET              = $0009;
  4951.   {$EXTERNALSYM TVGN_LASTVISIBLE}
  4952.   TVGN_LASTVISIBLE        = $000A;
  4953.  
  4954. {$EXTERNALSYM TreeView_GetChild}
  4955. function TreeView_GetChild(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4956. {$EXTERNALSYM TreeView_GetNextSibling}
  4957. function TreeView_GetNextSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4958. {$EXTERNALSYM TreeView_GetPrevSibling}
  4959. function TreeView_GetPrevSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4960. {$EXTERNALSYM TreeView_GetParent}
  4961. function TreeView_GetParent(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4962. {$EXTERNALSYM TreeView_GetFirstVisible}
  4963. function TreeView_GetFirstVisible(hwnd: HWND): HTreeItem;
  4964. {$EXTERNALSYM TreeView_GetNextVisible}
  4965. function TreeView_GetNextVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4966. {$EXTERNALSYM TreeView_GetPrevVisible}
  4967. function TreeView_GetPrevVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4968. {$EXTERNALSYM TreeView_GetSelection}
  4969. function TreeView_GetSelection(hwnd: HWND): HTreeItem;
  4970. {$EXTERNALSYM TreeView_GetDropHilite}
  4971. function TreeView_GetDropHilite(hwnd: HWND): HTreeItem;
  4972. {$EXTERNALSYM TreeView_GetRoot}
  4973. function TreeView_GetRoot(hwnd: HWND): HTreeItem;
  4974. {$EXTERNALSYM TreeView_GetLastVisible}
  4975. function TreeView_GetLastVisible(hwnd: HWND): HTreeItem;
  4976.  
  4977. const
  4978.   {$EXTERNALSYM TVM_SELECTITEM}
  4979.   TVM_SELECTITEM          = TV_FIRST + 11;
  4980.  
  4981. {$EXTERNALSYM TreeView_Select}
  4982. function TreeView_Select(hwnd: HWND; hitem: HTreeItem;
  4983.   code: Integer): HTreeItem;
  4984.  
  4985. {$EXTERNALSYM TreeView_SelectItem}
  4986. function TreeView_SelectItem(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4987. {$EXTERNALSYM TreeView_SelectDropTarget}
  4988. function TreeView_SelectDropTarget(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4989. {$EXTERNALSYM TreeView_SelectSetFirstVisible}
  4990. function TreeView_SelectSetFirstVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  4991.  
  4992. const
  4993.   {$EXTERNALSYM TVM_GETITEMA}
  4994.   TVM_GETITEMA             = TV_FIRST + 12;
  4995.   {$EXTERNALSYM TVM_GETITEMW}
  4996.   TVM_GETITEMW             = TV_FIRST + 62;
  4997.   {$EXTERNALSYM TVM_GETITEM}
  4998.   TVM_GETITEM             = TVM_GETITEMA;
  4999.  
  5000. {$EXTERNALSYM TreeView_GetItemA}
  5001. function TreeView_GetItemA(hwnd: HWND; var pitem: TTVItemA): Bool;
  5002. {$EXTERNALSYM TreeView_GetItemW}
  5003. function TreeView_GetItemW(hwnd: HWND; var pitem: TTVItemW): Bool;
  5004. {$EXTERNALSYM TreeView_GetItem}
  5005. function TreeView_GetItem(hwnd: HWND; var pitem: TTVItem): Bool;
  5006.  
  5007. const
  5008.   {$EXTERNALSYM TVM_SETITEMA}
  5009.   TVM_SETITEMA             = TV_FIRST + 13;
  5010.   {$EXTERNALSYM TVM_SETITEMW}
  5011.   TVM_SETITEMW             = TV_FIRST + 63;
  5012.   {$EXTERNALSYM TVM_SETITEM}
  5013.   TVM_SETITEM             = TVM_SETITEMA;
  5014.  
  5015. {$EXTERNALSYM TreeView_SetItemA}
  5016. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemA): Bool;
  5017. {$EXTERNALSYM TreeView_SetItemW}
  5018. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemW): Bool;
  5019. {$EXTERNALSYM TreeView_SetItem}
  5020. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItem): Bool;
  5021.  
  5022. const
  5023.   {$EXTERNALSYM TVM_EDITLABELA}
  5024.   TVM_EDITLABELA           = TV_FIRST + 14;
  5025.   {$EXTERNALSYM TVM_EDITLABELW}
  5026.   TVM_EDITLABELW           = TV_FIRST + 65;
  5027.   {$EXTERNALSYM TVM_EDITLABEL}
  5028.   TVM_EDITLABEL           = TVM_EDITLABELA;
  5029.  
  5030. {$EXTERNALSYM TreeView_EditLabelA}
  5031. function TreeView_EditLabelA(hwnd: HWND; hitem: HTreeItem): HWND;
  5032. {$EXTERNALSYM TreeView_EditLabelW}
  5033. function TreeView_EditLabelW(hwnd: HWND; hitem: HTreeItem): HWND;
  5034. {$EXTERNALSYM TreeView_EditLabel}
  5035. function TreeView_EditLabel(hwnd: HWND; hitem: HTreeItem): HWND;
  5036.  
  5037. const
  5038.   {$EXTERNALSYM TVM_GETEDITCONTROL}
  5039.   TVM_GETEDITCONTROL      = TV_FIRST + 15;
  5040.  
  5041. {$EXTERNALSYM TreeView_GetEditControl}
  5042. function TreeView_GetEditControl(hwnd: HWND): HWND;
  5043.  
  5044.  
  5045. const
  5046.   {$EXTERNALSYM TVM_GETVISIBLECOUNT}
  5047.   TVM_GETVISIBLECOUNT     = TV_FIRST + 16;
  5048.  
  5049. {$EXTERNALSYM TreeView_GetVisibleCount}
  5050. function TreeView_GetVisibleCount(hwnd: HWND): UINT;
  5051.  
  5052. const
  5053.   {$EXTERNALSYM TVM_HITTEST}
  5054.   TVM_HITTEST             = TV_FIRST + 17;
  5055.  
  5056. type
  5057.   PTVHitTestInfo = ^TTVHitTestInfo;
  5058.   {$EXTERNALSYM tagTVHITTESTINFO}
  5059.   tagTVHITTESTINFO = packed record
  5060.     pt: TPoint;
  5061.     flags: UINT;
  5062.     hItem: HTreeItem;
  5063.   end;
  5064.   {$EXTERNALSYM _TV_HITTESTINFO}
  5065.   _TV_HITTESTINFO = tagTVHITTESTINFO;
  5066.   TTVHitTestInfo = tagTVHITTESTINFO;
  5067.   {$EXTERNALSYM TV_HITTESTINFO}
  5068.   TV_HITTESTINFO = tagTVHITTESTINFO;
  5069.  
  5070. {$EXTERNALSYM TreeView_HitTest}
  5071. function TreeView_HitTest(hwnd: HWND; var lpht: TTVHitTestInfo): HTreeItem;
  5072.  
  5073. const
  5074.   {$EXTERNALSYM TVHT_NOWHERE}
  5075.   TVHT_NOWHERE            = $0001;
  5076.   {$EXTERNALSYM TVHT_ONITEMICON}
  5077.   TVHT_ONITEMICON         = $0002;
  5078.   {$EXTERNALSYM TVHT_ONITEMLABEL}
  5079.   TVHT_ONITEMLABEL        = $0004;
  5080.   {$EXTERNALSYM TVHT_ONITEMINDENT}
  5081.   TVHT_ONITEMINDENT       = $0008;
  5082.   {$EXTERNALSYM TVHT_ONITEMBUTTON}
  5083.   TVHT_ONITEMBUTTON       = $0010;
  5084.   {$EXTERNALSYM TVHT_ONITEMRIGHT}
  5085.   TVHT_ONITEMRIGHT        = $0020;
  5086.   {$EXTERNALSYM TVHT_ONITEMSTATEICON}
  5087.   TVHT_ONITEMSTATEICON    = $0040;
  5088.  
  5089.   {$EXTERNALSYM TVHT_ONITEM}
  5090.   TVHT_ONITEM             = TVHT_ONITEMICON or TVHT_ONITEMLABEL or
  5091.                   TVHT_ONITEMSTATEICON;
  5092.  
  5093.   {$EXTERNALSYM TVHT_ABOVE}
  5094.   TVHT_ABOVE              = $0100;
  5095.   {$EXTERNALSYM TVHT_BELOW}
  5096.   TVHT_BELOW              = $0200;
  5097.   {$EXTERNALSYM TVHT_TORIGHT}
  5098.   TVHT_TORIGHT            = $0400;
  5099.   {$EXTERNALSYM TVHT_TOLEFT}
  5100.   TVHT_TOLEFT             = $0800;
  5101.  
  5102. const
  5103.   {$EXTERNALSYM TVM_CREATEDRAGIMAGE}
  5104.   TVM_CREATEDRAGIMAGE     = TV_FIRST + 18;
  5105.  
  5106. {$EXTERNALSYM TreeView_CreateDragImage}
  5107. function TreeView_CreateDragImage(hwnd: HWND; hitem: HTreeItem): HIMAGELIST;
  5108.  
  5109. const
  5110.   {$EXTERNALSYM TVM_SORTCHILDREN}
  5111.   TVM_SORTCHILDREN        = TV_FIRST + 19;
  5112.  
  5113. {$EXTERNALSYM TreeView_SortChildren}
  5114. function TreeView_SortChildren(hwnd: HWND; hitem: HTreeItem;
  5115.   recurse: Integer): Bool;
  5116.  
  5117. const
  5118.   {$EXTERNALSYM TVM_ENSUREVISIBLE}
  5119.   TVM_ENSUREVISIBLE       = TV_FIRST + 20;
  5120.  
  5121. {$EXTERNALSYM TreeView_EnsureVisible}
  5122. function TreeView_EnsureVisible(hwnd: HWND; hitem: HTreeItem): Bool;
  5123.  
  5124. const
  5125.   {$EXTERNALSYM TVM_SORTCHILDRENCB}
  5126.   TVM_SORTCHILDRENCB      = TV_FIRST + 21;
  5127.  
  5128. type
  5129.   {$EXTERNALSYM PFNTVCOMPARE}
  5130.   PFNTVCOMPARE = function(lParam1, lParam2, lParamSort: Longint): Integer stdcall;
  5131.   TTVCompare = PFNTVCOMPARE;
  5132.  
  5133. type
  5134.   {$EXTERNALSYM tagTVSORTCB}
  5135.   tagTVSORTCB = packed record
  5136.     hParent: HTreeItem;
  5137.     lpfnCompare: TTVCompare;
  5138.     lParam: LPARAM;
  5139.   end;
  5140.   {$EXTERNALSYM _TV_SORTCB}
  5141.   _TV_SORTCB = tagTVSORTCB;
  5142.   TTVSortCB = tagTVSORTCB;
  5143.   {$EXTERNALSYM TV_SORTCB}
  5144.   TV_SORTCB = tagTVSORTCB;
  5145.  
  5146. {$EXTERNALSYM TreeView_SortChildrenCB}
  5147. function TreeView_SortChildrenCB(hwnd: HWND; const psort: TTVSortCB;
  5148.   recurse: Integer): Bool;
  5149.  
  5150. const
  5151.   {$EXTERNALSYM TVM_ENDEDITLABELNOW}
  5152.   TVM_ENDEDITLABELNOW     = TV_FIRST + 22;
  5153.  
  5154. {$EXTERNALSYM TreeView_EndEditLabelNow}
  5155. function TreeView_EndEditLabelNow(hwnd: HWND; fCancel: Bool): Bool;
  5156.  
  5157. const
  5158.   {$EXTERNALSYM TVM_GETISEARCHSTRINGA}
  5159.   TVM_GETISEARCHSTRINGA    = TV_FIRST + 23;
  5160.   {$EXTERNALSYM TVM_GETISEARCHSTRINGW}
  5161.   TVM_GETISEARCHSTRINGW    = TV_FIRST + 64;
  5162.   {$EXTERNALSYM TVM_GETISEARCHSTRING}
  5163.   TVM_GETISEARCHSTRING    = TVM_GETISEARCHSTRINGA;
  5164.  
  5165. {$EXTERNALSYM TreeView_GetISearchStringA}
  5166. function TreeView_GetISearchStringA(hwndTV: HWND; lpsz: PAnsiChar): Bool;
  5167. {$EXTERNALSYM TreeView_GetISearchStringW}
  5168. function TreeView_GetISearchStringW(hwndTV: HWND; lpsz: PWideChar): Bool;
  5169. {$EXTERNALSYM TreeView_GetISearchString}
  5170. function TreeView_GetISearchString(hwndTV: HWND; lpsz: PChar): Bool;
  5171.  
  5172. const
  5173.   {$EXTERNALSYM TVM_SETTOOLTIPS}
  5174.   TVM_SETTOOLTIPS         = TV_FIRST + 24;
  5175.  
  5176. {$EXTERNALSYM TreeView_SetToolTips}
  5177. function TreeView_SetToolTips(wnd: HWND; hwndTT: HWND): HWND;
  5178.  
  5179. const
  5180.   {$EXTERNALSYM TVM_GETTOOLTIPS}
  5181.   TVM_GETTOOLTIPS         = TV_FIRST + 25;
  5182.  
  5183. {$EXTERNALSYM TreeView_GetToolTips}
  5184. function TreeView_GetToolTips(wnd: HWND): HWND;
  5185.  
  5186. const
  5187.   {$EXTERNALSYM TVM_SETINSERTMARK}
  5188.   TVM_SETINSERTMARK       = TV_FIRST + 26;
  5189.  
  5190. {$EXTERNALSYM TreeView_SetInsertMark}
  5191. function TreeView_SetInsertMark(hwnd: HWND; hItem: Integer; fAfter: BOOL): BOOL;
  5192.  
  5193. const
  5194.   {$EXTERNALSYM TVM_SETUNICODEFORMAT}
  5195.   TVM_SETUNICODEFORMAT     = CCM_SETUNICODEFORMAT;
  5196.  
  5197. {$EXTERNALSYM TreeView_SetUnicodeFormat}
  5198. function TreeView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  5199.  
  5200. const
  5201.   {$EXTERNALSYM TVM_GETUNICODEFORMAT}
  5202.   TVM_GETUNICODEFORMAT     = CCM_GETUNICODEFORMAT;
  5203.  
  5204. {$EXTERNALSYM TreeView_GetUnicodeFormat}
  5205. function TreeView_GetUnicodeFormat(hwnd: HWND): BOOL;
  5206.  
  5207. const
  5208.   {$EXTERNALSYM TVM_SETITEMHEIGHT}
  5209.   TVM_SETITEMHEIGHT         = TV_FIRST + 27;
  5210.  
  5211. {$EXTERNALSYM TreeView_SetItemHeight}
  5212. function TreeView_SetItemHeight(hwnd: HWND; iHeight: Integer): Integer;
  5213.  
  5214. const
  5215.   {$EXTERNALSYM TVM_GETITEMHEIGHT}
  5216.   TVM_GETITEMHEIGHT         = TV_FIRST + 28;
  5217.  
  5218. {$EXTERNALSYM TreeView_GetItemHeight}
  5219. function TreeView_GetItemHeight(hwnd: HWND): Integer;
  5220.  
  5221. const
  5222.   {$EXTERNALSYM TVM_SETBKCOLOR}
  5223.   TVM_SETBKCOLOR              = TV_FIRST + 29;
  5224.  
  5225. {$EXTERNALSYM TreeView_SetBkColor}
  5226. function TreeView_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  5227.  
  5228. const
  5229.   {$EXTERNALSYM TVM_SETTEXTCOLOR}
  5230.   TVM_SETTEXTCOLOR              = TV_FIRST + 30;
  5231.  
  5232. {$EXTERNALSYM TreeView_SetTextColor}
  5233. function TreeView_SetTextColor(hwnd: HWND; clr: COLORREF): COLORREF;
  5234.  
  5235. const
  5236.   {$EXTERNALSYM TVM_GETBKCOLOR}
  5237.   TVM_GETBKCOLOR              = TV_FIRST + 31;
  5238.  
  5239. {$EXTERNALSYM TreeView_GetBkColor}
  5240. function TreeView_GetBkColor(hwnd: HWND): COLORREF;
  5241.  
  5242. const
  5243.   {$EXTERNALSYM TVM_GETTEXTCOLOR}
  5244.   TVM_GETTEXTCOLOR              = TV_FIRST + 32;
  5245.  
  5246. {$EXTERNALSYM TreeView_GetTextColor}
  5247. function TreeView_GetTextColor(hwnd: HWND): COLORREF;
  5248.  
  5249. const
  5250.   {$EXTERNALSYM TVM_SETSCROLLTIME}
  5251.   TVM_SETSCROLLTIME              = TV_FIRST + 33;
  5252.  
  5253. {$EXTERNALSYM TreeView_SetScrollTime}
  5254. function TreeView_SetScrollTime(hwnd: HWND; uTime: UINT): UINT;
  5255.  
  5256. const
  5257.   {$EXTERNALSYM TVM_GETSCROLLTIME}
  5258.   TVM_GETSCROLLTIME              = TV_FIRST + 34;
  5259.  
  5260. {$EXTERNALSYM TreeView_GetScrollTime}
  5261. function TreeView_GetScrollTime(hwnd: HWND): UINT;
  5262.  
  5263. const
  5264.   {$EXTERNALSYM TVM_SETINSERTMARKCOLOR}
  5265.   TVM_SETINSERTMARKCOLOR         = TV_FIRST + 37;
  5266.  
  5267. {$EXTERNALSYM TreeView_SetInsertMarkColor}
  5268. function TreeView_SetInsertMarkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  5269.  
  5270. const
  5271.   {$EXTERNALSYM TVM_GETINSERTMARKCOLOR}
  5272.   TVM_GETINSERTMARKCOLOR         = TV_FIRST + 38;
  5273.  
  5274. {$EXTERNALSYM TreeView_GetInsertMarkColor}
  5275. function TreeView_GetInsertMarkColor(hwnd: HWND): COLORREF;
  5276.  
  5277. type
  5278.   PNMTreeViewA = ^TNMTreeViewA;
  5279.   PNMTreeViewW = ^TNMTreeViewW;
  5280.   PNMTreeView = PNMTreeViewA;
  5281.   {$EXTERNALSYM tagNMTREEVIEWA}
  5282.   tagNMTREEVIEWA = packed record
  5283.     hdr: TNMHDR;
  5284.     action: UINT;
  5285.     itemOld: TTVItemA;
  5286.     itemNew: TTVItemA;
  5287.     ptDrag: TPoint;
  5288.   end;
  5289.   {$EXTERNALSYM tagNMTREEVIEWW}
  5290.   tagNMTREEVIEWW = packed record
  5291.     hdr: TNMHDR;
  5292.     action: UINT;
  5293.     itemOld: TTVItemW;
  5294.     itemNew: TTVItemW;
  5295.     ptDrag: TPoint;
  5296.   end;
  5297.   {$EXTERNALSYM tagNMTREEVIEW}
  5298.   tagNMTREEVIEW = tagNMTREEVIEWA;
  5299.   {$EXTERNALSYM _NM_TREEVIEWA}
  5300.   _NM_TREEVIEWA = tagNMTREEVIEWA;
  5301.   {$EXTERNALSYM _NM_TREEVIEWW}
  5302.   _NM_TREEVIEWW = tagNMTREEVIEWW;
  5303.   {$EXTERNALSYM _NM_TREEVIEW}
  5304.   _NM_TREEVIEW = _NM_TREEVIEWA;
  5305.   TNMTreeViewA  = tagNMTREEVIEWA;
  5306.   TNMTreeViewW  = tagNMTREEVIEWW;
  5307.   TNMTreeView = TNMTreeViewA;
  5308.   {$EXTERNALSYM NM_TREEVIEWA}
  5309.   NM_TREEVIEWA  = tagNMTREEVIEWA;
  5310.   {$EXTERNALSYM NM_TREEVIEWW}
  5311.   NM_TREEVIEWW  = tagNMTREEVIEWW;
  5312.   {$EXTERNALSYM NM_TREEVIEW}
  5313.   NM_TREEVIEW = NM_TREEVIEWA;
  5314.  
  5315. const
  5316.   {$EXTERNALSYM TVN_SELCHANGINGA}
  5317.   TVN_SELCHANGINGA         = TVN_FIRST-1;
  5318.   {$EXTERNALSYM TVN_SELCHANGEDA}
  5319.   TVN_SELCHANGEDA          = TVN_FIRST-2;
  5320.   {$EXTERNALSYM TVN_SELCHANGINGW}
  5321.   TVN_SELCHANGINGW         = TVN_FIRST-50;
  5322.   {$EXTERNALSYM TVN_SELCHANGEDW}
  5323.   TVN_SELCHANGEDW          = TVN_FIRST-51;
  5324.   {$EXTERNALSYM TVN_SELCHANGING}
  5325.   TVN_SELCHANGING         = TVN_SELCHANGINGA;
  5326.   {$EXTERNALSYM TVN_SELCHANGED}
  5327.   TVN_SELCHANGED          = TVN_SELCHANGEDA;
  5328.  
  5329. const
  5330.   {$EXTERNALSYM TVC_UNKNOWN}
  5331.   TVC_UNKNOWN             = $0000;
  5332.   {$EXTERNALSYM TVC_BYMOUSE}
  5333.   TVC_BYMOUSE             = $0001;
  5334.   {$EXTERNALSYM TVC_BYKEYBOARD}
  5335.   TVC_BYKEYBOARD          = $0002;
  5336.  
  5337. const
  5338.   {$EXTERNALSYM TVN_GETDISPINFOA}
  5339.   TVN_GETDISPINFOA         = TVN_FIRST-3;
  5340.   {$EXTERNALSYM TVN_SETDISPINFOA}
  5341.   TVN_SETDISPINFOA         = TVN_FIRST-4;
  5342.   {$EXTERNALSYM TVN_GETDISPINFOW}
  5343.   TVN_GETDISPINFOW         = TVN_FIRST-52;
  5344.   {$EXTERNALSYM TVN_SETDISPINFOW}
  5345.   TVN_SETDISPINFOW         = TVN_FIRST-53;
  5346.   {$EXTERNALSYM TVN_GETDISPINFO}
  5347.   TVN_GETDISPINFO         = TVN_GETDISPINFOA;
  5348.   {$EXTERNALSYM TVN_SETDISPINFO}
  5349.   TVN_SETDISPINFO         = TVN_SETDISPINFOA;
  5350.  
  5351.   {$EXTERNALSYM TVIF_DI_SETITEM}
  5352.   TVIF_DI_SETITEM         = $1000;
  5353.  
  5354. type
  5355.   PTVDispInfoA = ^TTVDispInfoA;
  5356.   PTVDispInfoW = ^TTVDispInfoW;
  5357.   PTVDispInfo = PTVDispInfoA;
  5358.   {$EXTERNALSYM tagTVDISPINFOA}
  5359.   tagTVDISPINFOA = packed record
  5360.     hdr: TNMHDR;
  5361.     item: TTVItemA;
  5362.   end;
  5363.   {$EXTERNALSYM tagTVDISPINFOW}
  5364.   tagTVDISPINFOW = packed record
  5365.     hdr: TNMHDR;
  5366.     item: TTVItemW;
  5367.   end;
  5368.   {$EXTERNALSYM tagTVDISPINFO}
  5369.   tagTVDISPINFO = tagTVDISPINFOA;
  5370.   {$EXTERNALSYM _TV_DISPINFOA}
  5371.   _TV_DISPINFOA = tagTVDISPINFOA;
  5372.   {$EXTERNALSYM _TV_DISPINFOW}
  5373.   _TV_DISPINFOW = tagTVDISPINFOW;
  5374.   {$EXTERNALSYM _TV_DISPINFO}
  5375.   _TV_DISPINFO = _TV_DISPINFOA;
  5376.   TTVDispInfoA = tagTVDISPINFOA;
  5377.   TTVDispInfoW = tagTVDISPINFOW;
  5378.   TTVDispInfo = TTVDispInfoA;
  5379.   {$EXTERNALSYM TV_DISPINFOA}
  5380.   TV_DISPINFOA = tagTVDISPINFOA;
  5381.   {$EXTERNALSYM TV_DISPINFOW}
  5382.   TV_DISPINFOW = tagTVDISPINFOW;
  5383.   {$EXTERNALSYM TV_DISPINFO}
  5384.   TV_DISPINFO = TV_DISPINFOA;
  5385.  
  5386. const
  5387.   {$EXTERNALSYM TVN_ITEMEXPANDINGA}
  5388.   TVN_ITEMEXPANDINGA       = TVN_FIRST-5;
  5389.   {$EXTERNALSYM TVN_ITEMEXPANDEDA}
  5390.   TVN_ITEMEXPANDEDA        = TVN_FIRST-6;
  5391.   {$EXTERNALSYM TVN_BEGINDRAGA}
  5392.   TVN_BEGINDRAGA           = TVN_FIRST-7;
  5393.   {$EXTERNALSYM TVN_BEGINRDRAGA}
  5394.   TVN_BEGINRDRAGA          = TVN_FIRST-8;
  5395.   {$EXTERNALSYM TVN_DELETEITEMA}
  5396.   TVN_DELETEITEMA          = TVN_FIRST-9;
  5397.   {$EXTERNALSYM TVN_BEGINLABELEDITA}
  5398.   TVN_BEGINLABELEDITA      = TVN_FIRST-10;
  5399.   {$EXTERNALSYM TVN_ENDLABELEDITA}
  5400.   TVN_ENDLABELEDITA        = TVN_FIRST-11;
  5401.   {$EXTERNALSYM TVN_GETINFOTIPA}
  5402.   TVN_GETINFOTIPA          = TVN_FIRST-13;
  5403.   {$EXTERNALSYM TVN_ITEMEXPANDINGW}
  5404.   TVN_ITEMEXPANDINGW       = TVN_FIRST-54;
  5405.   {$EXTERNALSYM TVN_ITEMEXPANDEDW}
  5406.   TVN_ITEMEXPANDEDW        = TVN_FIRST-55;
  5407.   {$EXTERNALSYM TVN_BEGINDRAGW}
  5408.   TVN_BEGINDRAGW           = TVN_FIRST-56;
  5409.   {$EXTERNALSYM TVN_BEGINRDRAGW}
  5410.   TVN_BEGINRDRAGW          = TVN_FIRST-57;
  5411.   {$EXTERNALSYM TVN_DELETEITEMW}
  5412.   TVN_DELETEITEMW          = TVN_FIRST-58;
  5413.   {$EXTERNALSYM TVN_BEGINLABELEDITW}
  5414.   TVN_BEGINLABELEDITW      = TVN_FIRST-59;
  5415.   {$EXTERNALSYM TVN_ENDLABELEDITW}
  5416.   TVN_ENDLABELEDITW        = TVN_FIRST-60;
  5417.   {$EXTERNALSYM TVN_GETINFOTIPW}
  5418.   TVN_GETINFOTIPW          = TVN_FIRST-14;
  5419.   {$EXTERNALSYM TVN_ITEMEXPANDING}
  5420.   TVN_ITEMEXPANDING       = TVN_ITEMEXPANDINGA;
  5421.   {$EXTERNALSYM TVN_ITEMEXPANDED}
  5422.   TVN_ITEMEXPANDED        = TVN_ITEMEXPANDEDA;
  5423.   {$EXTERNALSYM TVN_BEGINDRAG}
  5424.   TVN_BEGINDRAG           = TVN_BEGINDRAGA;
  5425.   {$EXTERNALSYM TVN_BEGINRDRAG}
  5426.   TVN_BEGINRDRAG          = TVN_BEGINRDRAGA;
  5427.   {$EXTERNALSYM TVN_DELETEITEM}
  5428.   TVN_DELETEITEM          = TVN_DELETEITEMA;
  5429.   {$EXTERNALSYM TVN_BEGINLABELEDIT}
  5430.   TVN_BEGINLABELEDIT      = TVN_BEGINLABELEDITA;
  5431.   {$EXTERNALSYM TVN_ENDLABELEDIT}
  5432.   TVN_ENDLABELEDIT        = TVN_ENDLABELEDITA;
  5433.   {$EXTERNALSYM TVN_GETINFOTIP}
  5434.   TVN_GETINFOTIP         = TVN_GETINFOTIPA;
  5435.  
  5436. const
  5437.   {$EXTERNALSYM TVN_KEYDOWN}
  5438.   TVN_KEYDOWN             = TVN_FIRST-12;
  5439.   {$EXTERNALSYM TVN_SINGLEEXPAND}
  5440.   TVN_SINGLEEXPAND        = TVN_FIRST-15;
  5441.  
  5442. type
  5443.   {$EXTERNALSYM tagTVKEYDOWN}
  5444.   tagTVKEYDOWN = packed record
  5445.     hdr: TNMHDR;
  5446.     wVKey: Word;
  5447.     flags: UINT;
  5448.   end;
  5449.   {$EXTERNALSYM _TV_KEYDOWN}
  5450.   _TV_KEYDOWN = tagTVKEYDOWN;
  5451.   TTVKeyDown = tagTVKEYDOWN;
  5452.   {$EXTERNALSYM TV_KEYDOWN}
  5453.   TV_KEYDOWN = tagTVKEYDOWN;
  5454.  
  5455.   {$EXTERNALSYM tagNMTVCUSTOMDRAW}
  5456.   tagNMTVCUSTOMDRAW = packed record
  5457.     nmcd: TNMCustomDraw;
  5458.     clrText: COLORREF;
  5459.     clrTextBk: COLORREF;
  5460.     iLevel: Integer;
  5461.   end;
  5462.   PNMTVCustomDraw = ^TNMTVCustomDraw;
  5463.   TNMTVCustomDraw = tagNMTVCUSTOMDRAW;
  5464.  
  5465.   // for tooltips
  5466.   {$EXTERNALSYM tagNMTVGETINFOTIPA}
  5467.   tagNMTVGETINFOTIPA = packed record
  5468.     hdr: TNMHdr;
  5469.     pszText: PAnsiChar;
  5470.     cchTextMax: Integer;
  5471.     hItem: HTREEITEM;
  5472.     lParam: LPARAM;
  5473.   end;
  5474.   {$EXTERNALSYM tagNMTVGETINFOTIPW}
  5475.   tagNMTVGETINFOTIPW = packed record
  5476.     hdr: TNMHdr;
  5477.     pszText: PWideChar;
  5478.     cchTextMax: Integer;
  5479.     hItem: HTREEITEM;
  5480.     lParam: LPARAM;
  5481.   end;
  5482.   {$EXTERNALSYM tagNMTVGETINFOTIP}
  5483.   tagNMTVGETINFOTIP = tagNMTVGETINFOTIPA;
  5484.   PNMTVGetInfoTipA = ^TNMTVGetInfoTipA;
  5485.   PNMTVGetInfoTipW = ^TNMTVGetInfoTipW;
  5486.   PNMTVGetInfoTip = PNMTVGetInfoTipA;
  5487.   TNMTVGetInfoTipA = tagNMTVGETINFOTIPA;
  5488.   TNMTVGetInfoTipW = tagNMTVGETINFOTIPW;
  5489.   TNMTVGetInfoTip = TNMTVGetInfoTipA;
  5490.  
  5491. const
  5492.   // treeview's customdraw return meaning don't draw images.  valid on CDRF_NOTIFYITEMPREPAINT
  5493.   {$EXTERNALSYM TVCDRF_NOIMAGES}
  5494.   TVCDRF_NOIMAGES         = $00010000;
  5495.  
  5496. { ====== ComboBoxEx ======================== }
  5497.  
  5498. const
  5499.   {$EXTERNALSYM WC_COMBOBOXEX}
  5500.   WC_COMBOBOXEX = 'ComboBoxEx32';
  5501.  
  5502.   {$EXTERNALSYM CBEIF_TEXT}
  5503.   CBEIF_TEXT              = $00000001;
  5504.   {$EXTERNALSYM CBEIF_IMAGE}
  5505.   CBEIF_IMAGE             = $00000002;
  5506.   {$EXTERNALSYM CBEIF_SELECTEDIMAGE}
  5507.   CBEIF_SELECTEDIMAGE     = $00000004;
  5508.   {$EXTERNALSYM CBEIF_OVERLAY}
  5509.   CBEIF_OVERLAY           = $00000008;
  5510.   {$EXTERNALSYM CBEIF_INDENT}
  5511.   CBEIF_INDENT            = $00000010;
  5512.   {$EXTERNALSYM CBEIF_LPARAM}
  5513.   CBEIF_LPARAM            = $00000020;
  5514.  
  5515.   {$EXTERNALSYM CBEIF_DI_SETITEM}
  5516.   CBEIF_DI_SETITEM        = $10000000;
  5517.  
  5518. type
  5519.   {$EXTERNALSYM tagCOMBOBOXEXITEMA}
  5520.   tagCOMBOBOXEXITEMA = packed record
  5521.     mask: UINT;
  5522.     iItem: Integer;
  5523.     pszText: PAnsiChar;
  5524.     cchTextMax: Integer;
  5525.     iImage: Integer;
  5526.     iSelectedImage: Integer;
  5527.     iOverlay: Integer;
  5528.     iIndent: Integer;
  5529.     lParam: LPARAM;
  5530.   end;
  5531.   {$EXTERNALSYM tagCOMBOBOXEXITEMW}
  5532.   tagCOMBOBOXEXITEMW = packed record
  5533.     mask: UINT;
  5534.     iItem: Integer;
  5535.     pszText: PWideChar;
  5536.     cchTextMax: Integer;
  5537.     iImage: Integer;
  5538.     iSelectedImage: Integer;
  5539.     iOverlay: Integer;
  5540.     iIndent: Integer;
  5541.     lParam: LPARAM;
  5542.   end;
  5543.   {$EXTERNALSYM tagCOMBOBOXEXITEM}
  5544.   tagCOMBOBOXEXITEM = tagCOMBOBOXEXITEMA;
  5545.   PComboBoxExItemA = ^TComboBoxExItemA;
  5546.   PComboBoxExItemW = ^TComboBoxExItemW;
  5547.   PComboBoxExItem = PComboBoxExItemA;
  5548.   TComboBoxExItemA = tagCOMBOBOXEXITEMA;
  5549.   TComboBoxExItemW = tagCOMBOBOXEXITEMW;
  5550.   TComboBoxExItem = TComboBoxExItemA;
  5551.  
  5552. const
  5553.   {$EXTERNALSYM CBEM_INSERTITEMA}
  5554.   CBEM_INSERTITEMA        = WM_USER + 1;
  5555.   {$EXTERNALSYM CBEM_SETIMAGELIST}
  5556.   CBEM_SETIMAGELIST       = WM_USER + 2;
  5557.   {$EXTERNALSYM CBEM_GETIMAGELIST}
  5558.   CBEM_GETIMAGELIST       = WM_USER + 3;
  5559.   {$EXTERNALSYM CBEM_GETITEMA}
  5560.   CBEM_GETITEMA           = WM_USER + 4;
  5561.   {$EXTERNALSYM CBEM_SETITEMA}
  5562.   CBEM_SETITEMA           = WM_USER + 5;
  5563.   {$EXTERNALSYM CBEM_DELETEITEM}
  5564.   CBEM_DELETEITEM         = CB_DELETESTRING;
  5565.   {$EXTERNALSYM CBEM_GETCOMBOCONTROL}
  5566.   CBEM_GETCOMBOCONTROL    = WM_USER + 6;
  5567.   {$EXTERNALSYM CBEM_GETEDITCONTROL}
  5568.   CBEM_GETEDITCONTROL     = WM_USER + 7;
  5569.   {$EXTERNALSYM CBEM_SETEXSTYLE}
  5570.   CBEM_SETEXSTYLE         = WM_USER + 8;  // use SETEXTENDEDSTYLE instead
  5571.   {$EXTERNALSYM CBEM_GETEXSTYLE}
  5572.   CBEM_GETEXSTYLE         = WM_USER + 9;  // use GETEXTENDEDSTYLE instead
  5573.   {$EXTERNALSYM CBEM_GETEXTENDEDSTYLE}
  5574.   CBEM_GETEXTENDEDSTYLE   = WM_USER + 9;
  5575.   {$EXTERNALSYM CBEM_HASEDITCHANGED}
  5576.   CBEM_HASEDITCHANGED     = WM_USER + 10;
  5577.   {$EXTERNALSYM CBEM_INSERTITEMW}
  5578.   CBEM_INSERTITEMW        = WM_USER + 11;
  5579.   {$EXTERNALSYM CBEM_SETITEMW}
  5580.   CBEM_SETITEMW           = WM_USER + 12;
  5581.   {$EXTERNALSYM CBEM_GETITEMW}
  5582.   CBEM_GETITEMW           = WM_USER + 13;
  5583.   {$EXTERNALSYM CBEM_SETEXTENDEDSTYLE}
  5584.   CBEM_SETEXTENDEDSTYLE   = WM_USER + 14; // lparam == new style, wParam (optional) == mask
  5585.   {$EXTERNALSYM CBEM_SETUNICODEFORMAT}
  5586.   CBEM_SETUNICODEFORMAT   = CCM_SETUNICODEFORMAT;
  5587.   {$EXTERNALSYM CBEM_GETUNICODEFORMAT}
  5588.   CBEM_GETUNICODEFORMAT   = CCM_GETUNICODEFORMAT;
  5589.  
  5590.   {$EXTERNALSYM CBEM_INSERTITEM}
  5591.   CBEM_INSERTITEM         = CBEM_INSERTITEMA;
  5592.   {$EXTERNALSYM CBEM_SETITEM}
  5593.   CBEM_SETITEM            = CBEM_SETITEMA;
  5594.   {$EXTERNALSYM CBEM_GETITEM}
  5595.   CBEM_GETITEM            = CBEM_GETITEMA;
  5596.  
  5597.   {$EXTERNALSYM CBES_EX_NOEDITIMAGE}
  5598.   CBES_EX_NOEDITIMAGE          = $00000001;
  5599.   {$EXTERNALSYM CBES_EX_NOEDITIMAGEINDENT}
  5600.   CBES_EX_NOEDITIMAGEINDENT    = $00000002;
  5601.   {$EXTERNALSYM CBES_EX_PATHWORDBREAKPROC}
  5602.   CBES_EX_PATHWORDBREAKPROC    = $00000004;
  5603.   {$EXTERNALSYM CBES_EX_NOSIZELIMIT}
  5604.   CBES_EX_NOSIZELIMIT          = $00000008;
  5605.   {$EXTERNALSYM CBES_EX_CASESENSITIVE}
  5606.   CBES_EX_CASESENSITIVE        = $00000010;
  5607.  
  5608. type
  5609.   {$EXTERNALSYM NMCOMBOBOXEXA}
  5610.   NMCOMBOBOXEXA = packed record
  5611.     hdr: TNMHdr;
  5612.     ceItem: TComboBoxExItemA;
  5613.   end;
  5614.   {$EXTERNALSYM NMCOMBOBOXEXW}
  5615.   NMCOMBOBOXEXW = packed record
  5616.     hdr: TNMHdr;
  5617.     ceItem: TComboBoxExItemW;
  5618.   end;
  5619.   {$EXTERNALSYM NMCOMBOBOXEX}
  5620.   NMCOMBOBOXEX = NMCOMBOBOXEXA;
  5621.   PNMComboBoxExA = ^TNMComboBoxExA;
  5622.   PNMComboBoxExW = ^TNMComboBoxExW;
  5623.   PNMComboBoxEx = PNMComboBoxExA;
  5624.   TNMComboBoxExA = NMCOMBOBOXEXA;
  5625.   TNMComboBoxExW = NMCOMBOBOXEXW;
  5626.   TNMComboBoxEx = TNMComboBoxExA;
  5627.  
  5628. const
  5629.   {$EXTERNALSYM CBEN_GETDISPINFOA}
  5630.   CBEN_GETDISPINFOA       = CBEN_FIRST - 0;
  5631.   {$EXTERNALSYM CBEN_INSERTITEM}
  5632.   CBEN_INSERTITEM         = CBEN_FIRST - 1;
  5633.   {$EXTERNALSYM CBEN_DELETEITEM}
  5634.   CBEN_DELETEITEM         = CBEN_FIRST - 2;
  5635.   {$EXTERNALSYM CBEN_BEGINEDIT}
  5636.   CBEN_BEGINEDIT          = CBEN_FIRST - 4;
  5637.   {$EXTERNALSYM CBEN_ENDEDITA}
  5638.   CBEN_ENDEDITA           = CBEN_FIRST - 5; // lParam specifies why the endedit is happening
  5639.   {$EXTERNALSYM CBEN_ENDEDITW}
  5640.   CBEN_ENDEDITW           = CBEN_FIRST - 6;
  5641.   {$EXTERNALSYM CBEN_GETDISPINFOW}
  5642.   CBEN_GETDISPINFOW       = CBEN_FIRST - 7;
  5643.   {$EXTERNALSYM CBEN_DRAGBEGINA}
  5644.   CBEN_DRAGBEGINA                = CBEN_FIRST - 8;
  5645.   {$EXTERNALSYM CBEN_DRAGBEGINW}
  5646.   CBEN_DRAGBEGINW                = CBEN_FIRST - 9;
  5647.  
  5648.   {$EXTERNALSYM CBEN_ENDEDIT}
  5649.   CBEN_ENDEDIT            = CBEN_ENDEDITA;
  5650.   {$EXTERNALSYM CBEN_GETDISPINFO}
  5651.   CBEN_GETDISPINFO        = CBEN_GETDISPINFOA;
  5652.   {$EXTERNALSYM CBEN_DRAGBEGIN}
  5653.   CBEN_DRAGBEGIN          = CBEN_DRAGBEGINA;
  5654.  
  5655.   {$EXTERNALSYM CBENF_KILLFOCUS}
  5656.   CBENF_KILLFOCUS         = 1;
  5657.   {$EXTERNALSYM CBENF_RETURN}
  5658.   CBENF_RETURN            = 2;
  5659.   {$EXTERNALSYM CBENF_ESCAPE}
  5660.   CBENF_ESCAPE            = 3;
  5661.   {$EXTERNALSYM CBENF_DROPDOWN}
  5662.   CBENF_DROPDOWN          = 4;
  5663.  
  5664.   {$EXTERNALSYM CBEMAXSTRLEN}
  5665.   CBEMAXSTRLEN = 260;
  5666.  
  5667. type
  5668.   // CBEN_DRAGBEGIN sends this information ...
  5669.   {$EXTERNALSYM NMCBEDRAGBEGINA}
  5670.   NMCBEDRAGBEGINA = packed record
  5671.     hdr: TNMHdr;
  5672.     iItemid: Integer;
  5673.     szText: array[0..CBEMAXSTRLEN - 1] of AnsiChar;
  5674.   end;
  5675.   {$EXTERNALSYM NMCBEDRAGBEGINW}
  5676.   NMCBEDRAGBEGINW = packed record
  5677.     hdr: TNMHdr;
  5678.     iItemid: Integer;
  5679.     szText: array[0..CBEMAXSTRLEN - 1] of WideChar;
  5680.   end;
  5681.   {$EXTERNALSYM NMCBEDRAGBEGIN}
  5682.   NMCBEDRAGBEGIN = NMCBEDRAGBEGINA;
  5683.   PNMCBEDragBeginA = ^TNMCBEDragBeginA;
  5684.   PNMCBEDragBeginW = ^TNMCBEDragBeginW;
  5685.   PNMCBEDragBegin = PNMCBEDragBeginA;
  5686.   TNMCBEDragBeginA = NMCBEDRAGBEGINA;
  5687.   TNMCBEDragBeginW = NMCBEDRAGBEGINW;
  5688.   TNMCBEDragBegin = TNMCBEDragBeginA;
  5689.  
  5690.   // CBEN_ENDEDIT sends this information...
  5691.   // fChanged if the user actually did anything
  5692.   // iNewSelection gives what would be the new selection unless the notify is failed
  5693.   //                      iNewSelection may be CB_ERR if there's no match
  5694.   {$EXTERNALSYM NMCBEENDEDITA}
  5695.   NMCBEENDEDITA = packed record
  5696.     hdr: TNMHdr;
  5697.     fChanged: BOOL;
  5698.     iNewSelection: Integer;
  5699.     szText: array[0..CBEMAXSTRLEN - 1] of AnsiChar;
  5700.     iWhy: Integer;
  5701.   end;
  5702.   {$EXTERNALSYM NMCBEENDEDITW}
  5703.   NMCBEENDEDITW = packed record
  5704.     hdr: TNMHdr;
  5705.     fChanged: BOOL;
  5706.     iNewSelection: Integer;
  5707.     szText: array[0..CBEMAXSTRLEN - 1] of WideChar;
  5708.     iWhy: Integer;
  5709.   end;
  5710.   {$EXTERNALSYM NMCBEENDEDIT}
  5711.   NMCBEENDEDIT = NMCBEENDEDITA;
  5712.   PNMCBEEndEditA = ^TNMCBEEndEditA;
  5713.   PNMCBEEndEditW = ^TNMCBEEndEditW;
  5714.   PNMCBEEndEdit = PNMCBEEndEditA;
  5715.   TNMCBEEndEditA = NMCBEENDEDITA;
  5716.   TNMCBEEndEditW = NMCBEENDEDITW;
  5717.   TNMCBEEndEdit = TNMCBEEndEditA;
  5718.  
  5719. { ====== TAB CONTROL ======================== }
  5720.  
  5721. const
  5722.   {$EXTERNALSYM WC_TABCONTROL}
  5723.   WC_TABCONTROL = 'SysTabControl32';
  5724.  
  5725. const
  5726.   {$EXTERNALSYM TCS_SCROLLOPPOSITE}
  5727.   TCS_SCROLLOPPOSITE    = $0001;  // assumes multiline tab
  5728.   {$EXTERNALSYM TCS_BOTTOM}
  5729.   TCS_BOTTOM            = $0002;
  5730.   {$EXTERNALSYM TCS_RIGHT}
  5731.   TCS_RIGHT             = $0002;
  5732.   {$EXTERNALSYM TCS_MULTISELECT}
  5733.   TCS_MULTISELECT       = $0004;  // allow multi-select in button mode
  5734.   {$EXTERNALSYM TCS_FLATBUTTONS}
  5735.   TCS_FLATBUTTONS       = $0008;
  5736.   {$EXTERNALSYM TCS_FORCEICONLEFT}
  5737.   TCS_FORCEICONLEFT     = $0010;
  5738.   {$EXTERNALSYM TCS_FORCELABELLEFT}
  5739.   TCS_FORCELABELLEFT    = $0020;
  5740.   {$EXTERNALSYM TCS_HOTTRACK}
  5741.   TCS_HOTTRACK          = $0040;
  5742.   {$EXTERNALSYM TCS_VERTICAL}
  5743.   TCS_VERTICAL          = $0080;
  5744.   {$EXTERNALSYM TCS_TABS}
  5745.   TCS_TABS              = $0000;
  5746.   {$EXTERNALSYM TCS_BUTTONS}
  5747.   TCS_BUTTONS           = $0100;
  5748.   {$EXTERNALSYM TCS_SINGLELINE}
  5749.   TCS_SINGLELINE        = $0000;
  5750.   {$EXTERNALSYM TCS_MULTILINE}
  5751.   TCS_MULTILINE         = $0200;
  5752.   {$EXTERNALSYM TCS_RIGHTJUSTIFY}
  5753.   TCS_RIGHTJUSTIFY      = $0000;
  5754.   {$EXTERNALSYM TCS_FIXEDWIDTH}
  5755.   TCS_FIXEDWIDTH        = $0400;
  5756.   {$EXTERNALSYM TCS_RAGGEDRIGHT}
  5757.   TCS_RAGGEDRIGHT       = $0800;
  5758.   {$EXTERNALSYM TCS_FOCUSONBUTTONDOWN}
  5759.   TCS_FOCUSONBUTTONDOWN = $1000;
  5760.   {$EXTERNALSYM TCS_OWNERDRAWFIXED}
  5761.   TCS_OWNERDRAWFIXED    = $2000;
  5762.   {$EXTERNALSYM TCS_TOOLTIPS}
  5763.   TCS_TOOLTIPS          = $4000;
  5764.   {$EXTERNALSYM TCS_FOCUSNEVER}
  5765.   TCS_FOCUSNEVER        = $8000;
  5766.  
  5767.   {$EXTERNALSYM TCS_EX_FLATSEPARATORS}
  5768.   TCS_EX_FLATSEPARATORS = $00000001;
  5769.   {$EXTERNALSYM TCS_EX_REGISTERDROP}
  5770.   TCS_EX_REGISTERDROP   = $00000002;
  5771.  
  5772.   {$EXTERNALSYM TCM_GETIMAGELIST}
  5773.   TCM_GETIMAGELIST       = TCM_FIRST + 2;
  5774.   {$EXTERNALSYM TCM_SETIMAGELIST}
  5775.   TCM_SETIMAGELIST       = TCM_FIRST + 3;
  5776.   {$EXTERNALSYM TCM_GETITEMCOUNT}
  5777.   TCM_GETITEMCOUNT       = TCM_FIRST + 4;
  5778.   {$EXTERNALSYM TCM_DELETEITEM}
  5779.   TCM_DELETEITEM         = TCM_FIRST + 8;
  5780.   {$EXTERNALSYM TCM_DELETEALLITEMS}
  5781.   TCM_DELETEALLITEMS     = TCM_FIRST + 9;
  5782.   {$EXTERNALSYM TCM_GETITEMRECT}
  5783.   TCM_GETITEMRECT        = TCM_FIRST + 10;
  5784.   {$EXTERNALSYM TCM_GETCURSEL}
  5785.   TCM_GETCURSEL          = TCM_FIRST + 11;
  5786.   {$EXTERNALSYM TCM_SETCURSEL}
  5787.   TCM_SETCURSEL          = TCM_FIRST + 12;
  5788.   {$EXTERNALSYM TCM_HITTEST}
  5789.   TCM_HITTEST            = TCM_FIRST + 13;
  5790.   {$EXTERNALSYM TCM_SETITEMEXTRA}
  5791.   TCM_SETITEMEXTRA       = TCM_FIRST + 14;
  5792.   {$EXTERNALSYM TCM_ADJUSTRECT}
  5793.   TCM_ADJUSTRECT         = TCM_FIRST + 40;
  5794.   {$EXTERNALSYM TCM_SETITEMSIZE}
  5795.   TCM_SETITEMSIZE        = TCM_FIRST + 41;
  5796.   {$EXTERNALSYM TCM_REMOVEIMAGE}
  5797.   TCM_REMOVEIMAGE        = TCM_FIRST + 42;
  5798.   {$EXTERNALSYM TCM_SETPADDING}
  5799.   TCM_SETPADDING         = TCM_FIRST + 43;
  5800.   {$EXTERNALSYM TCM_GETROWCOUNT}
  5801.   TCM_GETROWCOUNT        = TCM_FIRST + 44;
  5802.   {$EXTERNALSYM TCM_GETTOOLTIPS}
  5803.   TCM_GETTOOLTIPS        = TCM_FIRST + 45;
  5804.   {$EXTERNALSYM TCM_SETTOOLTIPS}
  5805.   TCM_SETTOOLTIPS        = TCM_FIRST + 46;
  5806.   {$EXTERNALSYM TCM_GETCURFOCUS}
  5807.   TCM_GETCURFOCUS        = TCM_FIRST + 47;
  5808.   {$EXTERNALSYM TCM_SETCURFOCUS}
  5809.   TCM_SETCURFOCUS        = TCM_FIRST + 48;
  5810.   {$EXTERNALSYM TCM_SETMINTABWIDTH}
  5811.   TCM_SETMINTABWIDTH     = TCM_FIRST + 49;
  5812.   {$EXTERNALSYM TCM_DESELECTALL}
  5813.   TCM_DESELECTALL        = TCM_FIRST + 50;
  5814.   {$EXTERNALSYM TCM_HIGHLIGHTITEM}
  5815.   TCM_HIGHLIGHTITEM      = TCM_FIRST + 51;
  5816.   {$EXTERNALSYM TCM_SETEXTENDEDSTYLE}
  5817.   TCM_SETEXTENDEDSTYLE   = TCM_FIRST + 52;  // optional wParam == mask
  5818.   {$EXTERNALSYM TCM_GETEXTENDEDSTYLE}
  5819.   TCM_GETEXTENDEDSTYLE   = TCM_FIRST + 53;
  5820.   {$EXTERNALSYM TCM_SETUNICODEFORMAT}
  5821.   TCM_SETUNICODEFORMAT   = CCM_SETUNICODEFORMAT;
  5822.   {$EXTERNALSYM TCM_GETUNICODEFORMAT}
  5823.   TCM_GETUNICODEFORMAT   = CCM_GETUNICODEFORMAT;
  5824.  
  5825.   {$EXTERNALSYM TCIF_TEXT}
  5826.   TCIF_TEXT       = $0001;
  5827.   {$EXTERNALSYM TCIF_IMAGE}
  5828.   TCIF_IMAGE      = $0002;
  5829.   {$EXTERNALSYM TCIF_RTLREADING}
  5830.   TCIF_RTLREADING = $0004;
  5831.   {$EXTERNALSYM TCIF_PARAM}
  5832.   TCIF_PARAM      = $0008;
  5833.   {$EXTERNALSYM TCIF_STATE}
  5834.   TCIF_STATE      = $0010;
  5835.  
  5836.   {$EXTERNALSYM TCIS_BUTTONPRESSED}
  5837.   TCIS_BUTTONPRESSED      = $0001;
  5838.   {$EXTERNALSYM TCIS_HIGHLIGHTED}
  5839.   TCIS_HIGHLIGHTED        = $0002;
  5840.  
  5841. type
  5842.   PTCItemHeaderA = ^TTCItemHeaderA;
  5843.   PTCItemHeaderW = ^TTCItemHeaderW;
  5844.   PTCItemHeader = PTCItemHeaderA;
  5845.   {$EXTERNALSYM tagTCITEMHEADERA}
  5846.   tagTCITEMHEADERA = packed record
  5847.     mask: UINT;
  5848.     lpReserved1: UINT;
  5849.     lpReserved2: UINT;
  5850.     pszText: PAnsiChar;
  5851.     cchTextMax: Integer;
  5852.     iImage: Integer;
  5853.   end;
  5854.   {$EXTERNALSYM tagTCITEMHEADERW}
  5855.   tagTCITEMHEADERW = packed record
  5856.     mask: UINT;
  5857.     lpReserved1: UINT;
  5858.     lpReserved2: UINT;
  5859.     pszText: PWideChar;
  5860.     cchTextMax: Integer;
  5861.     iImage: Integer;
  5862.   end;
  5863.   {$EXTERNALSYM tagTCITEMHEADER}
  5864.   tagTCITEMHEADER = tagTCITEMHEADERA;
  5865.   {$EXTERNALSYM _TC_ITEMHEADERA}
  5866.   _TC_ITEMHEADERA = tagTCITEMHEADERA;
  5867.   {$EXTERNALSYM _TC_ITEMHEADERW}
  5868.   _TC_ITEMHEADERW = tagTCITEMHEADERW;
  5869.   {$EXTERNALSYM _TC_ITEMHEADER}
  5870.   _TC_ITEMHEADER = _TC_ITEMHEADERA;
  5871.   TTCItemHeaderA = tagTCITEMHEADERA;
  5872.   TTCItemHeaderW = tagTCITEMHEADERW;
  5873.   TTCItemHeader = TTCItemHeaderA;
  5874.   {$EXTERNALSYM TC_ITEMHEADERA}
  5875.   TC_ITEMHEADERA = tagTCITEMHEADERA;
  5876.   {$EXTERNALSYM TC_ITEMHEADERW}
  5877.   TC_ITEMHEADERW = tagTCITEMHEADERW;
  5878.   {$EXTERNALSYM TC_ITEMHEADER}
  5879.   TC_ITEMHEADER = TC_ITEMHEADERA;
  5880.  
  5881.   PTCItemA = ^TTCItemA;
  5882.   PTCItemW = ^TTCItemW;
  5883.   PTCItem = PTCItemA;
  5884.   {$EXTERNALSYM tagTCITEMA}
  5885.   tagTCITEMA = packed record
  5886.     mask: UINT;
  5887.     dwState: UINT;
  5888.     dwStateMask: UINT;
  5889.     pszText: PAnsiChar;
  5890.     cchTextMax: Integer;
  5891.     iImage: Integer;
  5892.     lParam: LPARAM;
  5893.   end;
  5894.   {$EXTERNALSYM tagTCITEMW}
  5895.   tagTCITEMW = packed record
  5896.     mask: UINT;
  5897.     dwState: UINT;
  5898.     dwStateMask: UINT;
  5899.     pszText: PWideChar;
  5900.     cchTextMax: Integer;
  5901.     iImage: Integer;
  5902.     lParam: LPARAM;
  5903.   end;
  5904.   {$EXTERNALSYM tagTCITEM}
  5905.   tagTCITEM = tagTCITEMA;
  5906.   {$EXTERNALSYM _TC_ITEMA}
  5907.   _TC_ITEMA = tagTCITEMA;
  5908.   {$EXTERNALSYM _TC_ITEMW}
  5909.   _TC_ITEMW = tagTCITEMW;
  5910.   {$EXTERNALSYM _TC_ITEM}
  5911.   _TC_ITEM = _TC_ITEMA;
  5912.   TTCItemA = tagTCITEMA;
  5913.   TTCItemW = tagTCITEMW;
  5914.   TTCItem = TTCItemA;
  5915.   {$EXTERNALSYM TC_ITEMA}
  5916.   TC_ITEMA = tagTCITEMA;
  5917.   {$EXTERNALSYM TC_ITEMW}
  5918.   TC_ITEMW = tagTCITEMW;
  5919.   {$EXTERNALSYM TC_ITEM}
  5920.   TC_ITEM = TC_ITEMA;
  5921.  
  5922. const
  5923.   {$EXTERNALSYM TCM_GETITEMA}
  5924.   TCM_GETITEMA             = TCM_FIRST + 5;
  5925.   {$EXTERNALSYM TCM_SETITEMA}
  5926.   TCM_SETITEMA             = TCM_FIRST + 6;
  5927.   {$EXTERNALSYM TCM_INSERTITEMA}
  5928.   TCM_INSERTITEMA          = TCM_FIRST + 7;
  5929.   {$EXTERNALSYM TCM_GETITEMW}
  5930.   TCM_GETITEMW             = TCM_FIRST + 60;
  5931.   {$EXTERNALSYM TCM_SETITEMW}
  5932.   TCM_SETITEMW             = TCM_FIRST + 61;
  5933.   {$EXTERNALSYM TCM_INSERTITEMW}
  5934.   TCM_INSERTITEMW          = TCM_FIRST + 62;
  5935.   {$EXTERNALSYM TCM_GETITEM}
  5936.   TCM_GETITEM             = TCM_GETITEMA;
  5937.   {$EXTERNALSYM TCM_SETITEM}
  5938.   TCM_SETITEM             = TCM_SETITEMA;
  5939.   {$EXTERNALSYM TCM_INSERTITEM}
  5940.   TCM_INSERTITEM          = TCM_INSERTITEMA;
  5941.  
  5942. const
  5943.   {$EXTERNALSYM TCHT_NOWHERE}
  5944.   TCHT_NOWHERE     = $0001;
  5945.   {$EXTERNALSYM TCHT_ONITEMICON}
  5946.   TCHT_ONITEMICON  = $0002;
  5947.   {$EXTERNALSYM TCHT_ONITEMLABEL}
  5948.   TCHT_ONITEMLABEL = $0004;
  5949.   {$EXTERNALSYM TCHT_ONITEM}
  5950.   TCHT_ONITEM      = TCHT_ONITEMICON or TCHT_ONITEMLABEL;
  5951.  
  5952. type
  5953.   PTCHitTestInfo = ^TTCHitTestInfo;
  5954.   {$EXTERNALSYM tagTCHITTESTINFO}
  5955.   tagTCHITTESTINFO = packed record
  5956.     pt: TPoint;
  5957.     flags: UINT;
  5958.   end;
  5959.   {$EXTERNALSYM _TC_HITTESTINFO}
  5960.   _TC_HITTESTINFO = tagTCHITTESTINFO;
  5961.   TTCHitTestInfo = tagTCHITTESTINFO;
  5962.   {$EXTERNALSYM TC_HITTESTINFO}
  5963.   TC_HITTESTINFO = tagTCHITTESTINFO;
  5964.  
  5965.   {$EXTERNALSYM tagTCKEYDOWN}
  5966.   tagTCKEYDOWN = packed record
  5967.     hdr: TNMHDR;
  5968.     wVKey: Word;
  5969.     flags: UINT;
  5970.   end;
  5971.   {$EXTERNALSYM _TC_KEYDOWN}
  5972.   _TC_KEYDOWN = tagTCKEYDOWN;
  5973.   TTCKeyDown = tagTCKEYDOWN;
  5974.   {$EXTERNALSYM TC_KEYDOWN}
  5975.   TC_KEYDOWN = tagTCKEYDOWN;
  5976.  
  5977. const
  5978.   {$EXTERNALSYM TCN_KEYDOWN}
  5979.   TCN_KEYDOWN             = TCN_FIRST - 0;
  5980.   {$EXTERNALSYM TCN_SELCHANGE}
  5981.   TCN_SELCHANGE           = TCN_FIRST - 1;
  5982.   {$EXTERNALSYM TCN_SELCHANGING}
  5983.   TCN_SELCHANGING         = TCN_FIRST - 2;
  5984.   {$EXTERNALSYM TCN_GETOBJECT}
  5985.   TCN_GETOBJECT           = TCN_FIRST - 3;
  5986.  
  5987. {$EXTERNALSYM TabCtrl_HitTest}
  5988. function TabCtrl_HitTest(hwndTC: HWND; pinfo: PTCHitTestInfo): Integer;
  5989. {$EXTERNALSYM TabCtrl_SetItemExtra}
  5990. function TabCtrl_SetItemExtra(hwndTC: HWND; cb: Integer): BOOL;
  5991. {$EXTERNALSYM TabCtrl_AdjustRect}
  5992. function TabCtrl_AdjustRect(hwnd: HWND; bLarger: BOOL; prc: PRect): Integer;
  5993. {$EXTERNALSYM TabCtrl_SetItemSize}
  5994. function TabCtrl_SetItemSize(hwnd: HWND; x, y: Integer): DWORD;
  5995. {$EXTERNALSYM TabCtrl_RemoveImage}
  5996. procedure TabCtrl_RemoveImage(hwnd: HWND; i: Integer);
  5997. {$EXTERNALSYM TabCtrl_SetPadding}
  5998. procedure TabCtrl_SetPadding(hwnd: HWND; cx, cy: Integer);
  5999. {$EXTERNALSYM TabCtrl_GetRowCount}
  6000. function TabCtrl_GetRowCount(hwnd: HWND): Integer;
  6001. {$EXTERNALSYM TabCtrl_GetToolTips}
  6002. function TabCtrl_GetToolTips(wnd: HWND): HWND;
  6003. {$EXTERNALSYM TabCtrl_SetToolTips}
  6004. procedure TabCtrl_SetToolTips(hwnd: HWND; hwndTT: HWND);
  6005. {$EXTERNALSYM TabCtrl_GetCurFocus}
  6006. function TabCtrl_GetCurFocus(hwnd: HWND): Integer;
  6007. {$EXTERNALSYM TabCtrl_SetCurFocus}
  6008. procedure TabCtrl_SetCurFocus(hwnd: HWND; i: Integer);
  6009. {$EXTERNALSYM TabCtrl_SetMinTabWidth}
  6010. function TabCtrl_SetMinTabWidth(hwnd: HWND; x: Integer): Integer;
  6011. {$EXTERNALSYM TabCtrl_DeselectAll}
  6012. procedure TabCtrl_DeselectAll(hwnd: HWND; fExcludeFocus: BOOL);
  6013. {$EXTERNALSYM TabCtrl_HighlightItem}
  6014. function TabCtrl_HighlightItem(hwnd: HWND; i: Integer; fHighlight: WordBool): BOOL;
  6015. {$EXTERNALSYM TabCtrl_SetExtendedStyle}
  6016. function TabCtrl_SetExtendedStyle(hwnd: HWND; dw: DWORD): DWORD;
  6017. {$EXTERNALSYM TabCtrl_GetExtendedStyle}
  6018. function TabCtrl_GetExtendedStyle(hwnd: HWND): DWORD;
  6019. {$EXTERNALSYM TabCtrl_SetUnicodeFormat}
  6020. function TabCtrl_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  6021. {$EXTERNALSYM TabCtrl_GetUnicodeFormat}
  6022. function TabCtrl_GetUnicodeFormat(hwnd: HWND): BOOL;
  6023.  
  6024. { ====== ANIMATE CONTROL ================= }
  6025.  
  6026. const
  6027.   {$EXTERNALSYM ANIMATE_CLASS}
  6028.   ANIMATE_CLASS = 'SysAnimate32';
  6029.  
  6030. const
  6031.   {$EXTERNALSYM ACS_CENTER}
  6032.   ACS_CENTER              = $0001;
  6033.   {$EXTERNALSYM ACS_TRANSPARENT}
  6034.   ACS_TRANSPARENT         = $0002;
  6035.   {$EXTERNALSYM ACS_AUTOPLAY}
  6036.   ACS_AUTOPLAY            = $0004;
  6037.   {$EXTERNALSYM ACS_TIMER}
  6038.   ACS_TIMER               = $0008;  { don't use threads... use timers }
  6039.  
  6040.   {$EXTERNALSYM ACM_OPENA}
  6041.   ACM_OPENA                = WM_USER + 100;
  6042.   {$EXTERNALSYM ACM_OPENW}
  6043.   ACM_OPENW                = WM_USER + 103;
  6044.   {$EXTERNALSYM ACM_OPEN}
  6045.   ACM_OPEN                = ACM_OPENA;
  6046.  
  6047.   {$EXTERNALSYM ACM_PLAY}
  6048.   ACM_PLAY                = WM_USER + 101;
  6049.   {$EXTERNALSYM ACM_STOP}
  6050.   ACM_STOP                = WM_USER + 102;
  6051.  
  6052.   {$EXTERNALSYM ACN_START}
  6053.   ACN_START               = 1;
  6054.   {$EXTERNALSYM ACN_STOP}
  6055.   ACN_STOP                = 2;
  6056.  
  6057. {$EXTERNALSYM Animate_Create}
  6058. function Animate_Create(hwndP: HWND; id: HMENU; dwStyle: DWORD; hInstance: HINST): HWND;
  6059. {$EXTERNALSYM Animate_Open}
  6060. function Animate_Open(hwnd: HWND; szName: PChar): BOOL;
  6061. {$EXTERNALSYM Animate_OpenEx}
  6062. function Animate_OpenEx(hwnd: HWND; hInst: HINST; szName: PChar): BOOL;
  6063. {$EXTERNALSYM Animate_Play}
  6064. function Animate_Play(hwnd: HWND; from, _to: Word; rep: UINT): BOOL;
  6065. {$EXTERNALSYM Animate_Stop}
  6066. function Animate_Stop(hwnd: HWND): BOOL;
  6067. {$EXTERNALSYM Animate_Close}
  6068. function Animate_Close(hwnd: HWND): BOOL;
  6069. {$EXTERNALSYM Animate_Seek}
  6070. function Animate_Seek(hwnd: HWND; frame: Word): BOOL;
  6071.  
  6072. { ====== MONTHCAL CONTROL ========= }
  6073.  
  6074. const
  6075.   {$EXTERNALSYM MONTHCAL_CLASS}
  6076.   MONTHCAL_CLASS          = 'SysMonthCal32';
  6077.  
  6078. const  
  6079.   // Message constants
  6080.   {$EXTERNALSYM MCM_FIRST}
  6081.   MCM_FIRST             = $1000;
  6082.   {$EXTERNALSYM MCM_GETCURSEL}
  6083.   MCM_GETCURSEL         = MCM_FIRST + 1;
  6084.   {$EXTERNALSYM MCM_SETCURSEL}
  6085.   MCM_SETCURSEL         = MCM_FIRST + 2;
  6086.   {$EXTERNALSYM MCM_GETMAXSELCOUNT}
  6087.   MCM_GETMAXSELCOUNT    = MCM_FIRST + 3;
  6088.   {$EXTERNALSYM MCM_SETMAXSELCOUNT}
  6089.   MCM_SETMAXSELCOUNT    = MCM_FIRST + 4;
  6090.   {$EXTERNALSYM MCM_GETSELRANGE}
  6091.   MCM_GETSELRANGE       = MCM_FIRST + 5;
  6092.   {$EXTERNALSYM MCM_SETSELRANGE}
  6093.   MCM_SETSELRANGE       = MCM_FIRST + 6;
  6094.   {$EXTERNALSYM MCM_GETMONTHRANGE}
  6095.   MCM_GETMONTHRANGE     = MCM_FIRST + 7;
  6096.   {$EXTERNALSYM MCM_SETDAYSTATE}
  6097.   MCM_SETDAYSTATE       = MCM_FIRST + 8;
  6098.   {$EXTERNALSYM MCM_GETMINREQRECT}
  6099.   MCM_GETMINREQRECT     = MCM_FIRST + 9;
  6100.   {$EXTERNALSYM MCM_SETCOLOR}
  6101.   MCM_SETCOLOR          = MCM_FIRST + 10;
  6102.   {$EXTERNALSYM MCM_GETCOLOR}
  6103.   MCM_GETCOLOR          = MCM_FIRST + 11;
  6104.   {$EXTERNALSYM MCM_SETTODAY}
  6105.   MCM_SETTODAY          = MCM_FIRST + 12;
  6106.   {$EXTERNALSYM MCM_GETTODAY}
  6107.   MCM_GETTODAY          = MCM_FIRST + 13;
  6108.   {$EXTERNALSYM MCM_HITTEST}
  6109.   MCM_HITTEST           = MCM_FIRST + 14;
  6110.   {$EXTERNALSYM MCM_SETFIRSTDAYOFWEEK}
  6111.   MCM_SETFIRSTDAYOFWEEK = MCM_FIRST + 15;
  6112.   {$EXTERNALSYM MCM_GETFIRSTDAYOFWEEK}
  6113.   MCM_GETFIRSTDAYOFWEEK = MCM_FIRST + 16;
  6114.   {$EXTERNALSYM MCM_GETRANGE}
  6115.   MCM_GETRANGE          = MCM_FIRST + 17;
  6116.   {$EXTERNALSYM MCM_SETRANGE}
  6117.   MCM_SETRANGE          = MCM_FIRST + 18;
  6118.   {$EXTERNALSYM MCM_GETMONTHDELTA}
  6119.   MCM_GETMONTHDELTA     = MCM_FIRST + 19;
  6120.   {$EXTERNALSYM MCM_SETMONTHDELTA}
  6121.   MCM_SETMONTHDELTA     = MCM_FIRST + 20;
  6122.   {$EXTERNALSYM MCM_GETMAXTODAYWIDTH}
  6123.   MCM_GETMAXTODAYWIDTH  = MCM_FIRST + 21;
  6124.   {$EXTERNALSYM MCM_SETUNICODEFORMAT}
  6125.   MCM_SETUNICODEFORMAT  = CCM_SETUNICODEFORMAT;
  6126.   {$EXTERNALSYM MCM_GETUNICODEFORMAT}
  6127.   MCM_GETUNICODEFORMAT  = CCM_GETUNICODEFORMAT;
  6128.  
  6129.   // Hit test flags
  6130.   {$EXTERNALSYM MCHT_TITLE}
  6131.   MCHT_TITLE            = $00010000;
  6132.   {$EXTERNALSYM MCHT_CALENDAR}
  6133.   MCHT_CALENDAR         = $00020000;
  6134.   {$EXTERNALSYM MCHT_TODAYLINK}
  6135.   MCHT_TODAYLINK        = $00030000;
  6136.   {$EXTERNALSYM MCHT_NEXT}
  6137.   MCHT_NEXT             = $01000000;  // these indicate that hitting
  6138.   {$EXTERNALSYM MCHT_PREV}
  6139.   MCHT_PREV             = $02000000;  // here will go to the next/prev month
  6140.   {$EXTERNALSYM MCHT_NOWHERE}
  6141.   MCHT_NOWHERE          = $00000000;
  6142.   {$EXTERNALSYM MCHT_TITLEBK}
  6143.   MCHT_TITLEBK          = MCHT_TITLE;
  6144.   {$EXTERNALSYM MCHT_TITLEMONTH}
  6145.   MCHT_TITLEMONTH       = MCHT_TITLE or $0001;
  6146.   {$EXTERNALSYM MCHT_TITLEYEAR}
  6147.   MCHT_TITLEYEAR        = MCHT_TITLE or $0002;
  6148.   {$EXTERNALSYM MCHT_TITLEBTNNEXT}
  6149.   MCHT_TITLEBTNNEXT     = MCHT_TITLE or MCHT_NEXT or $0003;
  6150.   {$EXTERNALSYM MCHT_TITLEBTNPREV}
  6151.   MCHT_TITLEBTNPREV     = MCHT_TITLE or MCHT_PREV or $0003;
  6152.   {$EXTERNALSYM MCHT_CALENDARBK}
  6153.   MCHT_CALENDARBK       = MCHT_CALENDAR;
  6154.   {$EXTERNALSYM MCHT_CALENDARDATE}
  6155.   MCHT_CALENDARDATE     = MCHT_CALENDAR or $0001;
  6156.   {$EXTERNALSYM MCHT_CALENDARDATENEXT}
  6157.   MCHT_CALENDARDATENEXT = MCHT_CALENDARDATE or MCHT_NEXT;
  6158.   {$EXTERNALSYM MCHT_CALENDARDATEPREV}
  6159.   MCHT_CALENDARDATEPREV = MCHT_CALENDARDATE or MCHT_PREV;
  6160.   {$EXTERNALSYM MCHT_CALENDARDAY}
  6161.   MCHT_CALENDARDAY      = MCHT_CALENDAR or $0002;
  6162.   {$EXTERNALSYM MCHT_CALENDARWEEKNUM}
  6163.   MCHT_CALENDARWEEKNUM  = MCHT_CALENDAR or $0003;
  6164.  
  6165.   // Color codes
  6166.   {$EXTERNALSYM MCSC_BACKGROUND}
  6167.   MCSC_BACKGROUND       = 0;   // the background color (between months)
  6168.   {$EXTERNALSYM MCSC_TEXT}
  6169.   MCSC_TEXT             = 1;   // the dates
  6170.   {$EXTERNALSYM MCSC_TITLEBK}
  6171.   MCSC_TITLEBK          = 2;   // background of the title
  6172.   {$EXTERNALSYM MCSC_TITLETEXT}
  6173.   MCSC_TITLETEXT        = 3;
  6174.   {$EXTERNALSYM MCSC_MONTHBK}
  6175.   MCSC_MONTHBK          = 4;   // background within the month cal
  6176.   {$EXTERNALSYM MCSC_TRAILINGTEXT}
  6177.   MCSC_TRAILINGTEXT     = 5;   // the text color of header & trailing days
  6178.  
  6179.   // Notification codes
  6180.   {$EXTERNALSYM MCN_SELCHANGE}
  6181.   MCN_SELCHANGE         = MCN_FIRST + 1;
  6182.   {$EXTERNALSYM MCN_GETDAYSTATE}
  6183.   MCN_GETDAYSTATE       = MCN_FIRST + 3;
  6184.   {$EXTERNALSYM MCN_SELECT}
  6185.   MCN_SELECT            = MCN_FIRST + 4;
  6186.  
  6187.   // Style flags
  6188.   {$EXTERNALSYM MCS_DAYSTATE}
  6189.   MCS_DAYSTATE          = $0001;
  6190.   {$EXTERNALSYM MCS_MULTISELECT}
  6191.   MCS_MULTISELECT       = $0002;
  6192.   {$EXTERNALSYM MCS_WEEKNUMBERS}
  6193.   MCS_WEEKNUMBERS       = $0004;
  6194.   MCS_NOTODAY_PRE_IE4   = $0008;
  6195.   {$EXTERNALSYM MCS_NOTODAYCIRCLE}
  6196.   MCS_NOTODAYCIRCLE     = $0008;
  6197.   {$EXTERNALSYM MCS_NOTODAY}
  6198.   MCS_NOTODAY           = $0010;
  6199.  
  6200.   {$EXTERNALSYM GMR_VISIBLE}
  6201.   GMR_VISIBLE           = 0;       // visible portion of display
  6202.   {$EXTERNALSYM GMR_DAYSTATE}
  6203.   GMR_DAYSTATE          = 1;       // above plus the grayed out parts of
  6204.                                    // partially displayed months
  6205.                                    
  6206. type
  6207.   // bit-packed array of "bold" info for a month
  6208.   // if a bit is on, that day is drawn bold
  6209.   {$EXTERNALSYM MONTHDAYSTATE}
  6210.   MONTHDAYSTATE = DWORD;
  6211.   PMonthDayState = ^TMonthDayState;
  6212.   TMonthDayState = MONTHDAYSTATE;
  6213.  
  6214.   {$EXTERNALSYM MCHITTESTINFO}
  6215.   MCHITTESTINFO = packed record
  6216.     cbSize: UINT;
  6217.     pt: TPoint;
  6218.     uHit: UINT;      // out param
  6219.     st: TSystemTime;
  6220.   end;
  6221.   PMCHitTestInfo = ^TMCHitTestInfo;
  6222.   TMCHitTestInfo = MCHITTESTINFO;
  6223.  
  6224.   // MCN_SELCHANGE is sent whenever the currently displayed date changes
  6225.   // via month change, year change, keyboard navigation, prev/next button
  6226.   {$EXTERNALSYM tagNMSELCHANGE}
  6227.   tagNMSELCHANGE = packed record
  6228.     nmhdr: TNmHdr;  // this must be first, so we don't break WM_NOTIFY
  6229.     stSelStart: TSystemTime;
  6230.     stSelEnd: TSystemTime;
  6231.   end;
  6232.   PNMSelChange = ^TNMSelChange;
  6233.   TNMSelChange = tagNMSELCHANGE;
  6234.  
  6235.   // MCN_GETDAYSTATE is sent for MCS_DAYSTATE controls whenever new daystate
  6236.   // information is needed (month or year scroll) to draw bolding information.
  6237.   // The app must fill in cDayState months worth of information starting from
  6238.   // stStart date. The app may fill in the array at prgDayState or change
  6239.   // prgDayState to point to a different array out of which the information
  6240.   // will be copied. (similar to tooltips)
  6241.   {$EXTERNALSYM tagNMDAYSTATE}
  6242.   tagNMDAYSTATE = packed record
  6243.     nmhdr: TNmHdr;  // this must be first, so we don't break WM_NOTIFY
  6244.     stStart: TSystemTime;
  6245.     cDayState: Integer;
  6246.     prgDayState: PMonthDayState; // points to cDayState TMONTHDAYSTATEs
  6247.   end;
  6248.   PNMDayState = ^TNMDayState;
  6249.   TNMDayState = tagNMDAYSTATE;
  6250.  
  6251.   // MCN_SELECT is sent whenever a selection has occured (via mouse or keyboard)
  6252.   {$EXTERNALSYM NMSELECT}
  6253.   NMSELECT = tagNMSELCHANGE;
  6254.   PNMSelect = ^TNMSelect;
  6255.   TNMSelect = NMSELECT;
  6256.  
  6257. //   returns FALSE if MCS_MULTISELECT
  6258. //   returns TRUE and sets *pst to the currently selected date otherwise
  6259. {$EXTERNALSYM MonthCal_GetCurSel}
  6260. function MonthCal_GetCurSel(hmc: HWND; var pst: TSystemTime): BOOL;
  6261.  
  6262. //   returns FALSE if MCS_MULTISELECT
  6263. //   returns TURE and sets the currently selected date to *pst otherwise
  6264. {$EXTERNALSYM MonthCal_SetCurSel}
  6265. function MonthCal_SetCurSel(hmc: HWND; const pst: TSystemTime): BOOL;
  6266.  
  6267. //   returns the maximum number of selectable days allowed
  6268. {$EXTERNALSYM MonthCal_GetMaxSelCount}
  6269. function MonthCal_GetMaxSelCount(hmc: HWND): DWORD;
  6270.  
  6271. //   sets the max number days that can be selected iff MCS_MULTISELECT
  6272. {$EXTERNALSYM MonthCal_SetMaxSelCount}
  6273. function MonthCal_SetMaxSelCount(hmc: HWND; n: UINT): BOOL;
  6274.  
  6275. //   sets rgst[0] to the first day of the selection range
  6276. //   sets rgst[1] to the last day of the selection range
  6277. {$EXTERNALSYM MonthCal_GetSelRange}
  6278. function MonthCal_GetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  6279.  
  6280. //   selects the range of days from rgst[0] to rgst[1]
  6281. {$EXTERNALSYM MonthCal_SetSelRange}
  6282. function MonthCal_SetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  6283.  
  6284. //   if rgst specified, sets rgst[0] to the starting date and
  6285. //      and rgst[1] to the ending date of the the selectable (non-grayed)
  6286. //      days if GMR_VISIBLE or all the displayed days (including grayed)
  6287. //      if GMR_DAYSTATE.
  6288. //   returns the number of months spanned by the above range.
  6289. {$EXTERNALSYM MonthCal_GetMonthRange}
  6290. function MonthCal_GetMonthRange(hmc: HWND; gmr: DWORD; rgst: PSystemTime): DWORD;
  6291.  
  6292. //   cbds is the count of DAYSTATE items in rgds and it must be equal
  6293. //   to the value returned from MonthCal_GetMonthRange(hmc, GMR_DAYSTATE, NULL)
  6294. //   This sets the DAYSTATE bits for each month (grayed and non-grayed
  6295. //   days) displayed in the calendar. The first bit in a month's DAYSTATE
  6296. //   corresponts to bolding day 1, the second bit affects day 2, etc.
  6297. {$EXTERNALSYM MonthCal_SetDayState}
  6298. function MonthCal_SetDayState(hmc: HWND; cbds: Integer; const rgds: TNMDayState): BOOL;
  6299.  
  6300. //   sets prc the minimal size needed to display one month
  6301. {$EXTERNALSYM MonthCal_GetMinReqRect}
  6302. function MonthCal_GetMinReqRect(hmc: HWND; var prc: TRect): BOOL;
  6303.  
  6304. // set what day is "today"   send NULL to revert back to real date
  6305. {$EXTERNALSYM MonthCal_SetToday}
  6306. function MonthCal_SetToday(hmc: HWND; const pst: TSystemTime): BOOL;
  6307.  
  6308. // get what day is "today"
  6309. // returns BOOL for success/failure
  6310. {$EXTERNALSYM MonthCal_GetToday}
  6311. function MonthCal_GetToday(hmc: HWND; var pst: TSystemTime): BOOL;
  6312.  
  6313. // determine what pinfo->pt is over
  6314. {$EXTERNALSYM MonthCal_HitTest}
  6315. function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD;
  6316.  
  6317. // set colors to draw control with -- see MCSC_ bits below
  6318. {$EXTERNALSYM MonthCal_SetColor}
  6319. function MonthCal_SetColor(hmc: HWND; iColor: Integer; clr: TColorRef): TColorRef;
  6320.  
  6321. {$EXTERNALSYM MonthCal_GetColor}
  6322. function MonthCal_GetColor(hmc: HWND; iColor: Integer): TColorRef;
  6323.  
  6324. // set first day of week to iDay:
  6325. // 0 for Monday, 1 for Tuesday, ..., 6 for Sunday
  6326. // -1 for means use locale info
  6327. {$EXTERNALSYM MonthCal_SetFirstDayOfWeek}
  6328. function MonthCal_SetFirstDayOfWeek(hmc: HWND; iDay: Integer): Integer;
  6329.  
  6330. // DWORD result...  low word has the day.  high word is bool if this is app set
  6331. // or not (FALSE == using locale info)
  6332. {$EXTERNALSYM MonthCal_GetFirstDayOfWeek}
  6333. function MonthCal_GetFirstDayOfWeek(hmc: HWND): Integer;
  6334.  
  6335. //   modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  6336. //   modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  6337. //   returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
  6338. {$EXTERNALSYM MonthCal_GetRange}
  6339. function MonthCal_GetRange(hmc: HWND; rgst: PSystemTime): DWORD;
  6340.  
  6341. //   if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  6342. //   if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  6343. //   returns TRUE on success, FALSE on error (such as invalid parameters)
  6344. {$EXTERNALSYM Monthcal_SetRange}
  6345. function Monthcal_SetRange(hmc: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  6346.  
  6347. //   returns the number of months one click on a next/prev button moves by
  6348. {$EXTERNALSYM MonthCal_GetMonthDelta}
  6349. function MonthCal_GetMonthDelta(hmc: HWND): Integer;
  6350.  
  6351. //   sets the month delta to n. n = 0 reverts to moving by a page of months
  6352. //   returns the previous value of n.
  6353. {$EXTERNALSYM MonthCal_SetMonthDelta}
  6354. function MonthCal_SetMonthDelta(hmc: HWND; n: Integer): Integer;
  6355.  
  6356. //   sets *psz to the maximum width/height of the "Today" string displayed
  6357. //   at the bottom of the calendar (as long as MCS_NOTODAY is not specified)
  6358. {$EXTERNALSYM MonthCal_GetMaxTodayWidth}
  6359. function MonthCal_GetMaxTodayWidth(hmc: HWND): DWORD;
  6360.  
  6361. {$EXTERNALSYM MonthCal_SetUnicodeFormat}
  6362. function MonthCal_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  6363.  
  6364. {$EXTERNALSYM MonthCal_GetUnicodeFormat}
  6365. function MonthCal_GetUnicodeFormat(hwnd: HWND): BOOL;
  6366.  
  6367. { ====== DATETIMEPICK CONTROL =============== }
  6368.  
  6369. const
  6370.   {$EXTERNALSYM DATETIMEPICK_CLASS}
  6371.   DATETIMEPICK_CLASS = 'SysDateTimePick32';
  6372.  
  6373.   // Message constants
  6374.   {$EXTERNALSYM DTM_FIRST}
  6375.   DTM_FIRST         = $1000;
  6376.   {$EXTERNALSYM DTM_GETSYSTEMTIME}
  6377.   DTM_GETSYSTEMTIME = DTM_FIRST + 1;
  6378.   {$EXTERNALSYM DTM_SETSYSTEMTIME}
  6379.   DTM_SETSYSTEMTIME = DTM_FIRST + 2;
  6380.   {$EXTERNALSYM DTM_GETRANGE}
  6381.   DTM_GETRANGE      = DTM_FIRST + 3;
  6382.   {$EXTERNALSYM DTM_SETRANGE}
  6383.   DTM_SETRANGE      = DTM_FIRST + 4;
  6384.   {$EXTERNALSYM DTM_SETFORMATA}
  6385.   DTM_SETFORMATA    = DTM_FIRST + 5;
  6386.   {$EXTERNALSYM DTM_SETMCCOLOR}
  6387.   DTM_SETMCCOLOR    = DTM_FIRST + 6;
  6388.   {$EXTERNALSYM DTM_GETMCCOLOR}
  6389.   DTM_GETMCCOLOR    = DTM_FIRST + 7;
  6390.   {$EXTERNALSYM DTM_GETMONTHCAL}
  6391.   DTM_GETMONTHCAL   = DTM_FIRST + 8;
  6392.   {$EXTERNALSYM DTM_SETMCFONT}
  6393.   DTM_SETMCFONT     = DTM_FIRST + 9;
  6394.   {$EXTERNALSYM DTM_GETMCFONT}
  6395.   DTM_GETMCFONT     = DTM_FIRST + 10;
  6396.   {$EXTERNALSYM DTM_SETFORMATW}
  6397.   DTM_SETFORMATW    = DTM_FIRST + 50;
  6398.   {$EXTERNALSYM DTM_SETFORMAT}
  6399.   DTM_SETFORMAT     = DTM_SETFORMATA;
  6400.  
  6401.   // Style Flags
  6402.   {$EXTERNALSYM DTS_UPDOWN}
  6403.   DTS_UPDOWN          = $0001;  // use UPDOWN instead of MONTHCAL
  6404.   {$EXTERNALSYM DTS_SHOWNONE}
  6405.   DTS_SHOWNONE        = $0002;  // allow a NONE selection
  6406.   {$EXTERNALSYM DTS_SHORTDATEFORMAT}
  6407.   DTS_SHORTDATEFORMAT = $0000;  // use the short date format
  6408.                                 // (app must forward WM_WININICHANGE messages)
  6409.   {$EXTERNALSYM DTS_LONGDATEFORMAT}
  6410.   DTS_LONGDATEFORMAT  = $0004;  // use the long date format
  6411.                                 // (app must forward WM_WININICHANGE messages)
  6412.   {$EXTERNALSYM DTS_TIMEFORMAT}
  6413.   DTS_TIMEFORMAT      = $0009;  // use the time format
  6414.                                 // (app must forward WM_WININICHANGE messages)
  6415.   {$EXTERNALSYM DTS_APPCANPARSE}
  6416.   DTS_APPCANPARSE     = $0010;  // allow user entered strings
  6417.                                 // (app MUST respond to DTN_USERSTRING)
  6418.   {$EXTERNALSYM DTS_RIGHTALIGN}
  6419.   DTS_RIGHTALIGN      = $0020;  // right-align popup instead of left-align it
  6420.  
  6421.   // Notification codes
  6422.   {$EXTERNALSYM DTN_DATETIMECHANGE}
  6423.   DTN_DATETIMECHANGE = DTN_FIRST + 1;  // the systemtime has changed
  6424.   {$EXTERNALSYM DTN_USERSTRINGA}
  6425.   DTN_USERSTRINGA    = DTN_FIRST + 2;  // the user has entered a string
  6426.   {$EXTERNALSYM DTN_USERSTRINGW}
  6427.   DTN_USERSTRINGW    = DTN_FIRST + 15;
  6428.   {$EXTERNALSYM DTN_WMKEYDOWNA}
  6429.   DTN_WMKEYDOWNA     = DTN_FIRST + 3;  // modify keydown on app format field (X)
  6430.   {$EXTERNALSYM DTN_WMKEYDOWNW}
  6431.   DTN_WMKEYDOWNW     = DTN_FIRST + 16;
  6432.   {$EXTERNALSYM DTN_FORMATA}
  6433.   DTN_FORMATA        = DTN_FIRST + 4;  // query display for app format field (X)
  6434.   {$EXTERNALSYM DTN_FORMATW}
  6435.   DTN_FORMATW        = DTN_FIRST + 17;
  6436.   {$EXTERNALSYM DTN_FORMATQUERYA}
  6437.   DTN_FORMATQUERYA   = DTN_FIRST + 5;  // query formatting info for app format field (X)
  6438.   {$EXTERNALSYM DTN_FORMATQUERYW}
  6439.   DTN_FORMATQUERYW   = DTN_FIRST + 18;
  6440.   {$EXTERNALSYM DTN_DROPDOWN}
  6441.   DTN_DROPDOWN       = DTN_FIRST + 6;  // MonthCal has dropped down
  6442.   {$EXTERNALSYM DTN_CLOSEUP}
  6443.   DTN_CLOSEUP        = DTN_FIRST + 7;  // MonthCal is popping up
  6444.   {$EXTERNALSYM DTN_USERSTRING}
  6445.   DTN_USERSTRING     = DTN_USERSTRINGA;
  6446.   {$EXTERNALSYM DTN_WMKEYDOWN}
  6447.   DTN_WMKEYDOWN      = DTN_WMKEYDOWNA;
  6448.   {$EXTERNALSYM DTN_FORMAT}
  6449.   DTN_FORMAT         = DTN_FORMATA;
  6450.   {$EXTERNALSYM DTN_FORMATQUERY}
  6451.   DTN_FORMATQUERY    = DTN_FORMATQUERYA;
  6452.  
  6453.   // Ranges
  6454.   {$EXTERNALSYM GDTR_MIN}
  6455.   GDTR_MIN = $0001;
  6456.   {$EXTERNALSYM GDTR_MAX}
  6457.   GDTR_MAX = $0002;
  6458.  
  6459.   // Return Values
  6460.   {$EXTERNALSYM GDT_ERROR}
  6461.   GDT_ERROR = -1;
  6462.   {$EXTERNALSYM GDT_VALID}
  6463.   GDT_VALID = 0;
  6464.   {$EXTERNALSYM GDT_NONE}
  6465.   GDT_NONE  = 1;
  6466.  
  6467. type
  6468.   {$EXTERNALSYM tagNMDATETIMECHANGE}
  6469.   tagNMDATETIMECHANGE = packed record
  6470.     nmhdr: TNmHdr;
  6471.     dwFlags: DWORD;         // GDT_VALID or GDT_NONE
  6472.     st: TSystemTime;        // valid iff dwFlags = GDT_VALID
  6473.   end;
  6474.   PNMDateTimeChange = ^TNMDateTimeChange;
  6475.   TNMDateTimeChange = tagNMDATETIMECHANGE;
  6476.  
  6477.   {$EXTERNALSYM tagNMDATETIMESTRINGA}
  6478.   tagNMDATETIMESTRINGA = packed record
  6479.     nmhdr: TNmHdr;
  6480.     pszUserString: PAnsiChar;     // string user entered
  6481.     st: TSystemTime;           // app fills this in
  6482.     dwFlags: DWORD;            // GDT_VALID or GDT_NONE
  6483.   end;
  6484.   {$EXTERNALSYM tagNMDATETIMESTRINGW}
  6485.   tagNMDATETIMESTRINGW = packed record
  6486.     nmhdr: TNmHdr;
  6487.     pszUserString: PWideChar;     // string user entered
  6488.     st: TSystemTime;           // app fills this in
  6489.     dwFlags: DWORD;            // GDT_VALID or GDT_NONE
  6490.   end;
  6491.   {$EXTERNALSYM tagNMDATETIMESTRING}
  6492.   tagNMDATETIMESTRING = tagNMDATETIMESTRINGA;
  6493.   PNMDateTimeStringA = ^TNMDateTimeStringA;
  6494.   PNMDateTimeStringW = ^TNMDateTimeStringW;
  6495.   PNMDateTimeString = PNMDateTimeStringA;
  6496.   TNMDateTimeStringA = tagNMDATETIMESTRINGA;
  6497.   TNMDateTimeStringW = tagNMDATETIMESTRINGW;
  6498.   TNMDateTimeString = TNMDateTimeStringA;
  6499.  
  6500.   {$EXTERNALSYM tagNMDATETIMEWMKEYDOWNA}
  6501.   tagNMDATETIMEWMKEYDOWNA = packed record
  6502.     nmhdr: TNmHdr;
  6503.     nVirtKey: Integer; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  6504.     pszFormat: PAnsiChar; // format substring
  6505.     st: TSystemTime;   // current systemtime, app should modify based on key
  6506.   end;
  6507.   {$EXTERNALSYM tagNMDATETIMEWMKEYDOWNW}
  6508.   tagNMDATETIMEWMKEYDOWNW = packed record
  6509.     nmhdr: TNmHdr;
  6510.     nVirtKey: Integer; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  6511.     pszFormat: PWideChar; // format substring
  6512.     st: TSystemTime;   // current systemtime, app should modify based on key
  6513.   end;
  6514.   {$EXTERNALSYM tagNMDATETIMEWMKEYDOWN}
  6515.   tagNMDATETIMEWMKEYDOWN = tagNMDATETIMEWMKEYDOWNA;
  6516.   PNMDateTimeWMKeyDownA = ^TNMDateTimeWMKeyDownA;
  6517.   PNMDateTimeWMKeyDownW = ^TNMDateTimeWMKeyDownW;
  6518.   PNMDateTimeWMKeyDown = PNMDateTimeWMKeyDownA;
  6519.   TNMDateTimeWMKeyDownA = tagNMDATETIMEWMKEYDOWNA;
  6520.   TNMDateTimeWMKeyDownW = tagNMDATETIMEWMKEYDOWNW;
  6521.   TNMDateTimeWMKeyDown = TNMDateTimeWMKeyDownA;
  6522.  
  6523.   {$EXTERNALSYM tagNMDATETIMEFORMATA}
  6524.   tagNMDATETIMEFORMATA = packed record
  6525.     nmhdr: TNmHdr;
  6526.     pszFormat: PAnsiChar;                // format substring
  6527.     st: TSystemTime;                  // current systemtime
  6528.     pszDisplay: PAnsiChar;               // string to display
  6529.     szDisplay: array[0..63] of AnsiChar; // buffer pszDisplay originally points at
  6530.   end;
  6531.   {$EXTERNALSYM tagNMDATETIMEFORMATW}
  6532.   tagNMDATETIMEFORMATW = packed record
  6533.     nmhdr: TNmHdr;
  6534.     pszFormat: PWideChar;                // format substring
  6535.     st: TSystemTime;                  // current systemtime
  6536.     pszDisplay: PWideChar;               // string to display
  6537.     szDisplay: array[0..63] of WideChar; // buffer pszDisplay originally points at
  6538.   end;
  6539.   {$EXTERNALSYM tagNMDATETIMEFORMAT}
  6540.   tagNMDATETIMEFORMAT = tagNMDATETIMEFORMATA;
  6541.   PNMDateTimeFormatA = ^TNMDateTimeFormatA;
  6542.   PNMDateTimeFormatW = ^TNMDateTimeFormatW;
  6543.   PNMDateTimeFormat = PNMDateTimeFormatA;
  6544.   TNMDateTimeFormatA = tagNMDATETIMEFORMATA;
  6545.   TNMDateTimeFormatW = tagNMDATETIMEFORMATW;
  6546.   TNMDateTimeFormat = TNMDateTimeFormatA;
  6547.  
  6548.   {$EXTERNALSYM tagNMDATETIMEFORMATQUERYA}
  6549.   tagNMDATETIMEFORMATQUERYA = packed record
  6550.     nmhdr: TNmHdr;
  6551.     pszFormat: PAnsiChar; // format substring
  6552.     szMax: TSize;      // max bounding rectangle app will use for this format string
  6553.   end;
  6554.   {$EXTERNALSYM tagNMDATETIMEFORMATQUERYW}
  6555.   tagNMDATETIMEFORMATQUERYW = packed record
  6556.     nmhdr: TNmHdr;
  6557.     pszFormat: PWideChar; // format substring
  6558.     szMax: TSize;      // max bounding rectangle app will use for this format string
  6559.   end;
  6560.   {$EXTERNALSYM tagNMDATETIMEFORMATQUERY}
  6561.   tagNMDATETIMEFORMATQUERY = tagNMDATETIMEFORMATQUERYA;
  6562.   PNMDateTimeFormatQueryA = ^TNMDateTimeFormatQueryA;
  6563.   PNMDateTimeFormatQueryW = ^TNMDateTimeFormatQueryW;
  6564.   PNMDateTimeFormatQuery = PNMDateTimeFormatQueryA;
  6565.   TNMDateTimeFormatQueryA = tagNMDATETIMEFORMATQUERYA;
  6566.   TNMDateTimeFormatQueryW = tagNMDATETIMEFORMATQUERYW;
  6567.   TNMDateTimeFormatQuery = TNMDateTimeFormatQueryA;
  6568.  
  6569. //   returns GDT_NONE if "none" is selected (DTS_SHOWNONE only)
  6570. //   returns GDT_VALID and modifies pst to be the currently selected value
  6571. {$EXTERNALSYM DateTime_GetSystemTime}
  6572. function DateTime_GetSystemTime(hdp: HWND; var pst: TSystemTime): DWORD;
  6573.  
  6574. //   if gd = GDT_NONE, sets datetimepick to None (DTS_SHOWNONE only)
  6575. //   if gd = GDT_VALID, sets datetimepick to pst
  6576. //   returns TRUE on success, FALSE on error (such as bad params)
  6577. {$EXTERNALSYM DateTime_SetSystemTime}
  6578. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;
  6579.  
  6580. //   modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  6581. //   modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  6582. //   returns GDTR_MIN or GDTR_MAX if there is a minimum or maximum limit
  6583. {$EXTERNALSYM DateTime_GetRange}
  6584. function DateTime_GetRange(hdp: HWND; rgst: PSystemTime): DWORD;
  6585.  
  6586. //   if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  6587. //   if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  6588. //   returns TRUE on success, FALSE on error (such as invalid parameters)
  6589. {$EXTERNALSYM DateTime_SetRange}
  6590. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  6591.  
  6592. //   sets the display formatting string to sz (see GetDateFormat and GetTimeFormat for valid formatting chars)
  6593. //   NOTE: 'X' is a valid formatting character which indicates that the application
  6594. //   will determine how to display information. Such apps must support DTN_WMKEYDOWN,
  6595. //   DTN_FORMAT, and DTN_FORMATQUERY.
  6596. {$EXTERNALSYM DateTime_SetFormatA}
  6597. function DateTime_SetFormatA(hdp: HWND; sz: PAnsiChar): BOOL;
  6598. {$EXTERNALSYM DateTime_SetFormatW}
  6599. function DateTime_SetFormatW(hdp: HWND; sz: PWideChar): BOOL;
  6600. {$EXTERNALSYM DateTime_SetFormat}
  6601. function DateTime_SetFormat(hdp: HWND; sz: PChar): BOOL;
  6602.  
  6603. {$EXTERNALSYM DateTime_SetMonthCalColor}
  6604. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): TColorRef;
  6605.  
  6606. {$EXTERNALSYM DateTime_GetMonthCalColor}
  6607. function DateTime_GetMonthCalColor(hdp: HWND; iColor: DWORD): TColorRef;
  6608.  
  6609. // returns the HWND of the MonthCal popup window. Only valid
  6610. // between DTN_DROPDOWN and DTN_CLOSEUP notifications.
  6611. {$EXTERNALSYM DateTime_GetMonthCal}
  6612. function DateTime_GetMonthCal(hdp: HWND): HWND;
  6613.  
  6614. {$EXTERNALSYM DateTime_SetMonthCalFont}
  6615. procedure DateTime_SetMonthCalFont(hdp: HWND; hfont: HFONT; fRedraw: BOOL);
  6616.  
  6617. {$EXTERNALSYM DateTime_GetMonthCalFont}
  6618. function DateTime_GetMonthCalFont(hdp: HWND): HFONT;
  6619.  
  6620. {  ====================== IP Address edit control ============================= }
  6621.  
  6622. const
  6623.   {$EXTERNALSYM WC_IPADDRESS}
  6624.   WC_IPADDRESS         = 'SysIPAddress32';
  6625.  
  6626.   // Messages sent to IPAddress controls
  6627.   {$EXTERNALSYM IPM_CLEARADDRESS}
  6628.   IPM_CLEARADDRESS     = WM_USER+100;  { no parameters }
  6629.   {$EXTERNALSYM IPM_SETADDRESS}
  6630.   IPM_SETADDRESS       = WM_USER+101;  { lparam = TCP/IP address }
  6631.   {$EXTERNALSYM IPM_GETADDRESS}
  6632.   IPM_GETADDRESS       = WM_USER+102;  { lresult = # of non black fields.  lparam = LPDWORD for TCP/IP address }
  6633.   {$EXTERNALSYM IPM_SETRANGE}
  6634.   IPM_SETRANGE         = WM_USER+103;  { wparam = field, lparam = range }
  6635.   {$EXTERNALSYM IPM_SETFOCUS}
  6636.   IPM_SETFOCUS         = WM_USER+104;  { wparam = field }
  6637.   {$EXTERNALSYM IPM_ISBLANK}
  6638.   IPM_ISBLANK          = WM_USER+105;  { no parameters }
  6639.  
  6640.   {$EXTERNALSYM IPN_FIELDCHANGED}
  6641.   IPN_FIELDCHANGED     = IPN_FIRST - 0;
  6642.  
  6643. type
  6644.   {$EXTERNALSYM tagNMIPADDRESS}
  6645.   tagNMIPADDRESS = packed record
  6646.     hdr: NMHDR;
  6647.     iField: Integer;
  6648.     iValue: Integer;
  6649.   end;
  6650.   PNMIPAddress = ^TNMIPAddress;
  6651.   TNMIPAddress = tagNMIPADDRESS;
  6652.  
  6653. { The following is a useful macro for passing the range values in the }
  6654. { IPM_SETRANGE message. }
  6655. {$EXTERNALSYM MAKEIPRANGE}
  6656. function MAKEIPRANGE(low, high: Byte): LPARAM;
  6657.  
  6658. { And this is a useful macro for making the IP Address to be passed }
  6659. { as a LPARAM. }
  6660. {$EXTERNALSYM MAKEIPADDRESS}
  6661. function MAKEIPADDRESS(b1, b2, b3, b4: DWORD): LPARAM;
  6662.  
  6663. { Get individual number }
  6664. {$EXTERNALSYM FIRST_IPADDRESS}
  6665. function FIRST_IPADDRESS(x: DWORD): DWORD;
  6666.  
  6667. {$EXTERNALSYM SECOND_IPADDRESS}
  6668. function SECOND_IPADDRESS(x: DWORD): DWORD;
  6669.  
  6670. {$EXTERNALSYM THIRD_IPADDRESS}
  6671. function THIRD_IPADDRESS(x: DWORD): DWORD;
  6672.  
  6673. {$EXTERNALSYM FOURTH_IPADDRESS}
  6674. function FOURTH_IPADDRESS(x: DWORD): DWORD;
  6675.  
  6676. {  ====================== Pager Control ============================= }
  6677.  
  6678. const
  6679.   { Pager Class Name }
  6680.   {$EXTERNALSYM WC_PAGESCROLLER}
  6681.   WC_PAGESCROLLER               = 'SysPager';
  6682.  
  6683.   { Pager Control Styles }
  6684.   {$EXTERNALSYM PGS_VERT}
  6685.   PGS_VERT                    = $00000000;
  6686.   {$EXTERNALSYM PGS_HORZ}
  6687.   PGS_HORZ                    = $00000001;
  6688.   {$EXTERNALSYM PGS_AUTOSCROLL}
  6689.   PGS_AUTOSCROLL              = $00000002;
  6690.   {$EXTERNALSYM PGS_DRAGNDROP}
  6691.   PGS_DRAGNDROP               = $00000004;
  6692.  
  6693.   { Pager Button State }
  6694.   { The scroll can be in one of the following control State }
  6695.   {$EXTERNALSYM PGF_INVISIBLE}
  6696.   PGF_INVISIBLE        = 0;     { Scroll button is not visible }
  6697.   {$EXTERNALSYM PGF_NORMAL}
  6698.   PGF_NORMAL           = 1;     { Scroll button is in normal state }
  6699.   {$EXTERNALSYM PGF_GRAYED}
  6700.   PGF_GRAYED           = 2;     { Scroll button is in grayed state }
  6701.   {$EXTERNALSYM PGF_DEPRESSED}
  6702.   PGF_DEPRESSED        = 4;     { Scroll button is in depressed state }
  6703.   {$EXTERNALSYM PGF_HOT}
  6704.   PGF_HOT              = 8;     { Scroll button is in hot state }
  6705.  
  6706.   { The following identifiers specifies the button control }
  6707.   {$EXTERNALSYM PGB_TOPORLEFT}
  6708.   PGB_TOPORLEFT           = 0;
  6709.   {$EXTERNALSYM PGB_BOTTOMORRIGHT}
  6710.   PGB_BOTTOMORRIGHT       = 1;
  6711.  
  6712.   { Pager Control  Messages }
  6713.   {$EXTERNALSYM PGM_SETCHILD}
  6714.   PGM_SETCHILD                = PGM_FIRST + 1;   { lParam == hwnd }
  6715.   {$EXTERNALSYM PGM_RECALCSIZE}
  6716.   PGM_RECALCSIZE              = PGM_FIRST + 2;
  6717.   {$EXTERNALSYM PGM_FORWARDMOUSE}
  6718.   PGM_FORWARDMOUSE            = PGM_FIRST + 3;
  6719.   {$EXTERNALSYM PGM_SETBKCOLOR}
  6720.   PGM_SETBKCOLOR              = PGM_FIRST + 4;
  6721.   {$EXTERNALSYM PGM_GETBKCOLOR}
  6722.   PGM_GETBKCOLOR              = PGM_FIRST + 5;
  6723.   {$EXTERNALSYM PGM_SETBORDER}
  6724.   PGM_SETBORDER              = PGM_FIRST + 6;
  6725.   {$EXTERNALSYM PGM_GETBORDER}
  6726.   PGM_GETBORDER              = PGM_FIRST + 7;
  6727.   {$EXTERNALSYM PGM_SETPOS}
  6728.   PGM_SETPOS                  = PGM_FIRST + 8;
  6729.   {$EXTERNALSYM PGM_GETPOS}
  6730.   PGM_GETPOS                  = PGM_FIRST + 9;
  6731.   {$EXTERNALSYM PGM_SETBUTTONSIZE}
  6732.   PGM_SETBUTTONSIZE           = PGM_FIRST + 10;
  6733.   {$EXTERNALSYM PGM_GETBUTTONSIZE}
  6734.   PGM_GETBUTTONSIZE           = PGM_FIRST + 11;
  6735.   {$EXTERNALSYM PGM_GETBUTTONSTATE}
  6736.   PGM_GETBUTTONSTATE          = PGM_FIRST + 12;
  6737.   {$EXTERNALSYM PGM_GETDROPTARGET}
  6738.   PGM_GETDROPTARGET           = CCM_GETDROPTARGET;
  6739.  
  6740. {$EXTERNALSYM Pager_SetChild}
  6741. procedure Pager_SetChild(hwnd: HWND; hwndChild: HWND);
  6742. {$EXTERNALSYM Pager_RecalcSize}
  6743. procedure Pager_RecalcSize(hwnd: HWND);
  6744. {$EXTERNALSYM Pager_ForwardMouse}
  6745. procedure Pager_ForwardMouse(hwnd: HWND; bForward: BOOL);
  6746. {$EXTERNALSYM Pager_SetBkColor}
  6747. function Pager_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  6748. {$EXTERNALSYM Pager_GetBkColor}
  6749. function Pager_GetBkColor(hwnd: HWND): COLORREF;
  6750. {$EXTERNALSYM Pager_SetBorder}
  6751. function Pager_SetBorder(hwnd: HWND; iBorder: Integer): Integer;
  6752. {$EXTERNALSYM Pager_GetBorder}
  6753. function Pager_GetBorder(hwnd: HWND): Integer;
  6754. {$EXTERNALSYM Pager_SetPos}
  6755. function Pager_SetPos(hwnd: HWND; iPos: Integer): Integer;
  6756. {$EXTERNALSYM Pager_GetPos}
  6757. function Pager_GetPos(hwnd: HWND): Integer;
  6758. {$EXTERNALSYM Pager_SetButtonSize}
  6759. function Pager_SetButtonSize(hwnd: HWND; iSize: Integer): Integer;
  6760. {$EXTERNALSYM Pager_GetButtonSize}
  6761. function Pager_GetButtonSize(hwnd: HWND): Integer;
  6762. {$EXTERNALSYM Pager_GetButtonState}
  6763. function Pager_GetButtonState(hwnd: HWND; iButton: Integer): DWORD;
  6764. {$EXTERNALSYM Pager_GetDropTarget}
  6765. procedure Pager_GetDropTarget(hwnd: HWND; ppdt: Pointer{!!});
  6766.  
  6767. const
  6768.   { Pager Control Notification Messages }
  6769.  
  6770.   { PGN_SCROLL Notification Message }
  6771.   {$EXTERNALSYM PGN_SCROLL}
  6772.   PGN_SCROLL              = PGN_FIRST-1;
  6773.  
  6774.   {$EXTERNALSYM PGF_SCROLLUP}
  6775.   PGF_SCROLLUP            = 1;
  6776.   {$EXTERNALSYM PGF_SCROLLDOWN}
  6777.   PGF_SCROLLDOWN          = 2;
  6778.   {$EXTERNALSYM PGF_SCROLLLEFT}
  6779.   PGF_SCROLLLEFT          = 4;
  6780.   {$EXTERNALSYM PGF_SCROLLRIGHT}
  6781.   PGF_SCROLLRIGHT         = 8;
  6782.  
  6783.   { Keys down }
  6784.   {$EXTERNALSYM PGK_SHIFT}
  6785.   PGK_SHIFT               = 1;
  6786.   {$EXTERNALSYM PGK_CONTROL}
  6787.   PGK_CONTROL             = 2;
  6788.   {$EXTERNALSYM PGK_MENU}
  6789.   PGK_MENU                = 4;
  6790.  
  6791. type
  6792.   { This structure is sent along with PGN_SCROLL notifications }
  6793.   {$EXTERNALSYM NMPGSCROLL}
  6794.   NMPGSCROLL = packed record
  6795.     hdr: NMHDR;
  6796.     fwKeys: Word;           { Specifies which keys are down when this notification is send }
  6797.     rcParent: TRect;        { Contains Parent Window Rect }
  6798.     iDir: Integer;          { Scrolling Direction }
  6799.     iXpos: Integer;         { Horizontal scroll position }
  6800.     iYpos: Integer;         { Vertical scroll position }
  6801.     iScroll: Integer;       { [in/out] Amount to scroll }
  6802.   end;
  6803.   PNMPGScroll = ^TNMPGScroll;
  6804.   TNMPGScroll = NMPGSCROLL;
  6805.  
  6806. const
  6807.   { PGN_CALCSIZE Notification Message }
  6808.   {$EXTERNALSYM PGN_CALCSIZE}
  6809.   PGN_CALCSIZE            = PGN_FIRST-2;
  6810.  
  6811.   {$EXTERNALSYM PGF_CALCWIDTH}
  6812.   PGF_CALCWIDTH           = 1;
  6813.   {$EXTERNALSYM PGF_CALCHEIGHT}
  6814.   PGF_CALCHEIGHT          = 2;
  6815.  
  6816. type
  6817.   {$EXTERNALSYM NMPGCALCSIZE}
  6818.   NMPGCALCSIZE = packed record
  6819.     hdr: NMHDR;
  6820.     dwFlag: DWORD;
  6821.     iWidth: Integer;
  6822.     iHeight: Integer;
  6823.   end;
  6824.   PNMPGCalcSize = ^TNMPGCalcSize;
  6825.   TNMPGCalcSize = NMPGCALCSIZE;
  6826.  
  6827. { ======================  Native Font Control ============================== }
  6828.  
  6829. const
  6830.   {$EXTERNALSYM WC_NATIVEFONTCTL}
  6831.   WC_NATIVEFONTCTL            = 'NativeFontCtl';
  6832.  
  6833.   { style definition }
  6834.   {$EXTERNALSYM NFS_EDIT}
  6835.   NFS_EDIT                    = $0001;
  6836.   {$EXTERNALSYM NFS_STATIC}
  6837.   NFS_STATIC                  = $0002;
  6838.   {$EXTERNALSYM NFS_LISTCOMBO}
  6839.   NFS_LISTCOMBO               = $0004;
  6840.   {$EXTERNALSYM NFS_BUTTON}
  6841.   NFS_BUTTON                  = $0008;
  6842.   {$EXTERNALSYM NFS_ALL}
  6843.   NFS_ALL                     = $0010;
  6844.  
  6845. { ====== TrackMouseEvent  ================================================== }
  6846.  
  6847. const
  6848.   {$EXTERNALSYM WM_MOUSEHOVER}
  6849.   WM_MOUSEHOVER                       = $02A1;
  6850.   {$EXTERNALSYM WM_MOUSELEAVE}
  6851.   WM_MOUSELEAVE                       = $02A3;
  6852.  
  6853.   {$EXTERNALSYM TME_HOVER}
  6854.   TME_HOVER           = $00000001;
  6855.   {$EXTERNALSYM TME_LEAVE}
  6856.   TME_LEAVE           = $00000002;
  6857.   {$EXTERNALSYM TME_QUERY}
  6858.   TME_QUERY           = $40000000;
  6859.   {$EXTERNALSYM TME_CANCEL}
  6860.   TME_CANCEL          = $80000000;
  6861.  
  6862.   {$EXTERNALSYM HOVER_DEFAULT}
  6863.   HOVER_DEFAULT       = $FFFFFFFF;
  6864.  
  6865. type
  6866.   {$EXTERNALSYM tagTRACKMOUSEEVENT}
  6867.   tagTRACKMOUSEEVENT = packed record
  6868.     cbSize: DWORD;
  6869.     dwFlags: DWORD;
  6870.     hwndTrack: HWND;
  6871.     dwHoverTime: DWORD;
  6872.   end;
  6873.   PTrackMouseEvent = ^TTrackMouseEvent;
  6874.   TTrackMouseEvent = tagTRACKMOUSEEVENT;
  6875.  
  6876. { Declare _TrackMouseEvent.  This API tries to use the window manager's }
  6877. { implementation of TrackMouseEvent if it is present, otherwise it emulates. }
  6878. {$EXTERNALSYM _TrackMouseEvent}
  6879. function _TrackMouseEvent(lpEventTrack: PTrackMouseEvent): BOOL; stdcall;
  6880.  
  6881. { ====== Flat Scrollbar APIs========================================= }
  6882.  
  6883. const
  6884.   {$EXTERNALSYM WSB_PROP_CYVSCROLL}
  6885.   WSB_PROP_CYVSCROLL      = $00000001;
  6886.   {$EXTERNALSYM WSB_PROP_CXHSCROLL}
  6887.   WSB_PROP_CXHSCROLL      = $00000002;
  6888.   {$EXTERNALSYM WSB_PROP_CYHSCROLL}
  6889.   WSB_PROP_CYHSCROLL      = $00000004;
  6890.   {$EXTERNALSYM WSB_PROP_CXVSCROLL}
  6891.   WSB_PROP_CXVSCROLL      = $00000008;
  6892.   {$EXTERNALSYM WSB_PROP_CXHTHUMB}
  6893.   WSB_PROP_CXHTHUMB       = $00000010;
  6894.   {$EXTERNALSYM WSB_PROP_CYVTHUMB}
  6895.   WSB_PROP_CYVTHUMB       = $00000020;
  6896.   {$EXTERNALSYM WSB_PROP_VBKGCOLOR}
  6897.   WSB_PROP_VBKGCOLOR      = $00000040;
  6898.   {$EXTERNALSYM WSB_PROP_HBKGCOLOR}
  6899.   WSB_PROP_HBKGCOLOR      = $00000080;
  6900.   {$EXTERNALSYM WSB_PROP_VSTYLE}
  6901.   WSB_PROP_VSTYLE         = $00000100;
  6902.   {$EXTERNALSYM WSB_PROP_HSTYLE}
  6903.   WSB_PROP_HSTYLE         = $00000200;
  6904.   {$EXTERNALSYM WSB_PROP_WINSTYLE}
  6905.   WSB_PROP_WINSTYLE       = $00000400;
  6906.   {$EXTERNALSYM WSB_PROP_PALETTE}
  6907.   WSB_PROP_PALETTE        = $00000800;
  6908.   {$EXTERNALSYM WSB_PROP_MASK}
  6909.   WSB_PROP_MASK           = $00000FFF;
  6910.  
  6911.   {$EXTERNALSYM FSB_FLAT_MODE}
  6912.   FSB_FLAT_MODE               = 2;
  6913.   {$EXTERNALSYM FSB_ENCARTA_MODE}
  6914.   FSB_ENCARTA_MODE            = 1;
  6915.   {$EXTERNALSYM FSB_REGULAR_MODE}
  6916.   FSB_REGULAR_MODE            = 0;
  6917.  
  6918. {$EXTERNALSYM FlatSB_EnableScrollBar}
  6919. function FlatSB_EnableScrollBar(hWnd: HWND; wSBflags, wArrows: UINT): BOOL; stdcall;
  6920. {$EXTERNALSYM FlatSB_ShowScrollBar}
  6921. function FlatSB_ShowScrollBar(hWnd: HWND; wBar: Integer; bShow: BOOL): BOOL; stdcall;
  6922.  
  6923. {$EXTERNALSYM FlatSB_GetScrollRange}
  6924. function FlatSB_GetScrollRange(hWnd: HWND; nBar: Integer; var lpMinPos,
  6925.   lpMaxPos: Integer): BOOL; stdcall;
  6926. {$EXTERNALSYM FlatSB_GetScrollInfo}
  6927. function FlatSB_GetScrollInfo(hWnd: HWND; BarFlag: Integer;
  6928.   var ScrollInfo: TScrollInfo): BOOL; stdcall;
  6929. {$EXTERNALSYM FlatSB_GetScrollPos}
  6930. function FlatSB_GetScrollPos(hWnd: HWND; nBar: Integer): Integer; stdcall;
  6931. {$EXTERNALSYM FlatSB_GetScrollProp}
  6932. function FlatSB_GetScrollProp(p1: HWND; propIndex: Integer;
  6933.   p3: PInteger): Bool; stdcall;
  6934.  
  6935. {$EXTERNALSYM FlatSB_SetScrollPos}
  6936. function FlatSB_SetScrollPos(hWnd: HWND; nBar, nPos: Integer;
  6937.   bRedraw: BOOL): Integer; stdcall;
  6938. {$EXTERNALSYM FlatSB_SetScrollInfo}
  6939. function FlatSB_SetScrollInfo(hWnd: HWND; BarFlag: Integer;
  6940.   const ScrollInfo: TScrollInfo; Redraw: BOOL): Integer; stdcall;
  6941. {$EXTERNALSYM FlatSB_SetScrollRange}
  6942. function FlatSB_SetScrollRange(hWnd: HWND; nBar, nMinPos, nMaxPos: Integer;
  6943.   bRedraw: BOOL): BOOL; stdcall;
  6944. {$EXTERNALSYM FlatSB_SetScrollProp}
  6945. function FlatSB_SetScrollProp(p1: HWND; index: Integer; newValue: Integer;
  6946.   p4: Bool): Bool; stdcall;
  6947.  
  6948. {$EXTERNALSYM InitializeFlatSB}
  6949. function InitializeFlatSB(hWnd: HWND): Bool; stdcall;
  6950. {$EXTERNALSYM UninitializeFlatSB}
  6951. procedure UninitializeFlatSB(hWnd: HWND); stdcall;
  6952.  
  6953. implementation
  6954.  
  6955. const
  6956.   cctrl = 'comctl32.dll';
  6957.  
  6958. var
  6959.   ComCtl32DLL: THandle;
  6960.   _InitCommonControlsEx: function(var ICC: TInitCommonControlsEx): Bool stdcall;
  6961.  
  6962. {$EXTERNALSYM InitCommonControls}
  6963. procedure InitCommonControls; external cctrl name 'InitCommonControls';
  6964.  
  6965. procedure InitComCtl;
  6966. begin
  6967.   if ComCtl32DLL = 0 then
  6968.   begin
  6969.     ComCtl32DLL := GetModuleHandle(cctrl);
  6970.     if ComCtl32DLL <> 0 then
  6971.       @_InitCommonControlsEx := GetProcAddress(ComCtl32DLL, 'InitCommonControlsEx');
  6972.   end;
  6973. end;
  6974.  
  6975. function InitCommonControlsEx(var ICC: TInitCommonControlsEx): Bool;
  6976. begin
  6977.   if ComCtl32DLL = 0 then InitComCtl;
  6978.   Result := Assigned(_InitCommonControlsEx) and _InitCommonControlsEx(ICC);
  6979. end;
  6980.  
  6981. { Property Sheets }
  6982. {$EXTERNALSYM CreatePropertySheetPageA}
  6983. function CreatePropertySheetPageA; external cctrl name 'CreatePropertySheetPageA';
  6984. {$EXTERNALSYM CreatePropertySheetPageW}
  6985. function CreatePropertySheetPageW; external cctrl name 'CreatePropertySheetPageW';
  6986. {$EXTERNALSYM CreatePropertySheetPage}
  6987. function CreatePropertySheetPage; external cctrl name 'CreatePropertySheetPageA';
  6988. {$EXTERNALSYM DestroyPropertySheetPage}
  6989. function DestroyPropertySheetPage; external cctrl name 'DestroyPropertySheetPage';
  6990. {$EXTERNALSYM PropertySheetA}
  6991. function PropertySheetA; external cctrl name 'PropertySheetA';
  6992. {$EXTERNALSYM PropertySheetW}
  6993. function PropertySheetW; external cctrl name 'PropertySheetW';
  6994. {$EXTERNALSYM PropertySheet}
  6995. function PropertySheet; external cctrl name 'PropertySheetA';
  6996.  
  6997. { Image List }
  6998. {$EXTERNALSYM ImageList_Create}
  6999. function ImageList_Create; external cctrl name 'ImageList_Create';
  7000. {$EXTERNALSYM ImageList_Destroy}
  7001. function ImageList_Destroy; external cctrl name 'ImageList_Destroy';
  7002. {$EXTERNALSYM ImageList_GetImageCount}
  7003. function ImageList_GetImageCount; external cctrl name 'ImageList_GetImageCount';
  7004. {$EXTERNALSYM ImageList_SetImageCount}
  7005. function ImageList_SetImageCount; external cctrl name 'ImageList_SetImageCount';
  7006. {$EXTERNALSYM ImageList_Add}
  7007. function ImageList_Add; external cctrl name 'ImageList_Add';
  7008. {$EXTERNALSYM ImageList_ReplaceIcon}
  7009. function ImageList_ReplaceIcon; external cctrl name 'ImageList_ReplaceIcon';
  7010. {$EXTERNALSYM ImageList_SetBkColor}
  7011. function ImageList_SetBkColor; external cctrl name 'ImageList_SetBkColor';
  7012. {$EXTERNALSYM ImageList_GetBkColor}
  7013. function ImageList_GetBkColor; external cctrl name 'ImageList_GetBkColor';
  7014. {$EXTERNALSYM ImageList_SetOverlayImage}
  7015. function ImageList_SetOverlayImage; external cctrl name 'ImageList_SetOverlayImage';
  7016.  
  7017. {$EXTERNALSYM ImageList_AddIcon}
  7018. function ImageList_AddIcon(ImageList: HIMAGELIST; Icon: HIcon): Integer;
  7019. begin
  7020.   Result := ImageList_ReplaceIcon(ImageList, -1, Icon);
  7021. end;
  7022.  
  7023. {$EXTERNALSYM IndexToOverlayMask}
  7024. function IndexToOverlayMask(Index: Integer): Integer;
  7025. begin
  7026.   Result := Index shl 8;
  7027. end;
  7028.  
  7029. {$EXTERNALSYM ImageList_Draw}
  7030. function ImageList_Draw; external cctrl name 'ImageList_Draw';
  7031.  
  7032. {$EXTERNALSYM ImageList_Replace}
  7033. function ImageList_Replace; external cctrl name 'ImageList_Replace';
  7034. {$EXTERNALSYM ImageList_AddMasked}
  7035. function ImageList_AddMasked; external cctrl name 'ImageList_AddMasked';
  7036. {$EXTERNALSYM ImageList_DrawEx}
  7037. function ImageList_DrawEx; external cctrl name 'ImageList_DrawEx';
  7038. {$EXTERNALSYM ImageList_DrawIndirect}
  7039. function ImageList_DrawIndirect; external cctrl name 'ImageList_DrawIndirect';
  7040. {$EXTERNALSYM ImageList_Remove}
  7041. function ImageList_Remove; external cctrl name 'ImageList_Remove';
  7042. {$EXTERNALSYM ImageList_GetIcon}
  7043. function ImageList_GetIcon; external cctrl name 'ImageList_GetIcon';
  7044. {$EXTERNALSYM ImageList_LoadImageA}
  7045. function ImageList_LoadImageA; external cctrl name 'ImageList_LoadImageA';
  7046. {$EXTERNALSYM ImageList_LoadImageW}
  7047. function ImageList_LoadImageW; external cctrl name 'ImageList_LoadImageW';
  7048. {$EXTERNALSYM ImageList_LoadImage}
  7049. function ImageList_LoadImage; external cctrl name 'ImageList_LoadImageA';
  7050. {$EXTERNALSYM ImageList_Copy}
  7051. function ImageList_Copy; external cctrl name 'ImageList_Copy';
  7052. {$EXTERNALSYM ImageList_BeginDrag}
  7053. function ImageList_BeginDrag; external cctrl name 'ImageList_BeginDrag';
  7054. {$EXTERNALSYM ImageList_EndDrag}
  7055. function ImageList_EndDrag; external cctrl name 'ImageList_EndDrag';
  7056. {$EXTERNALSYM ImageList_DragEnter}
  7057. function ImageList_DragEnter; external cctrl name 'ImageList_DragEnter';
  7058. {$EXTERNALSYM ImageList_DragLeave}
  7059. function ImageList_DragLeave; external cctrl name 'ImageList_DragLeave';
  7060. {$EXTERNALSYM ImageList_DragMove}
  7061. function ImageList_DragMove; external cctrl name 'ImageList_DragMove';
  7062. {$EXTERNALSYM ImageList_SetDragCursorImage}
  7063. function ImageList_SetDragCursorImage; external cctrl name 'ImageList_SetDragCursorImage';
  7064. {$EXTERNALSYM ImageList_DragShowNolock}
  7065. function ImageList_DragShowNolock; external cctrl name 'ImageList_DragShowNolock';
  7066. {$EXTERNALSYM ImageList_GetDragImage}
  7067. function ImageList_GetDragImage; external cctrl name 'ImageList_GetDragImage';
  7068.  
  7069. { macros }
  7070. {$EXTERNALSYM ImageList_RemoveAll}
  7071. procedure ImageList_RemoveAll(ImageList: HIMAGELIST);
  7072. begin
  7073.   ImageList_Remove(ImageList, -1);
  7074. end;
  7075.  
  7076. {$EXTERNALSYM ImageList_ExtractIcon}
  7077. function ImageList_ExtractIcon(Instance: THandle; ImageList: HIMAGELIST;
  7078.   Image: Integer): HIcon;
  7079. begin
  7080.   Result := ImageList_GetIcon(ImageList, Image, 0);
  7081. end;
  7082.  
  7083. {$EXTERNALSYM ImageList_LoadBitmap}
  7084. function ImageList_LoadBitmap(Instance: THandle; Bmp: PChar;
  7085.   CX, Grow: Integer; Mask: TColorRef): HIMAGELIST;
  7086. begin
  7087.   Result := ImageList_LoadImage(Instance, Bmp, CX, Grow, Mask,
  7088.     IMAGE_BITMAP, 0);
  7089. end;
  7090.  
  7091. function ImageList_Read; external cctrl name 'ImageList_Read';
  7092. function ImageList_Write; external cctrl name 'ImageList_Write';
  7093.  
  7094. {$EXTERNALSYM ImageList_GetIconSize}
  7095. function ImageList_GetIconSize; external cctrl name 'ImageList_GetIconSize';
  7096. {$EXTERNALSYM ImageList_SetIconSize}
  7097. function ImageList_SetIconSize; external cctrl name 'ImageList_SetIconSize';
  7098. {$EXTERNALSYM ImageList_GetImageInfo}
  7099. function ImageList_GetImageInfo; external cctrl name 'ImageList_GetImageInfo';
  7100. {$EXTERNALSYM ImageList_Merge}
  7101. function ImageList_Merge; external cctrl name 'ImageList_Merge';
  7102. {$EXTERNALSYM ImageList_Duplicate}
  7103. function ImageList_Duplicate(himl: HIMAGELIST): HIMAGELIST; stdcall; external cctrl name 'ImageList_Duplicate';
  7104.  
  7105. { Headers }
  7106.  
  7107. {$EXTERNALSYM Header_GetItemCount}
  7108. function Header_GetItemCount(Header: HWnd): Integer;
  7109. begin
  7110.   Result := SendMessage(Header, HDM_GETITEMCOUNT, 0, 0);
  7111. end;
  7112.  
  7113. {$EXTERNALSYM Header_InsertItem}
  7114. function Header_InsertItem(Header: HWnd; Index: Integer;
  7115.   const Item: THDItem): Integer;
  7116. begin
  7117.   Result := SendMessage(Header, HDM_INSERTITEM, Index, Longint(@Item));
  7118. end;
  7119.  
  7120. {$EXTERNALSYM Header_DeleteItem}
  7121. function Header_DeleteItem(Header: HWnd; Index: Integer): Bool;
  7122. begin
  7123.   Result := Bool( SendMessage(Header, HDM_DELETEITEM, Index, 0) );
  7124. end;
  7125.  
  7126. {$EXTERNALSYM Header_GetItem}
  7127. function Header_GetItem(Header: HWnd; Index: Integer; var Item: THDItem): Bool;
  7128. begin
  7129.   Result := Bool( SendMessage(Header, HDM_GETITEM, Index, Longint(@Item)) );
  7130. end;
  7131.  
  7132. {$EXTERNALSYM Header_SetItem}
  7133. function Header_SetItem(Header: HWnd; Index: Integer; const Item: THDItem): Bool;
  7134. begin
  7135.   Result := Bool( SendMessage(Header, HDM_SETITEM, Index, Longint(@Item)) );
  7136. end;
  7137.  
  7138. {$EXTERNALSYM Header_Layout}
  7139. function Header_Layout(Header: HWnd; Layout: PHDLayout): Bool;
  7140. begin
  7141.   Result := Bool( SendMessage(Header, HDM_LAYOUT, 0, Longint(Layout)) );
  7142. end;
  7143.  
  7144. {$EXTERNALSYM Header_GetItemRect}
  7145. function Header_GetItemRect(hwnd: HWND; iItem: Integer; lprc: PRect): Integer;
  7146. begin
  7147.   Result := SendMessage(hwnd, HDM_GETITEMRECT, iItem, LPARAM(lprc));
  7148. end;
  7149.  
  7150. {$EXTERNALSYM Header_SetImageList}
  7151. function Header_SetImageList(hwnd: HWND; himl: HIMAGELIST): HIMAGELIST;
  7152. begin
  7153.   Result := SendMessage(hwnd, HDM_SETIMAGELIST, 0, LPARAM(himl));
  7154. end;
  7155.  
  7156. {$EXTERNALSYM Header_GetImageList}
  7157. function Header_GetImageList(hwnd: HWND): HIMAGELIST;
  7158. begin
  7159.   Result := SendMessage(hwnd, HDM_GETIMAGELIST, 0, 0);
  7160. end;
  7161.  
  7162. {$EXTERNALSYM Header_OrderToIndex}
  7163. function Header_OrderToIndex(hwnd: HWND; i: Integer): Integer;
  7164. begin
  7165.   Result := SendMessage(hwnd, HDM_ORDERTOINDEX, i, 0);
  7166. end;
  7167.  
  7168. {$EXTERNALSYM Header_CreateDragImage}
  7169. function Header_CreateDragImage(hwnd: HWND; i: Integer): HIMAGELIST;
  7170. begin
  7171.   Result := SendMessage(hwnd, HDM_CREATEDRAGIMAGE, i, 0);
  7172. end;
  7173.  
  7174. {$EXTERNALSYM Header_GetOrderArray}
  7175. function Header_GetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  7176. begin
  7177.   Result := SendMessage(hwnd, HDM_GETORDERARRAY, iCount, LPARAM(lpi));
  7178. end;
  7179.  
  7180. {$EXTERNALSYM Header_SetOrderArray}
  7181. function Header_SetOrderArray(hwnd: HWND; iCount: Integer; lpi: PInteger): Integer;
  7182. begin
  7183.   Result := SendMessage(hwnd, HDM_SETORDERARRAY, iCount, LPARAM(lpi));
  7184. end;
  7185.  
  7186. {$EXTERNALSYM Header_SetHotDivider}
  7187. function Header_SetHotDivider(hwnd: HWND; fPos: BOOL; dw: DWORD): Integer;
  7188. begin
  7189.   Result := SendMessage(hwnd, HDM_SETHOTDIVIDER, Integer(fPos), dw);
  7190. end;
  7191.  
  7192. {$EXTERNALSYM Header_SetUnicodeFormat}
  7193. function Header_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  7194. begin
  7195.   Result := SendMessage(hwnd, HDM_SETUNICODEFORMAT, Integer(fUnicode), 0);
  7196. end;
  7197.  
  7198. {$EXTERNALSYM Header_GetUnicodeFormat}
  7199. function Header_GetUnicodeFormat(hwnd: HWND): Integer;
  7200. begin
  7201.   Result := SendMessage(hwnd, HDM_GETUNICODEFORMAT, 0, 0);
  7202. end;
  7203.  
  7204. { Toolbar }
  7205.  
  7206. {$EXTERNALSYM CreateToolBarEx}
  7207. function CreateToolBarEx; external cctrl name 'CreateToolbarEx';
  7208. {$EXTERNALSYM CreateMappedBitmap}
  7209. function CreateMappedBitmap; external cctrl name 'CreateMappedBitmap';
  7210.  
  7211. { Status bar }
  7212. {$EXTERNALSYM DrawStatusTextA}
  7213. procedure DrawStatusTextA; external cctrl name 'DrawStatusTextA';
  7214. {$EXTERNALSYM DrawStatusTextW}
  7215. procedure DrawStatusTextW; external cctrl name 'DrawStatusTextW';
  7216. {$EXTERNALSYM DrawStatusText}
  7217. procedure DrawStatusText; external cctrl name 'DrawStatusTextA';
  7218. {$EXTERNALSYM CreateStatusWindowA}
  7219. function CreateStatusWindowA; external cctrl name 'CreateStatusWindowA';
  7220. {$EXTERNALSYM CreateStatusWindowW}
  7221. function CreateStatusWindowW; external cctrl name 'CreateStatusWindowW';
  7222. {$EXTERNALSYM CreateStatusWindow}
  7223. function CreateStatusWindow; external cctrl name 'CreateStatusWindowA';
  7224.  
  7225. { Menu Help }
  7226. {$EXTERNALSYM MenuHelp}
  7227. procedure MenuHelp; external cctrl name 'MenuHelp';
  7228. {$EXTERNALSYM ShowHideMenuCtl}
  7229. function ShowHideMenuCtl; external cctrl name 'ShowHideMenuCtl';
  7230. {$EXTERNALSYM GetEffectiveClientRect}
  7231. procedure GetEffectiveClientRect; external cctrl name 'GetEffectiveClientRect';
  7232.  
  7233.  
  7234. { Drag List Box }
  7235. {$EXTERNALSYM MakeDragList}
  7236. procedure MakeDragList; external cctrl name 'MakeDragList';
  7237. {$EXTERNALSYM DrawInsert}
  7238. procedure DrawInsert; external cctrl name 'DrawInsert';
  7239. {$EXTERNALSYM LBItemFromPt}
  7240. function LBItemFromPt; external cctrl name 'LBItemFromPt';
  7241.  
  7242. { UpDown control }
  7243. {$EXTERNALSYM CreateUpDownControl}
  7244. function CreateUpDownControl; external cctrl name 'CreateUpDownControl';
  7245.  
  7246.  
  7247. { List View }
  7248. {$EXTERNALSYM ListView_GetUnicodeFormat}
  7249. function ListView_GetUnicodeFormat(hwnd: HWND): BOOL;
  7250. begin
  7251.   Result := BOOL(SendMessage(hwnd, LVM_GETUNICODEFORMAT, 0, 0));
  7252. end;
  7253.  
  7254. {$EXTERNALSYM ListView_SetUnicodeFormat}
  7255. function ListView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): Integer;
  7256. begin
  7257.   Result := SendMessage(hwnd, LVM_SETUNICODEFORMAT, Integer(fUnicode), 0);
  7258. end;
  7259.  
  7260. {$EXTERNALSYM ListView_GetBkColor}
  7261. function ListView_GetBkColor(hWnd: HWND): TColorRef;
  7262. begin
  7263.   Result := SendMessage(hWnd, LVM_GETBKCOLOR, 0, 0);
  7264. end;
  7265.  
  7266. {$EXTERNALSYM ListView_SetBkColor}
  7267. function ListView_SetBkColor(hWnd: HWND; clrBk: TColorRef): Bool;
  7268. begin
  7269.   Result := Bool( SendMessage(hWnd, LVM_SETBKCOLOR, 0, clrBk) );
  7270. end;
  7271.  
  7272. {$EXTERNALSYM ListView_GetImageList}
  7273. function ListView_GetImageList(hWnd: HWND; iImageList: Integer): HIMAGELIST;
  7274. begin
  7275.   Result := HIMAGELIST( SendMessage(hWnd, LVM_GETIMAGELIST, iImageList, 0) );
  7276. end;
  7277.  
  7278. {$EXTERNALSYM ListView_SetImageList}
  7279. function ListView_SetImageList(hWnd: HWND; himl: HIMAGELIST; iImageList: Integer): HIMAGELIST;
  7280. begin
  7281.   Result := HIMAGELIST( SendMessage(hWnd, LVM_SETIMAGELIST, iImageList, Longint(himl)) );
  7282. end;
  7283.  
  7284. {$EXTERNALSYM ListView_GetItemCount}
  7285. function ListView_GetItemCount(hWnd: HWND): Integer;
  7286. begin
  7287.   Result := SendMessage(hWnd, LVM_GETITEMCOUNT, 0, 0);
  7288. end;
  7289.  
  7290. {$EXTERNALSYM IndexToStateImageMask}
  7291. function IndexToStateImageMask(I: Longint): Longint;
  7292. begin
  7293.   Result := I shl 12;
  7294. end;
  7295.  
  7296. {$EXTERNALSYM ListView_GetItemA}
  7297. function ListView_GetItemA(hWnd: HWND; var pItem: TLVItemA): Bool;
  7298. begin
  7299.   Result := Bool( SendMessage(hWnd, LVM_GETITEM, 0, Longint(@pItem)) );
  7300. end;
  7301. {$EXTERNALSYM ListView_GetItemW}
  7302. function ListView_GetItemW(hWnd: HWND; var pItem: TLVItemW): Bool;
  7303. begin
  7304.   Result := Bool( SendMessage(hWnd, LVM_GETITEM, 0, Longint(@pItem)) );
  7305. end;
  7306. {$EXTERNALSYM ListView_GetItem}
  7307. function ListView_GetItem(hWnd: HWND; var pItem: TLVItem): Bool;
  7308. begin
  7309.   Result := Bool( SendMessage(hWnd, LVM_GETITEM, 0, Longint(@pItem)) );
  7310. end;
  7311.  
  7312. {$EXTERNALSYM ListView_SetItemA}
  7313. function ListView_SetItemA(hWnd: HWND; const pItem: TLVItemA): Bool;
  7314. begin
  7315.   Result := Bool( SendMessage(hWnd, LVM_SETITEM, 0, Longint(@pItem)) );
  7316. end;
  7317. {$EXTERNALSYM ListView_SetItemW}
  7318. function ListView_SetItemW(hWnd: HWND; const pItem: TLVItemW): Bool;
  7319. begin
  7320.   Result := Bool( SendMessage(hWnd, LVM_SETITEM, 0, Longint(@pItem)) );
  7321. end;
  7322. {$EXTERNALSYM ListView_SetItem}
  7323. function ListView_SetItem(hWnd: HWND; const pItem: TLVItem): Bool;
  7324. begin
  7325.   Result := Bool( SendMessage(hWnd, LVM_SETITEM, 0, Longint(@pItem)) );
  7326. end;
  7327.  
  7328. {$EXTERNALSYM ListView_InsertItemA}
  7329. function ListView_InsertItemA(hWnd: HWND; const pItem: TLVItemA): Integer;
  7330. begin
  7331.   Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
  7332. end;
  7333. {$EXTERNALSYM ListView_InsertItemW}
  7334. function ListView_InsertItemW(hWnd: HWND; const pItem: TLVItemW): Integer;
  7335. begin
  7336.   Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
  7337. end;
  7338. {$EXTERNALSYM ListView_InsertItem}
  7339. function ListView_InsertItem(hWnd: HWND; const pItem: TLVItem): Integer;
  7340. begin
  7341.   Result := Integer( SendMessage(hWnd, LVM_INSERTITEM, 0, Longint(@pItem)) );
  7342. end;
  7343.  
  7344. {$EXTERNALSYM ListView_DeleteItem}
  7345. function ListView_DeleteItem(hWnd: HWND; i: Integer): Bool;
  7346. begin
  7347.   Result := Bool( SendMessage(hWnd, LVM_DELETEITEM, i, 0) );
  7348. end;
  7349.  
  7350. {$EXTERNALSYM ListView_DeleteAllItems}
  7351. function ListView_DeleteAllItems(hWnd: HWND): Bool;
  7352. begin
  7353.   Result := Bool( SendMessage(hWnd, LVM_DELETEALLITEMS, 0, 0) );
  7354. end;
  7355.  
  7356. {$EXTERNALSYM ListView_GetCallbackMask}
  7357. function ListView_GetCallbackMask(hWnd: HWND): UINT;
  7358. begin
  7359.   Result := SendMessage(hWnd, LVM_GETCALLBACKMASK, 0, 0);
  7360. end;
  7361.  
  7362. {$EXTERNALSYM ListView_SetCallbackMask}
  7363. function ListView_SetCallbackMask(hWnd: HWND; mask: UINT): Bool;
  7364. begin
  7365.   Result := Bool( SendMessage(hWnd, LVM_SETCALLBACKMASK, mask, 0) );
  7366. end;
  7367.  
  7368. {$EXTERNALSYM ListView_GetNextItem}
  7369. function ListView_GetNextItem(hWnd: HWND; iStart: Integer; Flags: UINT): Integer;
  7370. begin
  7371.   Result := SendMessage(hWnd, LVM_GETNEXTITEM, iStart, MakeLong(Flags, 0));
  7372. end;
  7373.  
  7374. {$EXTERNALSYM ListView_FindItemA}
  7375. function ListView_FindItemA(hWnd: HWND; iStart: Integer;
  7376.   const plvfi: TLVFindInfoA): Integer;
  7377. begin
  7378.   Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
  7379. end;
  7380. {$EXTERNALSYM ListView_FindItemW}
  7381. function ListView_FindItemW(hWnd: HWND; iStart: Integer;
  7382.   const plvfi: TLVFindInfoW): Integer;
  7383. begin
  7384.   Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
  7385. end;
  7386. {$EXTERNALSYM ListView_FindItem}
  7387. function ListView_FindItem(hWnd: HWND; iStart: Integer;
  7388.   const plvfi: TLVFindInfo): Integer;
  7389. begin
  7390.   Result := SendMessage(hWnd, LVM_FINDITEM, iStart, Longint(@plvfi));
  7391. end;
  7392.  
  7393. {$EXTERNALSYM ListView_GetItemRect}
  7394. function ListView_GetItemRect(hWnd: HWND; i: Integer; var prc: TRect;
  7395.   Code: Integer): Bool;
  7396. begin
  7397.   if @prc <> nil then
  7398.   begin
  7399.     prc.left := Code;
  7400.     Result := Bool( SendMessage(hWnd, LVM_GETITEMRECT, i, Longint(@prc)) );
  7401.   end
  7402.   else
  7403.     Result := Bool( SendMessage(hWnd, LVM_GETITEMRECT, i, 0) );
  7404. end;
  7405.  
  7406. {$EXTERNALSYM ListView_SetItemPosition}
  7407. function ListView_SetItemPosition(hWnd: HWND; i, x, y: Integer): Bool;
  7408. begin
  7409.   Result := Bool( SendMessage(hWnd, LVM_SETITEMPOSITION, i, MakeLong(x, y)) );
  7410. end;
  7411.  
  7412. {$EXTERNALSYM ListView_GetItemPosition}
  7413. function ListView_GetItemPosition(hwndLV: HWND; i: Integer;
  7414.   var ppt: TPoint): Bool;
  7415. begin
  7416.   Result := Bool( SendMessage(hWndLV, LVM_GETITEMPOSITION, i, Longint(@ppt)) );
  7417. end;
  7418.  
  7419. {$EXTERNALSYM ListView_GetStringWidthA}
  7420. function ListView_GetStringWidthA(hwndLV: HWND; psz: PAnsiChar): Integer;
  7421. begin
  7422.   Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
  7423. end;
  7424. {$EXTERNALSYM ListView_GetStringWidthW}
  7425. function ListView_GetStringWidthW(hwndLV: HWND; psz: PWideChar): Integer;
  7426. begin
  7427.   Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
  7428. end;
  7429. {$EXTERNALSYM ListView_GetStringWidth}
  7430. function ListView_GetStringWidth(hwndLV: HWND; psz: PChar): Integer;
  7431. begin
  7432.   Result := SendMessage(hwndLV, LVM_GETSTRINGWIDTH, 0, Longint(psz));
  7433. end;
  7434.  
  7435. {$EXTERNALSYM ListView_HitTest}
  7436. function ListView_HitTest(hwndLV: HWND; var pinfo: TLVHitTestInfo): Integer;
  7437. begin
  7438.   Result := SendMessage(hwndLV, LVM_HITTEST, 0, Longint(@pinfo));
  7439. end;
  7440.  
  7441. {$EXTERNALSYM ListView_EnsureVisible}
  7442. function ListView_EnsureVisible(hwndLV: HWND; i: Integer; fPartialOK: Bool): Bool;
  7443. begin
  7444.   Result := SendMessage(hwndLV, LVM_ENSUREVISIBLE, i,
  7445.     MakeLong(Integer(fPartialOK), 0)) <> 0;
  7446. end;
  7447.  
  7448. {$EXTERNALSYM ListView_Scroll}
  7449. function ListView_Scroll(hwndLV: HWnd; DX, DY: Integer): Bool;
  7450. begin
  7451.   Result := Bool( SendMessage(hwndLV, LVM_SCROLL, DX, DY) );
  7452. end;
  7453.  
  7454. {$EXTERNALSYM ListView_RedrawItems}
  7455. function ListView_RedrawItems(hwndLV: HWND; iFirst, iLast: Integer): Bool;
  7456. begin
  7457.   Result := Bool( SendMessage(hwndLV, LVM_REDRAWITEMS, iFirst, iLast) );
  7458. end;
  7459.  
  7460. {$EXTERNALSYM ListView_Arrange}
  7461. function ListView_Arrange(hwndLV: HWND; Code: UINT): Bool;
  7462. begin
  7463.   Result := Bool( SendMessage(hwndLV, LVM_ARRANGE, Code, 0) );
  7464. end;
  7465.  
  7466. {$EXTERNALSYM ListView_EditLabelA}
  7467. function ListView_EditLabelA(hwndLV: HWND; i: Integer): HWND;
  7468. begin
  7469.   Result := HWND( SendMessage(hwndLV, LVM_EDITLABEL, i, 0) );
  7470. end;
  7471. {$EXTERNALSYM ListView_EditLabelW}
  7472. function ListView_EditLabelW(hwndLV: HWND; i: Integer): HWND;
  7473. begin
  7474.   Result := HWND( SendMessage(hwndLV, LVM_EDITLABEL, i, 0) );
  7475. end;
  7476. {$EXTERNALSYM ListView_EditLabel}
  7477. function ListView_EditLabel(hwndLV: HWND; i: Integer): HWND;
  7478. begin
  7479.   Result := HWND( SendMessage(hwndLV, LVM_EDITLABEL, i, 0) );
  7480. end;
  7481.  
  7482. {$EXTERNALSYM ListView_GetEditControl}
  7483. function ListView_GetEditControl(hwndLV: HWND): HWND;
  7484. begin
  7485.   Result := HWND( SendMessage(hwndLV, LVM_GETEDITCONTROL, 0, 0) );
  7486. end;
  7487.  
  7488. {$EXTERNALSYM ListView_GetColumnA}
  7489. function ListView_GetColumnA(hwnd: HWND; iCol: Integer; var pcol: TLVColumnA): Bool;
  7490. begin
  7491.   Result := Bool( SendMessage(hwnd, LVM_GETCOLUMN, iCol, Longint(@pcol)) );
  7492. end;
  7493. {$EXTERNALSYM ListView_GetColumnW}
  7494. function ListView_GetColumnW(hwnd: HWND; iCol: Integer; var pcol: TLVColumnW): Bool;
  7495. begin
  7496.   Result := Bool( SendMessage(hwnd, LVM_GETCOLUMN, iCol, Longint(@pcol)) );
  7497. end;
  7498. {$EXTERNALSYM ListView_GetColumn}
  7499. function ListView_GetColumn(hwnd: HWND; iCol: Integer; var pcol: TLVColumn): Bool;
  7500. begin
  7501.   Result := Bool( SendMessage(hwnd, LVM_GETCOLUMN, iCol, Longint(@pcol)) );
  7502. end;
  7503.  
  7504. {$EXTERNALSYM ListView_SetColumnA}
  7505. function ListView_SetColumnA(hwnd: HWND; iCol: Integer; const pcol: TLVColumnA): Bool;
  7506. begin
  7507.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMN, iCol, Longint(@pcol)) );
  7508. end;
  7509. {$EXTERNALSYM ListView_SetColumnW}
  7510. function ListView_SetColumnW(hwnd: HWND; iCol: Integer; const pcol: TLVColumnW): Bool;
  7511. begin
  7512.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMN, iCol, Longint(@pcol)) );
  7513. end;
  7514. {$EXTERNALSYM ListView_SetColumn}
  7515. function ListView_SetColumn(hwnd: HWND; iCol: Integer; const pcol: TLVColumn): Bool;
  7516. begin
  7517.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMN, iCol, Longint(@pcol)) );
  7518. end;
  7519.  
  7520. {$EXTERNALSYM ListView_InsertColumnA}
  7521. function ListView_InsertColumnA(hwnd: HWND; iCol: Integer; const pcol: TLVColumnA): Integer;
  7522. begin
  7523.   Result := SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, Longint(@pcol));
  7524. end;
  7525. {$EXTERNALSYM ListView_InsertColumnW}
  7526. function ListView_InsertColumnW(hwnd: HWND; iCol: Integer; const pcol: TLVColumnW): Integer;
  7527. begin
  7528.   Result := SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, Longint(@pcol));
  7529. end;
  7530. {$EXTERNALSYM ListView_InsertColumn}
  7531. function ListView_InsertColumn(hwnd: HWND; iCol: Integer; const pcol: TLVColumn): Integer;
  7532. begin
  7533.   Result := SendMessage(hWnd, LVM_INSERTCOLUMN, iCol, Longint(@pcol));
  7534. end;
  7535.  
  7536. {$EXTERNALSYM ListView_DeleteColumn}
  7537. function ListView_DeleteColumn(hwnd: HWND; iCol: Integer): Bool;
  7538. begin
  7539.   Result := Bool( SendMessage(hWnd, LVM_DELETECOLUMN, iCol, 0) );
  7540. end;
  7541.  
  7542. {$EXTERNALSYM ListView_GetColumnWidth}
  7543. function ListView_GetColumnWidth(hwnd: HWND; iCol: Integer): Integer;
  7544. begin
  7545.   Result := Integer( SendMessage(hwnd, LVM_GETCOLUMNWIDTH, iCol, 0) );
  7546. end;
  7547.  
  7548. {$EXTERNALSYM ListView_SetColumnWidth}
  7549. function ListView_SetColumnWidth(hwnd: HWnd; iCol: Integer; cx: Integer): Bool;
  7550. begin
  7551.   Result := Bool( SendMessage(hwnd, LVM_SETCOLUMNWIDTH, iCol,
  7552.     MakeLong((cx), 0)) );
  7553. end;
  7554.  
  7555. {$EXTERNALSYM ListView_GetHeader}
  7556. function ListView_GetHeader(hwnd: HWND): HWND;
  7557. begin
  7558.   Result := SendMessage(hwnd, LVM_GETHEADER, 0, 0);
  7559. end;
  7560.  
  7561. {$EXTERNALSYM ListView_CreateDragImage}
  7562. function ListView_CreateDragImage(hwnd: HWND; i: Integer;
  7563.   const lpptUpLeft: TPoint): HIMAGELIST;
  7564. begin
  7565.   Result := HIMAGELIST( SendMessage(hwnd, LVM_CREATEDRAGIMAGE, i,
  7566.     Longint(@lpptUpLeft)));
  7567. end;
  7568.  
  7569. {$EXTERNALSYM ListView_GetViewRect}
  7570. function ListView_GetViewRect(hwnd: HWND; var prc: TRect): Bool;
  7571. begin
  7572.   Result := Bool( SendMessage(hwnd, LVM_GETVIEWRECT, 0, Longint(@prc)) );
  7573. end;
  7574.  
  7575. {$EXTERNALSYM ListView_GetTextColor}
  7576. function ListView_GetTextColor(hwnd: HWND): TColorRef;
  7577. begin
  7578.   Result := SendMessage(hwnd, LVM_GETTEXTCOLOR, 0, 0);
  7579. end;
  7580.  
  7581. {$EXTERNALSYM ListView_SetTextColor}
  7582. function ListView_SetTextColor(hwnd: HWND; clrText: TColorRef): Bool;
  7583. begin
  7584.   Result := Bool( SendMessage(hwnd, LVM_SETTEXTCOLOR, 0, clrText) );
  7585. end;
  7586.  
  7587. {$EXTERNALSYM ListView_GetTextBkColor}
  7588. function ListView_GetTextBkColor(hwnd: HWND): TColorRef;
  7589. begin
  7590.   Result := SendMessage(hwnd, LVM_GETTEXTBKCOLOR, 0, 0);
  7591. end;
  7592.  
  7593. {$EXTERNALSYM ListView_SetTextBkColor}
  7594. function ListView_SetTextBkColor(hwnd: HWND; clrTextBk: TColorRef): Bool;
  7595. begin
  7596.   Result := Bool( SendMessage(hwnd, LVM_SETTEXTBKCOLOR, 0, clrTextBk) );
  7597. end;
  7598.  
  7599. {$EXTERNALSYM ListView_GetTopIndex}
  7600. function ListView_GetTopIndex(hwndLV: HWND): Integer;
  7601. begin
  7602.   Result := SendMessage(hwndLV, LVM_GETTOPINDEX, 0, 0);
  7603. end;
  7604.  
  7605. {$EXTERNALSYM ListView_GetCountPerPage}
  7606. function ListView_GetCountPerPage(hwndLV: HWND): Integer;
  7607. begin
  7608.   Result := SendMessage(hwndLV, LVM_GETCOUNTPERPAGE, 0, 0);
  7609. end;
  7610.  
  7611. {$EXTERNALSYM ListView_GetOrigin}
  7612. function ListView_GetOrigin(hwndLV: HWND; var ppt: TPoint): Bool;
  7613. begin
  7614.   Result := Bool( SendMessage(hwndLV, LVM_GETORIGIN, 0, Longint(@ppt)) );
  7615. end;
  7616.  
  7617. {$EXTERNALSYM ListView_Update}
  7618. function ListView_Update(hwndLV: HWND; i: Integer): Bool;
  7619. begin
  7620.   Result := SendMessage(hwndLV, LVM_UPDATE, i, 0) <> 0;
  7621. end;
  7622.  
  7623. {$EXTERNALSYM ListView_SetItemState}
  7624. function ListView_SetItemState(hwndLV: HWND; i: Integer; data, mask: UINT): Bool;
  7625. var
  7626.   Item: TLVItem;
  7627. begin
  7628.   Item.stateMask := mask;
  7629.   Item.state := data;
  7630.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMSTATE, i, Longint(@Item)) );
  7631. end;
  7632.  
  7633. {$EXTERNALSYM ListView_GetItemState}
  7634. function ListView_GetItemState(hwndLV: HWND; i, mask: Integer): Integer;
  7635. begin
  7636.   Result := SendMessage(hwndLV, LVM_GETITEMSTATE, i, mask);
  7637. end;
  7638.  
  7639. function ListView_GetCheckState(hwndLV: HWND; i: Integer): UINT;
  7640. begin
  7641.   Result := (SendMessage(hwndLV, LVM_GETITEMSTATE, i, LVIS_STATEIMAGEMASK) shr 12) - 1 ;
  7642. end;
  7643.  
  7644. procedure ListView_SetCheckState(hwndLV: HWND; i: Integer; Checked: Boolean);
  7645. var
  7646.   Item: TLVItem;
  7647. begin
  7648.   Item.statemask := LVIS_STATEIMAGEMASK;
  7649.   Item.State := ((Integer(Checked) and 1) + 1) shl 12;
  7650.   SendMessage(hwndLV, LVM_SETITEMSTATE, i, Integer(@Item));
  7651. end;
  7652.  
  7653. {$EXTERNALSYM ListView_GetItemTextA}
  7654. function ListView_GetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  7655.   pszText: PAnsiChar; cchTextMax: Integer): Integer;
  7656. var
  7657.   Item: TLVItemA;
  7658. begin
  7659.   Item.iSubItem := iSubItem;
  7660.   Item.cchTextMax := cchTextMax;
  7661.   Item.pszText := pszText;
  7662.   Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
  7663. end;
  7664. {$EXTERNALSYM ListView_GetItemTextW}
  7665. function ListView_GetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  7666.   pszText: PWideChar; cchTextMax: Integer): Integer;
  7667. var
  7668.   Item: TLVItemW;
  7669. begin
  7670.   Item.iSubItem := iSubItem;
  7671.   Item.cchTextMax := cchTextMax;
  7672.   Item.pszText := pszText;
  7673.   Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
  7674. end;
  7675. {$EXTERNALSYM ListView_GetItemText}
  7676. function ListView_GetItemText(hwndLV: HWND; i, iSubItem: Integer;
  7677.   pszText: PChar; cchTextMax: Integer): Integer;
  7678. var
  7679.   Item: TLVItem;
  7680. begin
  7681.   Item.iSubItem := iSubItem;
  7682.   Item.cchTextMax := cchTextMax;
  7683.   Item.pszText := pszText;
  7684.   Result := SendMessage(hwndLV, LVM_GETITEMTEXT, i, Longint(@Item));
  7685. end;
  7686.  
  7687. {$EXTERNALSYM ListView_SetItemTextA}
  7688. function ListView_SetItemTextA(hwndLV: HWND; i, iSubItem: Integer;
  7689.   pszText: PAnsiChar): Bool;
  7690. var
  7691.   Item: TLVItemA;
  7692. begin
  7693.   Item.iSubItem := iSubItem;
  7694.   Item.pszText := pszText;
  7695.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
  7696. end;
  7697. {$EXTERNALSYM ListView_SetItemTextW}
  7698. function ListView_SetItemTextW(hwndLV: HWND; i, iSubItem: Integer;
  7699.   pszText: PWideChar): Bool;
  7700. var
  7701.   Item: TLVItemW;
  7702. begin
  7703.   Item.iSubItem := iSubItem;
  7704.   Item.pszText := pszText;
  7705.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
  7706. end;
  7707. {$EXTERNALSYM ListView_SetItemText}
  7708. function ListView_SetItemText(hwndLV: HWND; i, iSubItem: Integer;
  7709.   pszText: PChar): Bool;
  7710. var
  7711.   Item: TLVItem;
  7712. begin
  7713.   Item.iSubItem := iSubItem;
  7714.   Item.pszText := pszText;
  7715.   Result := Bool( SendMessage(hwndLV, LVM_SETITEMTEXT, i, Longint(@Item)) );
  7716. end;
  7717.  
  7718. {$EXTERNALSYM ListView_SetItemCount}
  7719. procedure ListView_SetItemCount(hwndLV: HWND; cItems: Integer);
  7720. begin
  7721.   SendMessage(hwndLV, LVM_SETITEMCOUNT, cItems, 0);
  7722. end;
  7723.  
  7724. {$EXTERNALSYM ListView_SetItemCountEx}
  7725. procedure ListView_SetItemCountEx(hwndLV: HWND; cItems: Integer; dwFlags: DWORD);
  7726. begin
  7727.   SendMessage(hwndLV, LVM_SETITEMCOUNT, cItems, dwFlags);
  7728. end;
  7729.  
  7730. {$EXTERNALSYM ListView_SortItems}
  7731. function ListView_SortItems(hwndLV: HWND; pfnCompare: TLVCompare;
  7732.   lPrm: Longint): Bool;
  7733. begin
  7734.   Result := Bool( SendMessage(hwndLV, LVM_SORTITEMS, lPrm,
  7735.     Longint(@pfnCompare)) );
  7736. end;
  7737.  
  7738. {$EXTERNALSYM ListView_SetItemPosition32}
  7739. procedure ListView_SetItemPosition32(hwndLV: HWND; i, x, y: Integer);
  7740. var
  7741.   ptNewPos: TPoint;
  7742. begin
  7743.   ptNewPos.x := x;
  7744.   ptNewPos.y := y;
  7745.   SendMessage(hwndLV, LVM_SETITEMPOSITION32, i, Longint(@ptNewPos));
  7746. end;
  7747.  
  7748. {$EXTERNALSYM ListView_GetSelectedCount}
  7749. function ListView_GetSelectedCount(hwndLV: HWND): UINT;
  7750. begin
  7751.   Result := SendMessage(hwndLV, LVM_GETSELECTEDCOUNT, 0, 0);
  7752. end;
  7753.  
  7754. {$EXTERNALSYM ListView_GetItemSpacing}
  7755. function ListView_GetItemSpacing(hwndLV: HWND; fSmall: Integer): Longint;
  7756. begin
  7757.   Result := SendMessage(hwndLV, LVM_GETITEMSPACING, fSmall, 0);
  7758. end;
  7759.  
  7760. {$EXTERNALSYM ListView_GetISearchStringA}
  7761. function ListView_GetISearchStringA(hwndLV: HWND; lpsz: PAnsiChar): Bool;
  7762. begin
  7763.   Result := Bool( SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0,
  7764.     Longint(lpsz)) );
  7765. end;
  7766. {$EXTERNALSYM ListView_GetISearchStringW}
  7767. function ListView_GetISearchStringW(hwndLV: HWND; lpsz: PWideChar): Bool;
  7768. begin
  7769.   Result := Bool( SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0,
  7770.     Longint(lpsz)) );
  7771. end;
  7772. {$EXTERNALSYM ListView_GetISearchString}
  7773. function ListView_GetISearchString(hwndLV: HWND; lpsz: PChar): Bool;
  7774. begin
  7775.   Result := Bool( SendMessage(hwndLV, LVM_GETISEARCHSTRING, 0,
  7776.     Longint(lpsz)) );
  7777. end;
  7778.  
  7779. function ListView_SetIconSpacing(hwndLV: HWND; cx, cy: Word): DWORD;
  7780. begin
  7781.   Result := SendMessage(hwndLV, LVM_SETICONSPACING, 0, MakeLong(cx, cy));
  7782. end;
  7783.  
  7784. function ListView_SetExtendedListViewStyle(hwndLV: HWND; dw: DWORD): BOOL;
  7785. begin
  7786.   Result := BOOL(SendMessage(hwndLV, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw));
  7787. end;
  7788.  
  7789. function ListView_GetExtendedListViewStyle(hwndLV: HWND): DWORD;
  7790. begin
  7791.   Result := SendMessage(hwndLV, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
  7792. end;
  7793.  
  7794. function ListView_GetSubItemRect(hwndLV: HWND; iItem, iSubItem: Integer;
  7795.   code: DWORD; prc: PRect): BOOL;
  7796. begin
  7797.   if prc <> nil then
  7798.   begin
  7799.     prc^.Top := iSubItem;
  7800.     prc^.Left := code;
  7801.   end;
  7802.   Result := BOOL(SendMessage(hwndLV, LVM_GETSUBITEMRECT, iItem, Longint(prc)));
  7803. end;
  7804.  
  7805. function ListView_SubItemHitTest(hwndLV: HWND; plvhti: PLVHitTestInfo): Integer;
  7806. begin
  7807.   Result := SendMessage(hwndLV, LVM_SUBITEMHITTEST, 0, Longint(plvhti));
  7808. end;
  7809.  
  7810. function ListView_SetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  7811.   pi: PInteger): BOOL;
  7812. begin
  7813.   Result := BOOL(SendMessage(hwndLV, LVM_SETCOLUMNORDERARRAY, iCount,
  7814.     Longint(pi)));
  7815. end;
  7816.  
  7817. function ListView_GetColumnOrderArray(hwndLV: HWND; iCount: Integer;
  7818.   pi: PInteger): BOOL;
  7819. begin
  7820.   Result := BOOL(SendMessage(hwndLV, LVM_GETCOLUMNORDERARRAY, iCount,
  7821.     Longint(pi)));
  7822. end;
  7823.  
  7824. function ListView_SetHotItem(hwndLV: HWND; i: Integer): Integer;
  7825. begin
  7826.   Result := SendMessage(hwndLV, LVM_SETHOTITEM, i, 0);
  7827. end;
  7828.  
  7829. function ListView_GetHotItem(hwndLV: HWND): Integer;
  7830. begin
  7831.   Result := SendMessage(hwndLV, LVM_GETHOTITEM, 0, 0);
  7832. end;
  7833.  
  7834. function ListView_SetHotCursor(hwndLV: HWND; hcur: HCURSOR): HCURSOR;
  7835. begin
  7836.   Result := SendMessage(hwndLV, LVM_SETHOTCURSOR, 0, hcur);
  7837. end;
  7838.  
  7839. function ListView_GetHotCursor(hwndLV: HWND): HCURSOR;
  7840. begin
  7841.   Result := SendMessage(hwndLV, LVM_GETHOTCURSOR, 0, 0);
  7842. end;
  7843.  
  7844. function ListView_ApproximateViewRect(hwndLV: HWND; iWidth, iHeight: Word;
  7845.   iCount: Integer): DWORD;
  7846. begin
  7847.   Result := SendMessage(hwndLV, LVM_APPROXIMATEVIEWRECT, iCount,
  7848.     MakeLParam(iWidth, iHeight));
  7849. end;
  7850.  
  7851. function ListView_SetWorkAreas(hwndLV: HWND; prc: PRect): BOOL;
  7852. begin
  7853.   Result := BOOL(SendMessage(hwndLV, LVM_SETWORKAREA, 0, Longint(prc)));
  7854. end;
  7855.  
  7856. {$EXTERNALSYM ListView_GetSelectionMark}
  7857. function ListView_GetSelectionMark(hwnd: HWND): Integer;
  7858. begin
  7859.   Result := SendMessage(hwnd, LVM_GETSELECTIONMARK, 0, 0);
  7860. end;
  7861.  
  7862. {$EXTERNALSYM ListView_SetSelectionMark}
  7863. function ListView_SetSelectionMark(hwnd: HWND; i: Integer): Integer;
  7864. begin
  7865.   Result := SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, i);
  7866. end;
  7867.  
  7868. {$EXTERNALSYM ListView_GetWorkAreas}
  7869. function ListView_GetWorkAreas(hwnd: HWND; nWorkAreas: Integer; prc: PRect): BOOL;
  7870. begin
  7871.   Result := BOOL(SendMessage(hwnd, LVM_GETWORKAREAS, nWorkAreas, Integer(prc)));
  7872. end;
  7873.  
  7874. {$EXTERNALSYM ListView_SetHoverTime}
  7875. function ListView_SetHoverTime(hwndLV: HWND; dwHoverTimeMs: DWORD): DWORD;
  7876. begin
  7877.   Result := SendMessage(hwndLV, LVM_SETHOVERTIME, 0, dwHoverTimeMs);
  7878. end;
  7879.  
  7880. {$EXTERNALSYM ListView_GetHoverTime}
  7881. function ListView_GetHoverTime(hwndLV: HWND): Integer;
  7882. begin
  7883.   Result := SendMessage(hwndLV, LVM_GETHOVERTIME, 0, 0);
  7884. end;
  7885.  
  7886. {$EXTERNALSYM ListView_GetNumberOfWorkAreas}
  7887. function ListView_GetNumberOfWorkAreas(hwnd: HWND; pnWorkAreas: PInteger): Integer;
  7888. begin
  7889.   Result := SendMessage(hwnd, LVM_GETNUMBEROFWORKAREAS, 0, Integer(pnWorkAreas));
  7890. end;
  7891.  
  7892. {$EXTERNALSYM ListView_SetToolTips}
  7893. function ListView_SetToolTips(hwndLV: HWND; hwndNewHwnd: HWND): HWND;
  7894. begin
  7895.   Result := HWND(SendMessage(hwndLV, LVM_SETTOOLTIPS, WPARAM(hwndNewHwnd), 0));
  7896. end;
  7897.  
  7898. {$EXTERNALSYM ListView_GetToolTips}
  7899. function ListView_GetToolTips(hwndLV: HWND): HWND;
  7900. begin
  7901.   Result := HWND(SendMessage(hwndLV, LVM_GETTOOLTIPS, 0, 0));
  7902. end;
  7903.  
  7904. {$EXTERNALSYM ListView_SetBkImage}
  7905. function ListView_SetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  7906. begin
  7907.   Result := BOOL(SendMessage(hwnd, LVM_SETBKIMAGE, 0, LPARAM(plvbki)));
  7908. end;
  7909. {$EXTERNALSYM ListView_GetBkImage}
  7910. function ListView_GetBkImage(hwnd: HWND; plvbki: PLVBKImage): BOOL;
  7911. begin
  7912.   Result := BOOL(SendMessage(hwnd, LVM_GETBKIMAGE, 0, LPARAM(plvbki)));
  7913. end;
  7914.  
  7915. { Tree View }
  7916.  
  7917. {$EXTERNALSYM TreeView_InsertItem}
  7918. function TreeView_InsertItem(hwnd: HWND; const lpis: TTVInsertStruct): HTreeItem;
  7919. begin
  7920.   Result := HTreeItem( SendMessage(hwnd, TVM_INSERTITEM, 0, Longint(@lpis)) );
  7921. end;
  7922.  
  7923. {$EXTERNALSYM TreeView_DeleteItem}
  7924. function TreeView_DeleteItem(hwnd: HWND; hitem: HTreeItem): Bool;
  7925. begin
  7926.   Result := Bool( SendMessage(hwnd, TVM_DELETEITEM, 0, Longint(hitem)) );
  7927. end;
  7928.  
  7929. {$EXTERNALSYM TreeView_DeleteAllItems}
  7930. function TreeView_DeleteAllItems(hwnd: HWND): Bool;
  7931. begin
  7932.   Result := Bool( SendMessage(hwnd, TVM_DELETEITEM, 0, Longint(TVI_ROOT)) );
  7933. end;
  7934.  
  7935. {$EXTERNALSYM TreeView_Expand}
  7936. function TreeView_Expand(hwnd: HWND; hitem: HTreeItem; code: Integer): Bool;
  7937. begin
  7938.   Result := Bool( SendMessage(hwnd, TVM_EXPAND, code, Longint(hitem)) );
  7939. end;
  7940.  
  7941. {$EXTERNALSYM TreeView_GetItemRect}
  7942. function TreeView_GetItemRect(hwnd: HWND; hitem: HTreeItem;
  7943.   var prc: TRect; code: Bool): Bool;
  7944. begin
  7945.   HTreeItem(Pointer(@prc)^) := hitem;
  7946.   Result := Bool( SendMessage(hwnd, TVM_GETITEMRECT, Integer(code), Longint(@prc)) );
  7947. end;
  7948.  
  7949. {$EXTERNALSYM TreeView_GetCount}
  7950. function TreeView_GetCount(hwnd: HWND): UINT;
  7951. begin
  7952.   Result := SendMessage(hwnd, TVM_GETCOUNT, 0, 0);
  7953. end;
  7954.  
  7955. {$EXTERNALSYM TreeView_GetIndent}
  7956. function TreeView_GetIndent(hwnd: HWND): UINT;
  7957. begin
  7958.   Result := SendMessage(hwnd, TVM_GETINDENT, 0, 0);
  7959. end;
  7960.  
  7961. {$EXTERNALSYM TreeView_SetIndent}
  7962. function TreeView_SetIndent(hwnd: HWND; indent: Integer): Bool;
  7963. begin
  7964.   Result := Bool( SendMessage(hwnd, TVM_SETINDENT, indent, 0) );
  7965. end;
  7966.  
  7967. {$EXTERNALSYM TreeView_GetImageList}
  7968. function TreeView_GetImageList(hwnd: HWND; iImage: Integer): HIMAGELIST;
  7969. begin
  7970.   Result := HIMAGELIST( SendMessage(hwnd, TVM_GETIMAGELIST, iImage, 0) );
  7971. end;
  7972.  
  7973. {$EXTERNALSYM TreeView_SetImageList}
  7974. function TreeView_SetImageList(hwnd: HWND; himl: HIMAGELIST;
  7975.   iImage: Integer): HIMAGELIST;
  7976. begin
  7977.   Result := HIMAGELIST( SendMessage(hwnd, TVM_SETIMAGELIST, iImage,
  7978.     Longint(himl)) );
  7979. end;
  7980.  
  7981. {$EXTERNALSYM TreeView_GetNextItem}
  7982. function TreeView_GetNextItem(hwnd: HWND; hitem: HTreeItem;
  7983.   code: Integer): HTreeItem;
  7984. begin
  7985.   Result := HTreeItem( SendMessage(hwnd, TVM_GETNEXTITEM, code,
  7986.     Longint(hitem)) );
  7987. end;
  7988.  
  7989. {$EXTERNALSYM TreeView_GetChild}
  7990. function TreeView_GetChild(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  7991. begin
  7992.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD);
  7993. end;
  7994.  
  7995. {$EXTERNALSYM TreeView_GetNextSibling}
  7996. function TreeView_GetNextSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  7997. begin
  7998.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT);
  7999. end;
  8000.  
  8001. {$EXTERNALSYM TreeView_GetPrevSibling}
  8002. function TreeView_GetPrevSibling(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8003. begin
  8004.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS);
  8005. end;
  8006.  
  8007. {$EXTERNALSYM TreeView_GetParent}
  8008. function TreeView_GetParent(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8009. begin
  8010.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT);
  8011. end;
  8012.  
  8013. {$EXTERNALSYM TreeView_GetFirstVisible}
  8014. function TreeView_GetFirstVisible(hwnd: HWND): HTreeItem;
  8015. begin
  8016.   Result := TreeView_GetNextItem(hwnd, nil,  TVGN_FIRSTVISIBLE);
  8017. end;
  8018.  
  8019. {$EXTERNALSYM TreeView_GetNextVisible}
  8020. function TreeView_GetNextVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8021. begin
  8022.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE);
  8023. end;
  8024.  
  8025. {$EXTERNALSYM TreeView_GetPrevVisible}
  8026. function TreeView_GetPrevVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8027. begin
  8028.   Result := TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE);
  8029. end;
  8030.  
  8031. {$EXTERNALSYM TreeView_GetSelection}
  8032. function TreeView_GetSelection(hwnd: HWND): HTreeItem;
  8033. begin
  8034.   Result := TreeView_GetNextItem(hwnd, nil, TVGN_CARET);
  8035. end;
  8036.  
  8037. function TreeView_GetDropHilite(hwnd: HWND): HTreeItem;
  8038. begin
  8039.   Result := TreeView_GetNextItem(hwnd, nil, TVGN_DROPHILITE);
  8040. end;
  8041.  
  8042. {$EXTERNALSYM TreeView_GetRoot}
  8043. function TreeView_GetRoot(hwnd: HWND): HTreeItem;
  8044. begin
  8045.   Result := TreeView_GetNextItem(hwnd, nil, TVGN_ROOT);
  8046. end;
  8047.  
  8048. {$EXTERNALSYM TreeView_GetLastVisible}
  8049. function TreeView_GetLastVisible(hwnd: HWND): HTreeItem;
  8050. begin
  8051.   Result := TreeView_GetNextItem(hwnd, nil,  TVGN_LASTVISIBLE);
  8052. end;
  8053.  
  8054. {$EXTERNALSYM TreeView_Select}
  8055. function TreeView_Select(hwnd: HWND; hitem: HTreeItem;
  8056.   code: Integer): HTreeItem;
  8057. begin
  8058.   Result := HTreeItem( SendMessage(hwnd, TVM_SELECTITEM, code,
  8059.     Longint(hitem)) );
  8060. end;
  8061.  
  8062. {$EXTERNALSYM TreeView_SelectItem}
  8063. function TreeView_SelectItem(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8064. begin
  8065.   Result := TreeView_Select(hwnd, hitem, TVGN_CARET);
  8066. end;
  8067.  
  8068. {$EXTERNALSYM TreeView_SelectDropTarget}
  8069. function TreeView_SelectDropTarget(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8070. begin
  8071.   Result := TreeView_Select(hwnd, hitem, TVGN_DROPHILITE);
  8072. end;
  8073.  
  8074. {$EXTERNALSYM TreeView_SelectSetFirstVisible}
  8075. function TreeView_SelectSetFirstVisible(hwnd: HWND; hitem: HTreeItem): HTreeItem;
  8076. begin
  8077.   Result := TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE);
  8078. end;
  8079.  
  8080. {$EXTERNALSYM TreeView_GetItemA}
  8081. function TreeView_GetItemA(hwnd: HWND; var pitem: TTVItemA): Bool;
  8082. begin
  8083.   Result := Bool( SendMessage(hwnd, TVM_GETITEM, 0, Longint(@pitem)) );
  8084. end;
  8085. {$EXTERNALSYM TreeView_GetItemW}
  8086. function TreeView_GetItemW(hwnd: HWND; var pitem: TTVItemW): Bool;
  8087. begin
  8088.   Result := Bool( SendMessage(hwnd, TVM_GETITEM, 0, Longint(@pitem)) );
  8089. end;
  8090. {$EXTERNALSYM TreeView_GetItem}
  8091. function TreeView_GetItem(hwnd: HWND; var pitem: TTVItem): Bool;
  8092. begin
  8093.   Result := Bool( SendMessage(hwnd, TVM_GETITEM, 0, Longint(@pitem)) );
  8094. end;
  8095.  
  8096. {$EXTERNALSYM TreeView_SetItemA}
  8097. function TreeView_SetItemA(hwnd: HWND; const pitem: TTVItemA): Bool;
  8098. begin
  8099.   Result := Bool( SendMessage(hwnd, TVM_SETITEM, 0, Longint(@pitem)) );
  8100. end;
  8101. {$EXTERNALSYM TreeView_SetItemW}
  8102. function TreeView_SetItemW(hwnd: HWND; const pitem: TTVItemW): Bool;
  8103. begin
  8104.   Result := Bool( SendMessage(hwnd, TVM_SETITEM, 0, Longint(@pitem)) );
  8105. end;
  8106. {$EXTERNALSYM TreeView_SetItem}
  8107. function TreeView_SetItem(hwnd: HWND; const pitem: TTVItem): Bool;
  8108. begin
  8109.   Result := Bool( SendMessage(hwnd, TVM_SETITEM, 0, Longint(@pitem)) );
  8110. end;
  8111.  
  8112. {$EXTERNALSYM TreeView_EditLabelA}
  8113. function TreeView_EditLabelA(hwnd: HWND; hitem: HTreeItem): HWND;
  8114. begin
  8115.   Result := Windows.HWND( SendMessage(hwnd, TVM_EDITLABEL, 0, Longint(hitem)) );
  8116. end;
  8117. {$EXTERNALSYM TreeView_EditLabelW}
  8118. function TreeView_EditLabelW(hwnd: HWND; hitem: HTreeItem): HWND;
  8119. begin
  8120.   Result := Windows.HWND( SendMessage(hwnd, TVM_EDITLABEL, 0, Longint(hitem)) );
  8121. end;
  8122. {$EXTERNALSYM TreeView_EditLabel}
  8123. function TreeView_EditLabel(hwnd: HWND; hitem: HTreeItem): HWND;
  8124. begin
  8125.   Result := Windows.HWND( SendMessage(hwnd, TVM_EDITLABEL, 0, Longint(hitem)) );
  8126. end;
  8127.  
  8128. {$EXTERNALSYM TreeView_GetEditControl}
  8129. function TreeView_GetEditControl(hwnd: HWND): HWND;
  8130. begin
  8131.   Result := Windows.HWND( SendMessage(hwnd, TVM_GETEDITCONTROL, 0, 0) );
  8132. end;
  8133.  
  8134. {$EXTERNALSYM TreeView_GetVisibleCount}
  8135. function TreeView_GetVisibleCount(hwnd: HWND): UINT;
  8136. begin
  8137.   Result := SendMessage(hwnd, TVM_GETVISIBLECOUNT, 0, 0);
  8138. end;
  8139.  
  8140. {$EXTERNALSYM TreeView_HitTest}
  8141. function TreeView_HitTest(hwnd: HWND; var lpht: TTVHitTestInfo): HTreeItem;
  8142. begin
  8143.   Result := HTreeItem( SendMessage(hwnd, TVM_HITTEST, 0, Longint(@lpht)) );
  8144. end;
  8145.  
  8146. {$EXTERNALSYM TreeView_CreateDragImage}
  8147. function TreeView_CreateDragImage(hwnd: HWND; hitem: HTreeItem): HIMAGELIST;
  8148. begin
  8149.   Result := HIMAGELIST( SendMessage(hwnd, TVM_CREATEDRAGIMAGE, 0,
  8150.     Longint(hitem)) );
  8151. end;
  8152.  
  8153. {$EXTERNALSYM TreeView_SortChildren}
  8154. function TreeView_SortChildren(hwnd: HWND; hitem: HTreeItem;
  8155.   recurse: Integer): Bool;
  8156. begin
  8157.   Result := Bool( SendMessage(hwnd, TVM_SORTCHILDREN, recurse,
  8158.     Longint(hitem)) );
  8159. end;
  8160.  
  8161. {$EXTERNALSYM TreeView_EnsureVisible}
  8162. function TreeView_EnsureVisible(hwnd: HWND; hitem: HTreeItem): Bool;
  8163. begin
  8164.   Result := Bool( SendMessage(hwnd, TVM_ENSUREVISIBLE, 0, Longint(hitem)) );
  8165. end;
  8166.  
  8167. {$EXTERNALSYM TreeView_SortChildrenCB}
  8168. function TreeView_SortChildrenCB(hwnd: HWND; const psort: TTVSortCB;
  8169.   recurse: Integer): Bool;
  8170. begin
  8171.   Result := Bool( SendMessage(hwnd, TVM_SORTCHILDRENCB, recurse,
  8172.     Longint(@psort)) );
  8173. end;
  8174.  
  8175. {$EXTERNALSYM TreeView_EndEditLabelNow}
  8176. function TreeView_EndEditLabelNow(hwnd: HWND; fCancel: Bool): Bool;
  8177. begin
  8178.   Result := Bool( SendMessage(hwnd, TVM_ENDEDITLABELNOW, Integer(fCancel),
  8179.     0) );
  8180. end;
  8181.  
  8182. {$EXTERNALSYM TreeView_GetISearchStringA}
  8183. function TreeView_GetISearchStringA(hwndTV: HWND; lpsz: PAnsiChar): Bool;
  8184. begin
  8185.   Result := Bool( SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0,
  8186.     Longint(lpsz)) );
  8187. end;
  8188. {$EXTERNALSYM TreeView_GetISearchStringW}
  8189. function TreeView_GetISearchStringW(hwndTV: HWND; lpsz: PWideChar): Bool;
  8190. begin
  8191.   Result := Bool( SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0,
  8192.     Longint(lpsz)) );
  8193. end;
  8194. {$EXTERNALSYM TreeView_GetISearchString}
  8195. function TreeView_GetISearchString(hwndTV: HWND; lpsz: PChar): Bool;
  8196. begin
  8197.   Result := Bool( SendMessage(hwndTV, TVM_GETISEARCHSTRING, 0,
  8198.     Longint(lpsz)) );
  8199. end;
  8200.  
  8201. {$EXTERNALSYM TreeView_SetToolTips}
  8202. function TreeView_SetToolTips(wnd: HWND; hwndTT: HWND): HWND;
  8203. begin
  8204.   Result := HWND(SendMessage(wnd, TVM_SETTOOLTIPS, WPARAM(hwndTT), 0));
  8205. end;
  8206.  
  8207. {$EXTERNALSYM TreeView_GetToolTips}
  8208. function TreeView_GetToolTips(wnd: HWND): HWND;
  8209. begin
  8210.   Result := HWND(SendMessage(wnd, TVM_GETTOOLTIPS, 0, 0));
  8211. end;
  8212.  
  8213. {$EXTERNALSYM TreeView_SetInsertMark}
  8214. function TreeView_SetInsertMark(hwnd: HWND; hItem: Integer; fAfter: BOOL): BOOL;
  8215. begin
  8216.   Result := BOOL(SendMessage(hwnd, TVM_SETINSERTMARK, WPARAM(fAfter), LPARAM(hItem)));
  8217. end;
  8218.  
  8219. {$EXTERNALSYM TreeView_SetUnicodeFormat}
  8220. function TreeView_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  8221. begin
  8222.   Result := BOOL(SendMessage(hwnd, TVM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  8223. end;
  8224.  
  8225. {$EXTERNALSYM TreeView_GetUnicodeFormat}
  8226. function TreeView_GetUnicodeFormat(hwnd: HWND): BOOL;
  8227. begin
  8228.   Result := BOOL(SendMessage(hwnd, TVM_GETUNICODEFORMAT, 0, 0));
  8229. end;
  8230.  
  8231. {$EXTERNALSYM TreeView_SetItemHeight}
  8232. function TreeView_SetItemHeight(hwnd: HWND; iHeight: Integer): Integer;
  8233. begin
  8234.   Result := SendMessage(hwnd, TVM_SETITEMHEIGHT, iHeight, 0);
  8235. end;
  8236.  
  8237. {$EXTERNALSYM TreeView_GetItemHeight}
  8238. function TreeView_GetItemHeight(hwnd: HWND): Integer;
  8239. begin
  8240.   Result := SendMessage(hwnd, TVM_GETITEMHEIGHT, 0, 0);
  8241. end;
  8242.  
  8243. {$EXTERNALSYM TreeView_SetBkColor}
  8244. function TreeView_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8245. begin
  8246.   Result := COLORREF(SendMessage(hwnd, TVM_SETBKCOLOR, 0, LPARAM(clr)));
  8247. end;
  8248.  
  8249. {$EXTERNALSYM TreeView_SetTextColor}
  8250. function TreeView_SetTextColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8251. begin
  8252.   Result := COLORREF(SendMessage(hwnd, TVM_SETTEXTCOLOR, 0, LPARAM(clr)));
  8253. end;
  8254.  
  8255. {$EXTERNALSYM TreeView_GetBkColor}
  8256. function TreeView_GetBkColor(hwnd: HWND): COLORREF;
  8257. begin
  8258.   Result := COLORREF(SendMessage(hwnd, TVM_GETBKCOLOR, 0, 0));
  8259. end;
  8260.  
  8261. {$EXTERNALSYM TreeView_GetTextColor}
  8262. function TreeView_GetTextColor(hwnd: HWND): COLORREF;
  8263. begin
  8264.   Result := COLORREF(SendMessage(hwnd, TVM_GETTEXTCOLOR, 0, 0));
  8265. end;
  8266.  
  8267. {$EXTERNALSYM TreeView_SetScrollTime}
  8268. function TreeView_SetScrollTime(hwnd: HWND; uTime: UINT): UINT;
  8269. begin
  8270.   Result := SendMessage(hwnd, TVM_SETSCROLLTIME, uTime, 0);
  8271. end;
  8272.  
  8273. {$EXTERNALSYM TreeView_GetScrollTime}
  8274. function TreeView_GetScrollTime(hwnd: HWND): UINT;
  8275. begin
  8276.   Result := SendMessage(hwnd, TVM_GETSCROLLTIME, 0, 0);
  8277. end;
  8278.  
  8279. {$EXTERNALSYM TreeView_SetInsertMarkColor}
  8280. function TreeView_SetInsertMarkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8281. begin
  8282.   Result := COLORREF(SendMessage(hwnd, TVM_SETINSERTMARKCOLOR, 0, LPARAM(clr)));
  8283. end;
  8284.  
  8285. {$EXTERNALSYM TreeView_GetInsertMarkColor}
  8286. function TreeView_GetInsertMarkColor(hwnd: HWND): COLORREF;
  8287. begin
  8288.   Result := COLORREF(SendMessage(hwnd, TVM_GETINSERTMARKCOLOR, 0, 0));
  8289. end;
  8290.  
  8291. { Tab control }
  8292.  
  8293. {$EXTERNALSYM TabCtrl_HitTest}
  8294. function TabCtrl_HitTest(hwndTC: HWND; pinfo: PTCHitTestInfo): Integer;
  8295. begin
  8296.   Result := SendMessage(hwndTC, TCM_HITTEST, 0, LPARAM(pinfo));
  8297. end;
  8298.  
  8299. {$EXTERNALSYM TabCtrl_SetItemExtra}
  8300. function TabCtrl_SetItemExtra(hwndTC: HWND; cb: Integer): BOOL;
  8301. begin
  8302.   Result := BOOL(SendMessage(hwndTC, TCM_SETITEMEXTRA, cb, 0));
  8303. end;
  8304.  
  8305. {$EXTERNALSYM TabCtrl_AdjustRect}
  8306. function TabCtrl_AdjustRect(hwnd: HWND; bLarger: BOOL; prc: PRect): Integer;
  8307. begin
  8308.   Result := SendMessage(hwnd, TCM_ADJUSTRECT, WPARAM(bLarger), LPARAM(prc));
  8309. end;
  8310.  
  8311. {$EXTERNALSYM TabCtrl_SetItemSize}
  8312. function TabCtrl_SetItemSize(hwnd: HWND; x, y: Integer): DWORD;
  8313. begin
  8314.   Result := SendMessage(hwnd, TCM_SETITEMSIZE, 0, MAKELPARAM(x, y));
  8315. end;
  8316.  
  8317. {$EXTERNALSYM TabCtrl_RemoveImage}
  8318. procedure TabCtrl_RemoveImage(hwnd: HWND; i: Integer);
  8319. begin
  8320.   SendMessage(hwnd, TCM_REMOVEIMAGE, i, 0);
  8321. end;
  8322.  
  8323. {$EXTERNALSYM TabCtrl_SetPadding}
  8324. procedure TabCtrl_SetPadding(hwnd: HWND; cx, cy: Integer);
  8325. begin
  8326.   SendMessage(hwnd, TCM_SETPADDING, 0, MAKELPARAM(cx, cy));
  8327. end;
  8328.  
  8329. {$EXTERNALSYM TabCtrl_GetRowCount}
  8330. function TabCtrl_GetRowCount(hwnd: HWND): Integer;
  8331. begin
  8332.   Result := SendMessage(hwnd, TCM_GETROWCOUNT, 0, 0);
  8333. end;
  8334.  
  8335. {$EXTERNALSYM TabCtrl_GetToolTips}
  8336. function TabCtrl_GetToolTips(wnd: HWND): HWND;
  8337. begin
  8338.   Result := HWND(SendMessage(wnd, TCM_GETTOOLTIPS, 0, 0));
  8339. end;
  8340.  
  8341. {$EXTERNALSYM TabCtrl_SetToolTips}
  8342. procedure TabCtrl_SetToolTips(hwnd: HWND; hwndTT: HWND);
  8343. begin
  8344.   SendMessage(hwnd, TCM_SETTOOLTIPS, WPARAM(hwndTT), 0);
  8345. end;
  8346.  
  8347. {$EXTERNALSYM TabCtrl_GetCurFocus}
  8348. function TabCtrl_GetCurFocus(hwnd: HWND): Integer;
  8349. begin
  8350.   Result := SendMessage(hwnd, TCM_GETCURFOCUS, 0, 0);
  8351. end;
  8352.  
  8353. {$EXTERNALSYM TabCtrl_SetCurFocus}
  8354. procedure TabCtrl_SetCurFocus(hwnd: HWND; i: Integer);
  8355. begin
  8356.   SendMessage(hwnd,TCM_SETCURFOCUS, i, 0);
  8357. end;
  8358.  
  8359. {$EXTERNALSYM TabCtrl_SetMinTabWidth}
  8360. function TabCtrl_SetMinTabWidth(hwnd: HWND; x: Integer): Integer;
  8361. begin
  8362.   Result := SendMessage(hwnd, TCM_SETMINTABWIDTH, 0, x);
  8363. end;
  8364.  
  8365. {$EXTERNALSYM TabCtrl_DeselectAll}
  8366. procedure TabCtrl_DeselectAll(hwnd: HWND; fExcludeFocus: BOOL);
  8367. begin
  8368.   SendMessage(hwnd, TCM_DESELECTALL, WPARAM(fExcludeFocus), 0)
  8369. end;
  8370.  
  8371. {$EXTERNALSYM TabCtrl_HighlightItem}
  8372. function TabCtrl_HighlightItem(hwnd: HWND; i: Integer; fHighlight: WordBool): BOOL;
  8373. begin
  8374.   Result :=  BOOL(SendMessage(hwnd, TCM_HIGHLIGHTITEM, i, MAKELONG(Word(fHighlight), 0)));
  8375. end;
  8376.  
  8377. {$EXTERNALSYM TabCtrl_SetExtendedStyle}
  8378. function TabCtrl_SetExtendedStyle(hwnd: HWND; dw: DWORD): DWORD;
  8379. begin
  8380.   Result := SendMessage(hwnd, TCM_SETEXTENDEDSTYLE, 0, dw);
  8381. end;
  8382.  
  8383. {$EXTERNALSYM TabCtrl_GetExtendedStyle}
  8384. function TabCtrl_GetExtendedStyle(hwnd: HWND): DWORD;
  8385. begin
  8386.   Result := SendMessage(hwnd, TCM_GETEXTENDEDSTYLE, 0, 0);
  8387. end;
  8388.  
  8389. {$EXTERNALSYM TabCtrl_SetUnicodeFormat}
  8390. function TabCtrl_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  8391. begin
  8392.   Result := BOOL(SendMessage(hwnd, TCM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  8393. end;
  8394.  
  8395. {$EXTERNALSYM TabCtrl_GetUnicodeFormat}
  8396. function TabCtrl_GetUnicodeFormat(hwnd: HWND): BOOL;
  8397. begin
  8398.   Result := BOOL(SendMessage(hwnd, TCM_GETUNICODEFORMAT, 0, 0));
  8399. end;
  8400.  
  8401. { Animate control }
  8402.  
  8403. {$EXTERNALSYM Animate_Create}
  8404. function Animate_Create(hwndP: HWND; id: HMENU; dwStyle: DWORD; hInstance: HINST): HWND;
  8405. begin
  8406.   Result := CreateWindow(ANIMATE_CLASS, nil, dwStyle, 0, 0, 0, 0, hwndP, id,
  8407.     hInstance, nil);
  8408. end;
  8409.  
  8410. {$EXTERNALSYM Animate_Open}
  8411. function Animate_Open(hwnd: HWND; szName: PChar): BOOL;
  8412. begin
  8413.   Result := BOOL(SendMessage(hwnd, ACM_OPEN, 0, LPARAM(szName)));
  8414. end;
  8415.  
  8416. {$EXTERNALSYM Animate_OpenEx}
  8417. function Animate_OpenEx(hwnd: HWND; hInst: HINST; szName: PChar): BOOL;
  8418. begin
  8419.   Result := BOOL(SendMessage(hwnd, ACM_OPEN, WPARAM(hInst), LPARAM(szName)));
  8420. end;
  8421.  
  8422. {$EXTERNALSYM Animate_Play}
  8423. function Animate_Play(hwnd: HWND; from, _to: Word; rep: UINT): BOOL;
  8424. begin
  8425.   Result := BOOL(SendMessage(hwnd, ACM_PLAY, rep, MAKELONG(from, _to)));
  8426. end;
  8427.  
  8428. {$EXTERNALSYM Animate_Stop}
  8429. function Animate_Stop(hwnd: HWND): BOOL;
  8430. begin
  8431.   Result := BOOL(SendMessage(hwnd, ACM_STOP, 0, 0));
  8432. end;
  8433.  
  8434. {$EXTERNALSYM Animate_Close}
  8435. function Animate_Close(hwnd: HWND): BOOL;
  8436. begin
  8437.   Result := Animate_Open(hwnd, nil);
  8438. end;
  8439.  
  8440. {$EXTERNALSYM Animate_Seek}
  8441. function Animate_Seek(hwnd: HWND; frame: Word): BOOL;
  8442. begin
  8443.   Result := Animate_Play(hwnd, frame, frame, 1);
  8444. end;
  8445.  
  8446. { MonthCal control }
  8447.  
  8448. {$EXTERNALSYM MonthCal_GetCurSel}
  8449. function MonthCal_GetCurSel(hmc: HWND; var pst: TSystemTime): BOOL;
  8450. begin
  8451.   Result := BOOL(SendMessage(hmc, MCM_GETCURSEL, 0, Longint(@pst)));
  8452. end;
  8453.  
  8454. {$EXTERNALSYM MonthCal_SetCurSel}
  8455. function MonthCal_SetCurSel(hmc: HWND; const pst: TSystemTime): BOOL;
  8456. begin
  8457.   Result := BOOL(SendMessage(hmc, MCM_SETCURSEL, 0, Longint(@pst)));
  8458. end;
  8459.  
  8460. {$EXTERNALSYM MonthCal_GetMaxSelCount}
  8461. function MonthCal_GetMaxSelCount(hmc: HWND): DWORD;
  8462. begin
  8463.   Result := SendMessage(hmc, MCM_GETMAXSELCOUNT, 0, 0);
  8464. end;
  8465.  
  8466. {$EXTERNALSYM MonthCal_SetMaxSelCount}
  8467. function MonthCal_SetMaxSelCount(hmc: HWND; n: UINT): BOOL;
  8468. begin
  8469.   Result := BOOL(SendMessage(hmc, MCM_SETMAXSELCOUNT, n, 0));
  8470. end;
  8471.  
  8472. {$EXTERNALSYM MonthCal_GetSelRange}
  8473. function MonthCal_GetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  8474. begin
  8475.   Result := BOOL(SendMessage(hmc, MCM_GETSELRANGE, 0, Longint(rgst)));
  8476. end;
  8477.  
  8478. {$EXTERNALSYM MonthCal_SetSelRange}
  8479. function MonthCal_SetSelRange(hmc: HWND; rgst: PSystemTime): BOOL;
  8480. begin
  8481.   Result := BOOL(SendMessage(hmc, MCM_SETSELRANGE, 0, Longint(rgst)));
  8482. end;
  8483.  
  8484. {$EXTERNALSYM MonthCal_GetMonthRange}
  8485. function MonthCal_GetMonthRange(hmc: HWND; gmr: DWORD; rgst: PSystemTime): DWORD;
  8486. begin
  8487.   Result := SendMessage(hmc, MCM_GETMONTHRANGE, gmr, Longint(rgst));
  8488. end;
  8489.  
  8490. {$EXTERNALSYM MonthCal_SetDayState}
  8491. function MonthCal_SetDayState(hmc: HWND; cbds: Integer; const rgds: TNMDayState): BOOL;
  8492. begin
  8493.   Result := BOOL(SendMessage(hmc, MCM_SETDAYSTATE, cbds, Longint(@rgds)));
  8494. end;
  8495.  
  8496. {$EXTERNALSYM MonthCal_GetMinReqRect}
  8497. function MonthCal_GetMinReqRect(hmc: HWND; var prc: TRect): BOOL;
  8498. begin
  8499.   Result := BOOL(SendMessage(hmc, MCM_GETMINREQRECT, 0, Longint(@prc)));
  8500. end;
  8501.  
  8502. {$EXTERNALSYM MonthCal_SetToday}
  8503. function MonthCal_SetToday(hmc: HWND; const pst: TSystemTime): BOOL;
  8504. begin
  8505.   Result := BOOL(SendMessage(hmc, MCM_SETTODAY, 0, Longint(@pst)));
  8506. end;
  8507.  
  8508. {$EXTERNALSYM MonthCal_GetToday}
  8509. function MonthCal_GetToday(hmc: HWND; var pst: TSystemTime): BOOL;
  8510. begin
  8511.   Result := BOOL(SendMessage(hmc, MCM_GETTODAY, 0, Longint(@pst)));
  8512. end;
  8513.  
  8514. {$EXTERNALSYM MonthCal_HitTest}
  8515. function MonthCal_HitTest(hmc: HWND; var info: TMCHitTestInfo): DWORD;
  8516. begin
  8517.   Result := SendMessage(hmc, MCM_HITTEST, 0, Longint(@info));
  8518. end;
  8519.  
  8520. {$EXTERNALSYM MonthCal_SetColor}
  8521. function MonthCal_SetColor(hmc: HWND; iColor: Integer; clr: TColorRef): TColorRef;
  8522. begin
  8523.   Result := TColorRef(SendMessage(hmc, MCM_SETCOLOR, iColor, clr));
  8524. end;
  8525.  
  8526. {$EXTERNALSYM MonthCal_GetColor}
  8527. function MonthCal_GetColor(hmc: HWND; iColor: Integer): TColorRef;
  8528. begin
  8529.   Result := TColorRef(SendMessage(hmc, MCM_SETCOLOR, iColor, 0));
  8530. end;
  8531.  
  8532. {$EXTERNALSYM MonthCal_SetFirstDayOfWeek}
  8533. function MonthCal_SetFirstDayOfWeek(hmc: HWND; iDay: Integer): Integer;
  8534. begin
  8535.   Result := SendMessage(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay);
  8536. end;
  8537.  
  8538. {$EXTERNALSYM MonthCal_GetFirstDayOfWeek}
  8539. function MonthCal_GetFirstDayOfWeek(hmc: HWND): Integer;
  8540. begin
  8541.   Result := SendMessage(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0);
  8542. end;
  8543.  
  8544. {$EXTERNALSYM MonthCal_GetRange}
  8545. function MonthCal_GetRange(hmc: HWND; rgst: PSystemTime): DWORD;
  8546. begin
  8547.   Result := SendMessage(hmc, MCM_GETRANGE, 0, Longint(rgst));
  8548. end;
  8549.  
  8550. {$EXTERNALSYM Monthcal_SetRange}
  8551. function Monthcal_SetRange(hmc: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  8552. begin
  8553.   Result := BOOL(SendMessage(hmc, MCM_SETRANGE, gdtr, Longint(rgst)));
  8554. end;
  8555.  
  8556. {$EXTERNALSYM MonthCal_GetMonthDelta}
  8557. function MonthCal_GetMonthDelta(hmc: HWND): Integer;
  8558. begin
  8559.   Result := SendMessage(hmc, MCM_GETMONTHDELTA, 0, 0);
  8560. end;
  8561.  
  8562. {$EXTERNALSYM MonthCal_SetMonthDelta}
  8563. function MonthCal_SetMonthDelta(hmc: HWND; n: Integer): Integer;
  8564. begin
  8565.   Result := SendMessage(hmc, MCM_SETMONTHDELTA, n, 0);
  8566. end;
  8567.  
  8568. {$EXTERNALSYM MonthCal_GetMaxTodayWidth}
  8569. function MonthCal_GetMaxTodayWidth(hmc: HWND): DWORD;
  8570. begin
  8571.   Result := SendMessage(hmc, MCM_GETMAXTODAYWIDTH, 0, 0);
  8572. end;
  8573.  
  8574. {$EXTERNALSYM MonthCal_SetUnicodeFormat}
  8575. function MonthCal_SetUnicodeFormat(hwnd: HWND; fUnicode: BOOL): BOOL;
  8576. begin
  8577.   Result := BOOL(SendMessage(hwnd, MCM_SETUNICODEFORMAT, WPARAM(fUnicode), 0));
  8578. end;
  8579.  
  8580. {$EXTERNALSYM MonthCal_GetUnicodeFormat}
  8581. function MonthCal_GetUnicodeFormat(hwnd: HWND): BOOL;
  8582. begin
  8583.   Result := BOOL(SendMessage(hwnd, MCM_GETUNICODEFORMAT, 0, 0));
  8584. end;
  8585.  
  8586. { Date/Time Picker }
  8587.  
  8588. {$EXTERNALSYM DateTime_GetSystemTime}
  8589. function DateTime_GetSystemTime(hdp: HWND; var pst: TSystemTime): DWORD;
  8590. begin
  8591.   Result := SendMessage(hdp, DTM_GETSYSTEMTIME, 0, Longint(@pst));
  8592. end;
  8593.  
  8594. {$EXTERNALSYM DateTime_SetSystemTime}
  8595. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;
  8596. begin
  8597.   Result := BOOL(SendMessage(hdp, DTM_SETSYSTEMTIME, gd, Longint(@pst)));
  8598. end;
  8599.  
  8600. {$EXTERNALSYM DateTime_GetRange}
  8601. function DateTime_GetRange(hdp: HWND; rgst: PSystemTime): DWORD;
  8602. begin
  8603.   Result := SendMessage(hdp, DTM_GETRANGE, 0, Longint(rgst));
  8604. end;
  8605.  
  8606. {$EXTERNALSYM DateTime_SetRange}
  8607. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;
  8608. begin
  8609.   Result := BOOL(SendMessage(hdp, DTM_SETRANGE, gdtr, Longint(rgst)));
  8610. end;
  8611.  
  8612. {$EXTERNALSYM DateTime_SetFormatA}
  8613. function DateTime_SetFormatA(hdp: HWND; sz: PAnsiChar): BOOL;
  8614. begin
  8615.   Result := BOOL(SendMessage(hdp, DTM_SETFORMATA, 0, Longint(sz)));
  8616. end;
  8617. {$EXTERNALSYM DateTime_SetFormatW}
  8618. function DateTime_SetFormatW(hdp: HWND; sz: PWideChar): BOOL;
  8619. begin
  8620.   Result := BOOL(SendMessage(hdp, DTM_SETFORMATW, 0, Longint(sz)));
  8621. end;
  8622. {$EXTERNALSYM DateTime_SetFormat}
  8623. function DateTime_SetFormat(hdp: HWND; sz: PChar): BOOL;
  8624. begin
  8625.   Result := BOOL(SendMessage(hdp, DTM_SETFORMAT, 0, Longint(sz)));
  8626. end;
  8627.  
  8628. {$EXTERNALSYM DateTime_SetMonthCalColor}
  8629. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): TColorRef;
  8630. begin
  8631.   Result := TColorRef(SendMessage(hdp, DTM_SETMCCOLOR, iColor, clr));
  8632. end;
  8633.  
  8634. {$EXTERNALSYM DateTime_GetMonthCalColor}
  8635. function DateTime_GetMonthCalColor(hdp: HWND; iColor: DWORD): TColorRef;
  8636. begin
  8637.   Result := SendMessage(hdp, DTM_GETMCCOLOR, iColor, 0);
  8638. end;
  8639.  
  8640. {$EXTERNALSYM DateTime_GetMonthCal}
  8641. function DateTime_GetMonthCal(hdp: HWND): HWND;
  8642. begin
  8643.   Result := SendMessage(hdp, DTM_GETMONTHCAL, 0, 0);
  8644. end;
  8645.  
  8646. {$EXTERNALSYM DateTime_SetMonthCalFont}
  8647. procedure DateTime_SetMonthCalFont(hdp: HWND; hfont: HFONT; fRedraw: BOOL);
  8648. begin
  8649.   SendMessage(hdp, DTM_SETMCFONT, WPARAM(hfont), LPARAM(fRedraw));
  8650. end;
  8651.  
  8652. {$EXTERNALSYM DateTime_GetMonthCalFont}
  8653. function DateTime_GetMonthCalFont(hdp: HWND): HFONT;
  8654. begin
  8655.   Result := HFONT(SendMessage(hdp, DTM_GETMCFONT, 0, 0));
  8656. end;
  8657.  
  8658. { IP Address edit control }
  8659.  
  8660. {$EXTERNALSYM MAKEIPRANGE}
  8661. function MAKEIPRANGE(low, high: Byte): LPARAM;
  8662. begin
  8663.   Result := high;
  8664.   Result := (Result shl 8) + low;
  8665. end;
  8666. {$EXTERNALSYM MAKEIPADDRESS}
  8667. function MAKEIPADDRESS(b1, b2, b3, b4: DWORD): LPARAM;
  8668. begin
  8669.   Result := (b1 shl 24) + (b2 shl 16) + (b3 shl 8) + b4;
  8670. end;
  8671. {$EXTERNALSYM FIRST_IPADDRESS}
  8672. function FIRST_IPADDRESS(x: DWORD): DWORD;
  8673. begin
  8674.   Result := (x shr 24) and $FF;
  8675. end;
  8676. {$EXTERNALSYM SECOND_IPADDRESS}
  8677. function SECOND_IPADDRESS(x: DWORD): DWORD;
  8678. begin
  8679.   Result := (x shr 16) and $FF;
  8680. end;
  8681. {$EXTERNALSYM THIRD_IPADDRESS}
  8682. function THIRD_IPADDRESS(x: DWORD): DWORD;
  8683. begin
  8684.   Result := (x shr 8) and $FF;
  8685. end;
  8686. {$EXTERNALSYM FOURTH_IPADDRESS}
  8687. function FOURTH_IPADDRESS(x: DWORD): DWORD;
  8688. begin
  8689.   Result := x and $FF;
  8690. end;
  8691.  
  8692. { Pager control }
  8693.  
  8694. {$EXTERNALSYM Pager_SetChild}
  8695. procedure Pager_SetChild(hwnd: HWND; hwndChild: HWND);
  8696. begin
  8697.   SendMessage(hwnd, PGM_SETCHILD, 0, LPARAM(hwndChild));
  8698. end;
  8699.  
  8700. {$EXTERNALSYM Pager_RecalcSize}
  8701. procedure Pager_RecalcSize(hwnd: HWND);
  8702. begin
  8703.   SendMessage(hwnd, PGM_RECALCSIZE, 0, 0);
  8704. end;
  8705.  
  8706. {$EXTERNALSYM Pager_ForwardMouse}
  8707. procedure Pager_ForwardMouse(hwnd: HWND; bForward: BOOL);
  8708. begin
  8709.   SendMessage(hwnd, PGM_FORWARDMOUSE, WPARAM(bForward), 0);
  8710. end;
  8711.  
  8712. {$EXTERNALSYM Pager_SetBkColor}
  8713. function Pager_SetBkColor(hwnd: HWND; clr: COLORREF): COLORREF;
  8714. begin
  8715.   Result := COLORREF(SendMessage(hwnd, PGM_SETBKCOLOR, 0, LPARAM(clr)));
  8716. end;
  8717.  
  8718. {$EXTERNALSYM Pager_GetBkColor}
  8719. function Pager_GetBkColor(hwnd: HWND): COLORREF;
  8720. begin
  8721.   Result := COLORREF(SendMessage(hwnd, PGM_GETBKCOLOR, 0, 0));
  8722. end;
  8723.  
  8724. {$EXTERNALSYM Pager_SetBorder}
  8725. function Pager_SetBorder(hwnd: HWND; iBorder: Integer): Integer;
  8726. begin
  8727.   Result := SendMessage(hwnd, PGM_SETBORDER, 0, iBorder);
  8728. end;
  8729.  
  8730. {$EXTERNALSYM Pager_GetBorder}
  8731. function Pager_GetBorder(hwnd: HWND): Integer;
  8732. begin
  8733.   Result := SendMessage(hwnd, PGM_GETBORDER, 0, 0);
  8734. end;
  8735.  
  8736. {$EXTERNALSYM Pager_SetPos}
  8737. function Pager_SetPos(hwnd: HWND; iPos: Integer): Integer;
  8738. begin
  8739.   Result := SendMessage(hwnd, PGM_SETPOS, 0, iPos);
  8740. end;
  8741.  
  8742. {$EXTERNALSYM Pager_GetPos}
  8743. function Pager_GetPos(hwnd: HWND): Integer;
  8744. begin
  8745.   Result := SendMessage(hwnd, PGM_GETPOS, 0, 0);
  8746. end;
  8747.  
  8748. {$EXTERNALSYM Pager_SetButtonSize}
  8749. function Pager_SetButtonSize(hwnd: HWND; iSize: Integer): Integer;
  8750. begin
  8751.   Result := SendMessage(hwnd, PGM_SETBUTTONSIZE, 0, iSize);
  8752. end;
  8753.  
  8754. {$EXTERNALSYM Pager_GetButtonSize}
  8755. function Pager_GetButtonSize(hwnd: HWND): Integer;
  8756. begin
  8757.   Result := SendMessage(hwnd, PGM_GETBUTTONSIZE, 0,0);
  8758. end;
  8759.  
  8760. {$EXTERNALSYM Pager_GetButtonState}
  8761. function Pager_GetButtonState(hwnd: HWND; iButton: Integer): DWORD;
  8762. begin
  8763.   Result := SendMessage(hwnd, PGM_GETBUTTONSTATE, 0, iButton);
  8764. end;
  8765.  
  8766. {$EXTERNALSYM Pager_GetDropTarget}
  8767. procedure Pager_GetDropTarget(hwnd: HWND; ppdt: Pointer{!!});
  8768. begin
  8769.   SendMessage(hwnd, PGM_GETDROPTARGET, 0, LPARAM(ppdt));
  8770. end;
  8771.  
  8772. { TrackMouseEvent }
  8773.  
  8774. {$EXTERNALSYM _TrackMouseEvent}
  8775. function _TrackMouseEvent;              external cctrl name '_TrackMouseEvent';
  8776.  
  8777. { Flat Scrollbar APIs }
  8778.  
  8779. {$EXTERNALSYM FlatSB_EnableScrollBar}
  8780. function FlatSB_EnableScrollBar;        external cctrl name 'FlatSB_EnableScrollBar';
  8781. {$EXTERNALSYM FlatSB_GetScrollInfo}
  8782. function FlatSB_GetScrollInfo;          external cctrl name 'FlatSB_GetScrollInfo';
  8783. {$EXTERNALSYM FlatSB_GetScrollPos}
  8784. function FlatSB_GetScrollPos;           external cctrl name 'FlatSB_GetScrollPos';
  8785. {$EXTERNALSYM FlatSB_GetScrollProp}
  8786. function FlatSB_GetScrollProp;          external cctrl name 'FlatSB_GetScrollProp';
  8787. {$EXTERNALSYM FlatSB_GetScrollRange}
  8788. function FlatSB_GetScrollRange;         external cctrl name 'FlatSB_GetScrollRange';
  8789. {$EXTERNALSYM FlatSB_SetScrollInfo}
  8790. function FlatSB_SetScrollInfo;          external cctrl name 'FlatSB_SetScrollInfo';
  8791. {$EXTERNALSYM FlatSB_SetScrollPos}
  8792. function FlatSB_SetScrollPos;           external cctrl name 'FlatSB_SetScrollPos';
  8793. {$EXTERNALSYM FlatSB_SetScrollProp}
  8794. function FlatSB_SetScrollProp;          external cctrl name 'FlatSB_SetScrollProp';
  8795. {$EXTERNALSYM FlatSB_SetScrollRange}
  8796. function FlatSB_SetScrollRange;         external cctrl name 'FlatSB_SetScrollRange';
  8797. {$EXTERNALSYM FlatSB_ShowScrollBar}
  8798. function FlatSB_ShowScrollBar;          external cctrl name 'FlatSB_ShowScrollBar';
  8799. {$EXTERNALSYM InitializeFlatSB}
  8800. function InitializeFlatSB;              external cctrl name 'InitializeFlatSB';
  8801. {$EXTERNALSYM UninitializeFlatSB}
  8802. procedure UninitializeFlatSB;           external cctrl name 'UninitializeFlatSB';
  8803.  
  8804. end.
  8805.