Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Предзаполнение грида с полями TcxExtLookupComboBox  [new]
kaktus1983
Member

Откуда:
Сообщений: 113
Приветствую!

Есть cxGrid с TcxGridBandedTableView, в нем есть поля с Proporties = TcxExtLookupComboBox, которые ссылаются на свои TcxGridDBTableView.
TcxGridDBTableView - справочники, имеют вид: ключ(число), набор строковых значений.
При открытии формы, cxGrid необходимо заполнить значениями по умолчанию: программно выбрать значения в полях TcxExtLookupComboBox (строки) имея численные значения ключей из TcxGridDBTableView.

Как программно сделать такой выбор?
16 ноя 20, 13:51    [22232896]     Ответить | Цитировать Сообщить модератору
 Re: Предзаполнение грида с полями TcxExtLookupComboBox  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
Как ни странно, все просто:
elcbCurrency.EditValue         := FBN('ID_CURRENCY').Value;
16 ноя 20, 14:57    [22232979]     Ответить | Цитировать Сообщить модератору
 Re: Предзаполнение грида с полями TcxExtLookupComboBox  [new]
kaktus1983
Member

Откуда:
Сообщений: 113
X11,
Действительно))
спасибо!
16 ноя 20, 15:20    [22233009]     Ответить | Цитировать Сообщить модератору
 Re: Предзаполнение грида с полями TcxExtLookupComboBox  [new]
kaktus1983
Member

Откуда:
Сообщений: 113
Еще есть смежный вопрос по ExtLookupComboBox, спрошу здесь чтоб не заводить новую тему.

После выбора значения в выпадающем GridDBTableView из ExtLookupComboBox, необходимо заполнить поля базового GridBandedTableView (расположенные по соседству с выбранным значением из ExtLookupComboBox).
Я пробовал использовать события ExtLookupComboBox - PropertiesCloseUp и PropertiesEditValueChanged
в них пытаюсь и через сам GridDBTableView и через его DataSet заполнить соседние поля.

var btv: TcxGridBandedTableView;
     tv: TcxGridDBTableView;

 tv := TcxGridDBTableView( TcxExtLookupComboBox(Sender).Properties.View );
btv := TcxGridBandedTableView( TcxGridSite(TcxExtLookupComboBox(Sender).Parent).GridView );

// 1
btv.DataController.Values [btv.DataController.FocusedRowIndex, <заполняемый столбец>] := tv.DataController.Values [tv.DataController.FocusedRecordIndex, <столбец из Combo грида>];
// 2
btv.DataController.SetEditValue( <заполняемый столбец>, tv.DataController.Values [tv.DataController.FocusedRecordIndex, <столбец из Combo грида>], evsValue);
// 3
btv.DataController.Values [btv.DataController.FocusedRowIndex, <заполняемый столбец>] := <Combo DataSet>.FBN(<поле>).AsVariant;

Поля заполняются, но вот выбранное в значение в поле ExtLookupComboBox почему-то исчезает как только начинаю заполнять поля.
Как сделать заполнение соседних полей и сохранить в ExtLookupComboBox выбранное значение?
19 ноя 20, 14:54    [22235390]     Ответить | Цитировать Сообщить модератору
 Re: Предзаполнение грида с полями TcxExtLookupComboBox  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
btv.DataController.edit;
btv.DataController.Values[] := '';
btv.DataController.post;
19 ноя 20, 15:49    [22235458]     Ответить | Цитировать Сообщить модератору
 Re: Предзаполнение грида с полями TcxExtLookupComboBox  [new]
kaktus1983
Member

Откуда:
Сообщений: 113
X11,
Спасибо за идею, работает если добавить btv.DataController.post перед изменениями:
procedure ExtLookupComboBoxPropertiesEditValueChanged( Sender: TObject);
var btv: TcxGridBandedTableView;
begin
  btv := TcxGridBandedTableView( TcxGridSite(TcxExtLookupComboBox(Sender).Parent).GridView );
  btv.DataController.Post;
  btv.DataController.Values [] := ...
end;
19 ноя 20, 16:10    [22235489]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить