Class TSystemTreeView (unit SystemTreeView) |
Inherits from
TCustomTreeView
constructor Create(AOwner: TComponent);
- ******************************************************************************
Create:
function AddNewNode(const ParentNode: TTreeNode; const NodeName: string;
SelectNewNode: boolean): boolean;
function DeleteNode(const Node: TTreeNode): boolean;
Don't forget to free the OLE string
destructor Destroy;
Create} (*******************************************************************************
Destroy:
function DisplayContextMenu(Node: TTreeNode; Where: TPoint): boolean;
******************************************************************************
DisplayContextMenu:
function GetNodePath(const Node: TTreeNode): string;
is it file that the user selected?
function RenameNode(const Node: TTreeNode; const NewName: string): boolean;
Useful functions for applications.
procedure ResetNode(const Node: TTreeNode);
procedure ResetTreeView;
******************************************************************************
ResetTreeView:
procedure ThreadDone(Sender: TObject);
it will destroy itself.
procedure WatchDirectoryForChanges(const ANode: TTreeNode);
function AddNode(const ShellFolder: IShellFolder;
FQ_IDList, IDList: PItemIDList; const ParentNode: TTreeNode): TTreeNode;
event for this?******************************************************************************
AddNode:
function AlphaSort: Boolean;
CustomSort
function CanEdit(Node: TTreeNode): boolean;
******************************************************************************
CanEdit - 29/8/96 (By Thomas AW Brown)
function CanExpand(Node: TTreeNode): boolean;
CNNotify} (*******************************************************************************
CanExpand:
procedure Change(Node: TTreeNode);
procedure CNNotify(var Message: TWMNotify);
******************************************************************************
CNNotify: Trap notification messages sent to the window.
procedure CreateWnd;
Destroy
function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
procedure DeleteItem(Node: TTreeNode);
Helpers Why isn't there one of these in TTreeView????CanExpand} (*******************************************************************************
DeleteItem:
procedure DestroyWnd;
If we are loading object from stream (form file), we have to wait until everything is loaded before populating the list.
procedure DoStartDrag(var DragObject: TDragObject);
procedure Edit(const Item: TTVItem);
******************************************************************************
Edit - 29/8/96 (By Thomas AW Brown)
- 11/9/96 Moved guts of it to RenameNode so it could be used
programatically.
procedure Expand(Node: TTreeNode);
function FindNodeFromID(AnID: PItemIDList): TTreeNode;
Searches the tree for a fully qualified PIDL, expanding as it finds nodes that match.
function GetItemData(Index: integer): TFolderItemData;
These two do the same thing, just take different parameters.
function GetNodeData(Node: TTreeNode): TFolderItemData;
function GetNodeFromItem(const Item: TTVItem): TTreeNode;
DeleteItem
procedure Loaded;
The window is only being recreated.
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
procedure SetCustomDir(const Val: string);
procedure SetCustomDirCaption(const Val: string);
procedure SetListView(Val: TSystemListView);
SetRootFolder
procedure SetRootFolder(Val: TRootFolder);
Property methods.
procedure SetShowFiles(Val: boolean);
function AddItemData(ItemFolder: IShellFolder; aIDList,
aFQ_IDList: PItemIDList; Attrs: UINT): TFolderItemData;
AddNode} (*******************************************************************************
AddItemData:
function EnumerateFolders(const ShellFolder: IShellFolder;
const ParentNode: TTreeNode): boolean;
ResetTreeView} (*******************************************************************************
EnumerateFolders:
procedure FreeAllItemData;
FreeItemData} (*******************************************************************************
FreeAllItemData:
procedure FreeItemData(Item: TTreeNode);
AddItemDta} (*******************************************************************************
FreeItemData:
function GetFolderID: integer;
function GetIDFromPath(const ShellFolder: IShellFolder; const APath: string;
var ID: PItemIDList): boolean;
function GetSelection: string;
We've finished loading, we can populate the tree now.
function GetValidHandle: HWND;
DoDragDrop
procedure SetSelection(const ASel: string);
FindNodeFromID This will work ONLY with files or directories.
property Align :
property BorderStyle :
property Color :
property Ctl3D :
property CustomDir : string
property CustomDirCaption : string
property DragCursor :
property DragMode :
property Enabled :
property ExpandRoot : boolean
property Font :
property HideSelection :
property Indent :
property Items :
property ListView : TSystemListView
property ParentColor :
property ParentCtl3D :
property ParentFont :
property ParentShowHint :
property ReadOnly :
property RootFolder : TRootFolder
property Selection : string
property ShowButtons :
Publish protected properties.
property ShowFiles : boolean
property ShowHiddenDirs : boolean
property ShowHint :
property ShowLines :
property ShowRoot :
property TabOrder :
property TabStop :
property Visible :
property ShowErrorsInMsgBox : boolean
event OnChange :
event OnChanging :
event OnClick :
event OnCollapsed :
event OnCollapsing :
event OnCompare :
event OnDblClick :
event OnDeletion :
event OnDragDrop :
event OnDragOver :
event OnEdited :
event OnEditing :
event OnEndDrag :
event OnEnter :
event OnExit :
event OnExpanded :
event OnExpanding :
event OnGetImageIndex :
event OnGetSelectedIndex :
event OnKeyDown :
event OnKeyPress :
event OnKeyUp :
event OnMouseDown :
event OnMouseMove :
event OnMouseUp :
event OnStartDrag :
FCThread : TFileChangeThread;
FCustomDir : string;
FCustomDirCaption : string;
FExpandRoot : boolean;
FListView : TSystemListView;
FRecreatingWnd : boolean;
FRootFolder : TRootFolder;
FShowErrorsInMsgBox : boolean;
FShowFiles : boolean;
FShowHiddenDirs : boolean;
WatchedNode : TTreeNode;
constructor Create(AOwner: TComponent);
******************************************************************************
Create:
function AddNewNode(const ParentNode: TTreeNode; const NodeName: string;
SelectNewNode: boolean): boolean;
function DeleteNode(const Node: TTreeNode): boolean;
Don't forget to free the OLE string
destructor Destroy;
Create} (*******************************************************************************
Destroy:
function DisplayContextMenu(Node: TTreeNode; Where: TPoint): boolean;
******************************************************************************
DisplayContextMenu:
function GetNodePath(const Node: TTreeNode): string;
is it file that the user selected?
function RenameNode(const Node: TTreeNode; const NewName: string): boolean;
Useful functions for applications. These modify permanently, not just the node. i.e. if you rename 'My Computer' to 'Crasher', it is renamed system wide, not just in your app. If you delete the 'C:\WINDOWS' folder, you are in deep trouble.
procedure ResetNode(const Node: TTreeNode);
procedure ResetTreeView;
******************************************************************************
ResetTreeView:
procedure ThreadDone(Sender: TObject);
it will destroy itself.
procedure WatchDirectoryForChanges(const ANode: TTreeNode);
function AddNode(const ShellFolder: IShellFolder;
FQ_IDList, IDList: PItemIDList; const ParentNode: TTreeNode): TTreeNode;
event for this?
******************************************************************************
AddNode:
function AlphaSort: Boolean;
CustomSort
function CanEdit(Node: TTreeNode): boolean;
******************************************************************************
CanEdit - 29/8/96 (By Thomas AW Brown)
function CanExpand(Node: TTreeNode): boolean;
CNNotify} (*******************************************************************************
CanExpand:
procedure Change(Node: TTreeNode);
procedure CNNotify(var Message: TWMNotify);
******************************************************************************
CNNotify: Trap notification messages sent to the window.
This is damn silly, but it's the only way we can know when a node is being
deleted. I think it's an oversight in the VCL, so until Borland fixes it,
just live with it.
procedure CreateWnd;
Destroy
function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean;
procedure DeleteItem(Node: TTreeNode);
Helpers Why isn't there one of these in TTreeView????
CanExpand} (*******************************************************************************
DeleteItem:
procedure DestroyWnd;
If we are loading object from stream (form file), we have to wait until everything is loaded before populating the list. If we are not loading, i.e. the component was created dynamically or was just dropped on a form, we need to populate it now since the Loaded method will never get called.
procedure DoStartDrag(var DragObject: TDragObject);
procedure Edit(const Item: TTVItem);
******************************************************************************
Edit - 29/8/96 (By Thomas AW Brown)
- 11/9/96 Moved guts of it to RenameNode so it could be used
programatically. (bds)
procedure Expand(Node: TTreeNode);
function FindNodeFromID(AnID: PItemIDList): TTreeNode;
Searches the tree for a fully qualified PIDL, expanding as it finds nodes that match.
function GetItemData(Index: integer): TFolderItemData;
These two do the same thing, just take different parameters.
try
function GetNodeData(Node: TTreeNode): TFolderItemData;
function GetNodeFromItem(const Item: TTVItem): TTreeNode;
DeleteItem
procedure Loaded;
The window is only being recreated. See CNNotify method.
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
procedure SetCustomDir(const Val: string);
procedure SetCustomDirCaption(const Val: string);
procedure SetListView(Val: TSystemListView);
SetRootFolder
procedure SetRootFolder(Val: TRootFolder);
Property methods.
FreeAllItemData} (*******************************************************************************
SetRootFolder:
procedure SetShowFiles(Val: boolean);
function AddItemData(ItemFolder: IShellFolder; aIDList,
aFQ_IDList: PItemIDList; Attrs: UINT): TFolderItemData;
AddNode} (*******************************************************************************
AddItemData:
function EnumerateFolders(const ShellFolder: IShellFolder;
const ParentNode: TTreeNode): boolean;
ResetTreeView} (*******************************************************************************
EnumerateFolders:
procedure FreeAllItemData;
FreeItemData} (*******************************************************************************
FreeAllItemData:
procedure FreeItemData(Item: TTreeNode);
AddItemDta} (*******************************************************************************
FreeItemData:
function GetFolderID: integer;
function GetIDFromPath(const ShellFolder: IShellFolder; const APath: string;
var ID: PItemIDList): boolean;
function GetSelection: string;
We've finished loading, we can populate the tree now.
function GetValidHandle: HWND;
DoDragDrop
procedure SetSelection(const ASel: string);
FindNodeFromID This will work ONLY with files or directories. Currenly there is no way of passing stuff like the Control Panel node.
property Align :
property BorderStyle :
property Color :
property Ctl3D :
property CustomDir : string
property CustomDirCaption : string
property DragCursor :
property DragMode :
property Enabled :
property ExpandRoot : boolean
property Font :
property HideSelection :
property Indent :
property Items :
property ListView : TSystemListView
property ParentColor :
property ParentCtl3D :
property ParentFont :
property ParentShowHint :
property ReadOnly :
property RootFolder : TRootFolder
property Selection : string
property ShowButtons :
Publish protected properties.
property ShowFiles : boolean
property ShowHiddenDirs : boolean
property ShowHint :
property ShowLines :
property ShowRoot :
property TabOrder :
property TabStop :
property Visible :
property ShowErrorsInMsgBox : boolean
event OnChange :
event OnChanging :
event OnClick :
event OnCollapsed :
event OnCollapsing :
event OnCompare :
event OnDblClick :
event OnDeletion :
event OnDragDrop :
event OnDragOver :
event OnEdited :
event OnEditing :
event OnEndDrag :
event OnEnter :
event OnExit :
event OnExpanded :
event OnExpanding :
event OnGetImageIndex :
event OnGetSelectedIndex :
event OnKeyDown :
event OnKeyPress :
event OnKeyUp :
event OnMouseDown :
event OnMouseMove :
event OnMouseUp :
event OnStartDrag :
FCThread : TFileChangeThread;
FCustomDir : string;
FCustomDirCaption : string;
FExpandRoot : boolean;
FListView : TSystemListView;
FRecreatingWnd : boolean;
FRootFolder : TRootFolder;
FShowErrorsInMsgBox : boolean;
FShowFiles : boolean;
FShowHiddenDirs : boolean;
WatchedNode : TTreeNode;