【发布时间】:2021-05-12 17:17:57
【问题描述】:
我已经创建并实现了一个新组件,在这个创建的组件中,有一个过程InitCombo,需要在实现中调用。
我该怎么做?
这是新组件内的过程InitCombo:
procedure TNewComponent.InitCombo; //TComboBox ancestor
begin
FStoredItems.OnChange := nil;
StoredItems.Assign(Items);
AutoComplete := False;
FStoredItems.OnChange := StoredItemsChange;
doFilter := True;
StoredItemIndex := -1;
end;
这是我尝试调用但返回错误消息:
procedure TfrmMain.FormActivate(Sender: TObject);
begin
TNewComponent.InitCombo;
end;
Error Messages
[dcc32 Error] makeasale_u_v1.pas(84): E2076 This form of method call only allowed for class methods or constructor
请注意,编译、构建、安装都进行得很顺利并且可以正常工作。除了如何调用组件内部的过程?
【问题讨论】:
-
TNewComponent是一种类型。您不能在类型上调用方法;你必须有一个实例。目前尚不清楚您实际上要做什么,因此很难提供帮助。另外,Procedure是 Delphi/Pascal 中的关键字,所以不要将过程命名为Procedure。这是您提供 minimal reproducible example 来演示问题的好地方,而不是编写甚至无法编译的代码。 -
您可以在运行时分配事件!
-
@DelphiCoder Calss hack:你的意思是 interposer 类吗?
-
插入器类与其派生的名称相同,例如TComboBox = 类(StdCtrls.TComboBox)。现在您可以访问原始 TComboBox 的私有和受保护字段以及方法/属性。
-
请不要在 cmets 中进行此讨论,请edit 您的问题并将相关详细信息添加到问题中,以便可以看到它们。您需要清楚具体地了解您想要做什么,这样我们就不必玩“20 个问题”来从您那里获取信息。
标签: delphi components tcombobox tcomponent