fccustomdraw.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit fccustomdraw;
  2. {
  3. //
  4. // Components : None
  5. //
  6. // Copyright (c) 1999 by Woll2Woll Software
  7. }
  8. interface
  9. uses windows, commctrl;
  10. {$i fcIfDef.pas}
  11. const
  12.   {$ifdef fcDelphi3Only}
  13.   LVM_SETICONSPACING      = LVM_FIRST + 53;
  14.   LVM_SCROLL              = LVM_FIRST + 20;
  15.   NM_CUSTOMDRAW =          NM_FIRST - 12;
  16.   CDDS_PREPAINT =          $00000001;
  17.   CDDS_POSTPAINT =         $00000002;
  18.   CDDS_PREERASE =          $00000003;
  19.   CDDS_POSTERASE =         $00000004;
  20.   LVS_OWNERDRAWFIXED =     $0400;
  21.   // the 0x000010000 bit means it's individual item specific
  22.   CDDS_ITEM =              $00010000;
  23.   CDDS_ITEMPREPAINT =      (CDDS_ITEM or CDDS_PREPAINT);
  24.   CDDS_ITEMPOSTPAINT =     (CDDS_ITEM or CDDS_POSTPAINT);
  25.   CDDS_ITEMPREERASE =      (CDDS_ITEM or CDDS_PREERASE);
  26.   CDDS_ITEMPOSTERASE =     (CDDS_ITEM or CDDS_POSTERASE);
  27.   CDDS_SUBITEM =           $00020000;
  28.   CDRF_DODEFAULT =         $00000000;
  29.   CDRF_NEWFONT =           $00000002;
  30.   CDRF_SKIPDEFAULT =       $00000004;
  31.   CDRF_NOTIFYPOSTPAINT =   $00000010;
  32.   CDRF_NOTIFYITEMDRAW =    $00000020;
  33.   CDRF_NOTIFYSUBITEMDRAW = $00000020;
  34.   CDRF_NOTIFYPOSTERASE =   $00000040;
  35.   CDIS_SELECTED =          $0001;
  36.   CDIS_GRAYED =            $0002;
  37.   CDIS_DISABLED =          $0004;
  38.   CDIS_CHECKED =           $0008;
  39.   CDIS_FOCUS =             $0010;
  40.   CDIS_DEFAULT =           $0020;
  41.   CDIS_HOT =               $0040;
  42.   CDIS_MARKED =            $0080;
  43.   CDIS_INDETERMINATE =     $0100;
  44.   TVIF_INTEGRAL =          $0080;
  45.   TVS_CHECKBOXES =         $0100;
  46.   TVM_GETITEMHEIGHT =      (TV_FIRST + 28);
  47.   TVM_SETITEMHEIGHT =      (TV_FIRST + 27);
  48.   TVM_SETINSERTMARK =      (TV_FIRST + 26);
  49.   TVM_SETINSERTMARKCOLOR = (TV_FIRST + 37);
  50.   TVM_GETINSERTMARKCOLOR = (TV_FIRST + 38);
  51.   TVM_SETSCROLLTIME =      (TV_FIRST + 33);
  52.   TVM_GETSCROLLTIME =      (TV_FIRST + 34);
  53.   {$endif}
  54.   wwItemStates: array[0..8] of LongInt = (
  55.     CDIS_SELECTED, CDIS_GRAYED, CDIS_DISABLED, CDIS_CHECKED, CDIS_FOCUS,
  56.     CDIS_DEFAULT, CDIS_HOT, CDIS_MARKED, CDIS_INDETERMINATE
  57.   );
  58. type
  59.   TNMCustomDraw = packed record
  60.     hdr: TNMHDR;
  61.     dwDrawStage: DWORD;
  62.     dc: HDC;
  63.     rc: TRect;
  64.     dwItemSpec: DWORD;
  65.     uItemState: UINT;
  66.     lItemlParam: LPARAM;
  67.   end;
  68.   PNMCustomDraw = ^TNMCustomDraw;
  69.   TNMLVCustomDraw = packed record
  70.     nmcd: TNMCustomDraw;
  71.     clrText: COLORREF;
  72.     clrTextBk: COLORREF;
  73.     iSubItem: Integer;
  74.   end;
  75.   PNMLVCustomDraw = ^TNMLVCustomDraw;
  76.   TNMTVCustomDraw = packed record
  77.     nmcd: TNMCustomDraw;
  78.     clrText: COLORREF;
  79.     clrTextBk: COLORREF;
  80.     iLevel: Integer;
  81.   end;
  82.   PNMTVCustomDraw = ^TNMTVCustomDraw;
  83.   TNMTTCustomDraw = packed record
  84.     nmcd: TNMCustomDraw;
  85.     uDrawFlags: UINT;
  86.   end;
  87.   PNMTTCustomDraw = ^TNMTTCustomDraw;
  88.   TNMTTDispInfo = packed record
  89.     hdr: TNMHdr;
  90.     lpszText: PAnsiChar;
  91.     szText: array[0..79] of AnsiChar;
  92.     hinst: HINST;
  93.     uFlags: UINT;
  94.     lParam: LPARAM;
  95.   end;
  96.   PNMTTDispInfo = ^TNMTTDispInfo;
  97.   TTVItemEx = packed record
  98.     mask: UINT;
  99.     hItem: HTREEITEM;
  100.     state: UINT;
  101.     stateMask: UINT;
  102.     pszText: PChar;
  103.     cchTextMax: Integer;
  104.     iImage: Integer;
  105.     iSelectedImage: Integer;
  106.     cChildren: Integer;
  107.     lParam: LPARAM;
  108.     iIntegral: Integer;
  109.   end;
  110.   PTVItemEx = ^TTVItemEx;
  111. {$ifdef fcDelphi3Only}
  112. function TreeView_GetItemHeight(Handle: HWND): Integer;
  113. function TreeView_SetItemHeight(Handle: HWND; cyItem: SmallInt): Integer;
  114. function TreeView_GetInsertMarkColor(Handle: HWND): COLORREF;
  115. function TreeView_SetInsertMarkColor(Handle: HWND; Clr: COLORREF): COLORREF;
  116. function TreeView_SetInsertMark(Handle: HWND; hItem: HTREEITEM; fAfter: Boolean): Boolean;
  117. function TreeView_SetScrollTime(Handle: HWND; uTime: UINT): UINT;
  118. function TreeView_GetScrollTime(Handle: HWND): UINT;
  119. {$endif}
  120. implementation
  121. {$ifdef fcDelphi3}
  122. function TreeView_GetItemHeight(Handle: HWND): Integer;
  123. begin
  124.   result := SendMessage(Handle, TVM_GETITEMHEIGHT, 0, 0);
  125. end;
  126. function TreeView_SetItemHeight(Handle: HWND; cyItem: SmallInt): Integer;
  127. begin
  128.   result := SendMessage(Handle, TVM_SETITEMHEIGHT, cyItem, 0);
  129. end;
  130. function TreeView_GetInsertMarkColor(Handle: HWND): COLORREF;
  131. begin
  132.   result := COLORREF(SendMessage(Handle, TVM_GETINSERTMARKCOLOR, 0, 0));
  133. end;
  134. function TreeView_SetInsertMarkColor(Handle: HWND; Clr: COLORREF): COLORREF;
  135. begin
  136.   result := COLORREF(SendMessage(Handle, TVM_SETINSERTMARKCOLOR, 0, LParam(Clr)));
  137. end;
  138. function TreeView_SetInsertMark(Handle: HWND; hItem: HTREEITEM; fAfter: Boolean): Boolean;
  139. begin
  140.   result := Boolean(SendMessage(Handle, TVM_SETINSERTMARK, WParam(fAfter), LParam(hItem)));
  141. end;
  142. function TreeView_SetScrollTime(Handle: HWND; uTime: UINT): UINT;
  143. begin
  144.   result := UINT(SendMessage(Handle, TVM_SETSCROLLTIME, uTime, 0));
  145. end;
  146. function TreeView_GetScrollTime(Handle: HWND): UINT;
  147. begin
  148.   result := UINT(SendMessage(Handle, TVM_GETSCROLLTIME, 0, 0));
  149. end;
  150. {$endif}
  151. end.