|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
|
Вывести окно с сообщением во время запуска приложения13.11.2010, 12:21. Показов 10772. Ответов 16
Метки нет (Все метки)
Подскажите если не влом. Сам что-то пока не догадался. В приложении в FormCreate запускается некий сравнительно длительный процесс и форма приложения не сразу появляется. Как бы мне перед самым запуском того процесса вывести на время окошко с сообщением, что идет запуск приложения, а потом уже, после появления главной формы, убрать это окошко? Спасибо.
0
|
|
| 13.11.2010, 12:21 | |
|
Ответы с готовыми решениями:
16
Из окна приложения в случае ошибки надо вызвать окно с сообщением о ней
После отображения списка загружаемых файлов всплывает окно "Восстановление запуска" с сообщением об ошибке |
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 13.11.2010, 12:36 | |
|
AleksBak, ну что сложного, я лично тут уже раз 5 писал примеры... создаете новую форму, переносите из auto-create и в конструкторе главного окна создаете с помощью new эту форму... а в конце кода конструтора убиваете ее... что сложного-то?
1
|
|
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
||
| 13.11.2010, 13:03 [ТС] | ||
|
0
|
||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||||||||||||||
| 13.11.2010, 16:21 | ||||||||||||||||
|
в Unit1.h (или как он у тебя называется), в public
1
|
||||||||||||||||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
|
| 14.11.2010, 23:33 [ТС] | |
|
Форму создал по способу Lelik-pahan, а по способу Lord_Voodoo так и не получилось(еще указывал в меню File->Use Unit... и там указывал чтобы мог обращаться к этой второй форме из основной). Если бы получилось по способу Lord_Voodoo, то было бы хорошо и смог бы легко добавить компонент TProgressBar например. По способу Lelik-pahan не получается добавить такой компонент в созданную форму. Помогите/проясните пожалуйста.
0
|
|
|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||
| 15.11.2010, 01:57 | ||||||
|
AleksBak, добавьте в проект новую форму, настройте её как вам нужно, добавьте компоненты и т.д.
Дальше зайдите в опции проекта и уберите созданную форму из авто-создаваемых форм (Auto-created Forms, на форуме обсуждалось не раз). Дальше вы в праве создавать объекты описанного вами класса (вашей созданной формы). Создание такое, как выше написал Lelik-pahan, за исключением названия класса. Например:
1
|
||||||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
||||||
| 15.11.2010, 11:08 [ТС] | ||||||
|
MikeSoft, я сделал все как Вы написали, с Auto-created Forms разобрался и до этого, форма появляется, но почему-то курсор помещенный над ней превращается в часы(т.е. процессор загружен), а на самой форме ничего нет кроме заголовка и пустого окна - см. скриншот. Т.е. что я сделал(извиняюсь если уже надоел):
1. Создал новую форму(как Lord_Voodoo указал) - Form2. Добавил на нее кнопку, Label1. 2. Переместил ее из Auto-created в Available. 3. Не стал ничего добавлять в Unit1.h (закомментировал предыдущее от Lelik-pahan). 4. Написал след. код(на скриншоте тоже он виден):
0
|
||||||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
||||||
| 15.11.2010, 18:49 [ТС] | ||||||
|
Пояснение - если же оставить новую форму в Auto-Created, то она появляется вместе с главной(естественно поздно т.к. у главной в OnCreate идет длительный поиск устройства вначале) и причем в "нормальном" виде т.е. с кнопками и пр.. А если же убрать эту новую форму из Auto-Created, то как писал она появляется первой(теперь мы ее вначале создаем, а потом устройство ищем), но так и остается пустой и даже после того как появится главная форма.
Добавлено через 4 часа 54 минуты Компоненты вот так создаю и добавляю:
Добавлено через 55 минут Вроде получилось(так просто все оказалось и столько ненужных телодвижений было совершено). Еще как бы ненужные кликания по этой новой форме запретить бы т.к. и-за них выходит в заголовке формы строка типа "Не отвечает", но основное приложение все-таки запускается спустя положенное время(когда закончен поиск оборудования) и все потом нормально работает.
0
|
||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|||||||||||
| 15.11.2010, 19:27 | |||||||||||
|
попробуй так
В моём лузерском понимании, если мы создаём форму динамически:
А формы, добавленные в проект, но убранные из auto-created я всегда создавал так, как написал выше (взял этот код из учебника Культина, когда только знакомился с билдером, так им и пользуюсь) Ведь, как я понимаю, через new создаётся форма, никак не связанная с той, что была добавлена в проект...
0
|
|||||||||||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
|||||||
| 15.11.2010, 19:34 [ТС] | |||||||
0
|
|||||||
|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||
| 15.11.2010, 21:03 | ||
|
Необходимо вызывать методы перерисовки или же использовать Application->ProcessMessages(); Чтобы уже раз и навсегда прояснить данный вопрос, сейчас напишу простенький проект и выложу его здесь...
0
|
||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
|||||||
| 15.11.2010, 21:57 [ТС] | |||||||
0
|
|||||||
|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||||||||||||||||||||||
| 15.11.2010, 22:00 | ||||||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
Итак...
Постановка задачи: Во время загрузки основной формы проекта показать дополнительную форму, отображающую состояние загрузки. Создаём новый VCL-проект, создаём ещё одну форму, которая должна отображать ход загрузки и связываем два юнита между собой (в первом юните - #include "Unit2.h", во втором - #include "Unit1.h"). Теперь необходимо убрать вторую форму из авто-создаваемых. Для этого переходим в "Project" -> "Options" -> "Forms" и убираем Form2 из колонки Auto-Created Forms в Available Forms. Т.к. по этому действию возникают вопросы, попробую его немного осветить. Данным действием мы запрещаем компилятору автоматически создавать объект описанного класса. То есть, добавляя к проекту новую форму, мы по сути добавляем описание нового класса, объект которого по-умолчанию автоматически создаётся вместе с главной формой. Убедится в этом можно заглянув в файл проекта и обратив внимание на строки:
В описании класса TForm1 нам необходимо добавить одну переменную, которая будет хранить в себе процент загрузки программы. Для этого переходим к заголовочному файлу Unit1.h и в область public добавляем переменную типа int:
Теперь перейдём ко второй форме. Подгоним её размер так, как угодно душе (мне захотелось увидеть форму размером 500х30) Установим BorderStyle в bsNone. Добавим на неё компоненты классов TProgressBar и TTimer. Объект ProgressBar1 "размажем" по всей форме, для этого выставим Align в alClient. Для объекта Timer1 обработаем событие OnTimer и запишем туда следующий код:
Нерадивый пользователь может попробовать закрыть эту форму посредством нажатия Alt+F4... Запретим ему эту возможность. Для этого обработаем событие OnCloseQuery для Form2:
Вернёмся к первой форме. Для того, чтобы показать ход выполнения нам необходим какой-нибудь длительный процесс. Самое простое, что можно придумать - это создать массив и заполнять его случайными значениями множество раз. В конструкторе класса TForm1 опишем процесс заполнения массива случайными числами. После чего, конструктор будет иметь следующий вид:
Для тех, у кого остались вопросы - прикладываю проект (созданный в RAD Studio XE). Скачать проект: LoadingProgress.rar С уважением, Михаил.
7
|
||||||||||||||||||||||||||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
||||||
| 15.11.2010, 23:04 [ТС] | ||||||
|
MikeSoft, честно, уже только за то что Вы столько написали и сделали Вам премию или что-то в этом роде нужно. Тут есть "Спасибо", но это так и непонятно. Я в долгу короче. Я собираюсь сейчас проверить. (если бы я знал, что так затянется, то не стал бы связываться, но это не подход и надо все додолбить)
Добавлено через 46 минут MikeSoft большое человеческое спасибо еще раз. Я прочитал, проверил. Некоторые вещи немного по-другому, но получается, что практически также я делал(под конец). Я решил проверить как будет работать Ваша вещь если в нее добавить код для поиска камеры. Оказалось, что точно также как и у меня. Для того чтобы проверить(если нужно измененный файл Вашего проекта помещу) достаточно проделать элементарные вещи - из вкладки Indy Clients помещаете на основную форму TIdHTTP. В нем, в Request пропишите любой IP(для локальных сетей и начинающийся с 192.ххх.ххх.ххх и при чем такой которого нет в сети - например 192.168.0.139) и такое запишите в конструкторе класса TForm1:
0
|
||||||
|
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
|
||||||
| 15.11.2010, 23:10 | ||||||
|
AleksBak, никаких извинений не нужно. Я не защищал авторских прав на данный код.
Запускать проект не буду, т.к. ошибка очевидна. Вы не указали таймаут, в течении которого будут произведены попытки соединения, чтения.
1
|
||||||
|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
||||||||
| 15.11.2010, 23:28 [ТС] | ||||||||
0
|
||||||||
|
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 46
|
|
| 20.04.2016, 20:59 | |
|
MikeSoft, а можно тоже самое, только для Visual studio?
0
|
|
| 20.04.2016, 20:59 | |
|
Помогаю со студенческими работами здесь
17
Служба запуска приложения в определенное время Вывести окно с сообщением после того как закончил вводить текст в Memo, который был выведен в RichEdit Как сохранить время запуска и выключения приложения в бд Окно программы меняет внешний вид после запуска приложения (ASP.NET) Программа для предотвращения запуска определенных процессов во время работы приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|