![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить последняя (первая) ли текущая запись DS ? [D6, Win95/98]
MsGuns © (2002-09-18 16:19:00)Не хочется пользоваться табличным методом RecNo, а методы Bof/Eof
срабатыват только когда попытка подняться вверх их первой записи или опуститься вниз за последнюю.
Методы Last и First также не катят, т.к. меняют положение курсора, а надо НЕ МЕНЯЯ положения курсора в датасете просто проверить, является ли данная (текущая) запись датасета первой или последней в курсоре. Что-то ничего у меня самого не получилось. Заранее благодарен за помощь !
roottim (2002-09-19 08:29:00) [1]+Mike Kouzmine (18.09.02 16:40)
если отключить перед проверкой контрол, то помоему юзер подвоха и незаметит
ЮЮ (2002-09-19 03:31:00) [2]А если по-ленински: два шага вперёд, один шаг назад? Т.е. при вызове "вниз" сделать попытку переместиться на 2 записи и если не EOF вернуться на одну?
MsGuns (2002-09-18 18:23:00) [3]Спасибо всем, есть, конечно способ, но он уж оооочень мне не нравится ! (Если кому интересно,-то через параллельный ds)
Внук (2002-09-18 18:20:00) [4]Насколько я помню, так и работают стандартные навигаторы - приходится лишний раз на кнопку жать. По-другому вряд ли получится :(
Anatoly Podgoretsky (2002-09-18 17:02:00) [5]DownButton.Enabled := not .eof
UpButton.Enabled := not .bof
Johnmen (2002-09-18 16:56:00) [6]Только попытавшись сдвинуться далее последней или ближе первой с анализом EOF/BOF ! см. Mike Kouzmine (18.09.02 16:40)
По другому - никак !
MsGuns (2002-09-18 16:53:00) [7]Проблема вот в чем. Я написал свой собственный навигатор, который подымает/опускает кнопки в зависимости от текущего состояния датасета. Обработка статуса кнопок делается в одной проце, к которой идет обращение в конце обработчика OnClick каждой клавиши. Так вот, когда юзер жмет на предпоследней записи Down курсор смещается вниз, обработчик Onclick фишки Down, это делает, а потом он обращается к вышеупомянутой проце, которая должна опросить датасет и вкл/выкл эту фишку (Down). Они и проверяет Eof`ом, но ей возвр-ся false, т.о. фишка "Down" не дизаблится и юзер жмет еще раз. Еще раз работает обработчик, курсор при этом никуда не перемещается, но проца выдаст уже true.
Немного сумбурно описал, но это не так то легко сделать.
Короче, идея в том, что для того чтобы кнопка "Down" погасла, надо лишний раз нажать ее или батон Down. Аналогично с потолком датасета.
Суть же трабла в том, чот кнопки вкл/выкл процей, которая НЕ ДОЛЖНА делать никаких перемещений в датасете
Mike Kouzmine (2002-09-18 16:40:00) [8]В смысле
t.next
if t.eof then - Last record
else t.Prior - No
t.Prior
if t.Bof then First record
else t.Next No
Mike Kouzmine (2002-09-18 16:37:00) [9]Так при Bof Eof положение курсора не меняется или я не прав?
MegaBass (2002-09-18 16:27:00) [10]Если ты открыл датасет то методы Bof/Eof уже инициализированы.
И к тому ты как-то должен же зделать запись текущей.