亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi實現樹型結構具體實例

2020-01-31 20:51:57
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DB, ADODB;
type
  PNodeInfoEx = ^TNodeInfoEx;
  TNodeInfoEx = Packed Record
      NodeID    : Integer;
      ParentID  : Integer;
      NodeType  : Integer;
      ChnNodeTitle : String;
      ImageIndex: SmallInt;
      SelectedIndex: SmallInt;
   end;
  TForm1 = class(TForm)
    tv1: TTreeView;
    btn1: TButton;
    qry1: TADOQuery;
    procedure btn1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    function StaticBuildTree(TreeView:TTreeView ):Boolean;
    function AddTreeItem(TreeView:TTreeView; AddNodeInfo:PNodeInfoEx):TTreeNode;
    function FindTreeItem(TreeView:TTreeView; CurNodeID:integer): TTreeNode;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}

function TForm1.StaticBuildTree(TreeView:TTreeView ):Boolean;
var
  AddNodeInfo : PNodeInfoEx;
begin
  Result := False;
  qry1.LoadFromFile('c:/AdminixTree.xml');//這里以XML文件做為數據源
  Treeview.Items.BeginUpdate;//記?。涸谶M行批量添加數據時要使用BeginUpdate,來暫時關閉由于添加數據而觸發的某些事件(如OnChange事件等)
  Treeview.Items.Clear;//清空Treeview
  try
    try
      if qry1.RecordCount >0 then
        begin
          qry1.First;
          while Not qry1.Eof do
          begin
            New(AddNodeInfo) ;//生成結構體
            AddNodeInfo^.NodeID := qry1.FieldByName('NODE_ID').AsInteger;
            AddNodeInfo^.ParentID := qry1.FieldByName('PARENT_ID').AsInteger;
            AddNodeInfo^.NodeType := qry1.FieldByName('NodeType').AsInteger;
            AddNodeInfo^.ChnNodeTitle := qry1.FieldByName('ChnNodeTitle').AsString;
            AddNodeInfo^.ImageIndex := qry1.FieldByName('ImageIndex').AsInteger;
            AddNodeInfo^.SelectedIndex := qry1.FieldByName('SelectedIndex').AsInteger;
            AddTreeItem(Treeview,AddNodeInfo);//把結構體的指針存到Treeview中
            qry1.Next;
          end;
        end;
    except
      Application.MessageBox('生成樹結點失敗',MB_ICONSTOP+MB_OK);
      raise;//向上級拋異常
    end;
    qry1.Close;
    Result := True;
  finally
    Treeview.Items.EndUpdate;
  end;
end;
//在加入結點時,應先判斷加入的是父結點還是子結點,判斷的依據是在已存在的樹結點中是否存在該結點的ParentID
function TForm1.AddTreeItem(TreeView:TTreeView; AddNodeInfo:PNodeInfoEx):TTreeNode;
var
    ParentNode: TTreeNode;
begin
    ParentNode := FindTreeItem(Treeview,AddNodeInfo^.ParentID);
    If ParentNode <> nil then
        Result := Treeview.Items.AddChildObject(ParentNode, Trim(AddNodeInfo.ChnNodeTitle), Pointer(AddNodeInfo))
    else
        Result := Treeview.Items.AddObject(ParentNode, Trim(AddNodeInfo.ChnNodeTitle), Pointer(AddNodeInfo));
    if Result<>nil then
    begin
        Result.ImageIndex    := AddNodeInfo.ImageIndex;
        Result.SelectedIndex := AddNodeInfo.SelectedIndex;
    end;
end;
//這里是判斷是否存在其父結點
function TForm1.FindTreeItem(TreeView:TTreeView; CurNodeID:integer): TTreeNode;
var
    i : Integer;
begin
  Result := nil;
  for i := 0 to Treeview.Items.Count-1 do
  begin
      if CurNodeID=PNodeInfoEx(Treeview.Items[i].Data)^.NodeID then
      begin
          Result := Treeview.Items[i];
          Exit;
      end;
  end;
end;
//生成樹結構
procedure TForm1.btn1Click(Sender: TObject);
begin
   StaticBuildTree (tv1)
end;
//在窗體釋放時一定要把樹結點中的結構體指針給釋放掉,對于在Dispose時為什么要進行強制轉型后釋放,以前有專門的講解,在此不在累述
procedure TForm1.FormDestroy(Sender: TObject);
var
    i : Integer;
begin
  for i := 0 to tv1.Items.Count-1 do
  begin
       Dispose( PNodeInfoEx(tv1.Items[i].Data)  )
  end;
end;
end.

復制代碼 代碼如下:

//如何訪問樹結點?
procedure TForm1.tv1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  pNode:TTreeNode;
begin
  pNode:=tv1.GetNodeAt(x,y);
  if (pNode<>nil) and  (Button=mbleft) then
   ShowMessage(PNodeInfoEx(pNode.Data)^.ChnNodeTitle);
end;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019年手机中文字幕| 欧美日韩国产一区二区三区| 国产午夜精品美女视频明星a级| 国产精品主播视频| 国产免费一区二区三区在线观看| 国产一区二区三区网站| 国产成人av在线播放| 久久免费福利视频| 亚洲国产另类 国产精品国产免费| 欧美亚洲国产视频小说| 欧美午夜电影在线| 国内伊人久久久久久网站视频| 在线日韩第一页| 国产91精品久久久| 国产精品亚发布| 欧美亚洲国产成人精品| 久久91亚洲精品中文字幕| 欧美色图在线视频| 日韩精品免费看| 亚洲乱码一区二区| 92国产精品久久久久首页| 91香蕉嫩草神马影院在线观看| 另类少妇人与禽zozz0性伦| 亚洲国产日韩一区| 成人亚洲欧美一区二区三区| 国产精品欧美激情| 欧美丰满老妇厨房牲生活| 亚洲精品99久久久久| 色噜噜久久综合伊人一本| 国产精品久久久久久久久久东京| 日韩av毛片网| 亚洲免费电影一区| 亚洲天堂成人在线| 欧美麻豆久久久久久中文| 亚洲精品720p| 国产精品久久久久久av福利| 欧美在线一级va免费观看| 欧美亚洲日本网站| 欧美老妇交乱视频| 亚洲性69xxxbbb| 亚洲毛片在线看| 日韩女优在线播放| 国产成人久久精品| 欧美一性一乱一交一视频| 久久天天躁狠狠躁夜夜爽蜜月| 91地址最新发布| 中文字幕亚洲色图| 亚洲欧美日韩在线高清直播| 国内精久久久久久久久久人| 亚洲精品视频播放| 91美女福利视频高清| 都市激情亚洲色图| 91精品久久久久久久久久久久久| 欧美日韩亚洲国产一区| 精品久久久一区| 在线播放国产一区中文字幕剧情欧美| 成年无码av片在线| 欧美剧在线观看| 国产欧美一区二区三区四区| 亚洲国产精品久久精品怡红院| 欧美孕妇性xx| 亚洲资源在线看| 亚洲高清一二三区| 亚洲人精选亚洲人成在线| 欧美成人手机在线| 欧美亚洲国产成人精品| 欧美日韩精品在线| 精品久久久在线观看| 国产精品无av码在线观看| 91产国在线观看动作片喷水| 粉嫩av一区二区三区免费野| 亚洲伊人久久综合| 夜夜嗨av一区二区三区四区| 久久久免费观看视频| 丝袜一区二区三区| 91中文字幕一区| 夜色77av精品影院| 国产精品99久久久久久久久| 国内伊人久久久久久网站视频| 69视频在线免费观看| 欧美诱惑福利视频| 国产精品高潮呻吟久久av无限| 国产人妖伪娘一区91| 日韩av网站在线| 亚洲精品狠狠操| 国产精品6699| 亚洲自拍偷拍色片视频| 中文字幕免费国产精品| 亚洲欧美综合精品久久成人| 国产精品扒开腿爽爽爽视频| 久久久av免费| 国产综合久久久久| 欧美视频国产精品| 中文字幕亚洲激情| 中文日韩在线观看| 国产精品69精品一区二区三区| 欧美日韩中文字幕在线视频| 久久91亚洲精品中文字幕奶水| 久久久免费观看| 国产精品免费视频久久久| 久久综合久中文字幕青草| 欧美电影院免费观看| 色综合视频网站| 久久久久久一区二区三区| 欧美性感美女h网站在线观看免费| 午夜精品视频在线| 日韩精品高清视频| 久久久人成影片一区二区三区观看| 欧美在线国产精品| 国产精品www色诱视频| 亚洲一区二区三区在线免费观看| 国产精品女主播| 日韩在线观看网站| 国产精品小说在线| 最好看的2019的中文字幕视频| 日韩国产激情在线| 国产在线视频欧美| 日韩中文在线视频| 麻豆一区二区在线观看| 亚洲高清在线观看| 欧美最猛性xxxxx亚洲精品| 国外成人在线播放| 欧美疯狂性受xxxxx另类| 久久久精品影院| 中文字幕亚洲欧美日韩2019| 久热99视频在线观看| 亚洲а∨天堂久久精品9966| 欧美精品一区二区免费| 亚洲天堂男人天堂女人天堂| 日韩一二三在线视频播| 亚洲欧美成人网| 欧美韩国理论所午夜片917电影| 欧美一级免费看| 欧美国产日韩一区二区| 久久久噜噜噜久久中文字免| 日韩在线视频国产| 91av在线影院| 国产91在线高潮白浆在线观看| 欧洲午夜精品久久久| 正在播放欧美视频| 国模精品一区二区三区色天香| 欧美激情高清视频| 欧美亚洲另类在线| 日韩精品免费综合视频在线播放| 亚洲第一网站男人都懂| 国产亚洲成av人片在线观看桃| 久久精品国产清自在天天线| 久久久亚洲影院| 国产偷国产偷亚洲清高网站| 久久久女人电视剧免费播放下载| 国产在线高清精品| 亚洲老头同性xxxxx| 欧美最猛黑人xxxx黑人猛叫黄| 国产午夜精品麻豆| 51精品国产黑色丝袜高跟鞋| 欧美性极品xxxx做受| 午夜剧场成人观在线视频免费观看| 国产91免费看片| 国产精品久久久久久亚洲调教| 亚洲毛茸茸少妇高潮呻吟| 欧美精品久久久久久久免费观看| 欧美丝袜第一区| 久久亚洲精品中文字幕冲田杏梨| 欧美交受高潮1|