我正在尝试在运行时创建一个TAction并在TActionClientItem中插入,但是它在运行时给了我一个错误(无效的类类型广播)。
我用这种方式:
function TFunctions.AddMenuItem(aciParent: TActionClientItem): integer;
var
ClientItem: TActionClientItem;
ActionToAdd: TAction;
begin
ClientItem:= aciParent.items.add;
ClientItem.Action := ActionToAdd; // <- error
//
end;发布于 2022-08-11 12:01:07
应将上面的代码块标记为代码,以便正确格式化(或至少作为预先格式化的代码块)。“开始”声明在哪里?在具有局部变量声明( ClientItem和ActionToAdd)的var块之后,应该有一个"begin“语句,然后是命令式命令,然后有"end”语句来关闭函数声明。
如果缺少"begin“,则错误发生在解析阶段,但我希望它位于ClientItem:= aciParent.items.add;(在:=点)
显然,在"end“之前,还应该分配”结果“变量,或者如果需要函数中的多个退出点,也可以返回将其作为参数传递给" exit”语句的结果。如果不需要结果,则使用过程而不是函数
发布于 2022-08-16 12:22:12
您在注释中提到您的代码驻留在DLL中。DLLs有自己的VCL副本,与可执行文件中的不同,来自不同VCL实例的混合对象不起作用。您应该改用套餐。这些都是为处理这些问题而建的。
https://stackoverflow.com/questions/73311964
复制相似问题