table A
id bh cname lastbh
21 01 银行存款 0
22 02 现金 0
23 0101 中行 01
24 0102 建行 01
25 0201 美圆 02
26 0103 农行 01
27 03 支票 01
28 010101 西江支行 0101
29 010101 三联支行 0102
31 0202 人民币 02
32 0301 期票 03要通过TREEVIEW以树状形式显示出来,显示的结果应该是:
01 银行存款
0101 中行
010101 西江支行
010201 三联支行
0102 建行
0103 农行
02 现金
0201 美圆
0202 人民币
03 支票
0301期票请教各位,如何实现?
谢谢!
id bh cname lastbh
21 01 银行存款 0
22 02 现金 0
23 0101 中行 01
24 0102 建行 01
25 0201 美圆 02
26 0103 农行 01
27 03 支票 01
28 010101 西江支行 0101
29 010101 三联支行 0102
31 0202 人民币 02
32 0301 期票 03要通过TREEVIEW以树状形式显示出来,显示的结果应该是:
01 银行存款
0101 中行
010101 西江支行
010201 三联支行
0102 建行
0103 农行
02 现金
0201 美圆
0202 人民币
03 支票
0301期票请教各位,如何实现?
谢谢!
解决方案 »
- 今天消息,delphi 2010试用版本已经可以在官方网站下载了。
- 怎么连接sql2000数据库并进行session验证,急!
- 请各位兄弟帮我看年吧.我不知错在那里了.
- 高手请进 “图形字段” 的引用问题——————在线等待!!!!
- 有谁用过web server(cgi方式)?
- delphi7.0 dblookupcombobox 的使用问题
- 是中国人,就去投票!
- 我在做一个通信程序的时候,需要使用DBGrid或Grid控件,将服务器端传来的信息显示
- 如何在系统托盘添加自己程序的图标,多谢各位大哥不吝赐教!
- 如何在程序中实现数据表的pack,就是删除以前没用的记录号
- 装个ehlib装到崩溃老少爷们帮忙看看吧
- if条件判断语句是先判断前面还是后面
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, DB, DBTables, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Q: TQuery;
TreeV: TTreeView;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TreeVExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var node : TTreeNode;
begin
Q.Close;
Q.DatabaseName := 'D:\' ;
Q.SQL.Clear; TreeV.Items.Clear; Q.SQL.Add( ' select * from TableA ' ) ;
Q.Open;
if Q.RecordCount > 0 then
begin
while Not Q.Eof do
begin
if Length(Q.FieldByName('bh').AsString) = 2 then
begin
node := TreeV.Items.Add(nil,Q.FieldByName('bh').AsString + ' ' + Q.FieldByName('CName').AsString );
TreeV.Items.AddChild(node,'') ;
end;
Q.Next ;
end;
end;end;procedure TForm1.FormCreate(Sender: TObject);
var t : TTable ;
begin
Q := TQuery.Create(nil); t := TTable.Create(nil);
t.Close;
t.TableName := 'D:\tableA.DB' ;
t.TableType := ttParadox ; with t.FieldDefs do
begin
Clear;
Add('id', ftString, 10, False ) ;
Add('bh', ftString, 20, False ) ;
Add('CName',ftString, 50, False ) ;
Add('lastbh',ftString,50, False ) ;
end;
t.CreateTable ;
t.Free; with TQuery.Create(nil) do
begin
Try
Close;
DataBaseName := 'D:\' ;
SQL.Clear;
SQL.Add( ' insert into tableA values(''21'',''01'',''銀行存款'',''0'') ' ) ;
ExecSQL; SQL.Clear;
SQL.Add( ' insert into tableA values(''22'',''02'',''現金'',''0'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''23'',''0101'',''中行'',''01'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''24'',''0102'',''建行'',''01'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''25'',''0201'',''美元'',''02'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''26'',''0103'',''農行'',''01'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''27'',''03'',''支票'',''01'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''28'',''010101'',''西行支行'',''0101'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''29'',''010102'',''三聯支行'',''0102'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''31'',''0202'',''人民幣'',''02'') ' ) ;
ExecSQL ; SQL.Clear;
SQL.Add( ' insert into tableA values(''32'',''0301'',''期票'',''03'') ' ) ;
ExecSQL ;
Finally
Free;
end;
end;
end;procedure TForm1.TreeVExpanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
var i :integer ;
node1 : TTreeNode ;
begin
Node.DeleteChildren ; i := Pos(' ',node.Text) - 1 ;
with TQuery.Create(nil) do
begin
Try
Close;
DataBaseName := 'D:\' ;
SQL.Clear;
SQL.Add( ' select * from TableA ' ) ;
Open;
if RecordCount > 0 then
begin
while Not Eof do
begin
if (i + 2 = Length(FieldByName('bh').AsString ) ) and
(Copy(FieldByName('bh').AsString ,1,i) = Copy(Node.Text,1,i) ) then
begin
node1 := TreeV.Items.AddChild(node,FieldByName('bh').AsString + ' ' + FieldByName('CName').AsString );
TreeV.Items.AddChild(node1,'') ;
end; Next ;
end;
end ;
Finally
Free;
end;
end;
end;end.我這里不能用SQL,只能用本地DB,不好意思
ID_DEPT = 2;
var
nLevel: Integer;
pNodes: array[0..1023] of TTreeNode;
lpID, lpName: string;
TmpSql: string;
begin
TmpSql := 'Select bh,cname from tabla order by bh';
with adoquery1 do
begin
close;
sql.clear;
sql.add(Tmpsql);
Open;
end;
TreeView1.Clear;
pNodes[0] := TreeView1.Add(nil, '所有部门');
with adoquery1.Recordset do
while not Eof do
begin
lpID := Fields['bh'].Value;
lpName := Trim(Fields['cname'].Value);
nLevel := Length(lpID) div ID_DEPT;
pNodes[nLevel] := TreeView1.AddChild(pNodes[nLevel - 1], lpName);
MoveNext;
end;
写错了一点点,呵呵
TreeView1 后面都没带Item
var i,level,ilen:integer;
begin
level:=-1;
ilen:=0;
if (trim(sformat)<>'') and (trim(scode)<>'') then
for i:=1 to length(sformat) do
begin
ilen:=ilen+strtoint(sformat[i]);
if length(scode)=ilen then
begin
level:=i;
break;
end;
end;
result:=level;
end;procedure loadtree(tree:Ttreeview;treedb:Tdbdataset;dwnr,dwbm:string);
//treedb可以使用query控件,dwnr可以自己设定如 所有科目,dwbm设定分级如222,
//使用方法loadtree(treeview1,query1,'所有科目','222')
var
curID,nodetxt:string;
i,level,cnode,num:integer;
mynode:array[0..6] of Ttreenode; //最深为6级
begin
tree.items.clear;
level:=0;
tree.items.clear;
mynode[level]:=tree.items.add(tree.topitem,dwnr);
with treedb do
begin
try
if not active then open;
first;
tree.Items.BeginUpdate;
for i:=1 to recordcount do
begin
curID:=trim(fields[0].asstring);
nodetxt:=curID+'-'+ trim(fields[1].asstring);
level:=getnodelevel(dwbm,curID);
if level>0 then
begin
mynode[level]:=tree.items.addchild(mynode[level-1],nodetxt);
end;
next;
end;
tree.Items.EndUpdate;
except
messagedlg('打开数据表出错,请检查基本设置!',mtwarning,[mbok],0);
close;
end;
end;
end;