我想做个和类似用友科目的treeview常用
资产-
|-101 现金
|-102 银行存款
:
:
|-109 其他货币资金负债
损益-
|-501 产品销售收入
|-502 产品销售成本
:
:
|-550 所得税表: cclass ccode ccode_name
资产 101 现金
资产 102 银行存款
资产 109 其他货币资金
损益 501 产品销售收入
损益 502 产品销售成本
损益 550 所得税怎么实现啊? 请大侠指教!
资产-
|-101 现金
|-102 银行存款
:
:
|-109 其他货币资金负债
损益-
|-501 产品销售收入
|-502 产品销售成本
:
:
|-550 所得税表: cclass ccode ccode_name
资产 101 现金
资产 102 银行存款
资产 109 其他货币资金
损益 501 产品销售收入
损益 502 产品销售成本
损益 550 所得税怎么实现啊? 请大侠指教!
function StrLeft(const mStr: string; mDelimiter: string): string;
begin
Result := Copy(mStr, 1, Pos(mDelimiter, mStr) - 1);
end; { StrLeft }function StrRight(const mStr: string; mDelimiter: string): string;
begin
if Pos(mDelimiter, mStr) <= 0 then
Result := ''
else Result := Copy(mStr, Pos(mDelimiter, mStr) + Length(mDelimiter), MaxInt);
end; { StrRight }procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
vTreeNode: TTreeNode;
begin
ADOQuery2.Open;
ADOQuery2.First;
TreeView1.Items.Clear; while not ADOQuery2.Eof do begin
vTreeNode := nil;
for I := 0 to TreeView1.Items.Count - 1 do begin
if (Pos(StrLeft(TreeView1.Items[I].Text, #32),
ADOQuery2.FieldByName('ccode').AsString) = 1) then begin
vTreeNode := TreeView1.Items[I];
end;
end;
TreeView1.Items.AddChild(vTreeNode,
ADOQuery2.FieldByName('ccode').AsString + #32 +
ADOQuery2.FieldByName('ccode_name').AsString);
ADOQuery2.Next;
end; for I := 0 to TreeView1.Items.Count - 1 do
TreeView1.Items[I].Text := StrRight(TreeView1.Items[I].Text, #32);end;
资产 1
负债 5
现金 101
所得税 505
xxx 10101
yyy 50505
等等,如此,你只要找到
资产--现金--xxx
负债--所得税--yyy
这样树就出来了
考虑到速度,可以在相关项目展开时候再添加
昨天刚小弄的一个控件,有源码,