Конференция "Компоненты" » Компонент содержащий коллекцию не сохраняем ее [D7, WinXP]
 
  • Юрий Зотов © (12.11.13 15:19) [20]
    Код в TFieldControlItem.AssignTo неверен, наоборот надо. Начнем с этого. И поясните, о каких таких предках-потомках идет речь?
  • baghin © (12.11.13 15:31) [21]
    Не понял. как наоборот
  • baghin © (12.11.13 15:37) [22]
    Поясню для чего все это надо
    Создается форма (назовем ее frmList) на которой DBGrid, DataSet, этот компонент(назовем его FieldControl) и т.д.
    В компоненте будут хранится настройки столбцов грида. В этом модуле процедурой создаются колонки в гриде согласно настройкам из FieldControl
    В FieldControl хранятся описания колонок которые присутствуют в гриде на всех потомках данной формы.

    От этой формы наследуются "потомки" со своей спецификой. Соответственно в FieldControl на формах потомках добавляются свои записи о столбцах
  • baghin © (12.11.13 15:39) [23]

    > Не понял. как наоборот


    Извините не разобрался. Сейчас все понял. Выкладывать исправленное пока не буду.
  • Юрий Зотов © (12.11.13 16:08) [24]
    > baghin ©   (12.11.13 15:31) [21]

    В Assign:
    поле := Source.поле; // Source - источник

    В AssignTo:
    Dest.поле := поле; // Dest - приемник
  • baghin © (12.11.13 16:14) [25]
    Это я уже поправил. Еще раз спасибо
  • DimaBr © (13.11.13 17:55) [26]
    Без AssignTo работает прекрасно. Проверено на D6, D7, XE2.
    И добавляются в наследнике и удаляются, для надёжности напишите в AssignTo какой нибудь ShowMessage, что бы убедиться что он никогда не показывется
  • Юрий Зотов © (13.11.13 22:16) [27]
    > DimaBr ©   (13.11.13 17:55) [26]
    > Без AssignTo работает прекрасно.


    Естественно - ведь в этом случае AssignTo в коде компонента нигде не вызывается (о чем Вы сами и написали).

    Но как только будет вызван из любого другого места...
    Error: Can not assign TMyClass to TMyClass.

    И сидит изумленный программист, чешет репу - как же это так?
  • Юрий Зотов © (13.11.13 22:38) [28]
    > DimaBr ©   (13.11.13 17:55) [26]

    А если вместо Assign перекрыть AssignTo, то тоже будет прекрасно работать. Причем без всяких "Can not...".
  • имя (20.10.15 19:54) [29]
    Удалено модератором
  • имя (20.10.15 20:54) [30]
    Удалено модератором
 
Конференция "Компоненты" » Компонент содержащий коллекцию не сохраняем ее [D7, WinXP]
Есть новые Нет новых   [134427   +35][b:0][p:0]