![]() |
|
|
![]()
|
|
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
И не будет работать, пока применяется ShowModal - нужно перестраиваться на Show()... =================================================================== А если применять CreateThread, - то нельзя просто так ( на прямую ) обращаться к VCL объектам, - тут необходимо использовать ShowMessage, а в главной форме делать обработчик события, - но опять же все будет зависать, так, как обработчик главной формы будет ждать окончания работы ShowModal формы. |
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Почему не будет, если создавать отдельный поток? Это что? В смысле PostMessage?
А зачем нам главная форма? Вопрос почему отдельный поток вызывает AV. То, что из потоков с VCL нельзя напрямую работать понятно, но для этого синхронизация и придумана. Я когда-то делал нечто подобное и у меня все работало прекрасно. Правда я ProgressBar использовал, а не Gauge, но думаю разницы нет. К сожалению не могу вспомнить что это было, поэтому примера под рукой нет. Если вместо ShowModal использовать Show - возникают дополнительные трудности, если дальнейшая работа невозможна без завершения долгой операции. Если можно пока работать, то тогда действительно, нужно заменить модальную на немодальную. Но причина ошибки как мне видится не в этом. |
||||
|
|||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Form_Kladr->sGauge->Progress = j; // Если это из основной формы, то все станет в модальной форме... Так, как основное окно ожидает завершения Модального окна... А вообще трудно сделать заключение, на обрывках кода Это сообщение отредактировал(а) SVN74 - 26.9.2009, 19:57 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Спасибо ребята, буду смотреть! Но я думаю, тема не закрыта! И переход ShowModal() на Show() не возможно. Точнее возможно, но не нужно. И повторюсь, как только я делаю, что окно создается автоматически, а вызывается в программе посредством ShowModal(), то все работает нормально.
За подсказку, что нужно использовать только break, спасибо. Переборщил. Добавлено @ 08:33 Вечерком создам проект в котором размещу то, что хотел сделать в своей программе и там поэкспериментируем! Появилось немного времени вот исходники: Это сообщение отредактировал(а) vikaz - 27.9.2009, 09:31 Присоединённый файл ( Кол-во скачиваний: 7 )
Thread_2.rar 333,05 Kb-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Anikmar был прав, AV возникает из-за того, что просматривая значение Form3 оно оказалось = NULL.
Меняя строчку вызова на (new TForm3(Application))->Show(); ничего не меняется. Ошибка та же! Это сообщение отредактировал(а) vikaz - 27.9.2009, 09:17 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Просмотрев твой проект, немного подправил, его...
Проблема была в том, что у тебя поток ничего не знал о Form3, - надо было просто передать указатель на Form3 через конструктор потока и все... Теперь можно применять и Show(), и запускать множество Form3 одновременно... Вот подправленный проект: Это сообщение отредактировал(а) SVN74 - 27.9.2009, 11:42 Присоединённый файл ( Кол-во скачиваний: 7 )
Thread_2.rar 274,12 Kb |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Это сообщение отредактировал(а) vikaz - 27.9.2009, 15:29 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Тему продолжим! Создаю уже подобное в своей программе, при добавлении строчки Synchronize (pb());
появляется сл. ошибка: [BCC32 Error] Thread_Kladr_Unit.cpp(31): E2285 Could not find a match for 'TThread::Synchronize(void)' Это сообщение отредактировал(а) vikaz - 29.9.2009, 18:44 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
||||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Спасибо! Моя невнимательность! Это сообщение отредактировал(а) vikaz - 29.9.2009, 22:20 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |