Про ToolBar в AppFrame ...

Clarion, Clarion 7

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

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

Про ToolBar в AppFrame ...

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

Привет всем !

Я иногда поднимаю вопросы про проблемы, которые никто не видит.
Но они как тот суслик - его никто не видит, но он есть. ;)

Если посмотреть код любого окна ABC - то в нём есть класс TOOLBAR.
И не важно - это MDI окно или нет, есть BROWSE или нет - он инициализируется и работает.
В том смысле - что отрабатываются методы и посылаются события в AppFrame или непонятно куда.

Я давно замечал, что при открытии MDI окна происходит перерисовка кнопок на TOOLBAR.
Это делается быстро, но на бюджетных компьютерах вполне заметно.
В C11 ситуация приобрела новые краски - стали исчезать кнопки на TOOLBAR после такой "перерисовки".
Наводишь на место кнопки курсор мышки - и кнопка появляется. Забавно ... :(

Вопрос: как бы проще эту инициализацию TOOLBAR вырубить во всех окнах ?
Коментировать вызов во всех окнах ? Как-то совсем грустно ...

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

! BIND variables
! [Priority 5800]
       Omit('NoToolbar')
! Setup Toolbar Object
SELF.AddItem(Toolbar)
! Initialize the procedure
CLEAR(GlobalRequest)                                     ! Clear GlobalRequest after storing locally
CLEAR(GlobalResponse)
! [Priority 6500]
       NoToolbar
       CLEAR(GlobalRequest) 
       CLEAR(GlobalResponse)  
  ! Procedure setup standard formulas
! [Priority 7500]
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Про ToolBar в AppFrame ...

Сообщение finsoftrz »

Это с тех времен, когда на тулбаре размещали общие кнопки управления для окон. Это очень удобно, хотя сейчас вышло из моды. У меня он обновляется регулярно, в том числе, когда меняется фокус в окне. Например, фокус на броузе активирует часть кнопок на тулбаре, уходит с броуза, де активирует. Задержка очень небольшая, если специально не заострять внимания, глазом не фиксируется.
Проблем с пропаданием кнопок не замечал. В с6 такого нет, а с11 плотно не тестировал. В с6 иногда не обновляется содержимое окон. Чаще при быстром переключении разных программ. Перещелкиваешь, восстанавливается. Возможно, поможет отключение всех видео эффектов (оптимизация на максимальную скорость).
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про ToolBar в AppFrame ...

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

finsoftrz писал(а): 12 Июль 2022, 13:11 Проблем с пропаданием кнопок не замечал. В с6 такого нет
В RunTime C63 указанной проблемы нет однозначно.
Вроде бы не проявлятся и в C11.1 - но пока тестирую.
Но "блыманье" кнопок на ToolBar есть везде ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про ToolBar в AppFrame ...

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

Кажется, я понял великий замысел архитектора на эту тему ...
Как и принято в SV - костылём закрываем проблемы предыдущего костыля.

В приложении могут быть окна, которые поддерживают кнопки VCR на ToolBar AppFrame и не поддерживают.
Т.к. неизвестно, какой тип окон используется в Multi-DLL и сколько AppFrame в проекте (и какой из них текущий),
есть ToolBar или нет его - то принято решение всегда посылать события на обновление состояния ToolBar из всех Window.

Лучше лишнее, чем пропустить. Да. Но при этом нет глобального выключателя этого прибамбаса.
В результете мы все таскаем в приложениях рудиментный код поддержки MDI VCR ToolBar, даже если юзаем SDI. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4560
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Про ToolBar в AppFrame ...

Сообщение finsoftrz »

В ШВС код обновления кнопок vcr на тулбаре генерится только тогда, когда в шаблоне броуза это указано. Аналогично я делаю и для других кнопок. Либо что-то не поняли, либо это поведение в abc шаблонах.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Про ToolBar в AppFrame ...

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

finsoftrz писал(а): 13 Июль 2022, 7:54 Либо что-то не поняли, либо это поведение в abc шаблонах.
Второе однозначно. Проблему видно в штатном примере CallTree.app -
где вообще одно убогое окно SDI, но в нём инициализируется класс
обслуживания событий для обновления ToolBar. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить