Alex47
1. Задавал так:
FocusedRow := Grid.DataController.FocusedRowIndex;
if EditForm.ShowModal = mrOk then begin
// бла-бла - пишу в базу
Query.Close; // делаю Refresh
Query.Open;
Query.Locate('uin', uin, []); // это true - я проверял
Grid.DataController.FocusedRowIndex := FocusedRow; // это делается как надо, но все равно при закрытии EditForm он меняется.
end;
3. В KeyFieldNames задано поле UIN, оно неизменно, записи в выборке упорядочены по трем полям, которые также неизменны. Т.е. после редактирования ключи сортировки не меняются!
4. GridMode := false;
Я правда и true его делал, разницы нет.
Помог совет из Knowledge Base Article на сайте DevExpress "How to Restore the Focused Position after a Record is Deleted"
var
FocusedRow, TopRow: Integer;
View: TcxGridTableView;
DataController: TcxGridDataController;
begin
View := cxGrid1.FocusedView as TcxGridTableView;
DataController := View.DataController;
// Remember the top row (the vertical scrollbar position)
TopRow := View.Controller.TopRowIndex;
// Remember the focused row(!) index
FocusedRow := DataController.FocusedRowIndex;
DataController.DeleteFocused;
// After deletion the same row must be focused,
// although it will correspond to a different data record
DataController.FocusedRowIndex := FocusedRow;
// Restore the top row
View.Controller.TopRowIndex := TopRow;
Т.е. запоминаем и устанавливаем TopRowIndex !!!
1. Задавал так:
FocusedRow := Grid.DataController.FocusedRowIndex;
if EditForm.ShowModal = mrOk then begin
// бла-бла - пишу в базу
Query.Close; // делаю Refresh
Query.Open;
Query.Locate('uin', uin, []); // это true - я проверял
Grid.DataController.FocusedRowIndex := FocusedRow; // это делается как надо, но все равно при закрытии EditForm он меняется.
end;
3. В KeyFieldNames задано поле UIN, оно неизменно, записи в выборке упорядочены по трем полям, которые также неизменны. Т.е. после редактирования ключи сортировки не меняются!
4. GridMode := false;
Я правда и true его делал, разницы нет.
Помог совет из Knowledge Base Article на сайте DevExpress "How to Restore the Focused Position after a Record is Deleted"
var
FocusedRow, TopRow: Integer;
View: TcxGridTableView;
DataController: TcxGridDataController;
begin
View := cxGrid1.FocusedView as TcxGridTableView;
DataController := View.DataController;
// Remember the top row (the vertical scrollbar position)
TopRow := View.Controller.TopRowIndex;
// Remember the focused row(!) index
FocusedRow := DataController.FocusedRowIndex;
DataController.DeleteFocused;
// After deletion the same row must be focused,
// although it will correspond to a different data record
DataController.FocusedRowIndex := FocusedRow;
// Restore the top row
View.Controller.TopRowIndex := TopRow;
Т.е. запоминаем и устанавливаем TopRowIndex !!!