其pas文件如下:
unit Observer;interfaceuses
Windows, Messages, SysUtils, Classes, Controls,ComCtrls;type
TObserver = class(TWinControl)
private
{ Private declarations }
FTreeView : TTreeView;
FOnChange:TNotifyEvent;
FEnabled:Boolean;
procedure SetItem(const Value: string);
function GetItem: string;
protected
{ Protected declarations }
procedure Change;
public
{ Public declarations }
constructor Create(AOwner:TComponent);override;
destructor Destroy();override;
published
{ Published declarations }
property OnChange:TNotifyEvent read FOnChange write FOnChange;
property Enable:Boolean read FEnabled write FEnabled default True;
property TreeViewItem:string read GetItem write SetItem;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('DDG', [TObserver]);
end;{ TObserver }procedure TObserver.Change;
begin
if Assigned(FOnChange) then
FOnChange(self);
end;constructor TObserver.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Align := alClient;
Enable:=True;
Visible := True; //if csDesigning in ComponentState then
//begin
FTreeView := TTreeView.Create(AOwner);
FTreeView.Parent := self; FTreeView.Align := alClient;
FTreeView.Enabled :=True;
FTreeView.Visible := True;
//end;end;destructor TObserver.Destroy;
begin
FTreeView.Free;
inherited Destroy;
end;function TObserver.GetItem: string;
begin
result :='';
end;procedure TObserver.SetItem(const Value: string);
begin
FTreeView.Items.Add(nil,Value);
end;end.可是在使用是出现了奇怪的问题:
就是把该组件添加到程序后,每次在对窗体进行View as Form和View as Text切换后,总回产生一个新的TreeView对象,请各位指教。
unit Observer;interfaceuses
Windows, Messages, SysUtils, Classes, Controls,ComCtrls;type
TObserver = class(TWinControl)
private
{ Private declarations }
FTreeView : TTreeView;
FOnChange:TNotifyEvent;
FEnabled:Boolean;
procedure SetItem(const Value: string);
function GetItem: string;
protected
{ Protected declarations }
procedure Change;
public
{ Public declarations }
constructor Create(AOwner:TComponent);override;
destructor Destroy();override;
published
{ Published declarations }
property OnChange:TNotifyEvent read FOnChange write FOnChange;
property Enable:Boolean read FEnabled write FEnabled default True;
property TreeViewItem:string read GetItem write SetItem;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('DDG', [TObserver]);
end;{ TObserver }procedure TObserver.Change;
begin
if Assigned(FOnChange) then
FOnChange(self);
end;constructor TObserver.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Align := alClient;
Enable:=True;
Visible := True; //if csDesigning in ComponentState then
//begin
FTreeView := TTreeView.Create(AOwner);
FTreeView.Parent := self; FTreeView.Align := alClient;
FTreeView.Enabled :=True;
FTreeView.Visible := True;
//end;end;destructor TObserver.Destroy;
begin
FTreeView.Free;
inherited Destroy;
end;function TObserver.GetItem: string;
begin
result :='';
end;procedure TObserver.SetItem(const Value: string);
begin
FTreeView.Items.Add(nil,Value);
end;end.可是在使用是出现了奇怪的问题:
就是把该组件添加到程序后,每次在对窗体进行View as Form和View as Text切换后,总回产生一个新的TreeView对象,请各位指教。
解决方案 »
- 报表问题
- INI文件的使用
- 寻求DELPHI开发的MSN
- 有Treeview1,我想根据string: '1'来找到reeview1中的'仓房1'结点,并把当前选中结点设为该结点,该怎么写代码
- 急问一个fastReport的问题!请大家帮忙!谢谢!!!
- SQL语句中怎么写单引号?
- 难:如何导出DLL中的Form?
- 基础问题!!!
- 我想在dblookupcombobox里面增加数据库中没有的一个item这怎么做
- 一数据库字段有“编号”与“时间”,如何不让“编号”在60秒内连续出现同一序号(防止60秒内连续出现同一编号的数据)
- 用MODEM拨号通了之后,传送一个语音给对方手机,有什么好办法?
- 网络通信问题?
改成
FTreeView := nil;看看