Страница 1 из 1

Обратная связь между обьектами

СообщениеДобавлено: 24 мар 2009 11:05
Artem
Собственно задача: Получение обьекта который ссылается на другой( добавленный к первому как tk_specobject). Известен второй элемент - на который идет ссылка, как получить первый?
Добавить первый аналогичным образом ко второму нельзя - цикл при обновлении....Маппинг в левом обьекте? Или хранение, ну например, имени и поиск? - долго....Можно ли организовать двухстороннюю связь между обьектами ну или хотя бы такую, чтоб обновление не тянула за собой ...

Re: Обратная связь между обьектами

СообщениеДобавлено: 24 мар 2009 12:57
booSter
Для случаев, когда необходимо узнать "кто" ссылается на данный объект используется

CATISpecObject.ListPointing

Код: Выделить всё
...
CATISpecObject_var spYourSpec = ...
...
CATLISTP(CATSpecPointing) lspPointings;
HRESULT hr = spYourSpec->ListPointing( lspPointings );
if ( SUCCEEDED( hr ) )
    for ( int nPX=1; nPX<=lspPointings.Size(); ++nPX )
    {
        CATSpecPointing * pPointing = lspPointings[iPX];
        // обрабатываем обратную ссылку...
        ...
    }
...

Re: Обратная связь между обьектами

СообщениеДобавлено: 24 мар 2009 14:13
booSter
Для случая же кросс-ссылки (оба объекта взаимно ссылаются друг на друга через атрибут типа tk_specobject) атрибуты должны иметь quality tk_NEUTRAL , а синхронизацию сделать "вручную".

Если проблема останется, то придется сделать "выделенный" объект-синхронизатор.

Re: Обратная связь между обьектами

СообщениеДобавлено: 24 мар 2009 16:55
Artem
Как всегда огромное спасибо....Сорри что сразу не ответил - сейчас, скажем так, рейд больше хобби, так что не всегда все своевременно посмотреть получается......