Загадка про TabBar (с картинками)

Clarion, Clarion 7

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

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

Загадка про TabBar (с картинками)

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

Привет всем !

Хочу предложить к рассмотрению небольшой конфуз.
Потребуется Clarion 10 (любой) и желание при запуске приложения сразу открыть в нём MDI окно.
А потом, из меню AppFrame, ещё 2 раза открыть это же окно (я буду нумеровать окна в порядке запуска).

1. Сначала просто запускаем AppFrame и 3 раза открываем через меню MDI окно.
Получаем вполне ожидаемый и корректный TabBar:
2.jpg
2.jpg (8.28 КБ) 2130 просмотров

2. Теперь для AppFarme добавляем в "Window Events -> Open Window" запуск MDI окна.
После запуска приложения всё верно: открыто "ОКНО № 1".
3.jpg
3.jpg (5.85 КБ) 2125 просмотров

Открываем еще 2 копии окна из меню AppFrame и получаем непонятное:
1.jpg
1.jpg (9.15 КБ) 2130 просмотров

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

Загадка про TabBar (с картинками)

Сообщение finsoftrz »

Попробовать поставить sleep между стартами. В c6 помогало, в c10 как-то хуже было, подробно не тестировал, просто заметил. То есть нужна пауза, чтобы запущенный поток отработал. Причем с TabBar это не связано.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Загадка про TabBar (с картинками)

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

Дело в том, что порядок окон правильный.
Если посмотреть STD(STD:WindowList) для AppFrame, то в нём по любому всё верно:
4.jpg
4.jpg (6.82 КБ) 2116 просмотров

Задержки и паузы здесь не спасают, то что Вы описали - это решение проблемы запуска приложения
на дохлом компьютере, когда открытие MDI окна при запуске заканчивается GPF ...
(на самом деле надо просто проверять Status(AppFrame) перед запуском MDI окна)

Тут, что-то происходит именно с TabBar ... толи он как-то инициируется ACCEPT, то ли он просто по жизни такой ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4562
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Загадка про TabBar (с картинками)

Сообщение finsoftrz »

У меня несколько другая ситуация. Я не использую TabBar и список окон в меню (последний, к слову, некорректно работает в c6 при большом количестве открытых окон). Вместо этого свой менеджер окон, который более функционален. Но проблема при автоматическом запуске нескольких mdi окон при входе в программу точно есть. Что-то не успевает инициализироваться. У меня проявляется несколько иначе. Давно хотел повнимательнее посмотреть, как-то все руки не доходят...
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Загадка про TabBar (с картинками)

Сообщение kreator »

Попробовал тест у себя. Из десяти попыток только один раз проявилась такая хрень. И то только после переключения на другую программу. Может должны быть какие-то спец. условия? Странно. Заменил прямой start на post, вообще перестало проявляться.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Загадка про TabBar (с картинками)

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

kreator писал(а): 07 Декабрь 2017, 10:44 Заменил прямой start на post, вообще перестало проявляться.
Я пробовал в Event:OpenWindow использовать POST(Event:Accepted,?ItemStartMDI) ... без результата.

Напишите пожалуйста какой оператор для запуска MDI окна Вы используете и его точку вставки.
Может быть я что-то не то вообще делаю ... :( Заранее спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Загадка про TabBar (с картинками)

Сообщение kreator »

Вот так как-то:

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

  system{prop:CharSet} = Charset:Cyrillic
  system{prop:FontCharSet + prop:TipsFont} = Charset:Cyrillic
  system{prop:Font} = 'Arial'
  ! End of "Before Opening the Window"
  OPEN(AppFrame)
  WindowOpened=True
  ! Start of "After Opening the Window"
  ! [Priority 4000]
  0{PROP:StatusText,1} = GETINI('DATABASE','GIBASE','','.\STARTRAP.INI')
  !START(MONITOR, 25000)
  post(EVENT:ACCEPTED, ?Регистрациялицензий)
Мне кажется, происходит какое-то событие, которое приводит к ломке порядка. Но вот какое? Меня смущает нестабильность проявления проблемы. У меня.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Загадка про TabBar (с картинками)

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

Спасибо ! Попробовал Ваш вариант - у меня проблема стабильна ... :(
Ну не бывает же чудес ... Можно попросить Вас показать заголовок Вашего окна AppFrame ? Что-то вроде:

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

AppFrame   APPLICATION('Главное меню'),AT(,,510,292),FONT('Arial',11,,,CHARSET:CYRILLIC),RESIZE,CENTER, |
                  ICON('prilavok.ico'),IMM,MASK,MAX,STATUS(-1,100,150),SYSTEM
                       MENUBAR,USE(?Menubar)
                         MENU('&Файл'),USE(?File)
Заранее спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Загадка про TabBar (с картинками)

Сообщение kreator »

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

AppFrame             APPLICATION('Администрирование "************"'),AT(,,520,400),FONT('MS Sans Serif',8,COLOR:Black, |
  FONT:regular,CHARSET:CYRILLIC),RESIZE,TILED,AUTO,ICON('SUPPORT.ICO'),IMM,MAX,STATUS(-1,80, |
  120,45),SYSTEM
                       MENUBAR,USE(?MENUBAR1)
                         ITEM('&Выход'),USE(?Выход),STD(STD:Close)
                         ITEM('&Настройки'),USE(?Настройки)
                         ITEM('&Управление доступом'),USE(?Доступ)
                         MENU('Управление сервером'),USE(?Управлениесервером)
                           ITEM('&Монитор лицензий'),USE(?Регистрациялицензий)
                           ITEM,USE(?SEPARATOR1),SEPARATOR
                           ITEM('Загрузка скриптов'),USE(?УправлениесерверомЗагрузкаскриптов),DISABLE
                           ITEM,USE(?SEPARATOR2),SEPARATOR
                           ITEM('&Обнуление версий'),USE(?УправлениесерверомОбнулениеверсий)
                         END
                         MENU('Просмотр базы'),USE(?Просмотрбазы),HIDE
                         END
                         MENU('&Окно'),USE(?Окно),MSG('Arrange multiple open windows'),STD(STD:WindowList)
                           ITEM('T&ile'),USE(?Tile),MSG('Arrange multiple opened windows'),STD(STD:TileWindow)
                           ITEM('&Cascade'),USE(?Cascade),MSG('Arrange multiple opened windows'),STD(STD:CascadeWindow)
                           ITEM('&Arrange Icons'),USE(?Arrange),MSG('Arrange the icons for minimized windows'),STD(STD:ArrangeIcons)
                         END
                       END
                       TOOLBAR,AT(0,0,520,20),USE(?TOOLBAR1)
                         BUTTON,AT(6,3,16,15),USE(?Button4),ICON('EXIT.ico'),FLAT,SKIP,STD(STD:Close)
                         BUTTON,AT(27,3,16,15),USE(?Button3),ICON('TOOLS.ico'),FLAT,SKIP,TIP('Настройки')
                         REGION,AT(0,0,,1),USE(?Region1),FULL,BEVEL(-1)
                         BUTTON,AT(47,3,16,15),USE(?ROLI),ICON('key.ico'),FLAT,SKIP,TIP('Управление доступом')
                         BUTTON,AT(67,3,16,15),USE(?Button1),ICON('Search.ico'),FLAT,SKIP,TIP('Монитор лицензий')
                       END
У меня атрибута MASK нет. Но, думаю, он не причём. Вообще мой кусок на легаси. Хотите, могу другую прогу на ABC проверить? Просто, у этой MDI Tab задействованы. А то, что есть на ABC, нужно их подключать (в принципе - не проблема).
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Загадка про TabBar (с картинками)

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

Подставил Ваш заголовок AppFrame - у меня всё без изменений .... :(
Насчёт Legacy ничего сказать не могу - уже забыл как оно выглядит ... :)
Если есть возможность - проверьте пожалуйста на ABC.
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Загадка про TabBar (с картинками)

Сообщение kreator »

А может дадите тестовую App, где это проявляется?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Загадка про TabBar (с картинками)

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

Я работаю с боевой программой .... OK ! Сделаю тестовый проект и выложу. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Загадка про TabBar (с картинками)

Сообщение Yufil »

Пока стартует новый тред, может случиться событие на окне старого треда (обычно Event:Timer), что потребует переключения тредов и весьма чревато падением программы. При необходимости прикрываю окно заглушкой, из которой и запускаю задачу, примерно так...

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

Wait   WINDOW(''),AT(-100,-100,1,1),timer(500) 
       END

OPEN(Wait)
Display() 
Accept 
   CASE Event()
   OF  Event:OpenWindow
       Start(....) 
   OF Event:Timer 
      Break 
End 
Close(Wait)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Загадка про TabBar (с картинками)

Сообщение kreator »

В АБЦ'шной проге тоже не удаётся увидеть проблему. А mdi-окна должны быть одни и те же?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Загадка про TabBar (с картинками)

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

Мистика .... Окна могут быть любые. Я для простоты использовал одно окно.
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить