|
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
|
|
Вывести окно с сообщением во время запуска приложения13.11.2010, 12:21. Показов 10759. Ответов 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) Программа для предотвращения запуска определенных процессов во время работы приложения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|