Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Корректная работа с двухуровневым cxGrid.

Автор: waalFeller
Дата сообщения: 13.07.2009 13:43
Пожалуйста, подскажите (дайте ссылку) как корректно работать с двухуровневым cxGrid(inc. v4).

Объясните ламеру, где неправильно:

Имеется cxGrid1,
создан cxGrid1Level1 -> cxGrid1DBTableView1 (master) - подключен Query1;
создан cxGrid1Level2 -> cxGrid1DBTableView2 (detail) - подключен Query2;

(эти свойства, наверное, в том числе позволяют перемещатся по cxGrid1 в двухуровневом режиме, без AV при переходе на др. уровень с detail на master ???):
cxGrid1.cxGrid1DBTableView1.DataModeController.GridMode:=true;
cxGrid1.cxGrid1DBTableView2.DataModeController.GridMode:=true;
кроме того:
cxGrid1DBTableView1.OptionSelection.CellData:=false;
cxGrid1DBTableView2.OptionSelection.CellData:=false;

в обработчике TfrProgram.Query1AfterScroll(DataSet: TDataSet)
обрабатываю Query2:
if Active then Close;
Params[0].AsInteger:=Query1.FieldByName('ID').AsInteger;
Open;
и аналогично Query3:
if Active then Close;
Params[0].AsInteger:=DataSet.FieldByName('ID').AsInteger;
Open;
Query2.onAfterScroll назначен тот же обработчик - TfrProgram.Query1AfterScroll(DataSet: TDataSet);

далее есть cxGrid2:
cxGrid2Level1.cxGrid2DBCardView1 - - подключен Query3;
Query3.UpdateObject:=updQuery3 (updQuery3:TUpdateSQL);
т.е. в нем (в cxGrid2.cxGrid2DBCardView1) отображаются данные из Query1 или Query2, в зависимости выборанного пользователем уровня. А также редактируются.

Интересует практически все:
1.Если выбран второй уровень (cxGrid1Level2.cxGrid1DBTableView2) - как заставить программно обновиться (отобразиться) результат в cxGrid1DBTableView2, установит фокус на этой записи при обновлении таблицы базы данных;
2.Как вообще корректно работать с фокусом в двухуровневой структуре?

Страницы: 1

Предыдущая тема: Вопросы по Delphi (до версии 2009) - часть 5


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.