⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makecodetree.pas

📁 财务软件:功能尚可,基于UML设计开发的delphi系统,文档齐全
💻 PAS
字号:
unit MakeCodeTree;

interface

uses ComCtrls,db,SysUtils;

type
  TCodeTree=class
    private
      function AddTreeNode(tv:TTreeView;vParentCode,vCode, vName: String): Boolean;
      function GetString(s, se: String; n: Integer): String;
    public
      function GetNodeCode(vNode: TTreeNode): String;
      function GetNodeName(vNode: TTreeNode): String;
      function GetNode(tv:TTreeView;vCode: String): TTreeNode;
      function MakeCodeTree(tv:TTreeView;aDataSet:TDataSet):Boolean;
    end;

const
  SepStr:string='-';

implementation

uses BaseVar;


function TCodeTree.GetNodeCode(vNode: TTreeNode): String;
begin
  Result:=GetString(vNode.text,SepStr,1);
end;

function TCodeTree.GetNodeName(vNode: TTreeNode): String;
begin
   Result:=GetString(vNode.text,SepStr,2);
end;


function TCodeTree.AddTreeNode(tv:TTreeView;vParentCode,vCode, vName: String): Boolean;
begin
  tv.Items.AddChild(GetNode(tv,vParentCode),vCode+SepStr+vName);
end;

function TCodeTree.MakeCodeTree(tv:TTreeView;aDataSet:TDataSet):Boolean;
begin
  tv.Items.Clear;
  aDataSet.First;
  with aDataSet do
  while not Eof do
  begin
    AddTreeNode(tv,FieldByName('父项代码').AsString,FieldByName('代码').AsString,FieldByName('名称').AsString);
    next;
  end;
end;

function TCodeTree.GetNode(tv:TTreeView;vCode: String): TTreeNode;
  function GetNodeByCode(vNode:TTreeNode;vCode:string):TTreeNode;
  var
    i:Integer;
  begin
    Result:=nil;
    if GetNodeCode(vNode)=vCode then     //找到节点
    begin
       Result:=vNode;
       exit;
    end
    else
    if vNode.HasChildren then
    begin
      //浏览子节点
      for i:=0 to vNode.Count-1 do
      begin
        Result:=GetNodeByCode(vNode.Item[i],vCode);
        if Result<>nil then exit;
      end;
    end;
  end;
var
  i:Integer;
begin
  Result:=nil;
  if vCode='' then
    Result:=nil
  else
  begin
    for i:=0 to tv.Items.Count-1 do
    begin
      Result:=GetNodeByCode(tv.Items[i],vCode);
      //如果找到节点
      if Result<>nil then Break;
    end;
  end;
end;


function TCodeTree.GetString(s, se: String; n: Integer): String;
var
  rs:String;
  i,j:Integer;
begin
  i:=0;
  rs:='';
  if n=1 then
  begin
    while s[i]<>se do
    begin
      rs:=rs+s[i];
      i:=i+1;
    end;
    result:=trim(rs);
    exit;
  end;
  j:=1;
  i:=0;
  rs:='';
  while j<>n do
  begin
    while s[i]<>se do i:=i+1;
    while s[i]=' ' do i:=i+1;
    I:=I+1;
    j:=j+1;
  end;
//  I:=I+1;
  while (s[i]<>se) and (i<=Length(s)) do
  begin
    rs:=rs+s[i];
    i:=i+1;
  end;
  result:=trim(rs);
  exit;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -