Установить локатор Browse программно

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Установить локатор Browse программно

Сообщение NewUser »

У меня вопрос.
CW6.3, ABC
Как в стандартном Browse со стандартным Entry-локатором установить последний в значение, заданное ему программно.
Например, есть переменная Entry-локатора loc:loc:Date. Пользователь выбирает из календаря дату и заносит выбранное значение в эту переменную. И... ничего не происходит. :(
BRWх::Sort0:Locator.Set - не помогает.
Что не так? Чего не хватает?
Кстати, какова роль процедуры BRWх::Sort0:Locator.SetShadow()? Обычно использую её при программном обнулении локатора: BRWx::Sort0:Locator.SetShadow(''). Пробовал для решения выше описанной задачи применить BRWх::Sort0:Locator.SetShadow(loc:loc:Date) - не сработало....
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Установить локатор Browse программно

Сообщение Yufil »

Shadow - копия поля БД для поиска. Если мы ищем по полю ?Person:Name, нам не надо, чтобы портилось поле на экране и в таблице базы данных, поэтому поле локатора на экране связано именно с Shadow.

Может быть, SetShadow надо передавать в строковом виде ( SetShadow(Format(Loc:Loc:Date,'@d5') ) ?
Или попробовать ручками занести значение в поле на экране

Change(?File:Date:Locator,Format(Loc:Loc:Date,'@d5'))
?File:Date:Locator{PROP:Touched} = TRUE
Post(Event:Accepted, ?file:Date:Locator) ! Или игры с Press-PressKey, но у меня Punto обиделся...

И, возможно, перерисовать Browse

Brw1.ResetQueue(Reset:Queue)
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Установить локатор Browse программно

Сообщение kreator »

NewUser, посмотри, что классы пихают в Shadow. Мне тоже кажется, что надо с форматом поиграться. Либо руками можно сделать обращение в очередь броуза. Так даже быстрее будет.
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Установить локатор Browse программно

Сообщение NewUser »

Сработала следующая последовательность:

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

BRWx::Sort0:Locator.SetShadow(loc:loc:Date)
?loc:loc:Date{PROP:Touched} = TRUE
Post(Event:Accepted, ?loc:loc:Date)
Большое спасибо за то, что откликнулись!
Ответить