请教控件开发高手(100分不够可以再加),很急(100分)

  • 主题发起人 主题发起人 star123456
  • 开始时间 开始时间
S

star123456

Unregistered / Unconfirmed
GUEST, unregistred user!
我简单做了一个控件,就是把一个TEdit附加一个DBGrid代码如下
TTestEdit = class(TCustomEdit)
private
FListBox: TDBGrid;
protected
procedure SetParent(AParent: TWinControl); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
constructor TTestEdit.Create(AOwner: TComponent);
begin
FListBox := TDBGrid.Create(Self);
inherited;
end;

destructor TTestEdit.Destroy;
begin
inherited;

end;

procedure TTestEdit.SetParent(AParent: TWinControl);
begin
inherited;
if FListBox <> nil then
FListBox.Parent := AParent;
end;
initialization
RegisterClass(TDBGrid);

然后注册控件
但是在设计期间当把这个控件放在form上,直接用Delphi中的Close All关闭form时
Delphi的IDE就会死掉,
在运行期间也会出问题。2000下好像没事,98不行
请教高手,一个Edit附加一个DBGrid这样的控件该怎样做,
我就是想完成一个Edit和DBGrid的组合,但是要从Edit继承.
 
destructor TTestEdit.Destroy;
begin
//加下面兩句試試
if Assigned(FListBox) then
FListBox.Free;
inherited;

end;
 
不行的,加了反而出错
大侠亲自试一下就知道了
 
喔,TWinControl 會自動 Free 下屬控件的,我都忘了 呵呵

inherited;
FListBox := TDBGrid.Create(Self);

換一下順序試試

我覺得把兩個非容器的控件硬連在一起不是很好,最好把兩個控件連在一個 Panel上
 
去掉这一行
RegisterClass(TDBGrid);
 
把SetParent中的顺序倒过来
if FListBox <> nil then
FListBox.Parent := AParent;
inherited;
 
想不到如此简单,唉,
一个小小问题折腾了我两天
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
744
import
I
后退
顶部