![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TFIBDataSet.DisableControls не работает [D7, Firebird 1.5]
DelphiLexx © (2006-08-07 13:52:00)Есть компонент 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 не перемещался.
DelphiLexx (2006-08-07 15:52:00) [1]
> Приведи код AfterScroll
Все намного проще fds.DisableScrollEvents
MsGuns (2006-08-07 14:42:00) [2]Приведи код AfterScroll
DelphiLexx (2006-08-07 14:21:00) [3]
> Если у тебя скачет сразу после DisableControls, то что-то
> не то ты отключаешь.
Ну как не то отключаю. Я отключаю тот DataSet, который листается.
Desdechado (2006-08-07 14:09:00) [4]> Ты не перепутал EnableControls с DisableControls
Нет. Если у тебя скачет сразу после DisableControls, то что-то не то ты отключаешь. Тут вообще отображения никакого быть не должно.
На худой конец можешь временно отключать DataSource от грида.
DelphiLexx (2006-08-07 14:08:00) [5]
> fds.First;
> Зачем это, если дальше
Без fds.First fds.MoveBy(RecNumber - 1) у меня не работает
> Определены ли обработчики датасета и если да, то какие ?
fds.AfterOpen и fds.AfterScroll
Причем приведенный код вызывается в конце процедуры fds.AfterOpen
MsGuns (2006-08-07 14:05:00) [6]fds.First;
Зачем это, если дальше
fds.MoveBy(RecNumber - 1)
?
Определены ли обработчики датасета и если да, то какие ?
Замечание по позиционированию.
1. Не рекомендуется позиционироваться по RecNo. Хотя бы потому, что НД может быть переупорядочен, перчитан, отредактирован и т.д. Лучше использовать букмарки (правда, не спасает от переоткрытия/перечитки датасета) или ID записей (самый правильный способ), если они, конечно есть (есть ли нет - таблица элементарна не 2fn нормализована, т.е. срочно требуется хирургия ;))
2. Если надо что-то целочисленное временно сохранить, то вовсе не нужна для этого переменная (RecNumber), вполне подходит св-во Tag, для этого, собственно, и введенное.
DelphiLexx (2006-08-07 14:04:00) [7]
> Если у тебя после EnableControls
Ты не перепутал EnableControls с DisableControls
Desdechado (2006-08-07 13:59:00) [8]Грид отражает состояние датасета.
Если у тебя после EnableControls текущая запись изменилась по сравнению с состоянием ДО, то курсор после активации перейдет на нее.