afiget
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Всем привет. Есть проблема с TcxEditRepositoryLookupComboBoxItem. Почему то в нижеприведенном коде строка Код: spDesignBasic.Locate('design_ean', OldLookupValue, []); | , где spDesignBasic - DataSet, на основе которого построен LookupComboBox, работает только при LookupComboBox.Properties.GridMode=false. При GridMode=true метод Locate возвращает true (т.е запись вроде бы найдена), но не перемещает курсор на на найденную запись, как ожидалось. В чем причина такой странной зависимости поведения DataSet от стороннего компонента TcxEditRepositoryLookupComboBoxItem? Суть кода: открыть модальное окно выбора из DataSet, предварительно спозиционировав DataSet на указанную запись по значению OldLookupValue, внести изменения в редактируемый набор данных. Код: procedure TMainForm.erDesignBasicLookupPropertiesInitPopup( Sender: TObject); var LookupValue, OldLookupValue: Variant; col: TcxGridDBColumn; view: TcxGridDBTableView; begin inherited; if Sender is TcxLookupComboBox then begin if TcxLookupComboBox(Sender).Owner is TcxGridDBTableView then begin view:=TcxGridDBTableView(TcxLookupComboBox(Sender).Owner); if view.DataController.Controller.FocusedItem is TcxGridDBColumn then begin col:=TcxGridDBColumn(view.DataController.Controller.FocusedItem); OldLookupValue:=FieldValue(TCustomMSDataSet(view.DataController.DataSource.DataSet), col.Databinding.FieldName); spDesignBasic.Locate('design_ean', OldLookupValue, []); LookupValue := OpenLookupDataSet('design', spDesignBasic, OldLookupValue); if (view.DataController.DataSource.DataSet.State<>dsEdit) then view.DataController.DataSource.DataSet.Edit; if (not VarIsNull(LookupValue))and(OldLookupValue<>LookupValue) then begin view.DataController.DataSource.DataSet.FieldByName(col.Databinding.FieldName).Value:=LookupValue; end; Abort; end; end; end; end; | , где OpenLookupDataSet открывает модальное окно выбора из списка данных spDesignBasic. ЗЫ GridMode=true мне нужен, т.к. редактирование в гриде существенно тормозит в больших документах при включенной сортировке по колонке, к которой прикручен LookupComboBox. Этот совет о GridMode вычитал на сайте поддержки. | Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 17:27 18-12-2009 | Исправлено: afiget, 17:48 18-12-2009 |
|