自編組件出現﹕Class TEdit Not Found的錯誤﹐急﹗怎么辦﹖ (我知道写成Self就可以了,可是这样的话就不能在设计期对Edit拖动了?)(20

  • 主题发起人 主题发起人 zengyixun
  • 开始时间 开始时间
Z

zengyixun

Unregistered / Unconfirmed
GUEST, unregistred user!
自編組件出現﹕Class TEdit Not Found的錯誤﹐急﹗怎么辦﹖ (我知道写成Self就可以了,可是这样的话就不能在设计期对Edit拖动了?)(200分)<br />自編組件出現﹕Class TEdit Not Found的錯誤﹐急﹗怎么辦﹖ (我知道写成Self就可以了,可是这样的话就不能在设计期对Edit拖动了?)
TMyPanel = class(TPanel)从TPanel来的


inherited Create(AOwner);
FAOwner := AOwner;
Self.Caption := ' ';
Self.BevelInner := bvNone;
Self.BevelOuter := bvNone;
Self.Width := 217;
Self.Height := 33;
//Self.ParentColor := True;
//Self.ControlStyle := Self.ControlStyle - [csOpaque];

MyEdit := TEdit.Create(Self);//没有错,但是写成(AOwner)设计时可拖动,但在运行时说Tedit找不到怎么办呢?
我想对这个Panel中的Edit在设计期间可以拖动,有什么办法吗?
MyEdit .Parent := Self;
MyEdit .Top := 6;
MyEdit .Left := 6;
MyEdit .Width := 38;
MyEdit .Height := 21;
 
MyEdit .Parent := AOwner;//应该可以把,这样设计期间就可以拖动了,
 
判断一下是否是设计期:
if csDesigning in ComponentState then
 
to 张无忌:
不像这样写是不对的,不但不能拖,而且Edit也不在我的MyPanel上了,到了MyPanel的容器上
了。
如果如下:

MyEdit := TEdit.Create(AOwner);
MyEdit .Parent := Self;
在设计期没有问题可以拖但真的新建一个应用在Form1上放上我的控件运行程序就有TEdit找
不到的错误了。
写成:
MyEdit := TEdit.Create(Self);
MyEdit .Parent := Self;
运行程序没有问题,但是在设计期间这个Edit就不能在MyParent上面进行拖动了。
 
to zhanshenzzz
我也想过的而且也是试过的还是会出现TEdit找不到的提示,程序不能运行。
 
inherited Create(AOwner);
Self.Caption := ' ';
Self.BevelInner := bvNone;
Self.BevelOuter := bvNone;
Self.Width := 217;
Self.Height := 33;
//Self.ParentColor := True;
//Self.ControlStyle := Self.ControlStyle - [csOpa

FEdit := TEdit.create(self) ;
FLabel.Parent := Self ;
 
to cwmdelpher,
什么意思哟把我的my改成F就行了撒你以为我认不到你撒!
 
我只是举个例子 还有FAOwner := AOwner 我觉得要去掉
 
type
TMyPanel = class(TPanel)
private
{ Private declarations }
FAOwner: TComponent;//给其它类使用的
 
怎么把后面的几句去掉了呢?我正在想怎么解决
 
我已经想了两天了,好像不能简单的解决!能解决也会很麻烦!不会是换换参数就可以的。
 
强力关注!
珍藏!
 
可以简单的解决~
实际上是name属性的问题,delphi中是用name属性来标识一个控件的。
Owner为窗体时,这个控件就会被加到窗体的published域,它要保存编辑时的属性值,
如果没有指定name属性,就会报出楼主所说的错误。
给name赋值后,因为在设计时这个控件的名称已经存在了,调用控件的create函数时就
会报控件已存在的错误。
解决方法时,运行时和设计时给一个不通的name:
if (csDesigning in Self.ComponentState) then
Name := 'MyEdit'
else
Name := 'MyEdit1';
 
多人接受答案了。
 
后退
顶部