Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Работа оконного интерфейса / 7 сообщений из 7, страница 1 из 1
12.09.2008, 12:28
    #35536166
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
Непонятным образом отрабатывает оконный интерфейс, хотя не должен...
Ситуация такая - есть OLE компонент, в нем некие функции которые работают ну например 0.1 секунду каждая. Делаем userobject на основе этого ole контрола b и размещаем его на окне. Затем вызываем несколько десятков раз функции этого ole объекта (на кнопке пишем скрипт) так, что они отрабатывают в сумме в течении нескольких секунд и после этого выводим MessageBox. Но! интерфейс при этом работает - т.е. мы можем нажать еще раз на кнопку, закрыть окно подвигать его и т.д. А MessageBox выводится в самом конце обработки - т.е. потаскали окно, а затем он всплывает.Собственно вопрос - почему это так?
...
Рейтинг: 0 / 0
12.09.2008, 20:28
    #35537282
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
Локшин МаркНепонятным образом отрабатывает оконный интерфейс, хотя не должен...
Ситуация такая - есть OLE компонент, в нем некие функции которые работают ну например 0.1 секунду каждая. Делаем userobject на основе этого ole контрола b и размещаем его на окне. Затем вызываем несколько десятков раз функции этого ole объекта (на кнопке пишем скрипт) так, что они отрабатывают в сумме в течении нескольких секунд и после этого выводим MessageBox. Но! интерфейс при этом работает - т.е. мы можем нажать еще раз на кнопку, закрыть окно подвигать его и т.д. А MessageBox выводится в самом конце обработки - т.е. потаскали окно, а затем он всплывает.Собственно вопрос - почему это так?
вероятно где-то внутри ole есть код аналогичный Yield()
что то типа ProcessWindowMessages или как он там в API называется.
...
Рейтинг: 0 / 0
12.09.2008, 23:50
    #35537400
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
ЗоринАндрейвероятно где-то внутри ole есть код аналогичный Yield() ...
Вряд ли это так. Ведь функция ole запускается раньше, чем начинают "манипуляции с окном". В этом случае скорее окно должно ждать завершения выполнения функции ole, а не на обоброт.
Локшин Марк
Мне кажется, что это обыкновенная иерархия (приоритет, очередность) событий.
Например, как сначало обрабатывается событие родителя, а потом потомка. Думаю, здесь что-то подобное, т.е. событие userobject на основе этого OLE включается в конце, либо может завершить свой процесс только после события объекта с более высоким приоритетом. А объект с более высоким приоритетом может вставить своё событие между очередным шагом цикла выполнения функций OLE, и OLE приходится ждать пока это событие завершиться и только потом продолжить цикл.
...
Рейтинг: 0 / 0
15.09.2008, 09:22
    #35538807
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
ЗоринАндрейвероятно где-то внутри ole есть код аналогичный Yield()
что то типа ProcessWindowMessages или как он там в API называется.
Хм, это вариант. Нужно будет допросить автора .
AIS Например, как сначало обрабатывается событие родителя, а потом потомка. Думаю, здесь что-то подобное, т.е. событие userobject на основе этого OLE включается в конце, либо может завершить свой процесс только после события объекта с более высоким приоритетом. А объект с более высоким приоритетом может вставить своё событие между очередным шагом цикла выполнения функций OLE, и OLE приходится ждать пока это событие завершиться и только потом продолжить цикл
Оно точно начинает исполняться (код в OLE) сразу после нажатия на кнопку. Причем если я нажму кнопку второй раз (до завершения исполнения первого раза) то код на скрипте на событии clicked начнет выполняться заново, а первое исполнение кода прервется в момент второго нажатия и больше не возобновляется.
...
Рейтинг: 0 / 0
16.09.2008, 10:21
    #35541236
AIZ
AIZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
А вот кнопочку, наверное, надо блокировать сразу после нажатия. Это как в артиллерии - механизм предохранения от двойного заряжания.
...
Рейтинг: 0 / 0
16.09.2008, 10:57
    #35541328
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
AIZА вот кнопочку, наверное, надо блокировать сразу после нажатия. Это как в артиллерии - механизм предохранения от двойного заряжания.
Это не так просто как кажется, т.к. в программе вся логика на хранимых процедурах реализована и с подобного рода блокированием будут проблемы...
...
Рейтинг: 0 / 0
16.09.2008, 16:50
    #35542517
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа оконного интерфейса
ЗоринАндрейвероятно где-то внутри ole есть код аналогичный Yield()
что то типа ProcessWindowMessages или как он там в API называется.
Именно так оно и было, хотя OLE-компонент вообще не имеет видимого пользовательского интерфейса, поэтому что-то в этом направлении не подумалось...
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Работа оконного интерфейса / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]