2017-04-10 34 views
0

我仍然使用Delphi XE4(我使用多个Delphi编译器的最新编译器),并且需要特定的解决方法,因为它们完全隐藏了此版本中的TBasicAction中的FClients。我在连接/断开客户端运行时设置启用/禁用(以避免与〜100 +行动和用户界面元素闪烁),因此这种解决方法为XE4:Delphi中的泛型并返回对tlist的引用<class>

这是我的天真尝试,只是返回字段。

TmscBasicActionCrack = class(TBasicAction) 
    end; 
{$IFDEF mymsDELPHIXE4} 
    TmscBasicActionHelper = class helper for TBasicAction 
    public 
    function Helper_Get_Private_FClients: TList<System.Classes.TBasicActionLink>; 
    end; 
{$ENDIF} 

{$IFDEF mymsDELPHIXE4} 
//------------------------------------------------------------------------------ 
function TmscBasicActionHelper.Helper_Get_Private_FClients: TList<System.Classes.TBasicActionLink>; 
begin 
    Result := Self.FClients; 
end; 
{$ENDIF} 

不过,我得到错误

E2003未说明的标识符从TList <>

我必须承认,我从来没有到处去使用泛型与德尔福,因为我最初听到的稳定性问题+我需要保持与Lazarus/FreePascal的兼容性。

我知道最新版本的Delphi再次改变类的帮手,但我现在主要感兴趣的是得到这个用Delphi XE4工作

+0

请作出回答...我会接受。谢谢:) – Tom

+0

如果您曾升级到柏林或更高级别,您的班级助手将不再按原样工作,您将不得不重新编写它(请参阅[如何从Delphi 10.1柏林的班级助手访问私人字段? ](http://stackoverflow.com/questions/37351215/))。你应该为你的问题找到一个不同的解决方案。为什么你需要直接访问'FClients'列表呢?这是私人的原因。 –

+0

我有一个相当复杂的设置,其中有100多个动作在onidle中被设置为启用/禁用......现在不幸的是,规则有点复杂(也有部分由定义引起,因为我有6个不同的工具编译/使用完全相同的项目和代码)一些动作可以设置两次(是的,我可以为所有动作创建布尔值,对它们进行处理然后设置动作) - 这会导致工具栏闪烁。很久以前,我的解决方案是在更新操作状态时从UI元素中取消操作。 – Tom

回答