|
|
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
Уважаемые коллеги. Форма написана в FORMS 6 и отображает ход некоего процесса: :blk.counter :=0; -- -- счетчик циклов на форме For i in (select FLD from MY_TBL) loop my_proc(FLD); :blk.counter := :blk.counter+1; End loop; message('OK'); Счетчик нормально отсчитывает количество циклов. Но стоит кликнуть где нибудь в окне формы вне окна или активизировать другое приложение, как счетчик сразу замораживается, хотя цикл нормально продолжает работать до своего завершения. Пробовал тип окна MODAL / DOCUMENT. Не помогает. Где решение проблемы. Спасибо, заранее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2010, 15:56 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
Может, SYNCHRONIZE поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2010, 16:42 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
Пробовал, нет. Я забыл привесити SYNCHRONIZE в тексте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2010, 17:33 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
levonast, сделать таймер и цикл реализовать на триггере When-Timer-Expired ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 10:14 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
Спасибо. Но неужели нет других способов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 10:39 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
Я предпочитаю пускать джоб, в форме стартовать отдельное окошко, где по таймеру считывать сообщения от джоба через dbms_pipe, заодно ему могу послать сообщение, что бы прекращал А у тебя попробуй все-таки синхронайз, но если цикл слишком большой, то сделай внутри цикла счетчик, и вызывай синхронайз не на каждый чих, а допустим через 100 проходов основного цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 11:14 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
Если так, то не помогает -- :blk.counter :=0; -- -- счетчик циклов на форме vC :=0; For i in (select FLD from MY_TBL) loop my_proc(FLD); --это не stored procedure, a program unit in FORMS vC :=vC+1; If mod(vC,100)=0 then :blk.counter := vC; synchronize; End if; End loop; message('OK'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 11:29 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
ХЗ... Возможно, это связано с тем, что операционка решает, что процесс слишко долго не опрашивал очередь системных сообщений... Во всяком случае, склепал нечто подобное под Forms6i + XP SP3 - воспроизводится (т.е., щелкнешь мышой где-нить через 4-4.5 сек после начала - "замерзает"; не щелкнешь - красиво отрисовывается до конца цикла). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 18:48 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
какой же выход ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 20:47 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
levonastкакой же выход ? Как минимум - написать используемую версию Формс. Или спрашивать в пустоту, в надежде, что найдется владелец хрустального шара. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 10:35 |
|
||
|
Forms 6i, окно приложений
|
|||
|---|---|---|---|
|
#18+
-=APS=-ХЗ... Возможно, это связано с тем, что операционка решает, что процесс слишко долго не опрашивал очередь системных сообщений... Во всяком случае, склепал нечто подобное под Forms6i + XP SP3 - воспроизводится (т.е., щелкнешь мышой где-нить через 4-4.5 сек после начала - "замерзает"; не щелкнешь - красиво отрисовывается до конца цикла). Клиент-сервер? У меня всегда просто SYNCHRONIZE помогал. Возможно, что не обработанное события WM_CLICK висит в очереди и не дает пройти WM_PAINT. Но странно это все. Я такого за несколько лет работы с Forms не встречал. Да... Если закрыть окно формс другой программой, а потом обратно другую программу свернуть - то выглядит не красиво. Но счетчик (при синхронизе) всегда нормально перерисовывался. В любом случае, совет Les насчет таймера работать должен. Таймер не будет блокировать очередь сообщений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 10:40 |
|
||
|
|

start [/forum/search_topic.php?author=Yulya1995&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 440ms |
| total: | 599ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...