日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

一个自己写的有关数据库的treeview.

發布時間:2025/3/15 数据库 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个自己写的有关数据库的treeview. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自己寫的一個有關樹形結構的函數,與大家共享.

procedure MakeTreeEx(Query: TadoQuery; TreeView: TTreeView;
? DisplayName:string;Id:string;pid:string);
type
? recNode=record
??? Id:string;
??? Name:string;
??? PId:string;
? end;
? PRecNode=^recnode;
? {遞歸算法要有終止的條件}
? procedure AppendChild(var treeview:TTreeView;node:TTreeNode;
??? var strlst:TStringList);
? var
??? strTmp:string;
??? i:Integer;
??? nodeTmp:TTreeNode; {子結點}
??? ps:pstring;
? begin

????? //ShowMessage(strlst.Text+'要查找的PID是:'+pstring(node.Data)^);

??? while strlst.IndexOf(trim(pstring(node.Data)^))<>-1 do
??? begin
????? i:=strlst.IndexOf(pstring(node.Data)^);
????? ps:=NewStr(precnode(strlst.Objects[i])^.Id);
????? nodetmp:=TreeView.Items.AddChildObject(node,precnode(strLst.Objects[i])^.Name,
??????? ps);
????? Dispose(precnode(strlst.objects[i]));
????? strlst.Delete(i);
????? {原先此處誤寫成node,讓我調試了半天,郁悶}
????? AppendChild(treeview,nodetmp,strlst);
??? end;??
? end;
var
? List: TStringList;
? Node: TTreeNode;
? Index: Integer;
? ps:pstring;//指針
? prec:PRecNode;
? i:Integer;
begin
? TreeView.Items.BeginUpdate;
? try
??? TreeView.Items.Clear;

??? List := TStringList.Create;
??? try
????? List.Sorted := True;
????? {此句非常重要,默認為dupIgnore,如有重復記錄則忽略}
????? list.Duplicates:=dupAccept;
????? {先遍歷一邊query,獲取所有記錄}
????? Query.First;
????? while not Query.Eof do
????? begin
??????? {保存數據}
??????? New(prec); {每刪除一條記錄時,要保證將其保存的數據也一同刪除}
??????? prec^.Id:=Query.fieldbyname(Id).AsString;
??????? prec^.PId:=Query.fieldbyname(pid).asstring;
??????? prec^.Name:=Query.fieldbyname(DisplayName).asstring;
??????? List.AddObject(Query.FieldByName(pid).AsString,TObject(prec));
??????? Query.Next;
????? end;
????? showint(list.count);
????? while List.IndexOf('0')<>-1 do
????? begin
??????? i:=List.IndexOf('0');

??????? ps:=NewStr(Trim(precnode(List.Objects[i])^.Id));
??????? node:=TreeView.Items.AddChildObject(nil,precnode(List.Objects[i])^.Name,
????????? ps);
??????? Dispose(precnode(List.Objects[i]));
??????? List.Delete(i);
??????? AppendChild(TreeView,node,list);
??????? //AppendChild(list,node);
????? end;

??? finally
????? for i:=0 to List.Count-1 do
????? begin
??????? Dispose(precnode(List.objects[i]));
????? end;
????? List.Free;
??? end;
? finally
??? TreeView.Items.EndUpdate;
? end;
end;

總結

以上是生活随笔為你收集整理的一个自己写的有关数据库的treeview.的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。