2017-04-10 55 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

回答