📄 treeviewen.pas
字号:
unit TreeViewEn;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TTreeViewEn = class(TTreeView)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
function GetTreeNode(Index : array of integer) : TTreeNode;
function GetPath(Node : TTreeNode) : String;
function AddStrings(Index : Array of integer; Str : Array of String):Boolean;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('VodCtl', [TTreeViewEn]);
end;
function TTreeViewEn.GetTreeNode(Index : array of integer) : TTreeNode;
var
i,j,DeepLow,DeepHigh : integer;
Node : TTreeNode;
begin
Result := nil;
DeepLow := Low(Index);
DeepHigh := High(Index);
For i:= 0 to Items.Count -1 do
begin
Node := Items.Item[i];
if Node.Level = DeepHigh-DeepLow then
begin
J := DeepHigh-DeepLow;
while Node<>nil do
begin
if Node.Index <> Index[j] then Break;
Node := Node.Parent;
Dec(J);
end;
if J = -1 then
begin
Result := Items[i];
Break;
end;
end;
end;
end;
function TTreeViewEn.GetPath(Node : TTreeNode) : String;
var
I : integer;
begin
For i:= 0 to Node.Level do
begin
Result := IntToStr(Node.Index) + Result;
Node := Node.Parent;
end;
end;
function TTreeViewEn.AddStrings(Index : Array of integer; Str : Array of String):Boolean;
var
i, St, En :integer;
Node : TTreeNode;
begin
Result := False;
Node := GetTreeNode(Index);
if Node = nil then Exit;
St := Low(Str);
En := High(Str);
if Node.Count=0 then
begin
Items.AddChildFirst(Node,Str[St]);
For i := St+1 to En do Items.AddChild(Node,Str[i]);
end
else For i := St to En do Items.AddChild(Node,Str[i]);
Result := True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -