Элементы GridView изменены их место динамически при прокрутке экрана

Я столкнулся с очень классической проблемой: элемент и класс коллекции, которые ссылаются друг на друга, требуют предварительного объявления. Я использую Delphi 2010 с обновлением 5.

Это хорошо работает с не универсальными классами, но я не могу обойти ошибку E2086 с универсальными типами:

type
  // Forward declarations
  TMyElement = class; // E2086: Type 'TMyElement' is not yet completely defined

  TMyCollection = class
    //
  end;

  TMyElement = class
    FParent: TMyCollection;
  end;

Та же проблема возникает при переключении порядка объявления классов.

Я не нашел никаких ссылок на эту проблему здесь или в QualityCentral (были обнаружены другие проблемы с E2086, но не связанные с этим вариантом использования)

Единственный обходной путь, который у меня есть на данный момент, - объявить родителя как TObject и привести его в общий тип коллекции, когда это необходимо (не чистое решение ...

[Изменить 22 октября 2011 г.] Дополнительная информация в QualityCentral: Я сообщил об этой ошибке в Центре качества здесь

Эта ошибка была недавно закрыта EMB со следующим статусом разрешения: Разрешение: как задумано Решено в сборке: 16.0.4152

У меня только Delphi 2010. Может ли кто-нибудь подтвердить, что он был исправлен в Delphe XE2 Update1, или это означает, что он работает «как ожидалось»?

[Изменить 23 октября 2011 г.] Окончательный ответ от EMB: EMB подтвердил сегодня, что использование прямого объявления универсального типа не поддерживается фактическим компилятором Delphi. Вы можете увидеть их ответ в QC по ссылке, указанной выше.

14
задан user315561 23 October 2011 в 07:39
поделиться