Class TSystemListView (unit SystemTreeView)

Inherits from

TCustomListView

Constructors


constructor Create(AOwner: TComponent);

------------------------------------------------------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------


Functions

destructor Destroy;

Create

function DisplayContextMenu(Item: TListItem; Where: TPoint): boolean;

****************************************************************************** DisplayContextMenu:

function GetFullPath(const Item: TListItem): string;


function GetItemAttrs(const Item: TListItem): UINT;


procedure Reset(const ParentNode: TTreeNode);

ctUnknown;

procedure SetColumnWidths(NameWidth, SizeWidth, TypeWidth, ModifiedWidth: integer);


function AddNode(const ShellFolder: IShellFolder; FQ_IDList, IDList: PItemIDList; const ParentNode: TTreeNode): TListItem;

always protect this stuff to make sure it gets reset.

function AlphaSort: Boolean;

CustomSort

procedure CNNotify(var Message: TWMNotify);

FreeAllItemData} (******************************************************************************* CNNotify: Trap notification messages sent to the window.

procedure CreateColumns(ColType: TColumnType);

This will be based on what type of stuff we are enumerating eventually

procedure CreateWnd;


function CustomSort(SortProc: TLVCompare; Data: Longint): Boolean;

Status is returned in the 'code' portion (low word) of the result.

function EnumerateFiles(const Folder: IShellFolder; const ParentNode: TTreeNode): boolean;


function GetItemData(Item: TListItem): TFolderItemData;

CNNotify

procedure Loaded;


procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

try

procedure SetColumnType(ColType: TColumnType);


procedure SetShowFolders(Val: boolean);


function AddItemData(ItemFolder: IShellFolder; aIDList, aFQ_IDList: PItemIDList; Attrs: UINT): TFolderItemData;

AddNode

procedure FreeAllItemData;

FreeItemData

procedure FreeItemData(Item: TListItem);

AddItemDta

function GetValidHandle: HWND;

ResetTreeView

Properties

property Align :

Published protected properties

property AllocBy :


property BorderStyle :


property Color :


property ColumnClick :


property Columns :


property ColumnType : TColumnType


property Ctl3D :


property DragCursor :


property DragMode :


property Font :


property HideSelection :


property IconOptions :


property Items :


property MultiSelect :


property ParentShowHint :


property PopupMenu :


property ReadOnly :


property ShowColumnHeaders :


property ShowFolders : boolean


property ShowHiddenFiles : boolean


property ShowHint :


property SortType :


property TabOrder :


property TabStop :


property ViewStyle :


property Visible :


property ShowErrorsInMsgBox : boolean


Events

event OnAddListItem : TSLVAddListItem


event OnChange :


event OnChanging :


event OnClick :


event OnColumnClick :


event OnCompare :


event OnCreateColumns : TSLVCreateColumns

this stuff can't be saved with the form.

event OnDblClick :


event OnDeletion :


event OnDragDrop :


event OnDragOver :


event OnEdited :


event OnEditing :


event OnEndDrag :


event OnEnter :


event OnExit :


event OnInsert :


event OnKeyDown :


event OnKeyPress :


event OnKeyUp :


event OnMouseDown :


event OnMouseMove :


event OnMouseUp :


event OnStartDrag :


Variables

FColumnType : TColumnType;


FLastNode : TTreeNode;


FOnAddListItem : TSLVAddListItem;


FOnCreateColumns : TSLVCreateColumns;


FShowErrorsInMsgBox : boolean;


FShowFolders : boolean;


FShowHiddenFiles : boolean;

This will eventually be a set of attributes (system, read-only, etc.


Constructors


constructor Create(AOwner: TComponent);

------------------------------------------------------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------} {------------------------------------------------------------------------------


Functions


destructor Destroy;

Create


function DisplayContextMenu(Item: TListItem; Where: TPoint): boolean;

****************************************************************************** DisplayContextMenu:


function GetFullPath(const Item: TListItem): string;


function GetItemAttrs(const Item: TListItem): UINT;


procedure Reset(const ParentNode: TTreeNode);

ctUnknown;


procedure SetColumnWidths(NameWidth, SizeWidth, TypeWidth, ModifiedWidth: integer);


function AddNode(const ShellFolder: IShellFolder; FQ_IDList, IDList: PItemIDList; const ParentNode: TTreeNode): TListItem;

always protect this stuff to make sure it gets reset.


function AlphaSort: Boolean;

CustomSort


procedure CNNotify(var Message: TWMNotify);

FreeAllItemData} (******************************************************************************* CNNotify: Trap notification messages sent to the window. This is damn silly, but it's the only way we can know when an item is being deleted. I think it's an oversight in the VCL, so until Borland fixes it, just live with it.


procedure CreateColumns(ColType: TColumnType);

This will be based on what type of stuff we are enumerating eventually


procedure CreateWnd;


function CustomSort(SortProc: TLVCompare; Data: Longint): Boolean;

Status is returned in the 'code' portion (low word) of the result. Search for 'HResult' in Winodws.pas to read more about it. 0 means sort by name.


function EnumerateFiles(const Folder: IShellFolder; const ParentNode: TTreeNode): boolean;


function GetItemData(Item: TListItem): TFolderItemData;

CNNotify


procedure Loaded;


procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

try


procedure SetColumnType(ColType: TColumnType);


procedure SetShowFolders(Val: boolean);


function AddItemData(ItemFolder: IShellFolder; aIDList, aFQ_IDList: PItemIDList; Attrs: UINT): TFolderItemData;

AddNode


procedure FreeAllItemData;

FreeItemData


procedure FreeItemData(Item: TListItem);

AddItemDta


function GetValidHandle: HWND;

ResetTreeView


Properties


property Align :

Published protected properties


property AllocBy :


property BorderStyle :


property Color :


property ColumnClick :


property Columns :


property ColumnType : TColumnType


property Ctl3D :


property DragCursor :


property DragMode :


property Font :


property HideSelection :


property IconOptions :


property Items :


property MultiSelect :


property ParentShowHint :


property PopupMenu :


property ReadOnly :


property ShowColumnHeaders :


property ShowFolders : boolean


property ShowHiddenFiles : boolean


property ShowHint :


property SortType :


property TabOrder :


property TabStop :


property ViewStyle :


property Visible :


property ShowErrorsInMsgBox : boolean


Events


event OnAddListItem : TSLVAddListItem


event OnChange :


event OnChanging :


event OnClick :


event OnColumnClick :


event OnCompare :


event OnCreateColumns : TSLVCreateColumns

this stuff can't be saved with the form. It has to be read every time for obvious reasons.


event OnDblClick :


event OnDeletion :


event OnDragDrop :


event OnDragOver :


event OnEdited :


event OnEditing :


event OnEndDrag :


event OnEnter :


event OnExit :


event OnInsert :


event OnKeyDown :


event OnKeyPress :


event OnKeyUp :


event OnMouseDown :


event OnMouseMove :


event OnMouseUp :


event OnStartDrag :


Variables


FColumnType : TColumnType;


FLastNode : TTreeNode;


FOnAddListItem : TSLVAddListItem;


FOnCreateColumns : TSLVCreateColumns;


FShowErrorsInMsgBox : boolean;


FShowFolders : boolean;


FShowHiddenFiles : boolean;

This will eventually be a set of attributes (system, read-only, etc.