Componentes.Terceros.DevExp.../internal/x.46/2/ExpressEditors Library 5/Sources/cxTreeView.pas

1512 lines
45 KiB
ObjectPascal

{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressEditors }
{ }
{ Copyright (c) 1998-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSEDITORS AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
{$DEFINE USETCXSCROLLBAR}
unit cxTreeView;
{$I cxVer.inc}
interface
uses
Windows, Classes, ComCtrls, CommCtrl, Controls, Forms, ImgList, Menus,
Messages, StdCtrls, SysUtils, cxClasses, cxContainer, cxControls,
cxExtEditConsts, cxGraphics, cxLookAndFeels, cxScrollBar;
type
{ TcxCustomInnerTreeView }
TcxCustomTreeView = class;
TcxCustomInnerTreeView = class(TTreeView, IUnknown,
IcxContainerInnerControl)
private
FCanvas: TcxCanvas;
FContainer: TcxCustomTreeView;
FIsRedrawLocked: Boolean;
FItemHeight: Integer;
FLookAndFeel: TcxLookAndFeel;
function GetControl: TWinControl;
function GetControlContainer: TcxContainer;
procedure HScrollHandler(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
procedure SetItemHeight(Value: Integer);
procedure SetLookAndFeel(Value: TcxLookAndFeel);
procedure VScrollHandler(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
{$IFNDEF DELPHI6}
function GetScrollWidth: Integer;
procedure SetScrollWidth(const Value: Integer);
{$ENDIF}
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
procedure WMKillFocus(var Message: TWMKillFocus); message WM_KILLFOCUS;
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure WMNCPaint(var Message: TWMNCPaint); message WM_NCPAINT;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMSetRedraw(var Message: TWMSetRedraw); message WM_SETREDRAW;
procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
procedure WMFontChange(var Message: TMessage); message WM_FONTCHANGE;
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
protected
procedure Click; override;
procedure DblClick; override;
procedure DestroyWindowHandle; override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean; override;
procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState;
var Accept: Boolean); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure CreateWindowHandle(const Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
procedure MouseEnter(AControl: TControl); dynamic;
procedure MouseLeave(AControl: TControl); dynamic;
property Container: TcxCustomTreeView read FContainer;
property LookAndFeel: TcxLookAndFeel read FLookAndFeel write SetLookAndFeel;
procedure Expand(Node: TTreeNode); override;
procedure Change(Node: TTreeNode); override;
procedure Collapse(Node: TTreeNode); override;
procedure UpdateItemHeight;
property IsRedrawLocked: Boolean read FIsRedrawLocked;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure DefaultHandler(var Message); override;
procedure DragDrop(Source: TObject; X, Y: Integer); override;
property Canvas: TcxCanvas read FCanvas;
property ItemHeight: Integer read FItemHeight write SetItemHeight default -1;
{$IFNDEF DELPHI6}
property ScrollWidth: Integer read GetScrollWidth write SetScrollWidth default 0;
{$ENDIF}
end;
TcxCustomInnerTreeViewClass = class of TcxCustomInnerTreeView;
{ TcxCustomTreeView }
TcxCustomTreeView = class(TcxContainer)
private
FTreeView: TcxCustomInnerTreeView;
function GetAutoExpand: Boolean;
function GetChangeDelay: Integer;
function GetHideSelection: Boolean;
function GetHotTrack: Boolean;
function GetImages: TCustomImageList;
function GetItemHeight: Integer;
function GetTreeNodes: TTreeNodes;
function GetIndent: Integer;
{$IFDEF DELPHI6}
function GetMultiSelect: Boolean;
function GetMultiSelectStyle: TMultiSelectStyle;
function GetOnCreateNodeClass: TTVCreateNodeClassEvent;
procedure SetMultiSelectStyle(Value: TMultiSelectStyle);
procedure SetOnCreateNodeClass(Value: TTVCreateNodeClassEvent);
function GetOnAddition: TTVExpandedEvent;
function GetOnCancelEdit: TTVChangedEvent;
{$ENDIF}
function GetReadOnly: Boolean;
function GetRightClickSelect: Boolean;
function GetRowSelect: Boolean;
function GetShowButtons: Boolean;
function GetShowLines: Boolean;
function GetShowRoot: Boolean;
function GetSortType: TSortType;
function GetStateImages: TCustomImageList;
function GetToolTips: Boolean;
function GetTreeViewCanvas: TcxCanvas;
{$IFDEF DELPHI5}
function GetOnAdvancedCustomDraw: TTVAdvancedCustomDrawEvent;
function GetOnAdvancedCustomDrawItem: TTVAdvancedCustomDrawItemEvent;
{$ENDIF}
function GetOnChange: TTVChangedEvent;
function GetOnChanging: TTVChangingEvent;
function GetOnCollapsed: TTVExpandedEvent;
function GetOnCollapsing: TTVCollapsingEvent;
function GetOnCompare: TTVCompareEvent;
function GetOnCustomDraw: TTVCustomDrawEvent;
function GetOnCustomDrawItem: TTVCustomDrawItemEvent;
function GetOnDeletion: TTVExpandedEvent;
function GetOnEditing: TTVEditingEvent;
function GetOnEdited: TTVEditedEvent;
function GetOnExpanding: TTVExpandingEvent;
function GetOnExpanded: TTVExpandedEvent;
function GetOnGetImageIndex: TTVExpandedEvent;
function GetOnGetSelectedIndex: TTVExpandedEvent;
function GetDropTarget: TTreeNode;
function GetSelected: TTreeNode;
function GetTopItem: TTreeNode;
{$IFDEF DELPHI6}
function GetSelectionCount: Cardinal;
function GetSelection(Index: Integer): TTreeNode;
procedure SetMultiSelect(Value: Boolean);
{$ENDIF}
procedure SetAutoExpand(Value: Boolean);
procedure SetChangeDelay(Value: Integer);
procedure SetHideSelection(Value: Boolean);
procedure SetHotTrack(Value: Boolean);
procedure SetImages(Value: TCustomImageList);
procedure SetTreeNodes(Value: TTreeNodes);
procedure SetIndent(Value: Integer);
procedure SetItemHeight(Value: Integer);
procedure SetRightClickSelect(Value: Boolean);
procedure SetReadOnly(Value: Boolean);
procedure SetRowSelect(Value: Boolean);
procedure SetShowButtons(Value: Boolean);
procedure SetShowLines(Value: Boolean);
procedure SetShowRoot(Value: Boolean);
procedure SetSortType(Value: TSortType);
procedure SetStateImages(Value: TCustomImageList);
procedure SetToolTips(Value: Boolean);
{$IFDEF DELPHI6}
procedure SetOnAddition(Value: TTVExpandedEvent);
procedure SetOnCancelEdit(Value: TTVChangedEvent);
{$ENDIF}
{$IFDEF DELPHI5}
procedure SetOnAdvancedCustomDraw(Value: TTVAdvancedCustomDrawEvent);
procedure SetOnAdvancedCustomDrawItem(Value: TTVAdvancedCustomDrawItemEvent);
{$ENDIF}
procedure SetOnChange(Value: TTVChangedEvent);
procedure SetOnChanging(Value: TTVChangingEvent);
procedure SetOnCollapsed(Value: TTVExpandedEvent);
procedure SetOnCollapsing(Value: TTVCollapsingEvent);
procedure SetOnCompare(Value: TTVCompareEvent);
procedure SetOnCustomDraw(Value: TTVCustomDrawEvent);
procedure SetOnCustomDrawItem(Value: TTVCustomDrawItemEvent);
procedure SetOnDeletion(Value: TTVExpandedEvent);
procedure SetOnEditing(Value: TTVEditingEvent);
procedure SetOnEdited(Value: TTVEditedEvent);
procedure SetOnExpanding(Value: TTVExpandingEvent);
procedure SetOnExpanded(Value: TTVExpandedEvent);
procedure SetOnGetImageIndex(Value: TTVExpandedEvent);
procedure SetOnGetSelectedIndex(Value: TTVExpandedEvent);
procedure SetDropTarget(Value: TTreeNode);
procedure SetSelected(Value: TTreeNode);
procedure SetTopItem(Value: TTreeNode);
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
protected
{ Protected declarations }
function CanResize(var NewWidth, NewHeight: Integer): Boolean; override;
procedure FontChanged; override;
function IsReadOnly: Boolean; override;
function NeedsScrollBars: Boolean; override;
procedure Scroll(AScrollBarKind: TScrollBarKind; AScrollCode: TScrollCode;
var AScrollPos: Integer); override;
procedure SetSize; override;
procedure WriteState(Writer: TWriter); override;
function GetInnerTreeView: TcxCustomInnerTreeView; virtual;
class function GetTreeViewClass: TcxCustomInnerTreeViewClass; virtual;
procedure InternalInitTreeView; virtual;
{TreeView}
function CanChange(Node: TTreeNode): Boolean; virtual;
function CanCollapse(Node: TTreeNode): Boolean; virtual;
function CanEdit(Node: TTreeNode): Boolean; virtual;
function CanExpand(Node: TTreeNode): Boolean; virtual;
procedure Collapse(Node: TTreeNode);
procedure Expand(Node: TTreeNode);
//
property AutoExpand: Boolean read GetAutoExpand write SetAutoExpand;
property ChangeDelay: Integer read GetChangeDelay write SetChangeDelay default 0;
property HideSelection: Boolean read GetHideSelection write SetHideSelection default True;
property HotTrack: Boolean read GetHotTrack write SetHotTrack;
property Images: TCustomImageList read GetImages write SetImages;
property ItemHeight: Integer read GetItemHeight write SetItemHeight default -1;
property Items: TTreeNodes read GetTreeNodes write SetTreeNodes;
property Indent: Integer read GetIndent write SetIndent default 19;
{$IFDEF DELPHI6}
property MultiSelect: Boolean read GetMultiSelect write SetMultiSelect;
property MultiSelectStyle: TMultiSelectStyle read GetMultiSelectStyle
write SetMultiSelectStyle default [msControlSelect];
{$ENDIF}
property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
property RightClickSelect: Boolean read GetRightClickSelect write SetRightClickSelect;
property RowSelect: Boolean read GetRowSelect write SetRowSelect;
property ShowButtons: Boolean read GetShowButtons write SetShowButtons;
property ShowLines: Boolean read GetShowLines write SetShowLines;
property ShowRoot: Boolean read GetShowRoot write SetShowRoot;
property SortType: TSortType read GetSortType write SetSortType;
property StateImages: TCustomImageList read GetStateImages write SetStateImages;
property ToolTips: Boolean read GetToolTips write SetToolTips;
{$IFDEF DELPHI6}
property OnAddition: TTVExpandedEvent read GetOnAddition write SetOnAddition;
property OnCancelEdit: TTVChangedEvent read GetOnCancelEdit write SetOnCancelEdit;
{$ENDIF}
{$IFDEF DELPHI5}
property OnAdvancedCustomDraw: TTVAdvancedCustomDrawEvent read GetOnAdvancedCustomDraw write SetOnAdvancedCustomDraw;
property OnAdvancedCustomDrawItem: TTVAdvancedCustomDrawItemEvent read GetOnAdvancedCustomDrawItem write SetOnAdvancedCustomDrawItem;
{$ENDIF}
property OnChange: TTVChangedEvent read GetOnChange write SetOnChange;
property OnChanging: TTVChangingEvent read GetOnChanging write SetOnChanging;
property OnCollapsed: TTVExpandedEvent read GetOnCollapsed write SetOnCollapsed;
property OnCollapsing: TTVCollapsingEvent read GetOnCollapsing write SetOnCollapsing;
property OnCompare: TTVCompareEvent read GetOnCompare write SetOnCompare;
property OnCustomDraw: TTVCustomDrawEvent read GetOnCustomDraw write SetOnCustomDraw;
property OnCustomDrawItem: TTVCustomDrawItemEvent read GetOnCustomDrawItem write SetOnCustomDrawItem;
property OnDeletion: TTVExpandedEvent read GetOnDeletion write SetOnDeletion;
property OnEditing: TTVEditingEvent read GetOnEditing write SetOnEditing;
property OnEdited: TTVEditedEvent read GetOnEdited write SetOnEdited;
property OnExpanding: TTVExpandingEvent read GetOnExpanding write SetOnExpanding;
property OnExpanded: TTVExpandedEvent read GetOnExpanded write SetOnExpanded;
property OnGetImageIndex: TTVExpandedEvent read GetOnGetImageIndex write SetOnGetImageIndex;
property OnGetSelectedIndex: TTVExpandedEvent read GetOnGetSelectedIndex write SetOnGetSelectedIndex;
{$IFDEF DELPHI6}
property OnCreateNodeClass: TTVCreateNodeClassEvent read GetOnCreateNodeClass write SetOnCreateNodeClass;
{$ENDIF}
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function AlphaSort{$IFDEF DELPHI6}(
ARecurse: Boolean = True){$ENDIF}: Boolean;
function CustomSort(SortProc: TTVCompare; Data: Longint{$IFDEF DELPHI6};
ARecurse: Boolean = True{$ENDIF}): Boolean;
procedure FullCollapse;
procedure FullExpand;
function GetHitTestInfoAt(X, Y: Integer): THitTests;
function GetNodeAt(X, Y: Integer): TTreeNode;
function IsEditing: Boolean;
procedure LoadFromFile(const FileName: string);
procedure LoadFromStream(Stream: TStream);
procedure SaveToFile(const FileName: string);
procedure SaveToStream(Stream: TStream);
procedure SetScrollBarsParameters(AIsScrolling: Boolean = False); override;
property DropTarget: TTreeNode read GetDropTarget write SetDropTarget;
property Selected: TTreeNode read GetSelected write SetSelected;
property TopItem: TTreeNode read GetTopItem write SetTopItem;
property TreeViewCanvas: TcxCanvas read GetTreeViewCanvas;
{$IFDEF DELPHI6}
procedure Select(Node: TTreeNode; ShiftState: TShiftState = []); overload; virtual;
procedure Select(const Nodes: array of TTreeNode); overload; virtual;
procedure Select(Nodes: TList); overload; virtual;
procedure Deselect(Node: TTreeNode); virtual;
procedure Subselect(Node: TTreeNode; Validate: Boolean = False); virtual;
property SelectionCount: Cardinal read GetSelectionCount;
property Selections[Index: Integer]: TTreeNode read GetSelection;
procedure ClearSelection(KeepPrimary: Boolean = False); virtual;
function GetSelections(AList: TList): TTreeNode;
function FindNextToSelect: TTreeNode; virtual;
{$ENDIF}
property InnerTreeView: TcxCustomInnerTreeView read GetInnerTreeView;
end;
{ TcxTreeView }
TcxTreeView = class(TcxCustomTreeView)
public
property TreeViewCanvas;
published
property Align;
property Anchors;
property BiDiMode;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Height default 100;
property ParentBiDiMode;
property ParentColor default False;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Style;
property StyleDisabled;
property StyleFocused;
property StyleHot;
property TabOrder;
property TabStop;
property Visible;
property Width default 120;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
{$IFDEF DELPHI5}
property OnContextPopup;
{$ENDIF}
property AutoExpand default False;
property ChangeDelay default 0;
property HideSelection default True;
property HotTrack default False;
property Images;
property ItemHeight;
property Items;
property Indent;
{$IFDEF DELPHI6}
property MultiSelect default False;
property MultiSelectStyle;
{$ENDIF}
property ReadOnly;
property RightClickSelect default False;
property RowSelect default False;
property ShowButtons default True;
property ShowLines default True;
property ShowRoot default True;
property SortType default stNone;
property StateImages;
property ToolTips default True;
{$IFDEF DELPHI6}
property OnAddition;
property OnCancelEdit;
{$ENDIF}
{$IFDEF DELPHI5}
property OnAdvancedCustomDraw;
property OnAdvancedCustomDrawItem;
{$ENDIF}
property OnChange;
property OnChanging;
property OnCollapsed;
property OnCollapsing;
property OnCompare;
property OnCustomDraw;
property OnCustomDrawItem;
property OnDeletion;
property OnEditing;
property OnEdited;
property OnExpanding;
property OnExpanded;
property OnGetImageIndex;
property OnGetSelectedIndex;
{$IFDEF DELPHI6}
property OnCreateNodeClass;
{$ENDIF}
end;
implementation
uses
Graphics;
{ TcxCustomInnerTreeView }
constructor TcxCustomInnerTreeView.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCanvas := TcxCanvas.Create(inherited Canvas);
FItemHeight := -1;
FLookAndFeel := TcxLookAndFeel.Create(Self);
BorderStyle := bsNone;
ControlStyle := ControlStyle + [csDoubleClicks];
ParentColor := False;
ParentFont := True;
end;
destructor TcxCustomInnerTreeView.Destroy;
begin
FreeAndNil(FLookAndFeel);
FreeAndNil(FCanvas);
inherited Destroy;
end;
procedure TcxCustomInnerTreeView.DefaultHandler(var Message);
begin
if (Container = nil) or
not Container.InnerControlDefaultHandler(TMessage(Message)) then
inherited DefaultHandler(Message);
end;
procedure TcxCustomInnerTreeView.DragDrop(Source: TObject; X, Y: Integer);
begin
if Container <> nil then
Container.DragDrop(Source, Left + X, Top + Y);
end;
procedure TcxCustomInnerTreeView.Click;
begin
inherited Click;
if Container <> nil then
_TcxContainerAccess.Click(Container);
end;
procedure TcxCustomInnerTreeView.DblClick;
begin
inherited DblClick;
if Container <> nil then
_TcxContainerAccess.DblClick(Container);
end;
procedure TcxCustomInnerTreeView.DestroyWindowHandle;
begin
FIsRedrawLocked := False;
inherited DestroyWindowHandle;
end;
function TcxCustomInnerTreeView.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean;
begin
Result := (Container <> nil) and
_TcxContainerAccess.DoMouseWheel(Container, Shift, WheelDelta, MousePos);
if not Result then
inherited DoMouseWheel(Shift, WheelDelta, MousePos);
end;
procedure TcxCustomInnerTreeView.DragOver(Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Container <> nil then
_TcxContainerAccess.DragOver(Container, Source, Left + X, Top + Y, State, Accept);
end;
procedure TcxCustomInnerTreeView.KeyDown(var Key: Word; Shift: TShiftState);
begin
if Container <> nil then
_TcxContainerAccess.KeyDown(Container, Key, Shift);
if Key <> 0 then
inherited KeyDown(Key, Shift);
end;
procedure TcxCustomInnerTreeView.KeyPress(var Key: Char);
begin
if (Key = Char(VK_TAB)) then
Key := #0;
if Container <> nil then
_TcxContainerAccess.KeyPress(Container, Key);
if Word(Key) = VK_RETURN then
Key := #0;
if Key <> #0 then
inherited KeyPress(Key);
end;
procedure TcxCustomInnerTreeView.KeyUp(var Key: Word; Shift: TShiftState);
begin
if (Key = VK_TAB) then
Key := 0;
if Container <> nil then
_TcxContainerAccess.KeyUp(Container, Key, Shift);
if Key <> 0 then
inherited KeyUp(Key, Shift);
end;
procedure TcxCustomInnerTreeView.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inherited MouseDown(Button, Shift, X, Y);
if Container <> nil then
with Container do
begin
InnerControlMouseDown := True;
try
MouseDown(Button, Shift, X + Self.Left, Y + Self.Top);
finally
InnerControlMouseDown := False;
end;
end;
end;
procedure TcxCustomInnerTreeView.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
inherited MouseMove(Shift, X, Y);
if Container <> nil then
_TcxContainerAccess.MouseMove(Container, Shift, X + Left, Y + Top);
end;
procedure TcxCustomInnerTreeView.MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inherited MouseUp(Button, Shift, X, Y);
if Container <> nil then
_TcxContainerAccess.MouseUp(Container, Button, Shift, X + Left, Y + Top);
end;
procedure TcxCustomInnerTreeView.CreateWindowHandle(const Params: TCreateParams);
begin
inherited CreateWindowHandle(Params);
UpdateItemHeight;
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.WndProc(var Message: TMessage);
begin
if (Container <> nil) and Container.InnerControlMenuHandler(Message) then
Exit;
if Message.Msg = WM_RBUTTONUP then
begin
Container.LockPopupMenu(True);
try
inherited WndProc(Message);
finally
Container.LockPopupMenu(False);
end;
Exit;
end;
if ((Message.Msg = WM_LBUTTONDOWN) or (Message.Msg = WM_LBUTTONDBLCLK)) and
(Container.DragMode = dmAutomatic) and (Container.DragKind = dkDock) and
not Container.IsDesigning then
begin
_TcxContainerAccess.BeginAutoDrag(Container);
Exit;
end;
inherited WndProc(Message);
case Message.Msg of
WM_HSCROLL,
WM_MOUSEWHEEL,
WM_VSCROLL,
CM_WININICHANGE,
TVM_ENSUREVISIBLE,
TVM_EXPAND,
TVM_INSERTITEM,
TVM_SELECTITEM:
Container.SetScrollBarsParameters;
end;
end;
procedure TcxCustomInnerTreeView.WMNCCalcSize(var Message: TWMNCCalcSize);
begin
inherited;
if not Container.ScrollBarsCalculating then
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.WMFontChange(var Message: TMessage);
begin
inherited;
if not Container.ScrollBarsCalculating then
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.WMLButtonDown(var Message: TWMLButtonDown);
begin
inherited;
if Dragging then
begin
CancelDrag;
Container.BeginDrag(False);
end;
end;
procedure TcxCustomInnerTreeView.MouseEnter(AControl: TControl);
begin
end;
procedure TcxCustomInnerTreeView.MouseLeave(AControl: TControl);
begin
if Container <> nil then
Container.ShortRefreshContainer(True);
end;
function TcxCustomInnerTreeView.GetControl: TWinControl;
begin
Result := Self;
end;
function TcxCustomInnerTreeView.GetControlContainer: TcxContainer;
begin
Result := FContainer;
end;
procedure TcxCustomInnerTreeView.HScrollHandler(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
CallWindowProc(DefWndProc, Handle, WM_HSCROLL, Word(ScrollCode) +
Word(ScrollPos) shl 16, Container.HScrollBar.Handle);
ScrollPos := GetScrollPos(Handle, SB_HORZ);
end;
procedure TcxCustomInnerTreeView.SetItemHeight(Value: Integer);
begin
if Value <> FItemHeight then
begin
FItemHeight := Value;
UpdateItemHeight;
end;
end;
procedure TcxCustomInnerTreeView.SetLookAndFeel(Value: TcxLookAndFeel);
begin
FLookAndFeel.Assign(Value);
end;
procedure TcxCustomInnerTreeView.VScrollHandler(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
var
AScrollInfo: TScrollInfo;
begin
if (ScrollCode in [scPosition, scTrack]) and (Win32MajorVersion >= 6) then
begin
AScrollInfo.cbSize := SizeOf(AScrollInfo);
AScrollInfo.fMask := SIF_POS;
AScrollInfo.nPos := ScrollPos;
SetScrollInfo(Handle, SB_VERT, AScrollInfo, True);
end;
CallWindowProc(DefWndProc, Handle, WM_VSCROLL, Word(ScrollCode) +
Word(ScrollPos) shl 16, Container.VScrollBar.Handle);
ScrollPos := GetScrollPos(Handle, SB_VERT);
end;
{$IFNDEF DELPHI6}
function TcxCustomInnerTreeView.GetScrollWidth: Integer;
begin
Result := SendMessage(Handle, LB_GETHORIZONTALEXTENT, 0, 0);
end;
procedure TcxCustomInnerTreeView.SetScrollWidth(const Value: Integer);
begin
if Value <> ScrollWidth then
SendMessage(Handle, LB_SETHORIZONTALEXTENT, Value, 0);
end;
{$ENDIF}
procedure TcxCustomInnerTreeView.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
inherited;
if Container <> nil then
with Message do
begin
Result := Result or DLGC_WANTCHARS;
if GetKeyState(VK_CONTROL) >= 0 then
Result := Result or DLGC_WANTTAB;
end;
end;
procedure TcxCustomInnerTreeView.WMKillFocus(var Message: TWMKillFocus);
begin
inherited;
if (Container <> nil) and not Container.IsDestroying then
Container.FocusChanged;
end;
procedure TcxCustomInnerTreeView.WMNCPaint(var Message: TWMNCPaint);
begin
if UsecxScrollBars then
begin
if Container.HScrollBar.Visible and Container.VScrollBar.Visible then
cxFillSizeGrip(Container);
if Container.HScrollBar.Visible then
Container.HScrollBar.Repaint;
if Container.VScrollBar.Visible then
Container.VScrollBar.Repaint;
end;
end;
procedure TcxCustomInnerTreeView.WMSetFocus(var Message: TWMSetFocus);
begin
inherited;
if (Container <> nil) and not Container.IsDestroying and
not(csDestroying in ComponentState) and
(Message.FocusedWnd <> Container.Handle) then
Container.FocusChanged;
end;
procedure TcxCustomInnerTreeView.WMSetRedraw(var Message: TWMSetRedraw);
begin
inherited;
FIsRedrawLocked := Message.Redraw = 0;
if not (csDestroying in ComponentState) and not FIsRedrawLocked then
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.WMWindowPosChanged(
var Message: TWMWindowPosChanged);
var
ARgn: HRGN;
begin
inherited;
if csDestroying in ComponentState then
Exit;
Container.SetScrollBarsParameters;
if Container.HScrollBar.Visible and Container.VScrollBar.Visible then
begin
ARgn := CreateRectRgnIndirect(GetSizeGripRect(Self));
SendMessage(Handle, WM_NCPAINT, ARgn, 0);
DeleteObject(ARgn);
end;
end;
procedure TcxCustomInnerTreeView.CMMouseEnter(var Message: TMessage);
begin
inherited;
if Message.lParam = 0 then
MouseEnter(Self)
else
MouseEnter(TControl(Message.lParam));
end;
procedure TcxCustomInnerTreeView.CNNotify(
var Message: TWMNotify);
begin
inherited;
if Message.NMHdr.code = TVN_DELETEITEM then
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.CMMouseLeave(var Message: TMessage);
begin
inherited;
if Message.lParam = 0 then
MouseLeave(Self)
else
MouseLeave(TControl(Message.lParam));
end;
procedure TcxCustomInnerTreeView.Expand(Node: TTreeNode);
begin
inherited;
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.Change(Node: TTreeNode);
begin
inherited;
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.Collapse(Node: TTreeNode);
begin
inherited;
Container.SetScrollBarsParameters;
end;
procedure TcxCustomInnerTreeView.UpdateItemHeight;
begin
if HandleAllocated then
TreeView_SetItemHeight(Handle, ItemHeight);
end;
{ TcxCustomTreeView }
constructor TcxCustomTreeView.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
InternalInitTreeView;
InnerTreeView.AutoSize := False;
InnerTreeView.Align := alClient;
InnerTreeView.BorderStyle := bsNone;
InnerTreeView.Parent := Self;
InnerTreeView.FContainer := Self;
InnerControl := InnerTreeView;
InnerTreeView.LookAndFeel.MasterLookAndFeel := Style.LookAndFeel;
Width := 120;
Height := 100;
end;
destructor TcxCustomTreeView.Destroy;
begin
FreeAndNil(FTreeView);
inherited Destroy;
end;
function TcxCustomTreeView.GetInnerTreeView: TcxCustomInnerTreeView;
begin
Result := FTreeView;
end;
procedure TcxCustomTreeView.InternalInitTreeView;
begin
FTreeView := GetTreeViewClass.Create(Self);
end;
class function TcxCustomTreeView.GetTreeViewClass: TcxCustomInnerTreeViewClass;
begin
Result := TcxCustomInnerTreeView;
end;
function TcxCustomTreeView.CanResize(var NewWidth, NewHeight: Integer): Boolean;
begin
Result := True;
if not Result or IsLoading then Exit;
if Align in [alLeft, alRight, alClient] then Exit;
end;
procedure TcxCustomTreeView.FontChanged;
begin
inherited FontChanged;
SetSize;
InnerTreeView.Invalidate;
end;
function TcxCustomTreeView.IsReadOnly: Boolean;
begin
Result := ReadOnly;
end;
function TcxCustomTreeView.NeedsScrollBars: Boolean;
begin
Result := True;
end;
procedure TcxCustomTreeView.Scroll(AScrollBarKind: TScrollBarKind;
AScrollCode: TScrollCode; var AScrollPos: Integer);
begin
inherited Scroll(AScrollBarKind, AScrollCode, AScrollPos);
{$IFDEF USETCXSCROLLBAR}
if AScrollBarKind = sbHorizontal then
InnerTreeView.HScrollHandler(Self, AScrollCode, AScrollPos)
else
InnerTreeView.VScrollHandler(Self, AScrollCode, AScrollPos);
SetScrollBarsParameters;
{$ENDIF}
end;
procedure TcxCustomTreeView.SetSize;
var
APrevBoundsRect: TRect;
begin
if IsLoading then
Exit;
APrevBoundsRect := InnerTreeView.BoundsRect;
inherited SetSize;
if not EqualRect(APrevBoundsRect, InnerTreeView.BoundsRect) and
InnerTreeView.HandleAllocated then
KillMessages(InnerTreeView.Handle, WM_MOUSEMOVE, WM_MOUSEMOVE);
end;
procedure TcxCustomTreeView.WriteState(Writer: TWriter);
begin
FTreeView.HandleNeeded;
inherited;
end;
procedure TcxCustomTreeView.CNNotify(var Message: TWMNotify);
begin
if InnerTreeView <> nil then
begin
InnerTreeView.CNNotify(Message);
Exit;
end;
inherited;
end;
function TcxCustomTreeView.AlphaSort{$IFDEF DELPHI6}(
ARecurse: Boolean = True){$ENDIF}: Boolean;
begin
Result := InnerTreeView.AlphaSort({$IFDEF DELPHI6}ARecurse{$ENDIF});
end;
function TcxCustomTreeView.CustomSort(SortProc: TTVCompare;
Data: Longint{$IFDEF DELPHI6}; ARecurse: Boolean = True{$ENDIF}): Boolean;
begin
Result := InnerTreeView.CustomSort(SortProc, Data{$IFDEF DELPHI6},
ARecurse{$ENDIF});
end;
procedure TcxCustomTreeView.FullCollapse;
begin
InnerTreeView.FullCollapse;
end;
procedure TcxCustomTreeView.FullExpand;
begin
InnerTreeView.FullExpand;
end;
function TcxCustomTreeView.GetHitTestInfoAt(X, Y: Integer): THitTests;
begin
Result := InnerTreeView.GetHitTestInfoAt(X - InnerTreeView.Left,
Y - InnerTreeView.Top);
end;
function TcxCustomTreeView.GetNodeAt(X, Y: Integer): TTreeNode;
begin
Result := InnerTreeView.GetNodeAt(X - InnerTreeView.Left, Y - InnerTreeView.Top);
end;
function TcxCustomTreeView.IsEditing: Boolean;
begin
Result := InnerTreeView.IsEditing;
end;
procedure TcxCustomTreeView.LoadFromFile(const FileName: string);
begin
InnerTreeView.LoadFromFile(FileName);
end;
procedure TcxCustomTreeView.LoadFromStream(Stream: TStream);
begin
InnerTreeView.LoadFromStream(Stream);
end;
procedure TcxCustomTreeView.SaveToFile(const FileName: string);
begin
InnerTreeView.SaveToFile(FileName);
end;
procedure TcxCustomTreeView.SaveToStream(Stream: TStream);
begin
InnerTreeView.SaveToStream(Stream);
end;
procedure TcxCustomTreeView.SetScrollBarsParameters(AIsScrolling: Boolean = False);
begin
if (InnerTreeView <> nil) and not InnerTreeView.IsRedrawLocked then
inherited SetScrollBarsParameters(AIsScrolling);
end;
{$IFDEF DELPHI6}
procedure TcxCustomTreeView.Select(Node: TTreeNode; ShiftState: TShiftState = []);
begin
InnerTreeView.Select(Node, ShiftState);
end;
procedure TcxCustomTreeView.Select(const Nodes: array of TTreeNode);
begin
InnerTreeView.Select(Nodes);
end;
procedure TcxCustomTreeView.Select(Nodes: TList);
begin
InnerTreeView.Select(Nodes);
end;
procedure TcxCustomTreeView.Deselect(Node: TTreeNode);
begin
InnerTreeView.Deselect(Node);
end;
procedure TcxCustomTreeView.Subselect(Node: TTreeNode; Validate: Boolean = False);
begin
InnerTreeView.Subselect(Node, Validate);
end;
procedure TcxCustomTreeView.ClearSelection(KeepPrimary: Boolean = False);
begin
InnerTreeView.ClearSelection(KeepPrimary);
end;
function TcxCustomTreeView.GetSelections(AList: TList): TTreeNode;
begin
Result := InnerTreeView.GetSelections(AList);
end;
function TcxCustomTreeView.FindNextToSelect: TTreeNode;
begin
Result := InnerTreeView.FindNextToSelect;
end;
{$ENDIF}
function TcxCustomTreeView.GetAutoExpand: Boolean;
begin
Result := InnerTreeView.AutoExpand;
end;
function TcxCustomTreeView.GetChangeDelay: Integer;
begin
Result := InnerTreeView.ChangeDelay;
end;
function TcxCustomTreeView.GetHideSelection: Boolean;
begin
Result := InnerTreeView.HideSelection;
end;
function TcxCustomTreeView.GetHotTrack: Boolean;
begin
Result := InnerTreeView.HotTrack;
end;
function TcxCustomTreeView.GetImages: TCustomImageList;
begin
Result := InnerTreeView.Images;
end;
function TcxCustomTreeView.GetItemHeight: Integer;
begin
Result := InnerTreeView.ItemHeight;
end;
function TcxCustomTreeView.GetTreeNodes: TTreeNodes;
begin
Result := InnerTreeView.Items;
end;
function TcxCustomTreeView.GetIndent: Integer;
begin
Result := InnerTreeView.Indent;
end;
{$IFDEF DELPHI6}
function TcxCustomTreeView.GetMultiSelect: Boolean;
begin
Result := InnerTreeView.MultiSelect;
end;
function TcxCustomTreeView.GetMultiSelectStyle: TMultiSelectStyle;
begin
Result := InnerTreeView.MultiSelectStyle;
end;
{$ENDIF}
function TcxCustomTreeView.GetReadOnly: Boolean;
begin
Result := InnerTreeView.ReadOnly;
end;
function TcxCustomTreeView.GetRightClickSelect: Boolean;
begin
Result := InnerTreeView.RightClickSelect;
end;
function TcxCustomTreeView.GetRowSelect: Boolean;
begin
Result := InnerTreeView.RowSelect;
end;
function TcxCustomTreeView.GetShowButtons: Boolean;
begin
Result := InnerTreeView.ShowButtons;
end;
function TcxCustomTreeView.GetShowLines: Boolean;
begin
Result := InnerTreeView.ShowLines;
end;
function TcxCustomTreeView.GetShowRoot: Boolean;
begin
Result := InnerTreeView.ShowRoot;
end;
function TcxCustomTreeView.GetSortType: TSortType;
begin
Result := InnerTreeView.SortType;
end;
function TcxCustomTreeView.GetStateImages: TCustomImageList;
begin
Result := InnerTreeView.StateImages;
end;
function TcxCustomTreeView.GetToolTips: Boolean;
begin
Result := InnerTreeView.ToolTips;
end;
function TcxCustomTreeView.GetTreeViewCanvas: TcxCanvas;
begin
Result := InnerTreeView.Canvas;
end;
{$IFDEF DELPHI6}
function TcxCustomTreeView.GetOnAddition: TTVExpandedEvent;
begin
Result := InnerTreeView.OnAddition;
end;
{$ENDIF}
{$IFDEF DELPHI5}
function TcxCustomTreeView.GetOnAdvancedCustomDraw: TTVAdvancedCustomDrawEvent;
begin
Result := InnerTreeView.OnAdvancedCustomDraw;
end;
function TcxCustomTreeView.GetOnAdvancedCustomDrawItem: TTVAdvancedCustomDrawItemEvent;
begin
Result := InnerTreeView.OnAdvancedCustomDrawItem;
end;
{$ENDIF}
{$IFDEF DELPHI6}
function TcxCustomTreeView.GetOnCancelEdit: TTVChangedEvent;
begin
Result := InnerTreeView.OnCancelEdit;
end;
{$ENDIF}
function TcxCustomTreeView.GetOnChange: TTVChangedEvent;
begin
Result := InnerTreeView.OnChange;
end;
function TcxCustomTreeView.GetOnChanging: TTVChangingEvent;
begin
Result := InnerTreeView.OnChanging;
end;
function TcxCustomTreeView.GetOnCollapsed: TTVExpandedEvent;
begin
Result := InnerTreeView.OnCollapsed;
end;
function TcxCustomTreeView.GetOnCollapsing: TTVCollapsingEvent;
begin
Result := InnerTreeView.OnCollapsing;
end;
function TcxCustomTreeView.GetOnCompare: TTVCompareEvent;
begin
Result := InnerTreeView.OnCompare;
end;
function TcxCustomTreeView.GetOnCustomDraw: TTVCustomDrawEvent;
begin
Result := InnerTreeView.OnCustomDraw;
end;
function TcxCustomTreeView.GetOnCustomDrawItem: TTVCustomDrawItemEvent;
begin
Result := InnerTreeView.OnCustomDrawItem;
end;
function TcxCustomTreeView.GetOnDeletion: TTVExpandedEvent;
begin
Result := InnerTreeView.OnDeletion;
end;
function TcxCustomTreeView.GetOnEditing: TTVEditingEvent;
begin
Result := InnerTreeView.OnEditing;
end;
function TcxCustomTreeView.GetOnEdited: TTVEditedEvent;
begin
Result := InnerTreeView.OnEdited;
end;
function TcxCustomTreeView.GetOnExpanding: TTVExpandingEvent;
begin
Result := InnerTreeView.OnExpanding;
end;
function TcxCustomTreeView.GetOnExpanded: TTVExpandedEvent;
begin
Result := InnerTreeView.OnExpanded;
end;
function TcxCustomTreeView.GetOnGetImageIndex: TTVExpandedEvent;
begin
Result := InnerTreeView.OnGetImageIndex;
end;
function TcxCustomTreeView.GetOnGetSelectedIndex: TTVExpandedEvent;
begin
Result := InnerTreeView.OnGetSelectedIndex;
end;
{$IFDEF DELPHI6}
function TcxCustomTreeView.GetOnCreateNodeClass: TTVCreateNodeClassEvent;
begin
Result := InnerTreeView.OnCreateNodeClass;
end;
{$ENDIF}
function TcxCustomTreeView.GetDropTarget: TTreeNode;
begin
Result := InnerTreeView.DropTarget;
end;
function TcxCustomTreeView.GetSelected: TTreeNode;
begin
Result := InnerTreeView.Selected;
end;
function TcxCustomTreeView.GetTopItem: TTreeNode;
begin
Result := InnerTreeView.TopItem;
end;
{$IFDEF DELPHI6}
function TcxCustomTreeView.GetSelectionCount: Cardinal;
begin
Result := InnerTreeView.SelectionCount;
end;
function TcxCustomTreeView.GetSelection(Index: Integer): TTreeNode;
begin
Result := InnerTreeView.Selections[Index];
end;
{$ENDIF}
procedure TcxCustomTreeView.SetAutoExpand(Value: Boolean);
begin
InnerTreeView.AutoExpand := Value;
end;
procedure TcxCustomTreeView.SetChangeDelay(Value: Integer);
begin
InnerTreeView.ChangeDelay := Value;
end;
procedure TcxCustomTreeView.SetHideSelection(Value: Boolean);
begin
InnerTreeView.HideSelection := Value;
end;
procedure TcxCustomTreeView.SetHotTrack(Value: Boolean);
begin
InnerTreeView.HotTrack := Value;
end;
procedure TcxCustomTreeView.SetImages(Value: TCustomImageList);
begin
InnerTreeView.Images := Value;
end;
procedure TcxCustomTreeView.SetTreeNodes(Value: TTreeNodes);
begin
InnerTreeView.Items := Value;
end;
procedure TcxCustomTreeView.SetIndent(Value: Integer);
begin
InnerTreeView.Indent := Value;
end;
procedure TcxCustomTreeView.SetItemHeight(Value: Integer);
begin
InnerTreeView.ItemHeight := Value;
end;
{$IFDEF DELPHI6}
procedure TcxCustomTreeView.SetMultiSelect(Value: Boolean);
begin
InnerTreeView.MultiSelect := Value;
end;
procedure TcxCustomTreeView.SetMultiSelectStyle(Value: TMultiSelectStyle);
begin
InnerTreeView.MultiSelectStyle := Value;
end;
{$ENDIF}
procedure TcxCustomTreeView.SetRightClickSelect(Value: Boolean);
begin
InnerTreeView.RightClickSelect := Value;
end;
procedure TcxCustomTreeView.SetReadOnly(Value: Boolean);
begin
if Value <> ReadOnly then
begin
InnerTreeView.ReadOnly := Value;
DataSetChange;
end;
end;
procedure TcxCustomTreeView.SetRowSelect(Value: Boolean);
begin
InnerTreeView.RowSelect := Value;
end;
procedure TcxCustomTreeView.SetShowButtons(Value: Boolean);
begin
InnerTreeView.ShowButtons := Value;
end;
procedure TcxCustomTreeView.SetShowLines(Value: Boolean);
begin
InnerTreeView.ShowLines := Value;
end;
procedure TcxCustomTreeView.SetShowRoot(Value: Boolean);
begin
InnerTreeView.ShowRoot := Value;
end;
procedure TcxCustomTreeView.SetSortType(Value: TSortType);
begin
InnerTreeView.SortType := Value;
end;
procedure TcxCustomTreeView.SetStateImages(Value: TCustomImageList);
begin
InnerTreeView.StateImages := Value;
end;
procedure TcxCustomTreeView.SetToolTips(Value: Boolean);
begin
InnerTreeView.ToolTips := Value;
end;
{$IFDEF DELPHI6}
procedure TcxCustomTreeView.SetOnAddition(Value: TTVExpandedEvent);
begin
InnerTreeView.OnAddition := Value;
end;
{$ENDIF}
{$IFDEF DELPHI5}
procedure TcxCustomTreeView.SetOnAdvancedCustomDraw(Value: TTVAdvancedCustomDrawEvent);
begin
InnerTreeView.OnAdvancedCustomDraw := Value;
end;
procedure TcxCustomTreeView.SetOnAdvancedCustomDrawItem(Value: TTVAdvancedCustomDrawItemEvent);
begin
InnerTreeView.OnAdvancedCustomDrawItem := Value;
end;
{$ENDIF}
{$IFDEF DELPHI6}
procedure TcxCustomTreeView.SetOnCancelEdit(Value: TTVChangedEvent);
begin
InnerTreeView.OnCancelEdit := Value;
end;
{$ENDIF}
procedure TcxCustomTreeView.SetOnChange(Value: TTVChangedEvent);
begin
InnerTreeView.OnChange := Value;
end;
procedure TcxCustomTreeView.SetOnChanging(Value: TTVChangingEvent);
begin
InnerTreeView.OnChanging := Value;
end;
procedure TcxCustomTreeView.SetOnCollapsed(Value: TTVExpandedEvent);
begin
InnerTreeView.OnCollapsed := Value;
end;
procedure TcxCustomTreeView.SetOnCollapsing(Value: TTVCollapsingEvent);
begin
InnerTreeView.OnCollapsing := Value;
end;
procedure TcxCustomTreeView.SetOnCompare(Value: TTVCompareEvent);
begin
InnerTreeView.OnCompare := Value;
end;
procedure TcxCustomTreeView.SetOnCustomDraw(Value: TTVCustomDrawEvent);
begin
InnerTreeView.OnCustomDraw := Value;
end;
procedure TcxCustomTreeView.SetOnCustomDrawItem(Value: TTVCustomDrawItemEvent);
begin
InnerTreeView.OnCustomDrawItem := Value;
end;
procedure TcxCustomTreeView.SetOnDeletion(Value: TTVExpandedEvent);
begin
InnerTreeView.OnDeletion := Value;
end;
procedure TcxCustomTreeView.SetOnEditing(Value: TTVEditingEvent);
begin
InnerTreeView.OnEditing := Value;
end;
procedure TcxCustomTreeView.SetOnEdited(Value: TTVEditedEvent);
begin
InnerTreeView.OnEdited := Value;
end;
procedure TcxCustomTreeView.SetOnExpanding(Value: TTVExpandingEvent);
begin
InnerTreeView.OnExpanding := Value;
end;
procedure TcxCustomTreeView.SetOnExpanded(Value: TTVExpandedEvent);
begin
InnerTreeView.OnExpanded := Value;
end;
procedure TcxCustomTreeView.SetOnGetImageIndex(Value: TTVExpandedEvent);
begin
InnerTreeView.OnGetImageIndex := Value;
end;
procedure TcxCustomTreeView.SetOnGetSelectedIndex(Value: TTVExpandedEvent);
begin
InnerTreeView.OnGetSelectedIndex := Value;
end;
{$IFDEF DELPHI6}
procedure TcxCustomTreeView.SetOnCreateNodeClass(Value: TTVCreateNodeClassEvent);
begin
InnerTreeView.OnCreateNodeClass := Value;
end;
{$ENDIF}
procedure TcxCustomTreeView.SetDropTarget(Value: TTreeNode);
begin
InnerTreeView.DropTarget := Value;
end;
procedure TcxCustomTreeView.SetSelected(Value: TTreeNode);
begin
InnerTreeView.Selected := Value;
end;
procedure TcxCustomTreeView.SetTopItem(Value: TTreeNode);
begin
InnerTreeView.TopItem := Value;
end;
function TcxCustomTreeView.CanEdit(Node: TTreeNode): Boolean;
begin
Result := InnerTreeView.CanEdit(Node);
end;
function TcxCustomTreeView.CanChange(Node: TTreeNode): Boolean;
begin
Result := InnerTreeView.CanChange(Node);
end;
function TcxCustomTreeView.CanCollapse(Node: TTreeNode): Boolean;
begin
Result := InnerTreeView.CanCollapse(Node);
end;
function TcxCustomTreeView.CanExpand(Node: TTreeNode): Boolean;
begin
Result := InnerTreeView.CanExpand(Node);
end;
procedure TcxCustomTreeView.Collapse(Node: TTreeNode);
begin
InnerTreeView.Collapse(Node);
end;
procedure TcxCustomTreeView.Expand(Node: TTreeNode);
begin
InnerTreeView.Expand(Node);
end;
end.