![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| MacTep |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Привет всем. Ситуация такая. У меня есть длительный процесс. Хотелось бы его визуализировать, то есть показать пользователю, насколько он уже выполнен. В одном окне с этим проблем нет, но хотелось бы сделать красиво. То есть нажимается кнопка, открывается вторая форма, в ней происходит выполнение процесса, а после завершения данного процесса форма сама закрывается, отдав управление главной форме.
Вот мой код. В первой форме:
Во второй форме:
Программа моя не работает так, как надо мне. Во-первых, не вижу самого состояния процесса - форма вторая открывается только после завершения его. Во-вторых, форма вторая не закрывается почему-то... Что неправильно? И как изменить, чтобы было правильно? Спасибо заранее. -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
||||
|
|||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Потому что ShowModal, сделай AlwaysOnTop а контролы главной формы дизейбли.
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
мона так. А вообще это логика.... Кидировать-то тут нечего особо. |
|||
|
||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
Нужно выполнять твою процедуру не OnShow() а он OnActivate()
|
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Yanis, ваш вариант очень мне подходит. Но нельзя ли при этом сделать так, чтобы все формы, которые были открыты до этой второй формы стали неактивны, то есть на них нельзя было бы переключиться... А то у вас Show. И переключиться можно... Что совсем не желательно...
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
или или лови активирование и получение фокуса на других формах и активируй свою -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Попутный вопрос: как ловить активирование и получение фокуса???
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
WM_ACTIVATE + WM_SETFOCUS -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Спасибо, подумаю.
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| MacTep |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Form1
Form2
Вроде как все работает с таким раскладом, и активность отдается второй форме. Но.... Если схватить первую за заголовок, то можно таскать. Надо сделать, чтобы был такой же эффект, как будто форма вторая модальная. Это возможно? -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
||||
|
|||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Делай все во второй форме (весь длительный процесс) и открывай ее ShowModal. ВОт и все...
-------------------- ![]() |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
aktuba, так у меня первый пример так и был сделан. Ты читал вообще? Не работает так... Или я туплю? Если да, то объясни, где я не прав?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| aktuba |
|
||||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
В твоем пример весь основной процесс происходит в первой форме, а я предложил перенести его во вторую. Это раз. Не работает у тебя по той причине, что сначала запускается сам длительный процесс, а уже потом ты пытаешься его визуализировать. Тебе надо примерно та:
Примерно так. Писал на коленке, но должно работать. Хотя сам я обычно делаю немного по-другому. Я визуализацию вывожу в отдельный процесс, в котором при изменении шага посылаю сообщение главной форме, на которой лежит ProgressBar... P.S.: Прежде чем отвечать на вопрос - я всегда стараюсь прочесть не только сам вопрос, но и все ответы, которые на него даны! ПОэтому не стоит так набрасываться. Ты сам не прочел мой ответ, в котором четко написано "Делай все во второй форме (весь длительный процесс)"!!! Это сообщение отредактировал(а) aktuba - 9.2.2007, 19:18 -------------------- ![]() |
||||||
|
|||||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Извини, но ничего не понял. Почему FormShow для второй формы описан два раза? -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Просто ошибся =). Уже поправил... -------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |