Пожалуйста, подскажите (дайте ссылку) как корректно работать с двухуровневым 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.Как вообще корректно работать с фокусом в двухуровневой структуре?
Объясните ламеру, где неправильно:
Имеется 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.Как вообще корректно работать с фокусом в двухуровневой структуре?