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