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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8033
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

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

Сообщение Игорь Столяров »

Привет всем !

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

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

Никто не напомнит ? Заранее спасибо. :)
И извините, что я тут со своим склерозом ... :)))
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

точно тоже не помю.
по моему устанавливаешь значение ключевой переменной а потом делаешь что то типа BRW1.ResetFromBuffer
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Не помню почему, но всегда делал:
BRWx.ResetFromFile
BRWx.PostNewSelection
работало всегда.
Может можно проще/лучше/быстрее?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8033
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Сообщение Игорь Столяров »

> BRW1.ResetFromBuffer - работает, однако ! :) Спасибо !
Теперь осталось понять как при открытии окна со списком вытолкнуть засветку на нужную запись - но это уже проще ... :wink:
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Сообщение lsgsoftware »

Сталкивался с такой задачей.Как у меня получилось.В точке
?CurrentTab->all events вставляем примерно такой код
xxx:ide=<нужное значение>
brw1.resetfrombuffer()
Еще раз проверил - вроде работает и подсветка встает на нужную
строку
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение Tolusha »

NewUser писал(а):Не помню почему, но всегда делал:
BRWx.ResetFromFile
BRWx.PostNewSelection
работало всегда.
Может можно проще/лучше/быстрее?
ResetFromFile() не сработает, если в Browse меньше записей, чем может отобразить на одной странице, и не подстветит последнию запись в Browse.
Анатолий.
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Спасибо, Анатолий.
Только вот бы узнать, почему?
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение Tolusha »

Не могу сказать точно. Но исходя из хелпа
ResetFromBuffer calls the ViewManager.Reset method for positioning, then calls the ResetQueue method to fill the browse queue.
что отсутствует в ResetFromFile(). Поэтому ResetFromFile() и не должен всегда срабатывать. Те конкретные примеры вылезли экспериментально.
Анатолий.
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Сообщение NewUser »

Хорошо, а вот со следующей задачей ResetFromBuffer справиться?
Курсор в стандартном бровзе находиться на какой-то записи. Пользователь ее удаляет. Удаление происходит самописным кодом – со всеми нужными связанными записями из других файлов. Затем необходимо спозиционироваться на ближайшей записи. При удалении/ добавлении записи, а затем при попытке спозиционироваться на ближайшую/добавленную запись ResetFromBuffer будет работать?
Аватара пользователя
Tolusha
Активист
Сообщения: 123
Зарегистрирован: 11 Январь 2006, 16:50
Откуда: Украина, г. Черкассы
Контактная информация:

Сообщение Tolusha »

Еще как справиться :D
If the record is not found, ResetFromBuffer fills the browse queue starting from the nearest matching record.
Please, see help.
Анатолий.
Ответить