Принудительно выставить CheckBox в toolbar'е фрэйма

Clarion, Clarion 7

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

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

Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

Здравствуй, уважаемое сообщество!
C6.3 ABC
Никак не получается программно переключать чекбокс, расположенный на тулбаре фрэйма. Чекбокс по локальной переменной loc:checkbox. На этом же тулбаре расположена, к примеру, кнопка. По нажатию по ней в её эмбэде чего только не указывал, и:
?loc:checkbox{PROP:Check} = true
и
Update(?loc:checkbox,1)
и
Display(?loc:checkbox)
Пробывал объявлять loc:checkbox,100 а затем:
100{PROP:Check} = true
и
Update(100,1)
и
Display(100)

- ничего не работает! :twisted:

Может кто сталкивался? В чем проблема?
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение kreator »

ИМХО, надо, наверно, написать только:

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

loc:checkbox = 1

Может быть, потом display(?loc:checkbox).
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

Да, логично. У меня в начале был именно такой код, но он, к сожалению, не сработал. :( Тогда-то и начались пляски с бубном.
PavelNK
Старожил
Сообщения: 279
Зарегистрирован: 15 Март 2011, 8:02

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение PavelNK »

Попробуй явно указать окно: Win$?Loc:CheckBox
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

проверил:
AppFrame$?loc:CheckBox{PROP:Check} = True - не работает

Update(AppFrame$?loc:CheckBox,1) и Display(AppFrame$?loc:CheckBox) - ошибка при компеляции.
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

Вот что стало известно:
1. loc:CheckBox = 1
+ ?loc:ChechBox{PROP:Check} = True или Update(?loc:CheckBox,1)
+ Display(?loc:CheckBox)
приводят к переключению самого чекбокса, хотя визуально это не оборажается. Но, стоит щелкнуть по чекбоксу мышкой и видна реакция: вместо того, чтобы перевести его во включенное состояние, переводим в выключенное с едва заметным по времени предварительным включением.
2. Но стоит перейти в другую нить и отдуда послать NOTIFY фрэйму - тот же код но, прописанный в нём по событию NOTIFICATION, отлично срабатывает.

Какие еще могут быть мысли по данному поводу?
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение kreator »

Прекрасно работает код:

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

LOC:Check = 1 - LOC:Check
display(?LOC:Check)
Версия С9.0.10376. Если у тебя не работает, кидай App, или что там.
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

Спасибо, kreator. Благодаря твоему посылу - собрал чистое арр. Всё работает.
Начал разбираться. Выяснил следующее.
В проекте имеется фрэйм с тулбаром. Из него вызываются окна с такими же по размеру тулбарами с отсутствующим аттрибутом No Merge. Причем вызов одного из окон производиться автоматический после открытия окна фрэйма.
Так вот, после открытия любого окна с тулбаром, действия с тулбаром фрэйма становятся не предсказуемыми. Вернее - предсказуемо не рабочими.
Достаточно закрыть окна - работоспособность возвращается.
Ух! :shock:
Как заставить корректно работать элементы тулбара фрэйма, с выше описанными открытыми окнами?

P.S. На самом деле loc:CheckBox - глобальная переменная, управляющая работой связанных ею окон в разных Thread'ах.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение Дед Пахом »

как обычно, дьявол прячется в мелочах.
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение kreator »

Пора спать, так что в кратце. После нажатия кнопки на Application Toolbar нужно передать управление MDI окну, а в нём сделать display() или display конкретно данного чека (MDI окно не меняет номера контролов в глобальном тулбаре).
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

Совет помог!
Итак, что получилось:

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

?loc:CheckBox{PROP:Check} = True !выставили нужное значение
Display(?loc:CheckBox)   !Это нужно для управления из-под не имеющих toolbar MDI окон
SetTarget(,GLO:Thread)   !Переключаемся на нужное окно
Display(?loc:CheckBox)   !из-под него обновляем контрол
SetTarget()              !возвращаем управление обратно в Application Toolbar - а надо ли? 
Как говориться, век живи - век учись!
Спасибо, kreator и всем, кто принял участие!

P.S. Чтобы не громоздить весь этот код, достаточно было, как оказалось, просто дважды нажать Alt+Tab. Фича! :D
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение kreator »

SetTarget() может и не нужен, всё равно Toolbar "фокус не принимает". А вот дважды "Alt+Tab"? Переключение между окнами? Картинка не дёргается? Не успевает дёрнуться? Упрощение тоже не всегда good, IMHO.
We are hard at work… for you. :)
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Принудительно выставить CheckBox в toolbar'е фрэйма

Сообщение NewUser »

kreator писал(а):А вот дважды "Alt+Tab"? Переключение между окнами? Картинка не дёргается? Не успевает дёрнуться? Упрощение тоже не всегда good, IMHO.
Это была шутка. Если бы не получилось программно реализовать данную задачу, пришлось бы в иструкции по использованию программы так и указать: для корректного отображения значений только что измененной глобальной переменной на главной панели управления программы - дважды нажмите Alt+Tab. :lol:
Ответить