X11
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору А почему тогда FocusedNode возвращает nil? А можно пример? Добавлено: Всё, дошло. Код: v := dbTreeRegions.FocusedNode.Values[dbTreeRegionsNAME.ItemIndex]; | Добавлено: Проблема с редактированием cxGrid. Есть таблица, в которой хранится ID района (ID_REGION). Пользователю нужно дать возможность прямо в гриде из дерева (TcxDBTreelist) выбрать запись справочника и сохранить в поле ID_REGION. В общем, классическая ситуация с основной таблице и справочником. В cxGrid`е есть unbound колонка, в которой я хочу показывать имя района, а в скрытой колонке хранится ID_REGION. Пользователь щёлкает по колонке типа PopupEdit, выпадает TabControl c деревом (TcxDBTreelist), пользователь выбирает запись и нажимает ОК. Вот код: Код: procedure TfmRegionsRelevant.btnSelTypeValueClick(Sender: TObject); begin with dbgRegionsRelevant.DataController do begin edit;//вызываем редактор cxGrid`а //сохраняем id из дерева (ключевое поле справочника) Values[FocusedRecordIndex, dbgRegionsRelevantID_REGION.index] := TcxDBTreeListNode(dbTreeRegions.FocusedNode).KeyValue; // значение поля dbgRegionsRelevantID_REGION не меняется //указываем имя из дерева (поле name справочника) //эта колонка не привязана к DataSet Values[FocusedRecordIndex, dbgRegionsRelevantRegion.index] := dbTreeRegions.FocusedNode.Values[dbTreeRegionsNAME.ItemIndex];//имя района //захлопываем TcxPopupWindow(tcRegions.Parent).CloseUp; //и выполняем POST if IsEditing then Post;//эта строка выполняется (проверял отладчиком) RefreshExternalData; end; // tRegionsRelevant.Edit; // tRegionsRelevantID_REGION.Value := TcxDBTreeListNode(dbTreeRegions.FocusedNode).KeyValue; // tRegionsRelevant.Post; // TcxPopupWindow(tcRegions.Parent).CloseUp; end; | Проблема в том, что в таблицу ничего не попадает (значение поля dbgRegionsRelevantID_REGION не меняется). Не могу понять почему. В cxGrid`е и в колонках везде разрешено редактирование. Хотя если редактировать датасет напрямую, как показано в закомментированном коде внизу процедуры, то так всё работает. Также енсли ручками в гриде менять значение поля dbgRegionsRelevantID_REGION, то всё ОК. Куда смотреть, что проверять? Что я делаю не так? Хочется именно в cxGrid`а, а не в DataSet`е.
---------- /не мы такие, жизнь такая/ |
|