2010年9月8日   
[首页] [业界新闻] [编程技巧] [控件仓库] [源码下载] [书籍下载] [系统设计] [会员中心] [请您留言] [自由论坛]
  本站新增划词翻译功能!!

用程序打印Object Tree
日期:2007-12-4 类别:Pascal语言 作者: 推荐:本站 人气:3916




procedure TFormObjTree.GenerateTree;
var
i:             integer;
comp:          TComponent;
n, pn, pcn:    string;
node, nodeNew: TTreeNode;
hasUndo:       boolean;
begin
  // todo: generate tree
tvSt.Items.Clear;
  tvSt.Items.Add(nil, FormWindow.Name);
  hasUndo := True;
  while hasUndo do
  begin
    hasUndo := False;
    for i := 0 to FormWindow.ComponentCount - 1 do
    begin
      comp := FormWindow.Components[i];
      n    := comp.Name;
      if comp is TControl then
      begin
        pn := TControl(comp).Parent.Name;
        pcn := TControl(comp).Parent.ClassName;
      end
      else
      begin
        pn := comp.GetParentComponent.Name;
        pcn := comp.GetParentComponent.ClassName;
      end;
      node := NodeExist(pn);
      if node = nil then
      begin
        hasUndo := True;
        Continue;
      end;
      nodeNew := NodeExist(n);
      if nodeNew <> nil then
      Continue;
      tvSt.Items.AddChild(node, n);
    end;
  end;
  for i := 0 to tvSt.Items.Count - 1 do
  begin
    if tvSt.Items[i].Parent = nil then
    begin
      tvSt.Items[i].ImageIndex    := 2;
      tvSt.Items[i].SelectedIndex := 2;
    end
    else
    begin
      if tvSt.Items.Item[i].HasChildren then
      begin
        tvSt.Items.Item[i].ImageIndex    := 1;
        tvSt.Items.Item[i].SelectedIndex := 1;
      end
      else
      begin
        tvSt.Items.Item[i].ImageIndex    := 0;
        tvSt.Items.Item[i].SelectedIndex := 0;
      end;
    end;
  end;
  tvSt.FullExpand;
end;

实现效果:

网友评论区



(C)Copyright Delphi俱乐部, 1999-2010。所有版权保留
京ICP备05013674号