加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

动手生成 Delphi xe DBTreeview 三级行政图树 省市县

发布时间:2020-12-15 09:06:28 所属栏目:大数据 来源:网络整理
导读:表结构及记录 object tarea: TFDQuery ??? Connection = FDConnection1 ??? SQL.Strings = ( ????? ‘select *‘ ????? ‘from tArea? order by fParentCode‘) ??? Left = 160 ??? Top = 240 ? end ?object tv: TTreeView ??? Left = 0 ??? Top = 0 ??? Wid

表结构及记录

object tarea: TFDQuery
??? Connection = FDConnection1
??? SQL.Strings = (
????? ‘select *‘
????? ‘from tArea? order by fParentCode‘)
??? Left = 160
??? Top = 240
? end

?object tv: TTreeView
??? Left = 0
??? Top = 0
??? Width = 554
??? Height = 320
??? Align = alClient
??? Indent = 19
??? TabOrder = 1
??? ExplicitLeft = 40
??? ExplicitTop = 32
??? ExplicitWidth = 121
??? ExplicitHeight = 97
? end

代码

procedure TForm1.FormCreate(Sender: TObject);
? var
??? nodes:ttreenodes;
??? node:ttreenode ;
??? CurItem,CurItem1:Ttreenode ;
??? nodestr:string;
??? lastparent,temp:string;
??? i,j:integer?? ;
begin
???????? TV.Items.Clear;
???? nodes:=TV.Items;
???? Tarea.Active:=true;
???? node:=nodes.add(nil,Tarea.FieldByName(‘fCode‘).Value+‘_‘+Tarea.FieldByName(‘fNAME‘).Value);
???? Tarea.Next;
???? while NOT Tarea.Eof? do
???? BEGIN
????????? if Tarea.FieldByName(‘fParentCode‘).AsString=‘‘ then
???????????? nodes.add(nil,Tarea.FieldByName(‘fCode‘).Value+‘_‘+Tarea.FieldByName(‘fNAME‘).Value);? //省份

?????????? if Tarea.FieldByName(‘fParentCode‘).AsString<>lastparent then
??????????? //当前记录 fParentCode跟上条记录 fParentCode? 不相等,表明是换一个父代了
??????????? //需查找
?????????? begin
????????????? CurItem := TV.Items.GetFirstNode;
??????????????? while CurItem <> nil do
?????????????????? begin
??????????????????? if copy( CurItem.Text,1,pos(‘_‘,CurItem.Text)-1) =Tarea.FieldByName(‘fParentCode‘).Value then
?????????????????????? begin
??????????????????????? CurItem.Selected:=true;
??????????????????????? break;
??????????????????????? end;
?????????????????????? CurItem := CurItem.GetNext;
?????????????????? end;
????????????? nodes.addCHILD(CurItem,Tarea.FieldByName(‘fCode‘).Value+‘_‘+Tarea.FieldByName(‘fNAME‘).Value);? //
?????????? end;

????????? if (Tarea.FieldByName(‘fParentCode‘).AsString<>‘‘)
????????????????????????????? AND
????????????? (Tarea.FieldByName(‘fParentCode‘).AsString=lastparent)
????????????? //当前记录 fParentCode跟上条记录 fParentCode? 相等,表明是同一个父代了,直接添加就行
????????????? then
????????????? BEGIN
???????????????? nodes.addCHILD(CurItem,Tarea.FieldByName(‘fCode‘).Value+‘_‘+Tarea.FieldByName(‘fNAME‘).Value);? //
????????????? END;


?????????? lastparent:= Tarea.FieldByName(‘fParentCode‘).AsString;
?????????? Tarea.Next;
???? END;
???? nodes.GetFirstNode;


end;

end.

效果如下


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读