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

Установить засветку в BROWSE

Добавлено: 10 Февраль 2007, 13:52
Игорь Столяров
Привет всем !

Что-то я совсем того ... запрограммировался ... ;)

Простая задача: есть обычный ABC Browse - в нем записи отсортированы по уникальному ключу (номеру).
Я знаю некий номер, могу проверить - если ли в файле (БД) такая запись. Без проблем.
Теперь если такая запись в БД (и списке) есть - нужно просто перевести на нее засветку списка. Без всяких локаторов.
Все. Помню - делал. Как - забыл ...

Никто не напомнит ? Заранее спасибо. :)
И извините, что я тут со своим склерозом ... :)))

Добавлено: 11 Февраль 2007, 5:34
Admin
точно тоже не помю.
по моему устанавливаешь значение ключевой переменной а потом делаешь что то типа BRW1.ResetFromBuffer

Добавлено: 11 Февраль 2007, 12:38
NewUser
Не помню почему, но всегда делал:
BRWx.ResetFromFile
BRWx.PostNewSelection
работало всегда.
Может можно проще/лучше/быстрее?

Добавлено: 11 Февраль 2007, 15:04
Игорь Столяров
> BRW1.ResetFromBuffer - работает, однако ! :) Спасибо !
Теперь осталось понять как при открытии окна со списком вытолкнуть засветку на нужную запись - но это уже проще ... :wink:

Добавлено: 13 Февраль 2007, 18:57
lsgsoftware
Сталкивался с такой задачей.Как у меня получилось.В точке
?CurrentTab->all events вставляем примерно такой код
xxx:ide=<нужное значение>
brw1.resetfrombuffer()
Еще раз проверил - вроде работает и подсветка встает на нужную
строку

Добавлено: 19 Февраль 2007, 22:02
Tolusha
NewUser писал(а):Не помню почему, но всегда делал:
BRWx.ResetFromFile
BRWx.PostNewSelection
работало всегда.
Может можно проще/лучше/быстрее?
ResetFromFile() не сработает, если в Browse меньше записей, чем может отобразить на одной странице, и не подстветит последнию запись в Browse.

Добавлено: 19 Февраль 2007, 22:16
NewUser
Спасибо, Анатолий.
Только вот бы узнать, почему?

Добавлено: 20 Февраль 2007, 9:58
Tolusha
Не могу сказать точно. Но исходя из хелпа
ResetFromBuffer calls the ViewManager.Reset method for positioning, then calls the ResetQueue method to fill the browse queue.
что отсутствует в ResetFromFile(). Поэтому ResetFromFile() и не должен всегда срабатывать. Те конкретные примеры вылезли экспериментально.

Добавлено: 20 Февраль 2007, 10:25
NewUser
Хорошо, а вот со следующей задачей ResetFromBuffer справиться?
Курсор в стандартном бровзе находиться на какой-то записи. Пользователь ее удаляет. Удаление происходит самописным кодом – со всеми нужными связанными записями из других файлов. Затем необходимо спозиционироваться на ближайшей записи. При удалении/ добавлении записи, а затем при попытке спозиционироваться на ближайшую/добавленную запись ResetFromBuffer будет работать?

Добавлено: 20 Февраль 2007, 10:39
Tolusha
Еще как справиться :D
If the record is not found, ResetFromBuffer fills the browse queue starting from the nearest matching record.
Please, see help.