Добрый день. Еще раз про поиск с cxGrid.
Что-то я не могу понять, почему при обычном Locate в датасете запускаются внутренние методы для полного обновления датасета внутри грида. При 10-20 записях locate отрабатывает доли секунды, а когда в выборке 1000 записей, то при каждом locate приложение замирает секунд на 5
Смотрел исходники девок на эту тему, есть мини непонятка.
В настройках у меня стоит DataController.DataModeController.SmartRefresh = true, но для обновления только части, а не всех данных, она не использовалась.
Но для того, чтобы обновлялось только нужная часть, нужно чтоб в DataController private переменная SmartRefresh была установлена в true, но она всегда установлена в False.
Как сделать, чтобы при locate тупо все данные не обновлял cxGrid? Ну или как сделать так, чтобы эта private переменная была установленна в true. Где она меняется я по их исходникам не нашел.
в принципе часть кода я переписал, для полного соответствия можно использовать что-то типа:
Код: Temp1 := Grid.DataController.KeyFieldNames;
Try
Grid.DataController.KeyFieldNames := FieldName;
Grid.DataController.BeginLocate;
Try
Grid.DataController.LocateByKey(Temp);
Finally
Grid.DataController.EndLocate;
End;
Finally
Grid.DataController.KeyFieldNames := Temp1;
End;