出错了,“Cannot create a method for an unnamed component”(100分)

  • 主题发起人 主题发起人 awing
  • 开始时间 开始时间
A

awing

Unregistered / Unconfirmed
GUEST, unregistred user!
写了个类,继承至TCollectionItem,代码如下
TCustomCommand = class(TCollectionItem)
private
FCaption: string;
FData: String;
FOnExecute: TNotifyEvent;
protected

public
constructor Create(Collection: TCollection); override;
function Execute: Boolean;
property Caption: string read FCaption write FCaption;
property Data: string read FData write FData;
property OnExecute: TNotifyEvent read FOnExecute write FOnExecute;
published
end

constructor TCustomCommand.Create(Collection: TCollection);
begin
inherited Create(Collection);
end;

function TCustomCommand.Execute;
begin
if Assigned(FOnExecute) then
begin
FOnExecute(self);
Result := True;
end
else
Result := False;
end;

同时写了一个继承TCollection的类来调用它,主要想实现DBGrid的Column的那种功能
现在窗体也都能创建,item的编辑框也能跳出来,添加customcommand也能成功,也能
给属性赋值,但是当我想往OnExecute中添加代码的时候出错“Cannot create a method
for an unnamed component”,谁有写过类似的代码啊,帮帮我吧。
 
TCollectionItem不是从TComponent类继承而来的, 所以不可能有name属性.
它在.dfm文件中的存贮方式也与一般控件不一样, 它是作为TCollection的
Items属性的部份来存贮的. Borland不允许非TComponent继承类存贮事件属
性, 可能有它的原因.

你需要更改你的设计方案了.
 
我不需要它有Name属性啊,我只要它能让我添加事件,是不是这种方案连事件都不能增加?
 
最后还是自己的事自己来解决了,分数就送给热心回答我问题的人吧
 
后退
顶部