2017-04-10 7 views
0

私はまだDelphi XE4(最新のコンパイラは複数のDelphiコンパイラを使用しています)を使用していますが、このバージョンのTBasicActionでFClientを完全に隠していたという事実に対して、 XE4の回避策として、〜100 + actionsとui要素のちらつきを避けるために、有効/無効を設定しながらクライアントのランタイムを接続/切断します。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の<>

私は当初、安定性の問題のことを聞いたので、私はDelphiでジェネリックを使用して回ることがない認めなければならない

+私はLazarus/FreePascalとの互換性を維持する必要があります。

私はDelphiが再びクラスヘルパーを変更した最新バージョンを承知していますが、私は今のところ、エラーがTList<T>タイプは、コンパイラには未知であることを示して

+0

答えてください...そして私は受け入れます。ありがとう:) – Tom

+0

ベルリン以上にアップグレードした場合、クラスヘルパーはそのまま動作しませんので、再記述する必要があります([Delphi 10.1 Berlinのクラスヘルパーからプライベートフィールドにアクセスする方法は? ](http://stackoverflow.com/questions/37351215/))。あなたは、あなたの問題に対する別の解決策を見つけ出すべきです。なぜ 'FClients'リストに直接アクセスする必要がありますか?それは理由のために私的です。 –

+0

私は、100以上のアクションがonidleで有効/無効に設定されている、むしろ複雑な設定をしています...残念ながら、ルールはちょっと複雑です(6つの異なるツールをコンパイル/いくつかのアクションを2回設定することができます(すべてのアクションに対してブーリアン値を作成し、それらのアクションを設定してアクションを設定することができます)。これはツールバーのフリッカーを引き起こします。私の昔の解決策は、アクションの状態を更新しながら、UI要素からアクションを取り除くことでした。 – Tom

答えて

8

デルファイXE4で動作するようにこれを得ることにほとんど興味を持っています。これを使用するには、uses句にSystem.Generics.Collectionsを含める必要があります。

関連する問題