Вверх ↑
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
#1: 2014-06-06 09:56:58 ЛС | профиль | цитата
Кодингу не обучен, посему ваял прогу по собственному разумению.
И естественно столкнулся с проблемой.
Имеем, прогу-оболочку к БД. 2 дочерние формы добавляющие(1 дочернее), изменяющие (2 дочернее) записи БД.
При работе с любой из этих форм, после того как внесименил необходимые данные на форме и нажал кнопку "Применить" - форма начинает мееедленно, по частям, закрываться. Как будто её кусками режут, как будто не хватет мощи компа обработать графику закрытия формы.
По кнопке "Применить" у меня сделан хаб, первое действие которого - закрыть форму, следующие действия идут на выполнение запросов к БД, выведение результата запроса в таблицу на главнй форме, очистку эдитов на закрытой дочерней форме и т.д.
Я думал что раз 1 действие по кнопке "Применить" - закрытие дочерней формы, то форма стремительно закроется а код будет выполняться уже дальше, ан нет.
Где я допустил промашку?

P.S. Одним из действи после закрытия дочерней формы (нажатием кнопки Применить на доч. форме) была установка текста на главной форме программы - количества записей БД. Однако при этом, при нажатии "Применть" на дочерней форме, прога вела себя вабще странно. Дочерняя форма так же кусками исчезала, главная форма проги уходила на задний план, на передний план вылезало окно приложения в котором я работал до этого, например тотал коммандер. Проходило 0,5-1 секунда, снова на передний план вылазило главное окно моей проги. Убрал это действие из хаба дочерней формы - теперь форма не прыгает на заднийпередний планы.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26061
Рейтинг: 2120
#2: 2014-06-06 10:47:20 ЛС | профиль | цитата
user_asm писал(а):
Я думал что раз 1 действие по кнопке "Применить" - закрытие дочерней формы, то форма стремительно закроется а код будет выполняться уже дальше, ан нет

Перерисовка экрана работает в системной очереди сообщений, те после 1-го действия системе дается команда на закрытие формы, и не ждется выполнение конца этого закрытия, а переходит сразу ко 2-му действию, а там действия с базой, которые начинаю тормозить очередь системных сообщений, занимая системные ресурсы.
Те после первого действия надо дать задержку для гарантированного закрытия формы, после чего только переходить ко 2-му действию
карма: 22

0
Ответов: 952
Рейтинг: 4
#3: 2014-06-06 11:01:18 ЛС | профиль | цитата
Спасибо за совет. Просто таймером? На какое время? Хотя бы примерно.
карма: 0

0
Ответов: 9906
Рейтинг: 351
#4: 2014-06-06 11:10:32 ЛС | профиль | цитата
На 0
Вопрос не во времени, а в очередности исполнения
карма: 9

0
Ответов: 952
Рейтинг: 4
#5: 2014-06-06 11:42:43 ЛС | профиль | цитата
Понятно. Спасибо всем. А то не мог толку добиться в чем у меня промашка.
карма: 0

0
Ответов: 952
Рейтинг: 4
#6: 2014-06-09 22:17:16 ЛС | профиль | цитата
Примерно вот так?
code_33770.txt
карма: 0

0
файлы: 1code_33770.txt [899B] [502]
Ответов: 952
Рейтинг: 4
#7: 2014-06-11 21:59:10 ЛС | профиль | цитата
Да, дочерняя форма теперь закрывается очень быстро. Вот только вопрос с уходом главного окна проги на задний план и снова появления на переднем так и не решился.
------------ Дoбавленo в 17.15:
Хотя нет, и форма стала закрываться быстрее, но опять же кусками, не мгновенно.
------------ Дoбавленo в 21.59:
Может в хабе после всех действий еще один таймер поставить? ...
карма: 0

0
Ответов: 952
Рейтинг: 4
#8: 2014-06-19 21:00:05 ЛС | профиль | цитата
Может вот так надо?
code_33876.txt
Ну помогите же кто-нибудь ....
карма: 0

0
файлы: 1code_33876.txt [871B] [450]
Ответов: 952
Рейтинг: 4
#9: 2014-07-09 12:24:18 ЛС | профиль | цитата
Дочерняя форма.
Доч. форма открывается при нажатии на кнопку на главной форме.
Однако я могу при открытой дочерней форме так же нажимать и вводить данные на главной фроме.
А заблокировать главную форму до закрытия дочерней - можно?
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2014-07-09 12:42:21 ЛС | профиль | цитата
user_asm писал(а):
А заблокировать главную форму до закрытия дочерней - можно?

Использовать на дочерней doShowModal

Add(MainForm,2953706,322,119)
{
}
Add(Button,6436646,322,168)
{
Left=140
Top=30
TabOrder=-1
link(onClick,9268447:doShowModal,[])
}
Add(ChildFormEx,9268447,378,168)
{
}
BEGIN_SDK
Add(EditMultiEx,6823534,21,21)
{
WorkCount=#11:doShowModal|
link(doShowModal,9741854:doShowModal,[(74,27)(74,90)])
}
Add(MainForm,9741854,84,56)
{
Left=35
Top=105
Visible=1
Point(doShowModal)
}
END_SDK

карма: 22

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)