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

Delphi控件源码

开发平台:

Delphi

  1. // Borland C++ Builder
  2. // Copyright (c) 1995, 1999 by Borland International
  3. // All rights reserved
  4. // (DO NOT EDIT: machine generated header) 'fcTreeView.pas' rev: 5.00
  5. #ifndef fcTreeViewHPP
  6. #define fcTreeViewHPP
  7. #pragma delphiheader begin
  8. #pragma option push -w-
  9. #pragma option push -Vx
  10. #include <Menus.hpp> // Pascal unit
  11. #include <ImgList.hpp> // Pascal unit
  12. #include <ShellAPI.hpp> // Pascal unit
  13. #include <fcCommon.hpp> // Pascal unit
  14. #include <ExtCtrls.hpp> // Pascal unit
  15. #include <fcCanvas.hpp> // Pascal unit
  16. #include <fccustomdraw.hpp> // Pascal unit
  17. #include <ComCtrls.hpp> // Pascal unit
  18. #include <Consts.hpp> // Pascal unit
  19. #include <ComStrs.hpp> // Pascal unit
  20. #include <Commctrl.hpp> // Pascal unit
  21. #include <Dialogs.hpp> // Pascal unit
  22. #include <Forms.hpp> // Pascal unit
  23. #include <Controls.hpp> // Pascal unit
  24. #include <Graphics.hpp> // Pascal unit
  25. #include <Classes.hpp> // Pascal unit
  26. #include <SysUtils.hpp> // Pascal unit
  27. #include <Messages.hpp> // Pascal unit
  28. #include <Windows.hpp> // Pascal unit
  29. #include <SysInit.hpp> // Pascal unit
  30. #include <System.hpp> // Pascal unit
  31. //-- user supplied -----------------------------------------------------------
  32. namespace Fctreeview
  33. {
  34. //-- type declarations -------------------------------------------------------
  35. #pragma option push -b-
  36. enum TfcItemState { fcisSelected, fcisGrayed, fcisDisabled, fcisChecked, fcisFocused, fcisDefault, fcisHot, 
  37. fcisMarked, fcisIndeterminate };
  38. #pragma option pop
  39. typedef Set<TfcItemState, fcisSelected, fcisIndeterminate>  TfcItemStates;
  40. class DELPHICLASS TfcCustomTreeView;
  41. class DELPHICLASS TfcTreeNode;
  42. typedef void __fastcall (__closure *TfcTVDrawTextEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  43. , const Windows::TRect &ARect, TfcItemStates AItemState, bool &DefaultDrawing);
  44. typedef void __fastcall (__closure *TfcTreeMouseMoveEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* 
  45. Node, Classes::TShiftState Shift, int X, int Y);
  46. typedef void __fastcall (__closure *TfcTreeMouseEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  47. , Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
  48. #pragma option push -b-
  49. enum TfcNodeState { fcnsCut, fcnsDropHilited, fcnsFocused, fcnsSelected, fcnsExpanded };
  50. #pragma option pop
  51. #pragma option push -b-
  52. enum TfcNodeAttachMode { fcnaAdd, fcnaAddFirst, fcnaAddChild, fcnaAddChildFirst, fcnaInsert, fcnaInsertAfter 
  53. };
  54. #pragma option pop
  55. #pragma option push -b-
  56. enum TfcAddMode { fctaAddFirst, fctaAdd, fctaInsert };
  57. #pragma option pop
  58. #pragma option push -b-
  59. enum TfcTreeViewCheckboxType { tvctNone, tvctCheckbox, tvctRadioGroup };
  60. #pragma option pop
  61. #pragma option push -b-
  62. enum TfcTreeViewOption { tvoExpandOnDblClk, tvoExpandButtons3D, tvoFlatCheckBoxes, tvoHideSelection, 
  63. tvoRowSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoHotTrack, tvoAutoURL, tvoToolTips, tvoEditText, 
  64. tvo3StateCheckbox };
  65. #pragma option pop
  66. typedef Set<TfcTreeViewOption, tvoExpandOnDblClk, tvo3StateCheckbox>  TfcTreeViewOptions;
  67. struct TfcNodeInfo;
  68. typedef TfcNodeInfo *PfcNodeInfo;
  69. #pragma pack(push, 1)
  70. struct TfcNodeInfo
  71. {
  72. int ImageIndex;
  73. int SelectedIndex;
  74. int StateIndex;
  75. int OverlayIndex;
  76. TfcTreeViewCheckboxType CheckboxType;
  77. Byte Checked;
  78. bool Expanded;
  79. char DummyPad[3];
  80. void *Data;
  81. int StringDataSize1;
  82. int StringDataSize2;
  83. int Count;
  84. System::SmallString<255>  Text;
  85. } ;
  86. #pragma pack(pop)
  87. class DELPHICLASS TfcTreeNodes;
  88. struct TfcNodeCache
  89. {
  90. TfcTreeNode* CacheNode;
  91. int CacheIndex;
  92. } ;
  93. #pragma option push -b-
  94. enum TwwStoreData { sdStoreText, sdStoreData1, sdStoreData2 };
  95. #pragma option pop
  96. class PASCALIMPLEMENTATION TfcTreeNodes : public Classes::TPersistent 
  97. {
  98. typedef Classes::TPersistent inherited;
  99. private:
  100. TfcCustomTreeView* FOwner;
  101. int FUpdateCount;
  102. TfcNodeCache FNodeCache;
  103. bool InDestroy;
  104. void __fastcall AddedNode(TfcTreeNode* Value);
  105. HWND __fastcall GetHandle(void);
  106. TfcTreeNode* __fastcall GetNodeFromIndex(int Index);
  107. void __fastcall ReadData(Classes::TStream* Stream);
  108. void __fastcall Repaint(TfcTreeNode* Node);
  109. void __fastcall WriteData(Classes::TStream* Stream);
  110. void __fastcall ClearCache(void);
  111. void __fastcall ReadStreamVersion(Classes::TReader* Reader);
  112. void __fastcall WriteStreamVersion(Classes::TWriter* Writer);
  113. protected:
  114. HTREEITEM __fastcall AddItem(HTREEITEM Parent, HTREEITEM Target, const tagTVITEMA &Item, TfcAddMode 
  115. AddMode);
  116. TfcTreeNode* __fastcall InternalAddObject(TfcTreeNode* Node, const AnsiString S, void * Ptr, TfcAddMode 
  117. AddMode);
  118. virtual void __fastcall DefineProperties(Classes::TFiler* Filer);
  119. tagTVITEMA __fastcall CreateItem(TfcTreeNode* Node);
  120. int __fastcall GetCount(void);
  121. void __fastcall SetItem(int Index, TfcTreeNode* Value);
  122. void __fastcall SetUpdateState(bool Updating);
  123. public:
  124. __fastcall TfcTreeNodes(TfcCustomTreeView* AOwner);
  125. __fastcall virtual ~TfcTreeNodes(void);
  126. TfcTreeNode* __fastcall AddChildFirst(TfcTreeNode* Node, const AnsiString S);
  127. TfcTreeNode* __fastcall AddChild(TfcTreeNode* Node, const AnsiString S);
  128. TfcTreeNode* __fastcall AddChildObjectFirst(TfcTreeNode* Node, const AnsiString S, void * Ptr);
  129. TfcTreeNode* __fastcall AddChildObject(TfcTreeNode* Node, const AnsiString S, void * Ptr);
  130. TfcTreeNode* __fastcall AddFirst(TfcTreeNode* Node, const AnsiString S);
  131. TfcTreeNode* __fastcall Add(TfcTreeNode* Node, const AnsiString S);
  132. TfcTreeNode* __fastcall AddObjectFirst(TfcTreeNode* Node, const AnsiString S, void * Ptr);
  133. TfcTreeNode* __fastcall AddObject(TfcTreeNode* Node, const AnsiString S, void * Ptr);
  134. virtual void __fastcall Assign(Classes::TPersistent* Source);
  135. void __fastcall BeginUpdate(void);
  136. void __fastcall Clear(void);
  137. void __fastcall Delete(TfcTreeNode* Node);
  138. void __fastcall EndUpdate(void);
  139. TfcTreeNode* __fastcall GetFirstNode(void);
  140. TfcTreeNode* __fastcall GetNode(HTREEITEM ItemId);
  141. TfcTreeNode* __fastcall Insert(TfcTreeNode* Node, const AnsiString S);
  142. TfcTreeNode* __fastcall InsertObject(TfcTreeNode* Node, const AnsiString S, void * Ptr);
  143. TfcTreeNode* __fastcall FindNode(AnsiString SearchText, bool VisibleOnly);
  144. TfcTreeNode* __fastcall FindNodeInfo(AnsiString SearchText, bool VisibleOnly, TwwStoreData StoreDataUsing
  145. );
  146. __property int Count = {read=GetCount, nodefault};
  147. __property HWND Handle = {read=GetHandle, nodefault};
  148. __property TfcTreeNode* Item[int Index] = {read=GetNodeFromIndex/*, default*/};
  149. __property TfcCustomTreeView* Owner = {read=FOwner};
  150. };
  151. class PASCALIMPLEMENTATION TfcTreeNode : public Classes::TPersistent 
  152. {
  153. typedef Classes::TPersistent inherited;
  154. private:
  155. bool FMultiSelected;
  156. TfcTreeViewCheckboxType FCheckboxType;
  157. bool FChecked;
  158. TfcTreeNodes* FOwner;
  159. AnsiString FText;
  160. AnsiString FStringData1;
  161. AnsiString FStringData2;
  162. void *FData;
  163. _TREEITEM *FItemId;
  164. int FImageIndex;
  165. int FSelectedIndex;
  166. int FOverlayIndex;
  167. int FStateIndex;
  168. bool FDeleting;
  169. bool FInTree;
  170. bool FGrayed;
  171. void __fastcall SetCheckboxType(TfcTreeViewCheckboxType val);
  172. bool __fastcall CompareCount(int CompareMe);
  173. bool __fastcall DoCanExpand(bool Expand);
  174. void __fastcall DoExpand(bool Expand);
  175. void __fastcall ExpandItem(bool Expand, bool Recurse);
  176. int __fastcall GetAbsoluteIndex(void);
  177. bool __fastcall GetExpanded(void);
  178. int __fastcall GetLevel(void);
  179. TfcTreeNode* __fastcall GetParent(void);
  180. bool __fastcall GetChildren(void);
  181. bool __fastcall GetCut(void);
  182. bool __fastcall GetDropTarget(void);
  183. bool __fastcall GetFocused(void);
  184. int __fastcall GetIndex(void);
  185. TfcTreeNode* __fastcall GetItem(int Index);
  186. bool __fastcall GetSelected(void);
  187. bool __fastcall GetState(TfcNodeState NodeState);
  188. int __fastcall GetCount(void);
  189. TfcCustomTreeView* __fastcall GetTreeView(void);
  190. void __fastcall InternalMove(TfcTreeNode* ParentNode, TfcTreeNode* Node, HTREEITEM HItem, TfcAddMode 
  191. AddMode);
  192. bool __fastcall IsNodeVisible(void);
  193. void __fastcall SetChildren(bool Value);
  194. void __fastcall SetCut(bool Value);
  195. void __fastcall SetData(void * Value);
  196. void __fastcall SetDropTarget(bool Value);
  197. void __fastcall SetItem(int Index, TfcTreeNode* Value);
  198. void __fastcall SetExpanded(bool Value);
  199. void __fastcall SetFocused(bool Value);
  200. void __fastcall SetImageIndex(int Value);
  201. void __fastcall SetOverlayIndex(int Value);
  202. void __fastcall SetSelectedIndex(int Value);
  203. void __fastcall SetSelected(bool Value);
  204. void __fastcall SetStateIndex(int Value);
  205. void __fastcall SetText(const AnsiString S);
  206. bool __fastcall GetMultiSelected(void);
  207. void __fastcall SetMultiSelected(bool Value);
  208. void __fastcall SetChecked(bool val);
  209. void __fastcall SetGrayed(bool val);
  210. protected:
  211. int ReadDataSize;
  212. virtual void __fastcall Invalidate(void);
  213. virtual int __fastcall GetSizeOfNodeInfo(void);
  214. virtual void __fastcall ReadData(Classes::TStream* Stream, PfcNodeInfo Info);
  215. virtual void __fastcall WriteData(Classes::TStream* Stream, PfcNodeInfo Info);
  216. public:
  217. Variant Patch;
  218. int __fastcall GetStateIndex(void);
  219. bool __fastcall IsRadioGroup(void);
  220. virtual AnsiString __fastcall GetSortText(void);
  221. __fastcall virtual TfcTreeNode(TfcTreeNodes* AOwner);
  222. __fastcall virtual ~TfcTreeNode(void);
  223. bool __fastcall AlphaSort(void);
  224. virtual void __fastcall Assign(Classes::TPersistent* Source);
  225. void __fastcall Collapse(bool Recurse);
  226. bool __fastcall CustomSort(PFNTVCOMPARE SortProc, int Data);
  227. void __fastcall Delete(void);
  228. void __fastcall DeleteChildren(void);
  229. Windows::TRect __fastcall DisplayRect(bool TextOnly);
  230. bool __fastcall EditText(void);
  231. void __fastcall EndEdit(bool Cancel);
  232. void __fastcall Expand(bool Recurse);
  233. TfcTreeNode* __fastcall GetFirstChild(void);
  234. HWND __fastcall GetHandle(void);
  235. TfcTreeNode* __fastcall GetLastChild(void);
  236. TfcTreeNode* __fastcall GetNext(void);
  237. TfcTreeNode* __fastcall GetNextChild(TfcTreeNode* Value);
  238. TfcTreeNode* __fastcall GetNextSibling(void);
  239. TfcTreeNode* __fastcall GetNextVisible(void);
  240. TfcTreeNode* __fastcall GetPrev(void);
  241. TfcTreeNode* __fastcall GetPrevChild(TfcTreeNode* Value);
  242. TfcTreeNode* __fastcall GetPrevSibling(void);
  243. TfcTreeNode* __fastcall GetPrevVisible(void);
  244. bool __fastcall HasAsParent(TfcTreeNode* Value);
  245. int __fastcall IndexOf(TfcTreeNode* Value);
  246. void __fastcall MakeVisible(void);
  247. virtual void __fastcall MoveTo(TfcTreeNode* Destination, TfcNodeAttachMode Mode);
  248. __property int AbsoluteIndex = {read=GetAbsoluteIndex, nodefault};
  249. __property int Count = {read=GetCount, nodefault};
  250. __property bool Cut = {read=GetCut, write=SetCut, nodefault};
  251. __property void * Data = {read=FData, write=SetData};
  252. __property bool Deleting = {read=FDeleting, nodefault};
  253. __property bool Focused = {read=GetFocused, write=SetFocused, nodefault};
  254. __property bool DropTarget = {read=GetDropTarget, write=SetDropTarget, nodefault};
  255. __property bool Selected = {read=GetSelected, write=SetSelected, nodefault};
  256. __property bool Expanded = {read=GetExpanded, write=SetExpanded, nodefault};
  257. __property HWND Handle = {read=GetHandle, nodefault};
  258. __property bool HasChildren = {read=GetChildren, write=SetChildren, nodefault};
  259. __property int ImageIndex = {read=FImageIndex, write=SetImageIndex, nodefault};
  260. __property int Index = {read=GetIndex, nodefault};
  261. __property bool IsVisible = {read=IsNodeVisible, nodefault};
  262. __property TfcTreeNode* Item[int Index] = {read=GetItem, write=SetItem/*, default*/};
  263. __property HTREEITEM ItemId = {read=FItemId};
  264. __property int Level = {read=GetLevel, nodefault};
  265. __property int OverlayIndex = {read=FOverlayIndex, write=SetOverlayIndex, nodefault};
  266. __property TfcTreeNodes* Owner = {read=FOwner};
  267. __property TfcTreeNode* Parent = {read=GetParent};
  268. __property int SelectedIndex = {read=FSelectedIndex, write=SetSelectedIndex, nodefault};
  269. __property int StateIndex = {read=FStateIndex, write=SetStateIndex, nodefault};
  270. __property AnsiString Text = {read=FText, write=SetText};
  271. __property AnsiString StringData = {read=FStringData1, write=FStringData1};
  272. __property AnsiString StringData2 = {read=FStringData2, write=FStringData2};
  273. __property TfcCustomTreeView* TreeView = {read=GetTreeView};
  274. __property bool Checked = {read=FChecked, write=SetChecked, nodefault};
  275. __property bool Grayed = {read=FGrayed, write=SetGrayed, nodefault};
  276. __property TfcTreeViewCheckboxType CheckboxType = {read=FCheckboxType, write=SetCheckboxType, nodefault
  277. };
  278. __property bool MultiSelected = {read=GetMultiSelected, write=SetMultiSelected, nodefault};
  279. };
  280. typedef TfcNodeCache *PfcNodeCache;
  281. class DELPHICLASS TfcTVMultiSelectAttributes;
  282. class PASCALIMPLEMENTATION TfcTVMultiSelectAttributes : public Classes::TPersistent 
  283. {
  284. typedef Classes::TPersistent inherited;
  285. private:
  286. bool FEnabled;
  287. bool FAutoUnselect;
  288. int FMultiSelectLevel;
  289. bool FMultiSelectCheckbox;
  290. TfcCustomTreeView* TreeView;
  291. void __fastcall SetEnabled(bool val);
  292. void __fastcall SetMultiSelectLevel(int val);
  293. void __fastcall SetMultiSelectCheckBox(bool val);
  294. public:
  295. __fastcall TfcTVMultiSelectAttributes(Classes::TComponent* Owner);
  296. virtual void __fastcall Assign(Classes::TPersistent* Source);
  297. __published:
  298. __property bool AutoUnselect = {read=FAutoUnselect, write=FAutoUnselect, default=1};
  299. __property bool Enabled = {read=FEnabled, write=SetEnabled, default=0};
  300. __property int MultiSelectLevel = {read=FMultiSelectLevel, write=SetMultiSelectLevel, default=0};
  301. __property bool MultiSelectCheckbox = {read=FMultiSelectCheckbox, write=SetMultiSelectCheckBox, default=1
  302. };
  303. public:
  304. #pragma option push -w-inl
  305. /* TPersistent.Destroy */ inline __fastcall virtual ~TfcTVMultiSelectAttributes(void) { }
  306. #pragma option pop
  307. };
  308. #pragma option push -b-
  309. enum TfcHitTest { fchtAbove, fchtBelow, fchtNowhere, fchtOnItem, fchtOnButton, fchtOnIcon, fchtOnIndent, 
  310. fchtOnLabel, fchtOnRight, fchtOnStateIcon, fchtToLeft, fchtToRight };
  311. #pragma option pop
  312. typedef Set<TfcHitTest, fchtAbove, fchtToRight>  TfcHitTests;
  313. #pragma option push -b-
  314. enum TfcSortType { fcstNone, fcstData, fcstText, fcstBoth };
  315. #pragma option pop
  316. class DELPHICLASS EfcTreeViewError;
  317. class PASCALIMPLEMENTATION EfcTreeViewError : public Sysutils::Exception 
  318. {
  319. typedef Sysutils::Exception inherited;
  320. public:
  321. #pragma option push -w-inl
  322. /* Exception.Create */ inline __fastcall EfcTreeViewError(const AnsiString Msg) : Sysutils::Exception(
  323. Msg) { }
  324. #pragma option pop
  325. #pragma option push -w-inl
  326. /* Exception.CreateFmt */ inline __fastcall EfcTreeViewError(const AnsiString Msg, const System::TVarRec 
  327. * Args, const int Args_Size) : Sysutils::Exception(Msg, Args, Args_Size) { }
  328. #pragma option pop
  329. #pragma option push -w-inl
  330. /* Exception.CreateRes */ inline __fastcall EfcTreeViewError(int Ident)/* overload */ : Sysutils::Exception(
  331. Ident) { }
  332. #pragma option pop
  333. #pragma option push -w-inl
  334. /* Exception.CreateResFmt */ inline __fastcall EfcTreeViewError(int Ident, const System::TVarRec * 
  335. Args, const int Args_Size)/* overload */ : Sysutils::Exception(Ident, Args, Args_Size) { }
  336. #pragma option pop
  337. #pragma option push -w-inl
  338. /* Exception.CreateHelp */ inline __fastcall EfcTreeViewError(const AnsiString Msg, int AHelpContext
  339. ) : Sysutils::Exception(Msg, AHelpContext) { }
  340. #pragma option pop
  341. #pragma option push -w-inl
  342. /* Exception.CreateFmtHelp */ inline __fastcall EfcTreeViewError(const AnsiString Msg, const System::TVarRec 
  343. * Args, const int Args_Size, int AHelpContext) : Sysutils::Exception(Msg, Args, Args_Size, AHelpContext
  344. ) { }
  345. #pragma option pop
  346. #pragma option push -w-inl
  347. /* Exception.CreateResHelp */ inline __fastcall EfcTreeViewError(int Ident, int AHelpContext)/* overload */
  348.  : Sysutils::Exception(Ident, AHelpContext) { }
  349. #pragma option pop
  350. #pragma option push -w-inl
  351. /* Exception.CreateResFmtHelp */ inline __fastcall EfcTreeViewError(System::PResStringRec ResStringRec
  352. , const System::TVarRec * Args, const int Args_Size, int AHelpContext)/* overload */ : Sysutils::Exception(
  353. ResStringRec, Args, Args_Size, AHelpContext) { }
  354. #pragma option pop
  355. public:
  356. #pragma option push -w-inl
  357. /* TObject.Destroy */ inline __fastcall virtual ~EfcTreeViewError(void) { }
  358. #pragma option pop
  359. };
  360. typedef void __fastcall (__closure *TfcTVChangingEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  361. , bool &AllowChange);
  362. typedef void __fastcall (__closure *TfcTVChangedEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  363. );
  364. typedef void __fastcall (__closure *TfcTVEditingEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  365. , bool &AllowEdit);
  366. typedef void __fastcall (__closure *TfcTVEditedEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  367. , AnsiString &S);
  368. typedef void __fastcall (__closure *TfcTVExpandingEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  369. , bool &AllowExpansion);
  370. typedef void __fastcall (__closure *TfcTVCollapsingEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* 
  371. Node, bool &AllowCollapse);
  372. typedef void __fastcall (__closure *TfcTVExpandedEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  373. );
  374. typedef void __fastcall (__closure *TfcTVCompareEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node1
  375. , TfcTreeNode* Node2, int Data, int &Compare);
  376. typedef void __fastcall (__closure *TfcTVCustomDrawEvent)(TfcCustomTreeView* TreeView, const Windows::TRect 
  377. &ARect, bool &DefaultDraw);
  378. typedef void __fastcall (__closure *TfcCalcNodeAttributesEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* 
  379. Node, TfcItemStates State);
  380. #pragma option push -b-
  381. enum TfcItemChangeAction { icaAdd, icaDelete, icaText, icaImageIndex };
  382. #pragma option pop
  383. typedef void __fastcall (__closure *TfcItemChangeEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* Node
  384. , TfcItemChangeAction Action, const Variant &NewValue);
  385. typedef void __fastcall (__closure *TfcToggleCheckboxEvent)(TfcCustomTreeView* TreeView, TfcTreeNode* 
  386. Node);
  387. typedef TMetaClass*TfcTreeNodeClass;
  388. class PASCALIMPLEMENTATION TfcCustomTreeView : public Controls::TWinControl 
  389. {
  390. typedef Controls::TWinControl inherited;
  391. private:
  392. TfcItemChangeEvent FOnItemChange;
  393. bool FAutoExpand;
  394. Forms::TFormBorderStyle FBorderStyle;
  395. Fccanvas::TfcCanvas* FCanvas;
  396. Fccanvas::TfcCanvas* FPaintCanvas;
  397. bool FCanvasChanged;
  398. void *FDefEditProc;
  399. bool FDragged;
  400. Controls::TDragImageList* FDragImage;
  401. TfcTreeNode* FDragNode;
  402. HWND FEditHandle;
  403. void *FEditInstance;
  404. Imglist::TChangeLink* FImageChangeLink;
  405. Imglist::TCustomImageList* FImages;
  406. TfcTreeNode* FLastDropTarget;
  407. bool FManualNotify;
  408. Classes::TMemoryStream* FMemStream;
  409. TfcTreeNode* FRClickNode;
  410. bool FRightClickSelects;
  411. bool FReadOnly;
  412. int FSaveIndex;
  413. int FSaveIndent;
  414. Classes::TStringList* FSaveItems;
  415. int FSaveTopIndex;
  416. TfcSortType FSortType;
  417. bool FStateChanging;
  418. Imglist::TCustomImageList* FStateImages;
  419. Imglist::TChangeLink* FStateChangeLink;
  420. bool FStreamExpandedNode;
  421. TfcTreeNodes* FTreeNodes;
  422. WideString FWideText;
  423. TfcTVEditingEvent FOnEditing;
  424. TfcTVEditedEvent FOnEdited;
  425. TfcTVExpandedEvent FOnExpanded;
  426. TfcTVExpandingEvent FOnExpanding;
  427. TfcTVExpandedEvent FOnCollapsed;
  428. TfcTVCollapsingEvent FOnCollapsing;
  429. TfcTVChangingEvent FOnChanging;
  430. TfcTVChangedEvent FOnChange;
  431. TfcTVCompareEvent FOnCompare;
  432. TfcTVExpandedEvent FOnDeletion;
  433. TfcTVExpandedEvent FOnGetImageIndex;
  434. TfcTVExpandedEvent FOnGetSelectedIndex;
  435. Graphics::TColor FLineColor;
  436. Graphics::TColor FInactiveFocusColor;
  437. TfcTreeMouseEvent FOnMouseDown;
  438. TfcTreeMouseEvent FOnMouseUp;
  439. TfcTreeMouseEvent FOnDblClick;
  440. TfcTreeMouseMoveEvent FOnMouseMove;
  441. TfcToggleCheckboxEvent FOnToggleCheckbox;
  442. TMetaClass*FNodeClass;
  443. TfcTVMultiSelectAttributes* FMultiSelectAttributes;
  444. TfcCalcNodeAttributesEvent FOnCalcNodeAttributes;
  445. int FBorderWidth;
  446. TfcTVDrawTextEvent FOnDrawText;
  447. TfcTreeViewOptions FOptions;
  448. bool FDisableThemes;
  449. Graphics::TBitmap* FPaintBitmap;
  450. int FIndent;
  451. TfcTreeNode* LastSelectedNode;
  452. TfcTreeNode* MouseNode;
  453. TfcTreeNode* LastMouseMoveNode;
  454. TfcHitTests LastMouseHitTest;
  455. TfcTreeNode* ClickedNode;
  456. bool Down;
  457. TfcTreeNode* EditNode;
  458. TfcTreeNode* BeforeMouseDownNode;
  459. int FStreamVersion;
  460. bool FUsePaintBuffering;
  461. void __fastcall CanvasChanged(System::TObject* Sender);
  462. HIDESBASE MESSAGE void __fastcall CMColorChanged(Messages::TMessage &Message);
  463. HIDESBASE MESSAGE void __fastcall CMCtl3DChanged(Messages::TMessage &Message);
  464. HIDESBASE MESSAGE void __fastcall CMFontChanged(Messages::TMessage &Message);
  465. HIDESBASE MESSAGE void __fastcall CMDrag(Controls::TCMDrag &Message);
  466. MESSAGE void __fastcall CNNotify(Messages::TWMNotify &Message);
  467. HIDESBASE MESSAGE void __fastcall WMNCHitTest(Messages::TWMNCHitTest &Message);
  468. void __fastcall EditWndProc(Messages::TMessage &Message);
  469. void __fastcall DoDragOver(Controls::TDragObject* Source, int X, int Y, bool CanDrop);
  470. int __fastcall GetChangeDelay(void);
  471. TfcTreeNode* __fastcall GetDropTarget(void);
  472. int __fastcall GetIndent(void);
  473. TfcTreeNode* __fastcall GetNodeFromItem(const tagTVITEMA &Item);
  474. TfcTreeNode* __fastcall GetSelection(void);
  475. TfcTreeNode* __fastcall GetTopItem(void);
  476. void __fastcall ImageListChange(System::TObject* Sender);
  477. void __fastcall SetAutoExpand(bool Value);
  478. void __fastcall SetBorderStyle(Forms::TBorderStyle Value);
  479. void __fastcall SetChangeDelay(int Value);
  480. void __fastcall SetDropTarget(TfcTreeNode* Value);
  481. void __fastcall SetImageList(unsigned Value, int Flags);
  482. void __fastcall SetIndent(int Value);
  483. void __fastcall SetImages(Imglist::TCustomImageList* Value);
  484. void __fastcall SetReadOnly(bool Value);
  485. void __fastcall SetSelection(TfcTreeNode* Value);
  486. void __fastcall SetSortType(TfcSortType Value);
  487. void __fastcall SetStateImages(Imglist::TCustomImageList* Value);
  488. void __fastcall SeTfcTreeNodes(TfcTreeNodes* Value);
  489. void __fastcall SetTopItem(TfcTreeNode* Value);
  490. void __fastcall OnChangeTimer(System::TObject* Sender);
  491. HIDESBASE MESSAGE void __fastcall WMLButtonDown(Messages::TWMMouse &Message);
  492. HIDESBASE MESSAGE void __fastcall WMRButtonDown(Messages::TWMMouse &Message);
  493. HIDESBASE MESSAGE void __fastcall WMRButtonUp(Messages::TWMMouse &Message);
  494. HIDESBASE MESSAGE void __fastcall WMLButtonDblClk(Messages::TWMMouse &Message);
  495. HIDESBASE MESSAGE void __fastcall WMNotify(Messages::TWMNotify &Message);
  496. HIDESBASE MESSAGE void __fastcall CMSysColorChange(Messages::TMessage &Message);
  497. HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Message);
  498. HIDESBASE MESSAGE void __fastcall WMEraseBkgnd(Messages::TWMEraseBkgnd &Message);
  499. HIDESBASE MESSAGE void __fastcall CMExit(Messages::TMessage &Message);
  500. HIDESBASE MESSAGE void __fastcall CMDesignHitTest(Messages::TWMMouse &Message);
  501. HIDESBASE MESSAGE void __fastcall WMDestroy(Messages::TWMNoParams &Message);
  502. bool __fastcall ValidMultiSelectLevel(int ALevel);
  503. bool __fastcall CheckboxNeeded(TfcTreeNode* Node);
  504. Windows::TPoint __fastcall GetCenterPoint(const Windows::TRect &ARect);
  505. void __fastcall SetOptions(TfcTreeViewOptions Value);
  506. void __fastcall SetLineColor(Graphics::TColor Value);
  507. void __fastcall SetInactiveFocusColor(Graphics::TColor Value);
  508. Shortint __fastcall GetItemHeight(void);
  509. void __fastcall SetItemHeight(Shortint Value);
  510. int __fastcall GetScrollTime(void);
  511. void __fastcall SetScrollTime(int Value);
  512. int __fastcall GetMultiSelectListCount(void);
  513. TfcTreeNode* __fastcall GetMultiSelectItem(int Index);
  514. void __fastcall HintTimerEvent(System::TObject* Sender);
  515. Fccanvas::TfcCanvas* __fastcall GetPaintCanvas(void);
  516. protected:
  517. Classes::TList* FMultiSelectList;
  518. bool SkipErase;
  519. bool SkipChangeMessages;
  520. bool InLoading;
  521. Extctrls::TTimer* FChangeTimer;
  522. int DisplayedItems;
  523. bool FMouseInControl;
  524. Controls::THintWindow* HintWindow;
  525. Extctrls::TTimer* HintTimer;
  526. int HintTimerCount;
  527. TfcTreeNode* LastHintNode;
  528. DYNAMIC bool __fastcall CanEdit(TfcTreeNode* Node);
  529. DYNAMIC bool __fastcall CanChange(TfcTreeNode* Node);
  530. DYNAMIC bool __fastcall CanCollapse(TfcTreeNode* Node);
  531. DYNAMIC bool __fastcall CanExpand(TfcTreeNode* Node);
  532. DYNAMIC void __fastcall Change(TfcTreeNode* Node);
  533. DYNAMIC void __fastcall Collapse(TfcTreeNode* Node);
  534. virtual TfcTreeNode* __fastcall CreateNode(void);
  535. virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
  536. virtual void __fastcall CreateWnd(void);
  537. DYNAMIC void __fastcall Delete(TfcTreeNode* Node);
  538. virtual void __fastcall DestroyWnd(void);
  539. DYNAMIC void __fastcall DoEndDrag(System::TObject* Target, int X, int Y);
  540. DYNAMIC void __fastcall DoStartDrag(Controls::TDragObject* &DragObject);
  541. DYNAMIC void __fastcall Edit(const tagTVITEMA &Item);
  542. DYNAMIC void __fastcall Expand(TfcTreeNode* Node);
  543. virtual Controls::TDragImageList* __fastcall GetDragImages(void);
  544. virtual void __fastcall GetImageIndex(TfcTreeNode* Node);
  545. virtual void __fastcall GetSelectedIndex(TfcTreeNode* Node);
  546. virtual void __fastcall Loaded(void);
  547. DYNAMIC void __fastcall KeyPress(char &Key);
  548. DYNAMIC void __fastcall KeyDown(Word &Key, Classes::TShiftState Shift);
  549. virtual void __fastcall Notification(Classes::TComponent* AComponent, Classes::TOperation Operation
  550. );
  551. virtual void __fastcall SetDragMode(Controls::TDragMode Value);
  552. virtual void __fastcall WndProc(Messages::TMessage &Message);
  553. __property bool AutoExpand = {read=FAutoExpand, write=SetAutoExpand, default=0};
  554. __property Forms::TBorderStyle BorderStyle = {read=FBorderStyle, write=SetBorderStyle, default=1};
  555. __property int ChangeDelay = {read=GetChangeDelay, write=SetChangeDelay, default=0};
  556. __property Imglist::TCustomImageList* Images = {read=FImages, write=SetImages};
  557. __property int Indent = {read=GetIndent, write=SetIndent, nodefault};
  558. __property bool ReadOnly = {read=FReadOnly, write=SetReadOnly, default=0};
  559. __property bool RightClickSelects = {read=FRightClickSelects, write=FRightClickSelects, default=0};
  560. __property TfcSortType SortType = {read=FSortType, write=SetSortType, default=0};
  561. __property Imglist::TCustomImageList* StateImages = {read=FStateImages, write=SetStateImages};
  562. __property bool StreamExpandedNode = {read=FStreamExpandedNode, write=FStreamExpandedNode, default=0
  563. };
  564. __property TfcTVEditingEvent OnEditing = {read=FOnEditing, write=FOnEditing};
  565. __property TfcTVEditedEvent OnEdited = {read=FOnEdited, write=FOnEdited};
  566. __property TfcTVExpandingEvent OnExpanding = {read=FOnExpanding, write=FOnExpanding};
  567. __property TfcTVExpandedEvent OnExpanded = {read=FOnExpanded, write=FOnExpanded};
  568. __property TfcTVCollapsingEvent OnCollapsing = {read=FOnCollapsing, write=FOnCollapsing};
  569. __property TfcTVExpandedEvent OnCollapsed = {read=FOnCollapsed, write=FOnCollapsed};
  570. __property TfcTVChangingEvent OnChanging = {read=FOnChanging, write=FOnChanging};
  571. __property TfcTVChangedEvent OnChange = {read=FOnChange, write=FOnChange};
  572. __property TfcTVCompareEvent OnCompare = {read=FOnCompare, write=FOnCompare};
  573. __property TfcTVExpandedEvent OnDeletion = {read=FOnDeletion, write=FOnDeletion};
  574. __property TfcTVExpandedEvent OnGetImageIndex = {read=FOnGetImageIndex, write=FOnGetImageIndex};
  575. __property TfcTVExpandedEvent OnGetSelectedIndex = {read=FOnGetSelectedIndex, write=FOnGetSelectedIndex
  576. };
  577. virtual void __fastcall MultiSelectNode(TfcTreeNode* Node, bool Select, bool redraw);
  578. virtual bool __fastcall IsVisible(TfcTreeNode* Node, bool PartialOK);
  579. Windows::TRect __fastcall ItemRect(TfcTreeNode* Node, bool LabelOnly);
  580. void __fastcall PaintButton(TfcTreeNode* Node, const Windows::TPoint &pt, int size);
  581. void __fastcall PaintLines(TfcTreeNode* Node);
  582. void __fastcall PaintImage(TfcTreeNode* Node, TfcItemStates State);
  583. Windows::TRect __fastcall LevelRect(TfcTreeNode* ANode);
  584. virtual void __fastcall DoDrawText(TfcCustomTreeView* TreeView, TfcTreeNode* Node, const Windows::TRect 
  585. &ARect, TfcItemStates AItemState, bool &DefaultDrawing);
  586. virtual void __fastcall Compare(TfcTreeNode* Node1, TfcTreeNode* Node2, int lParam, int &Result);
  587. virtual void __fastcall CalcNodeAttributes(TfcTreeNode* Node, TfcItemStates AItemState);
  588. virtual AnsiString __fastcall GetDisplayText(TfcTreeNode* Node);
  589. void __fastcall LoadCanvasDefaults(TfcTreeNode* Node, TfcItemStates AItemState);
  590. virtual bool __fastcall ProcessKeyPress(char Key, Classes::TShiftState shift);
  591. virtual bool __fastcall IsRowSelect(void);
  592. virtual void __fastcall MouseLoop(int X, int Y);
  593. DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, 
  594. int Y);
  595. bool __fastcall UseImages(TfcTreeNode* Node);
  596. bool __fastcall UseStateImages(TfcTreeNode* Node);
  597. virtual void __fastcall BeginPainting(void);
  598. virtual void __fastcall EndPainting(void);
  599. virtual void __fastcall BeginItemPainting(TfcTreeNode* Node, const Windows::TRect &ARect, TfcItemStates 
  600. AItemState);
  601. virtual void __fastcall EndItemPainting(TfcTreeNode* Node, const Windows::TRect &ARect, TfcItemStates 
  602. AItemState);
  603. virtual void __fastcall PaintItem(TfcTreeNode* Node);
  604. void __fastcall ClearStateImageIndexes(void);
  605. DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
  606. DYNAMIC void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int 
  607. Y);
  608. virtual void __fastcall DoToggleCheckbox(TfcTreeNode* Node);
  609. virtual void __fastcall FreeHintWindow(void);
  610. virtual Controls::THintWindow* __fastcall CreateHintWindow(TfcTreeNode* Node);
  611. void __fastcall UnselectAllNodes(TfcTreeNode* IgnoreNode);
  612. void __fastcall InvalidateNoErase(void);
  613. __property Shortint ItemHeight = {read=GetItemHeight, write=SetItemHeight, nodefault};
  614. __property TfcCalcNodeAttributesEvent OnCalcNodeAttributes = {read=FOnCalcNodeAttributes, write=FOnCalcNodeAttributes
  615. };
  616. __property int ScrollTime = {read=GetScrollTime, write=SetScrollTime, nodefault};
  617. __property TMetaClass* NodeClass = {read=FNodeClass, write=FNodeClass};
  618. public:
  619. Variant Patch;
  620. void __fastcall ResetStateImages(void);
  621. __property int StreamVersion = {read=FStreamVersion, nodefault};
  622. TfcTreeNode* __fastcall GetFirstSibling(TfcTreeNode* Node);
  623. void __fastcall InvalidateNode(TfcTreeNode* Node);
  624. bool __fastcall MultiSelectCheckboxNeeded(TfcTreeNode* Node);
  625. void __fastcall UnselectAll(void);
  626. __fastcall virtual TfcCustomTreeView(Classes::TComponent* AOwner);
  627. __fastcall virtual ~TfcCustomTreeView(void);
  628. bool __fastcall AlphaSort(void);
  629. bool __fastcall CustomSort(PFNTVCOMPARE SortProc, int Data);
  630. void __fastcall FullCollapse(void);
  631. void __fastcall FullExpand(void);
  632. TfcHitTests __fastcall GetHitTestInfoAt(int X, int Y);
  633. TfcTreeNode* __fastcall GetNodeAt(int X, int Y);
  634. bool __fastcall IsEditing(void);
  635. void __fastcall LoadFromFile(const AnsiString FileName);
  636. void __fastcall LoadFromStream(Classes::TStream* Stream);
  637. void __fastcall SaveToFile(const AnsiString FileName);
  638. void __fastcall SaveToStream(Classes::TStream* Stream);
  639. __property Fccanvas::TfcCanvas* Canvas = {read=GetPaintCanvas};
  640. __property TfcTreeNode* DropTarget = {read=GetDropTarget, write=SetDropTarget};
  641. __property TfcTreeNode* Selected = {read=GetSelection, write=SetSelection};
  642. __property TfcTreeNode* TopItem = {read=GetTopItem, write=SetTopItem};
  643. __property TfcTreeNode* RightClickNode = {read=FRClickNode};
  644. __property TfcTreeViewOptions Options = {read=FOptions, write=SetOptions, default=1257};
  645. __property TfcTreeNodes* Items = {read=FTreeNodes, write=SeTfcTreeNodes};
  646. __property TfcTVMultiSelectAttributes* MultiSelectAttributes = {read=FMultiSelectAttributes, write=
  647. FMultiSelectAttributes};
  648. __property TfcTVDrawTextEvent OnDrawText = {read=FOnDrawText, write=FOnDrawText};
  649. __property TfcItemChangeEvent OnItemChange = {read=FOnItemChange, write=FOnItemChange};
  650. __property TfcTreeNode* MultiSelectList[int Index] = {read=GetMultiSelectItem};
  651. __property int MultiSelectListCount = {read=GetMultiSelectListCount, nodefault};
  652. __property Graphics::TColor LineColor = {read=FLineColor, write=SetLineColor, default=-2147483632};
  653. __property Graphics::TColor InactiveFocusColor = {read=FInactiveFocusColor, write=SetInactiveFocusColor
  654. , default=-2147483633};
  655. __property TfcTreeMouseMoveEvent OnMouseMove = {read=FOnMouseMove, write=FOnMouseMove};
  656. __property TfcTreeMouseEvent OnMouseDown = {read=FOnMouseDown, write=FOnMouseDown};
  657. __property TfcTreeMouseEvent OnMouseUp = {read=FOnMouseUp, write=FOnMouseUp};
  658. __property TfcTreeMouseEvent OnDblClick = {read=FOnDblClick, write=FOnDblClick};
  659. __property TfcToggleCheckboxEvent OnToggleCheckbox = {read=FOnToggleCheckbox, write=FOnToggleCheckbox
  660. };
  661. __property bool UsePaintBuffering = {read=FUsePaintBuffering, write=FUsePaintBuffering, default=0};
  662. __property bool DisableThemes = {read=FDisableThemes, write=FDisableThemes, default=0};
  663. public:
  664. #pragma option push -w-inl
  665. /* TWinControl.CreateParented */ inline __fastcall TfcCustomTreeView(HWND ParentWindow) : Controls::TWinControl(
  666. ParentWindow) { }
  667. #pragma option pop
  668. };
  669. class DELPHICLASS TfcTreeView;
  670. class PASCALIMPLEMENTATION TfcTreeView : public TfcCustomTreeView 
  671. {
  672. typedef TfcCustomTreeView inherited;
  673. __published:
  674. __property DisableThemes ;
  675. __property Align ;
  676. __property Anchors ;
  677. __property AutoExpand ;
  678. __property BiDiMode ;
  679. __property BorderStyle ;
  680. __property ChangeDelay ;
  681. __property Color ;
  682. __property LineColor ;
  683. __property InactiveFocusColor ;
  684. __property Ctl3D ;
  685. __property Constraints ;
  686. __property DragKind ;
  687. __property DragCursor ;
  688. __property DragMode ;
  689. __property Enabled ;
  690. __property Font ;
  691. __property Images ;
  692. __property Indent ;
  693. __property MultiSelectAttributes ;
  694. __property Options ;
  695. __property Items ;
  696. __property ParentBiDiMode ;
  697. __property ParentColor ;
  698. __property ParentCtl3D ;
  699. __property ParentFont ;
  700. __property ParentShowHint ;
  701. __property UsePaintBuffering ;
  702. __property PopupMenu ;
  703. __property ReadOnly ;
  704. __property RightClickSelects ;
  705. __property ShowHint ;
  706. __property SortType ;
  707. __property StateImages ;
  708. __property StreamExpandedNode ;
  709. __property TabOrder ;
  710. __property TabStop ;
  711. __property Visible ;
  712. __property OnChange ;
  713. __property OnChanging ;
  714. __property OnClick ;
  715. __property OnCollapsing ;
  716. __property OnCollapsed ;
  717. __property OnCompare ;
  718. __property OnDblClick ;
  719. __property OnDeletion ;
  720. __property OnDragDrop ;
  721. __property OnDragOver ;
  722. __property OnEdited ;
  723. __property OnEditing ;
  724. __property OnEndDock ;
  725. __property OnEndDrag ;
  726. __property OnEnter ;
  727. __property OnExit ;
  728. __property OnExpanding ;
  729. __property OnExpanded ;
  730. __property OnGetImageIndex ;
  731. __property OnGetSelectedIndex ;
  732. __property OnKeyDown ;
  733. __property OnKeyPress ;
  734. __property OnKeyUp ;
  735. __property OnMouseDown ;
  736. __property OnMouseMove ;
  737. __property OnMouseUp ;
  738. __property OnToggleCheckbox ;
  739. __property OnStartDock ;
  740. __property OnStartDrag ;
  741. __property OnCalcNodeAttributes ;
  742. __property OnDrawText ;
  743. public:
  744. #pragma option push -w-inl
  745. /* TfcCustomTreeView.Create */ inline __fastcall virtual TfcTreeView(Classes::TComponent* AOwner) : 
  746. TfcCustomTreeView(AOwner) { }
  747. #pragma option pop
  748. #pragma option push -w-inl
  749. /* TfcCustomTreeView.Destroy */ inline __fastcall virtual ~TfcTreeView(void) { }
  750. #pragma option pop
  751. public:
  752. #pragma option push -w-inl
  753. /* TWinControl.CreateParented */ inline __fastcall TfcTreeView(HWND ParentWindow) : TfcCustomTreeView(
  754. ParentWindow) { }
  755. #pragma option pop
  756. };
  757. //-- var, const, procedure ---------------------------------------------------
  758. extern PACKAGE void __fastcall fcTreeViewError(const AnsiString Msg);
  759. } /* namespace Fctreeview */
  760. #if !defined(NO_IMPLICIT_NAMESPACE_USE)
  761. using namespace Fctreeview;
  762. #endif
  763. #pragma option pop // -w-
  764. #pragma option pop // -Vx
  765. #pragma delphiheader end.
  766. //-- end unit ----------------------------------------------------------------
  767. #endif // fcTreeView