Вверх ↑
Этот топик читают: Гость
Ответов: 105
Рейтинг: 2
#1: 2007-03-28 18:42:54 ЛС | профиль | цитата
Показать форму(модальную) без границ, выполнить некий код, закрыть форму
В этом примере просто показывается, с потоками что-то не получилось
Простой:
code_1150.txt
С потоками
Add(Button,11306464,98,196)
{
Left=95
Top=160
link(onClick,387859:doEvent1,[(156,202)(156,188)])
}
Add(ChildFormEx,7542761,287,182)
{
@Hint=#8:ожидайте|
}
BEGIN_SDK
Add(EditMultiEx,12333224,3,3)
{
WorkCount=#11:doShowModal|7:doClose|
link(doShowModal,1655189:doShowModal,[(19,9)(19,146)])
link(doClose,1655189:doClose,[(19,16)(19,132)])
}
Add(MainForm,1655189,35,105)
{
Left=35
Top=105
Width=353
Height=94
Caption="Ожидайте"
BorderStyle=0
Visible=1
Position=1
Point(doVisible)
Point(doShowModal)
}
Add(Label,6266897,63,21)
{
Left=15
Top=30
Width=326
Height=28
Font=[MS Sans Serif,16,0,0,1]
Transparent=0
Caption="Ожидайте, выполнение операции..."
Alignment=2
}
END_SDK
Add(Hub,387859,182,182)
{
OutCount=3
link(onEvent1,14357058:doStart,[(229,188)(229,160)])
link(onEvent2,8824383:doValue,[(219,195)(219,195)])
link(onEvent3,7250658:doStart,[(226,202)(226,237)])
}
Add(Memory,8824383,238,189)
{
@Hint=#9:любой код|
}
Add(Thread,14357058,245,154)
{
link(onExec,7542761:doShowModal,[(282,160)(282,188)])
}
Add(Thread,7250658,238,231)
{
link(onExec,7542761:doClose,[(278,237)(278,195)])
}
Чего-то я не догоняю
карма: 0

0
файлы: 1code_1150.txt [1KB] [466]
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2007-03-28 18:59:03 ЛС | профиль | цитата
нельзя так потоки использовать. В данном случае должна быть следующая схема:
1) запуск фонового потока
2) показ модальной формы
3) обновление сттатуса и вызов ProcessMessages после точки onSyncExec
4) закрытие формы
5) завершение потока
карма: 27
0
Ответов: 9906
Рейтинг: 351
#3: 2007-03-28 23:04:12 ЛС | профиль | цитата
GRIMAN,
не морочься, самое простое - делать так
code_1155.txt

А вот если пижонить, и хотеть чтобы форма "дышала", тогда поток обязательно нужен...
Как отметил Dilma, что-то типа такого:
code_1156.txt
карма: 9

0
файлы: 2code_1155.txt [1.1KB] [307], code_1156.txt [1.2KB] [247]
Ответов: 105
Рейтинг: 2
#4: 2007-03-29 09:34:03 ЛС | профиль | цитата
Galkov, Первый способ так и оставил форму висеть, но вот второй выполнился так как надо.
Работает и так: code_1162.txt
Спасибо всем
карма: 0

0
файлы: 1code_1162.txt [1.2KB] [449]
Ответов: 9906
Рейтинг: 351
#5: 2007-03-29 09:54:41 ЛС | профиль | цитата
GRIMAN писал(а):
Первый способ так и оставил форму висеть

Так оказывается, батенька, Вам мед еще и ложкой надо...
У Вас есть хинт "любой код" - и этот "любой код" и должен закрывать форму по окончании (или по другому признаку).

Третья точка HUB-а действительно глупая. Не я ее придумал, но я забыл выкинуть.
Управление она получит ТОЛЬКО после закрытия формы (завершения doShowModal)
Отсюда совершенно понятно: чего ее закрывать, если оно уже закрыто...

Точно так же, как и системные модалы.
Вот демо, для сего замечательного наблюдения:
code_1163.txt


Dilma, вот в таких примерах крайне полезно во время отладки убирать засветку линка только после его окончания.
Модал начал работать, НО - активная ветвь ПОДСВЕЧЕНА. И событие на третьей точке HUB-а уже не вызовет удивления - ветка продолжает свой жизненый цикл
карма: 9

0
файлы: 1code_1163.txt [1.5KB] [279]
Ответов: 105
Рейтинг: 2
#6: 2007-03-29 16:04:03 ЛС | профиль | цитата
Ничего страшного(про ложку) потом сам научусь
карма: 0

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