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

Вниз

TFIBDataSet.DisableControls не работает   Найти похожие ветки 

 
DelphiLexx ©   (2006-08-07 13:52) [0]

Есть компонент fds: TFIBDataSet;

var
 RecNumber: integer;
...
RecNumber := fds.RecNo;
fds.DisableControls;
try
while not fds.Eof do
begin
 {выполняется мой код}
 fds.Next;
end;
finally
 fds.First;
 fds.MoveBy(RecNumber - 1)
fds.EnableControls
end;

При указанном коде курсор DBGrid"a перемещаться не должен, а он перемещается (DisableControls не помагает). Что нужно сделать чтобы курсор DBGrid"a не перемещался.


 
Desdechado ©   (2006-08-07 13:59) [1]

Грид отражает состояние датасета.
Если у тебя после EnableControls текущая запись изменилась по сравнению с состоянием ДО, то курсор после активации перейдет на нее.


 
DelphiLexx ©   (2006-08-07 14:04) [2]


> Если у тебя после EnableControls

Ты не перепутал EnableControls с DisableControls


 
MsGuns ©   (2006-08-07 14:05) [3]

fds.First;
 Зачем это, если дальше

fds.MoveBy(RecNumber - 1)

?

Определены ли обработчики датасета и если да, то какие ?

Замечание по позиционированию.
1. Не рекомендуется позиционироваться по RecNo. Хотя бы потому, что НД может быть переупорядочен, перчитан, отредактирован и т.д. Лучше использовать букмарки (правда, не спасает от переоткрытия/перечитки датасета) или ID записей (самый правильный способ), если они, конечно есть (есть ли нет - таблица элементарна не 2fn нормализована, т.е. срочно требуется хирургия ;))
2. Если надо что-то целочисленное временно сохранить, то вовсе не нужна для этого переменная (RecNumber), вполне подходит св-во Tag, для этого, собственно, и введенное.


 
DelphiLexx ©   (2006-08-07 14:08) [4]


> fds.First;
>  Зачем это, если дальше
Без fds.First  fds.MoveBy(RecNumber - 1) у меня не работает

> Определены ли обработчики датасета и если да, то какие ?
fds.AfterOpen и fds.AfterScroll
Причем приведенный код вызывается в конце процедуры fds.AfterOpen


 
Desdechado ©   (2006-08-07 14:09) [5]

> Ты не перепутал EnableControls с DisableControls
Нет. Если у тебя скачет сразу после DisableControls, то что-то не то ты отключаешь. Тут вообще отображения никакого быть не должно.
На худой конец можешь временно отключать DataSource от грида.


 
DelphiLexx ©   (2006-08-07 14:21) [6]


> Если у тебя скачет сразу после DisableControls, то что-то
> не то ты отключаешь.

Ну как не то отключаю. Я отключаю тот DataSet, который листается.


 
MsGuns ©   (2006-08-07 14:42) [7]

Приведи код AfterScroll


 
DelphiLexx ©   (2006-08-07 15:52) [8]


> Приведи код AfterScroll

Все намного проще fds.DisableScrollEvents



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
8-1142597048
Lordalexander
2006-03-17 15:04
2006.10.08
Уменьшеть картинку


9-1124163393
Jonikeidg
2005-08-16 07:36
2006.10.08
Исходники карточных игр.


15-1157486758
Konstantin555
2006-09-06 00:05
2006.10.08
Как в С++ правильно работать с функциями?!


1-1156420386
gear
2006-08-24 15:53
2006.10.08
Как скрыть кнопку на панели задач у вторичной формы, если для ней


15-1158561725
Ega23
2006-09-18 10:42
2006.10.08
Вчера смотрел выпуск новостей