Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2008, 13:41   #1
Repz
Пользователь
 
Регистрация: 10.08.2007
Сообщений: 13
По умолчанию Использование потоков

Господа, имеется две формы одна основная, вторая второстепенная. Вторая форма выполняет роль предзагрузчика или заставки перед появлением первой. Проблема состоит в том что первая форма очень долго загружается,
и я хочу вынести процесс её создания в отдельный поток, который будет вызываться из предзгрузчика.В то же самое время на форме предзагрузчика
будет отображатся (в виде прогресс бара, или текстовых сообщений) этапы создания основной формы.
Вопоросы:
1) Вообще, возможно ли это?
2) Существуют ли способы получше?
Repz вне форума Ответить с цитированием
Старый 23.01.2008, 13:48   #2
Никки
Форумчанин Подтвердите свой е-майл
 
Аватар для Никки
 
Регистрация: 20.11.2007
Сообщений: 500
По умолчанию

Сделать можно. И все наверное так и делают! Вот запусти фотошоп, там на заставке будут перечислятся загружаемые модули... про потоки написано в статье, которую я прикрепил!
Вложения
Тип файла: rar 1.rar (3.9 Кб, 25 просмотров)

Последний раз редактировалось Никки; 23.01.2008 в 13:51.
Никки вне форума Ответить с цитированием
Старый 23.01.2008, 14:24   #3
shepelin
Пользователь
 
Аватар для shepelin
 
Регистрация: 11.12.2007
Сообщений: 94
По умолчанию

можно и без потока обойтись как я понял форма у тебя уже есть( назовем ее LoadingForm)
в файле проекта сразу после Application.initialize; нужно добавить:
Код:
LoadingForm:=TLoadingform.Create(Application);
LoadingForm.Show;
LoadingForm.Update;
а на событие главной формы OnShow написать:
Код:
LoadingForm.Close;
LoadingForm.Free;
-Сколько будет 2х2=4?
-TRUE
shepelin вне форума Ответить с цитированием
Старый 23.01.2008, 15:44   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, это вы один из вариантов простой заставки описали...
Тут, пожалуй, нужно создание полноценной формы, управляющей процессом загрузки основной формы.
То Repz.
Ваш подход совершенно верен - нужно создать формочку-заставку, которая будет поочередно вызывать и отображать на себе процесс создания главной формы. В принципе, вы в ней просто должны перечислить все то, что у вас должно идти в событии ONCREATE главной формы (оттуда, естественно, все убирается).
Ну, примерно так ваша заставка должна работать:
- делаем простой CREATE главной формы из заставки (т.е. CREATE и больше ничего у нее (у MAIN) в этом событии не должно быть);
- производим все нужные для нее подготовительные операции, с отображением на прогресс-баре, лэйбле - это уж от вашей фантазии зависит... Но каждая операция инициируется из заставки и вы тут же отображаете инфу об этом (например, "Открываем таблицу покупателей, ждите...").
- в конце-концов убиваем форму-заставку и передаем управление главной форме. Ей к этому моменту осталось только отобразиться...

Последний раз редактировалось mihali4; 23.01.2008 в 15:47.
mihali4 вне форума Ответить с цитированием
Старый 25.01.2008, 13:38   #5
Repz
Пользователь
 
Регистрация: 10.08.2007
Сообщений: 13
По умолчанию

Спасибо всем за ответы.
Ещё один под_вопрос, я хочу сделать так: в событии OnCreate формы предзагрузчика я создаю поток, а в самом потоке пишу что-то типа application.CreateForm(TFrm_Main, frm_Main). Причём в событии OnCreate формы frm_Main, после выполнения определённых этапов хочу посылать информацию о выполнение этих самых этапов на форму предзагрузчик (например frm_pre_load.label1.caption:='Идёт загрузка прайса...'). Реально ли это?
Repz вне форума Ответить с цитированием
Старый 25.01.2008, 13:55   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Непонимаю чем сложно присвоить Caption то что хотите, а потом вызвать Application.ProcessMessages; И будет Вам щастье.. зачем потоки еще
BOBAH13 вне форума Ответить с цитированием
Старый 25.01.2008, 14:20   #7
Repz
Пользователь
 
Регистрация: 10.08.2007
Сообщений: 13
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Непонимаю чем сложно присвоить Caption то что хотите, а потом вызвать Application.ProcessMessages; И будет Вам щастье.. зачем потоки еще
Честно говоря никогда не пользовался этим свойством, так что спасибо, обязательно испытаю.
Repz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальны переменные для потоков PM85 Общие вопросы C/C++ 3 15.04.2008 18:12
Несколько потоков Adm Общие вопросы Delphi 13 18.01.2008 20:04
Перенаправление потоков Carbon Win Api 5 25.11.2007 14:46
Дескрипторы потоков - Для каждого элемента списка необходимо создать поток, выполняющий требуемые функции kdv0403 Общие вопросы Delphi 2 09.06.2007 11:12