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

Delphi控件源码

开发平台:

Delphi

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