cxshelltreeview.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,164 行 · 第 1/3 页
PAS
1,164 行
end;
inherited DoExit;
finally
FIsExitProcessing := False;
end;
end;
procedure TcxCustomShellTreeView.Loaded;
begin
inherited Loaded;
InnerTreeView.Loaded;
SetScrollBarsParameters;
end;
function TcxCustomShellTreeView.NeedsScrollBars: Boolean;
begin
Result := True;
end;
procedure TcxCustomShellTreeView.Scroll(AScrollBarKind: TScrollBarKind;
AScrollCode: TScrollCode; var AScrollPos: Integer);
var
AScrollInfo: TScrollInfo;
begin
inherited Scroll(AScrollBarKind, AScrollCode, AScrollPos);
if not Enabled then
Exit;
with FInnerTreeView do
if AScrollBarKind = sbHorizontal then
begin
CallWindowProc(DefWndProc, Handle, WM_HSCROLL, Word(AScrollCode) +
Word(AScrollPos) shl 16, HScrollBar.Handle);
AScrollPos := GetScrollPos(Handle, SB_HORZ);
end
else
begin
if (AScrollCode = scTrack) and (Win32MajorVersion >= 6) then
begin
AScrollInfo.cbSize := SizeOf(AScrollInfo);
AScrollInfo.fMask := SIF_POS;
AScrollInfo.nPos := AScrollPos;
SetScrollInfo(Handle, SB_VERT, AScrollInfo, True);
end;
CallWindowProc(DefWndProc, Handle, WM_VSCROLL, Word(AScrollCode) +
Word(AScrollPos) shl 16, VScrollBar.Handle);
AScrollPos := GetScrollPos(Handle, SB_VERT);
end;
SetScrollBarsParameters(True);
end;
procedure TcxCustomShellTreeView.CurrentFolderChangedHandler(Sender: TObject;
Root: TcxCustomShellRoot);
begin
SetScrollBarsParameters;
end;
function TcxCustomShellTreeView.GetDataBindingClass: TcxCustomDataBindingClass;
begin
Result := TcxDataBinding;
end;
function TcxCustomShellTreeView.GetViewOptions(AForNavigation: Boolean = False): TcxShellViewOptions;
begin
with InnerTreeView do
begin
Result := [];
if Options.ShowNonFolders then
Include(Result, svoShowFiles);
if Options.ShowFolders then
Include(Result, svoShowFolders);
if AForNavigation or Options.ShowHidden then
Include(Result, svoShowHidden);
end;
end;
procedure TcxCustomShellTreeView.AddFolderHandler(Sender: TObject;
AFolder: TcxShellFolder; var ACanAdd: Boolean);
begin
if Assigned(FOnAddFolder) then
FOnAddFolder(Self, AFolder, ACanAdd);
end;
procedure TcxCustomShellTreeView.ChangeHandler(Sender: TObject; Node: TTreeNode);
begin
try
if Assigned(FOnChange) then
FOnChange(Self, Node);
finally
SetScrollBarsParameters;
end;
end;
procedure TcxCustomShellTreeView.ChangingHandler(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
if Assigned(FOnChanging) then
FOnChanging(Self, Node, AllowChange);
end;
procedure TcxCustomShellTreeView.CollapsedHandler(Sender: TObject;
Node: TTreeNode);
begin
try
if Assigned(FOnCollapsed) then
FOnCollapsed(Self, Node);
finally
SetScrollBarsParameters;
end;
end;
procedure TcxCustomShellTreeView.CollapsingHandler(Sender: TObject;
Node: TTreeNode; var AllowCollapse: Boolean);
begin
if Assigned(FOnCollapsing) then
FOnCollapsing(Self, Node, AllowCollapse);
end;
procedure TcxCustomShellTreeView.EditedHandler(Sender: TObject;
Node: TTreeNode; var S: string);
begin
try
if Assigned(FOnEdited) then
FOnEdited(Self, Node, S);
finally
SetScrollBarsParameters;
end;
end;
procedure TcxCustomShellTreeView.EditingHandler(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
begin
if Assigned(FOnEditing) then
FOnEditing(Self, Node, AllowEdit);
end;
procedure TcxCustomShellTreeView.ExpandedHandler(Sender: TObject;
Node: TTreeNode);
begin
try
if Assigned(FOnExpanded) then
FOnExpanded(Self, Node);
finally
SetScrollBarsParameters;
end;
end;
procedure TcxCustomShellTreeView.ExpandingHandler(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
begin
if Assigned(FOnExpanding) then
FOnExpanding(Self, Node, AllowExpansion);
end;
procedure TcxCustomShellTreeView.ShellChangeHandler(Sender: TObject;
AEventID: DWORD; APIDL1, APIDL2: PItemIDList);
begin
if Assigned(FOnShellChange) then
FOnShellChange(Self, AEventID, APIDL1, APIDL2);
end;
function TcxCustomShellTreeView.GetAbsolutePIDL: PItemIDList;
begin
Result := nil;
if FInnerTreeView <> nil then
with FInnerTreeView do
if Selected <> nil then
Result := GetNodeAbsolutePIDL(Selected);
end;
function TcxCustomShellTreeView.GetAutoExpand: Boolean;
begin
Result := FInnerTreeView.AutoExpand;
end;
function TcxCustomShellTreeView.GetChangeDelay: Integer;
begin
Result := FInnerTreeView.ChangeDelay;
end;
function TcxCustomShellTreeView.GetDragDropSettings: TcxDragDropSettings;
begin
Result := TcxDragDropSettings(FInnerTreeView.DragDropSettings);
end;
function TcxCustomShellTreeView.GetFolder(AIndex: Integer): TcxShellFolder;
begin
Result := FInnerTreeView.Folders[AIndex];
end;
function TcxCustomShellTreeView.GetFolderCount: Integer;
begin
Result := FInnerTreeView.FolderCount;
end;
function TcxCustomShellTreeView.GetHideSelection: Boolean;
begin
Result := FInnerTreeView.HideSelection;
end;
function TcxCustomShellTreeView.GetIndent: Integer;
begin
Result := FInnerTreeView.Indent;
end;
function TcxCustomShellTreeView.GetOptions: TcxShellTreeViewOptions;
begin
Result := TcxShellTreeViewOptions(FInnerTreeView.Options);
end;
function TcxCustomShellTreeView.GetPath: string;
var
ATempPIDL: PItemIDList;
begin
Result := '';
if FInnerTreeView <> nil then
with FInnerTreeView do
if Selected <> nil then
begin
ATempPIDL := GetNodeAbsolutePIDL(Selected);
try
Result := GetPidlName(ATempPIDL);
finally
DisposePidl(ATempPIDL);
end;
end;
end;
function TcxCustomShellTreeView.GetRightClickSelect: Boolean;
begin
Result := FInnerTreeView.RightClickSelect;
end;
function TcxCustomShellTreeView.GetRoot: TcxShellTreeRoot;
begin
Result := TcxShellTreeRoot(FInnerTreeView.Root)
end;
function TcxCustomShellTreeView.GetShellListView: TcxCustomShellListView;
begin
if FInnerTreeView.ListView is TcxInnerShellListView then
Result := TcxInnerShellListViewAccess(FInnerTreeView.ListView).Container
else
Result := nil;
end;
function TcxCustomShellTreeView.GetShowButtons: Boolean;
begin
Result := FInnerTreeView.ShowButtons;
end;
function TcxCustomShellTreeView.GetShowInfoTips: Boolean;
begin
Result := FInnerTreeView.ShowInfoTips;
end;
function TcxCustomShellTreeView.GetShowLines: Boolean;
begin
Result := FInnerTreeView.ShowLines;
end;
function TcxCustomShellTreeView.GetShowRoot: Boolean;
begin
Result := FInnerTreeView.ShowRoot;
end;
function TcxCustomShellTreeView.GetStateImages: TCustomImageList;
begin
Result := FInnerTreeView.StateImages;
end;
function TcxCustomShellTreeView.GetTreeHotTrack: Boolean;
begin
Result := FInnerTreeView.HotTrack;
end;
procedure TcxCustomShellTreeView.SetAbsolutePIDL(Value: PItemIDList);
begin
if (FInnerTreeView <> nil) and FInnerTreeView.HandleAllocated then
begin
if not CheckAbsolutePIDL(Value, Root, True) then
Exit;
SendMessage(FInnerTreeView.Handle, DSM_DONAVIGATE, WPARAM(Value), 0);
FInnerTreeView.DoNavigateListView;
end;
end;
procedure TcxCustomShellTreeView.SetAutoExpand(Value: Boolean);
begin
FInnerTreeView.AutoExpand := Value;
end;
procedure TcxCustomShellTreeView.SetChangeDelay(Value: Integer);
begin
FInnerTreeView.ChangeDelay := Value;
end;
procedure TcxCustomShellTreeView.SetDragDropSettings(Value: TcxDragDropSettings);
begin
FInnerTreeView.DragDropSettings := Value;
end;
procedure TcxCustomShellTreeView.SetHideSelection(Value: Boolean);
begin
FInnerTreeView.HideSelection := Value;
end;
procedure TcxCustomShellTreeView.SetIndent(Value: Integer);
var
APrevIndent: Integer;
begin
APrevIndent := FInnerTreeView.Indent;
FInnerTreeView.Indent := Value;
if APrevIndent <> FInnerTreeView.Indent then
SetScrollBarsParameters;
end;
procedure TcxCustomShellTreeView.SetOptions(Value: TcxShellTreeViewOptions);
begin
FInnerTreeView.Options.Assign(Value);
end;
procedure TcxCustomShellTreeView.SetPath(const Value: string);
var
APIDL: PItemIDList;
begin
if (FInnerTreeView <> nil) and FInnerTreeView.HandleAllocated and (Path <> Value) then
begin
APIDL := PathToAbsolutePIDL(Value, Root, GetViewOptions(True));
if APIDL <> nil then
try
SendMessage(FInnerTreeView.Handle, DSM_DONAVIGATE, WPARAM(APIDL), 0);
FInnerTreeView.DoNavigateListView;
finally
DisposePidl(APIDL);
end;
end;
end;
procedure TcxCustomShellTreeView.SetRightClickSelect(Value: Boolean);
begin
FInnerTreeView.RightClickSelect := Value;
end;
procedure TcxCustomShellTreeView.SetRoot(Value: TcxShellTreeRoot);
begin
FInnerTreeView.Root := Value;
end;
procedure TcxCustomShellTreeView.SetShellListView(Value: TcxCustomShellListView);
begin
if Value = nil then
FInnerTreeView.ListView := nil
else
FInnerTreeView.ListView := Value.InnerListView;
end;
procedure TcxCustomShellTreeView.SetShowButtons(Value: Boolean);
begin
FInnerTreeView.ShowButtons := Value;
end;
procedure TcxCustomShellTreeView.SetShowInfoTips(Value: Boolean);
begin
FInnerTreeView.ShowInfoTips := Value;
end;
procedure TcxCustomShellTreeView.SetShowLines(Value: Boolean);
begin
FInnerTreeView.ShowLines := Value;
end;
procedure TcxCustomShellTreeView.SetShowRoot(Value: Boolean);
begin
FInnerTreeView.ShowRoot := Value;
end;
procedure TcxCustomShellTreeView.SetStateImages(Value: TCustomImageList);
begin
FInnerTreeView.StateImages := Value;
end;
procedure TcxCustomShellTreeView.SetTreeHotTrack(Value: Boolean);
begin
FInnerTreeView.HotTrack := Value;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?