Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Как обмануть DBGrid   Найти похожие ветки 

 
TTCustomDelphiMaster ©   (2002-12-28 19:44) [0]

Имеется rxDbGrid привязаный к TQuery. Как не допустить изменения отображаемой информации в DbGrid, если я программно перемещаюсь по записям в этом запросе и в конце возвращаюсь на текущую позицию (до перемещения). После этого текущая запись в DBGrid (если есть вертикальный скрол) отоббражается либо самой верхней, либо самой нижней.


 
TTCustomDelphiMaster ©   (2002-12-28 19:58) [1]

Другими словами как отобразить в DBGrid тот же диапазон строк, что был до производимых мной операций с его DataSet?


 
VID ©   (2002-12-28 20:24) [2]

ну ....

procedure TForm1.CopyDataClick(Sender: TObject);
var
SavePlace: TBookmark;
PrevValue: Variant;
begin
with Table1 do
begin
{ get a bookmark so that we can return to the same record }
SavePlace := GetBookmark; //Ставим закладку
DisableControls;

{ move to prior record}

FindPrior;

{ get the value }

PrevValue := Fields[0].Value;

{Move back to the bookmark

this may not be the next record anymore
if something else is changing the dataset asynchronously }
GotoBookmark(SavePlace); //Переходим к закладке
EnableControls;
{ Set the value }
Fields[0].Value := PrevValue;
{ Free the bookmark }
FreeBookmark(SavePlace); //Уничтожаем закладку
end;
end;

проверь подойдёт ли это тебе ?


 
Сергєєв Володимир ©   (2002-12-28 20:27) [3]

Даю последовательность действий, а детально - смотри хелпа Делфей.

1) DataSet.GetBookMark(BM)

2) DataSet.DisableControls

3) Do something.......

4) DataSet.GotoBookMark(BM).

5) DataSet.FreeBookMark(BM)

6) DataSet.EnableControls.


 
Сергєєв Володимир ©   (2002-12-28 20:30) [4]

Опа, пока набирал, VID уже нормально ответил.


 
TTCustomDelphiMaster ©   (2002-12-28 20:58) [5]

Да я примерно так и делаю, только вот работает это не так как мне нужно.

Результат запроса содержит 8 строк, а DBGrid оторажает 4 строки (все они невлазиют и имеется полоса прокрутки).
В DBGrid видно 3, 4, 5 и 6 строку. Причем 5 строка текущая.
Выполняю такою операцию:
a := GetBookMark;
DisableControls;
First;
GotoBookMark(a);
FreeBookMark(a);
EnableControls;

После этого в DBGrid видно 4, 5, 6 и 7 строку. 5 по прежнему активная. А как сделать, чтобы в DBGrid по прежнему отображал 3, 4, 5 и 6 строку?


 
TTCustomDelphiMaster ©   (2002-12-28 21:21) [6]

В событии OnDrawColumnCell при отрисовке каждой ячейки текущая запись в DataSet изменяется, однако потом текущая запись восстаналивается без всякого изменения положения Scroll и диапазона отображаемых записей. Я не могу понять как это сделано?


 
TTCustomDelphiMaster ©   (2002-12-28 23:01) [7]

Ну, вроде так получилось

with dbgCargo, dbgCargo.DataSource.DataSet do
begin
i := VisibleRowCount - Row;
j := RecNo + i - 1;
DisableControls;

// Перемещения по DataSet

First;
MoveBy(j);
MoveBy(-i);
EnableControls;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
8-72421
KidMan
2002-10-04 22:18
2003.01.23
OpenPictureDialog - это что издевательство?


3-72093
Big_Rom
2002-12-28 22:59
2003.01.23
Fastreport


4-72581
Slavik99
2002-12-06 20:53
2003.01.23
Уважаемые профи, помогите исправить ошибку....


1-72171
GebbelZ
2003-01-10 00:06
2003.01.23
Word


3-72102
Иксик
2002-12-28 15:38
2003.01.23
Как отсортировать таблицу Access в обратном порядке без SQL?