cxtreeview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,527 行 · 第 1/4 页
PAS
1,527 行
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;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?