TreeView的另类用法(100分)

  • 主题发起人 主题发起人 HellMeteor
  • 开始时间 开始时间
H

HellMeteor

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我想定义一个类继承自TreeView或它的父类,这个类的功能为,让他的节点不在是string而是自定义的一些控件比方说Panel,我想动态的添加这样的节点,该如何创建这个类,要重写哪些方法,急!!
 
没人回来,晕了
 
恐怕继承TreeView或它的父类不行
 
在离线数据库中找吧,应该有
 
treeview里本身可以保存指针。指针可以指任何对象。
节点的string是个标签罢
 
还是没有解决,离线数据库中也没阿
 
TreeView的节点其实是个结构,其中有个成员是一32位数据(4字节),可以用来存放指针、整数等32位数据,TTreeView.TreeNode.data好象就是封装的这个成员,你可以把Panel的句柄或者指针存放在里面。
 
unit MulitiTitlePrintPage;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,ComCtrls,Graphics;

type
TMulitiTitlePrintPage = class(TPanel)
private
iTreeView : TCustomTreeView;
FItems : TTreeNodes;
// FPrintPage : TRichEdit;
procedure SetItems(Value:TTreeNodes);
{ Private declarations }
protected
{ Protected declarations }
public

constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property iItems : TTreeNodes read FItems write SetItems;
{ Published declarations }
end;

procedure Register;

implementation

constructor TMulitiTitlePrintPage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ParentColor := True;
BevelOuter := bvNone;
Caption := '';
Color := clWindow;
iTreeView := TCustomTreeView.Create(Self);
iTreeView.Parent := Self;
iTreeView.Visible := False;
end;

destructor TMulitiTitlePrintPage.Destroy;
begin
FItems.Free;
// FPrintPage.Free;
inherited;
end;

procedure TMulitiTitlePrintPage.SetItems(Value : TTreeNodes);
begin
FItems.Assign(Value);
end;

procedure Register;
begin
RegisterComponents('COM', [TMulitiTitlePrintPage]);
end;

end.
 
TTreeView.TreeNode.data就是用来做你这个工作的
此类的东西还有TStringList等许多构件中也有这样的东西
====
这是标准的解决办法
====
强烈建议楼主看VCL的源代码,没看过VCL的源代码学DELPHI,那能叫学过DELPHI吗??
 
后退
顶部