Страница 1 из 1

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 15:39
Игорь Столяров
Привет всем !

Что-то я подвис, хотя вроде бы задача простая. :(

- Если удалять одну запись из BROWSE штатной операцией DELETE (из шаблона), то после удаления
список обновляется и засветка списка аккуратно становится на следующую запись.

- Если удалять запись вручную, с обновлением списка - то после удаления записи эту засветку непредсказуемо
кидает то на начало, то на хвост списка (видимо зависит от текущей сортировки).

Подскажите пжалуйста, как нужно обновлять список BROWSE после удаления записи, что бы он вёл себя пристойно ?
Заранее спасибо ! :)

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 16:13
kreator
А как Вы удаляете вручную? По-моему SELF.ResetQueue(Reset:Queue) не должен приводить к таким последствиям. Во всяком случае, в класах SV так.

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 16:20
Игорь Столяров
Я удаляю конкретно ! :)
Т.е. по нажатию кнопы выполняю DELETE(MyFile) и потом изменяю значение флага,
который есть в списке Reset Fields для BROWSE … может я здесь в чём-то был не прав ?

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 16:36
kreator
Зачем? Удаляете запись и выполняете:

Код: Выделить всё

BRWx.ResetQueue(Reset:Queue)

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 16:51
Игорь Столяров
Неа ! Всё равно кидает засветку на верхнюю запись в списке. :(
Как я понимаю - нужно получать номер следующей записи в QUEUE списка и делать её текущей после удаления.
Только кто же её знает какая из них следующая …

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 16:59
kreator
Уберите Reset Field. Всё портит, похоже. Попробую тест у себя прогнать. Не верится. В классах именно так написано.

Удаление записи из BROWSE

Добавлено: 22 Июль 2019, 17:08
kreator
У меня вот так работает правильно:

Код: Выделить всё

get(BRW1.Q, choice(?List))
SPRAV.ID_SPR = BRW1.Q.SPR:ID_SPR
Relate:SPRAV.Delete()
BRW1.ResetQueue(Reset:Queue)

Удаление записи из BROWSE

Добавлено: 23 Июль 2019, 9:10
gopstop2007

Код: Выделить всё

BRW1.ResetQueue(Reset:Queue)
тоже будет прыгать
самое оно )

Код: Выделить всё

BRW1.ResetFromBuffer

Удаление записи из BROWSE

Добавлено: 23 Июль 2019, 9:24
Игорь Столяров
gopstop2007 писал(а): 23 Июль 2019, 9:10BRW1.ResetFromBuffer
Не, ну так это же совсем другое дело ! Спасибо ! Теперь всё правильно. :)

:ty:

Удаление записи из BROWSE

Добавлено: 23 Июль 2019, 11:40
kreator
Почему у меня не прыгает? Из-за драйвера? Из-за сортировки? В ResetFromBuffer вот такое, правда:

Код: Выделить всё

SELF.ResetQueue(Reset:Done)

Удаление записи из BROWSE

Добавлено: 23 Июль 2019, 12:15
Игорь Столяров
kreator писал(а): 23 Июль 2019, 11:40Почему у меня не прыгает?
У Вас же работа с SQL драйвером, а не ISAM ...

Удаление записи из BROWSE

Добавлено: 23 Июль 2019, 13:42
kreator
Игорь Столяров писал(а): 23 Июль 2019, 12:15 У Вас же работа с SQL драйвером, а не ISAM ...
И что? Скорее всего, есть какие-то отличия. Даже просто может быть в настройках броуза. Я, например, всегда использую "File Loading". Может сортировка виновата. У меня всегда используется уникальный ключ. Теоретически разница в поведении между ISAM и SQL должна быть.