Загадка про TabBar (с картинками)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Привет всем !
Хочу предложить к рассмотрению небольшой конфуз.
Потребуется Clarion 10 (любой) и желание при запуске приложения сразу открыть в нём MDI окно.
А потом, из меню AppFrame, ещё 2 раза открыть это же окно (я буду нумеровать окна в порядке запуска).
1. Сначала просто запускаем AppFrame и 3 раза открываем через меню MDI окно.
Получаем вполне ожидаемый и корректный TabBar:
2. Теперь для AppFarme добавляем в "Window Events -> Open Window" запуск MDI окна.
После запуска приложения всё верно: открыто "ОКНО № 1".
Открываем еще 2 копии окна из меню AppFrame и получаем непонятное:
Глюк стабильный, наблюдать его можно на любых окнах, при условии, что есть открытие MDI окна при запуске приложения.
Почему так происходит ? И как открыть MDI окно при запуске приложения, что бы потом не нарушался порядок закладок в TabBar ?
Хочу предложить к рассмотрению небольшой конфуз.
Потребуется Clarion 10 (любой) и желание при запуске приложения сразу открыть в нём MDI окно.
А потом, из меню AppFrame, ещё 2 раза открыть это же окно (я буду нумеровать окна в порядке запуска).
1. Сначала просто запускаем AppFrame и 3 раза открываем через меню MDI окно.
Получаем вполне ожидаемый и корректный TabBar:
2. Теперь для AppFarme добавляем в "Window Events -> Open Window" запуск MDI окна.
После запуска приложения всё верно: открыто "ОКНО № 1".
Открываем еще 2 копии окна из меню AppFrame и получаем непонятное:
Глюк стабильный, наблюдать его можно на любых окнах, при условии, что есть открытие MDI окна при запуске приложения.
Почему так происходит ? И как открыть MDI окно при запуске приложения, что бы потом не нарушался порядок закладок в TabBar ?
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Загадка про TabBar (с картинками)
Попробовать поставить sleep между стартами. В c6 помогало, в c10 как-то хуже было, подробно не тестировал, просто заметил. То есть нужна пауза, чтобы запущенный поток отработал. Причем с TabBar это не связано.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Дело в том, что порядок окон правильный.
Если посмотреть STD(STD:WindowList) для AppFrame, то в нём по любому всё верно:
Задержки и паузы здесь не спасают, то что Вы описали - это решение проблемы запуска приложения
на дохлом компьютере, когда открытие MDI окна при запуске заканчивается GPF ...
(на самом деле надо просто проверять Status(AppFrame) перед запуском MDI окна)
Тут, что-то происходит именно с TabBar ... толи он как-то инициируется ACCEPT, то ли он просто по жизни такой ...
Если посмотреть STD(STD:WindowList) для AppFrame, то в нём по любому всё верно:
Задержки и паузы здесь не спасают, то что Вы описали - это решение проблемы запуска приложения
на дохлом компьютере, когда открытие MDI окна при запуске заканчивается GPF ...
(на самом деле надо просто проверять Status(AppFrame) перед запуском MDI окна)
Тут, что-то происходит именно с TabBar ... толи он как-то инициируется ACCEPT, то ли он просто по жизни такой ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4615
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 6 раз
- Поблагодарили: 37 раз
Загадка про TabBar (с картинками)
У меня несколько другая ситуация. Я не использую TabBar и список окон в меню (последний, к слову, некорректно работает в c6 при большом количестве открытых окон). Вместо этого свой менеджер окон, который более функционален. Но проблема при автоматическом запуске нескольких mdi окон при входе в программу точно есть. Что-то не успевает инициализироваться. У меня проявляется несколько иначе. Давно хотел повнимательнее посмотреть, как-то все руки не доходят...
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Загадка про TabBar (с картинками)
Попробовал тест у себя. Из десяти попыток только один раз проявилась такая хрень. И то только после переключения на другую программу. Может должны быть какие-то спец. условия? Странно. Заменил прямой start на post, вообще перестало проявляться.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Я пробовал в Event:OpenWindow использовать POST(Event:Accepted,?ItemStartMDI) ... без результата.kreator писал(а): ↑07 Декабрь 2017, 10:44 Заменил прямой start на post, вообще перестало проявляться.
Напишите пожалуйста какой оператор для запуска MDI окна Вы используете и его точку вставки.
Может быть я что-то не то вообще делаю ... Заранее спасибо !
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Загадка про TabBar (с картинками)
Вот так как-то:
Мне кажется, происходит какое-то событие, которое приводит к ломке порядка. Но вот какое? Меня смущает нестабильность проявления проблемы. У меня.
Код: Выделить всё
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.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Спасибо ! Попробовал Ваш вариант - у меня проблема стабильна ...
Ну не бывает же чудес ... Можно попросить Вас показать заголовок Вашего окна AppFrame ? Что-то вроде:
Заранее спасибо !
Ну не бывает же чудес ... Можно попросить Вас показать заголовок Вашего окна 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)
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Загадка про TabBar (с картинками)
Код: Выделить всё
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
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Подставил Ваш заголовок AppFrame - у меня всё без изменений ....
Насчёт Legacy ничего сказать не могу - уже забыл как оно выглядит ...
Если есть возможность - проверьте пожалуйста на ABC.
Насчёт Legacy ничего сказать не могу - уже забыл как оно выглядит ...
Если есть возможность - проверьте пожалуйста на ABC.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Загадка про TabBar (с картинками)
А может дадите тестовую App, где это проявляется?
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Я работаю с боевой программой .... OK ! Сделаю тестовый проект и выложу.
За теми кто отстал - не возвращаться. (С) Кодекс
Загадка про TabBar (с картинками)
Пока стартует новый тред, может случиться событие на окне старого треда (обычно 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)
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Загадка про TabBar (с картинками)
В АБЦ'шной проге тоже не удаётся увидеть проблему. А mdi-окна должны быть одни и те же?
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
Загадка про TabBar (с картинками)
Мистика .... Окна могут быть любые. Я для простоты использовал одно окно.
За теми кто отстал - не возвращаться. (С) Кодекс