Добрый вечер.
Вопрос заключается в следующем: Есть cxGrid без заранее созданных колонок. Динамчески, в зависимости от содержания сторонней таблицы, создаются колонки(количество колонок может меняться на ходу при добавлении записей в сторонней таблице). При изменении данных в cxGrid через ADOCommand разносятся данные по таблицам. После чего датасет требуется переоткрыть. При повторном открытии датасета и пересоздании колонок фильтр уничтожается.
Как перед закрытием датасета запомнить установленный пользователем фильтр и восстановить его после повторного открытия датасета?
на просторах был найден некий код
var
AFilterControl: TcxFilterControl;
AStream: TStream;
...
//сохранить
begin
AStream:=TMemoryStream.Create;
AFilterControl := TcxFilterControl.Create(Self);
AFilterControl.LinkComponent := GridDBTableView1;
AFilterControl.SaveToStream(AStream);
AFilterControl.Free;
...
//восстановить
AFilterControl.LoadFromStream(AStream);
end;
Все бы замечательно, НО при попытки LoadFromStream(AStream) вылетает ошибка в модуле cxFilterControl access violation at address in module 'MyModule.exe' read of address 67A802BC
В идеале можно было бы переприсвоить фильтр через
AItemList.AddItem(DBTableView1Name, foLike, 'A%', 'A%');
однако для этого нужно иметь список старых фильтров по колонкам.
Подскажите куда смотреть.
З.Ы. Поиск юзал...