表结构及记录

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.
效果如下
