Текущий архив: 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.46 MB
Время: 0.039 c