Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 313

/ вопрос открыт /

Здравствуйте, уважаемые эксперты! Проблема в следующем: необходимо сменить первую загружаемую форму, т.е. сейчас первой загружаемой при запуске приложения является Form1, но появилось необходимость, чтобы перед ней появлялась другая форма, она будет своего рода главной, на ней выведится название программы и строка загрузки(планирую установить на ней таймер, и по его истчению, загрузится Form1). Возможно ли это реализовать?)

Андрей Основин Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Андрей Основин (статус: Посетитель)
Вопрос отправлен: 13 июня 2010, 20:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Андрей Основин!
Я думаю, что сделать саму форму не проблема? поставить на нее всякие украшательства, убрать заголовок и так далее, а мы перейдем к коду, который ее выведет.
Итак, пусть форма у нас есть и имя ей SplashForm.
Вначале идем в меню Project-Properties и там ищем вкладку "Forms" (в новых версиях делфи это не вкладка, но найти можно).
Там находим нашу форму в списке AutoCreate. Перемещаем ее в Manual Create.
Теперь нужно открыть меню Project - view source. Там будет виден код создания главной формы. ищем там строку вида
Application.CreateForm(TForm1, Form1);
и еще одна-две строки на и под ней.
Обрамляем ее вызовом создания нашей формы.

begin
Application.Initialize;//Эта строка была
SplashForm := TSplashForm.Create(Application);//создали
SplashForm.Show();//показываем
Application.CreateForm(TForm1, Form1);//эта строка была
SplashForm.free;
Application.Run; // и эта уже была.
end;
Этот код создаст нашу новую форму-заставку, покажет ее, а потом займется созданием главной формы. Как только главная форма будет создана, форма-заставка будет удалена.
Если чуточку напрячь фантазию, то можно сделать и десять форм, и форму в конце.

Есть один маленький штрих. Если в форме-заставке нужно например обновлять строку состояния загрузки или что то подобное, то они не хотят обновляться и это часто мучает. Но строка Update; сразу после изменений делает свое хорошее дело.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 13 июня 2010, 21:18


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 14 июня 2010, 09:18; участников в обсуждении: 2.
Андрей Основин

Андрей Основин (статус: Посетитель), 13 июня 2010, 21:59 [#1]:

Создать вроде получилось, создается форма-заставка, а затем Form1, но время показа формы-заставки очень мало, как замедлить создание Form1?)
min@y™

min@y™ (статус: Доктор наук), 13 июня 2010, 22:57 [#2]:

Цитата (Андрей Основин):

как замедлить создание Form1?

Вместо
SplashForm.Show()

пиши
SplashForm.ShowModal();
В самой SplashForm производи какие-то действия, выводи индикатор прогресса этих действий и после этого закрывай (ModalResult:= mrOk (или любой другой, кроме mrNore)). После закрытия этой формы выполнение программы перейдёт к строке
Application.CreateForm(TForm1, Form1);//эта строка была
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Андрей Основин

Андрей Основин (статус: Посетитель), 13 июня 2010, 23:54 [#3]:

Все получилось))))), огромное спасибо!!!!!!!!!!!!!
min@y™

min@y™ (статус: Доктор наук), 14 июня 2010, 09:18 [#4]:

Цитата (Андрей Основин):

)))))

Нажми на эту ссылку.

Цитата (Андрей Основин):

огромное спасибо

Спасибо - это много. Пива достаточно. :)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.02 сек.