Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Главная форма [D7, XP]


VolMyr ©   (2009-01-05 04:07:00) 

Здравствуйте. Как изменить програмно главную форму? Например,  Form1 - главная, а при виполнение програмы главная стала Form2.


Игорь Шевченко   (2009-01-10 01:37:00) [1]

"Корректно оформляйте заголовок ветки, который должен кратко отражать суть вопроса"


Юрий Зотов   (2009-01-08 18:45:00) [2]

> KilkennyCat ©   (06.01.09 17:42) [11]

> Конечно можно.

Однажды все же пришлось столкнуться с задачей, где требовалась именно замена главной формы (притом, возможно, еще и неоднократная).

Всякое бывает...


123-ий   (2009-01-08 06:25:00) [3]


> но проще всего скрыть единственную главную форму нафиг и
> играться видимостью дочерних.

вот то-то и оно :)


KilkennyCat   (2009-01-06 17:42:00) [4]


> 123-ий ©   (06.01.09 15:42) [9]

Отсутствие смысла не есть зло. Ибо кому - отсутствие, а кому - смысл.


> Юрий Зотов ©
> Нельзя ли решить задачу нормальными средствами?


Конечно можно. Можно осуществить перезапуск приложения с параметром, но проще всего скрыть единственную главную форму нафиг и играться видимостью дочерних.


Юрий Зотов   (2009-01-06 16:39:00) [5]

Сменить можно примерно так:

var
 MainFormAddress: ^TForm;
 OldMainForm, NewMainForm: TForm;
begin
 MainFormAddress := @Application.MainForm; // Адрес поля Application
 OldMainForm := MainFormAddress^;
 NewMainForm := TNewMainForm.Create(Application);
 MainFormAddress^ := NewMainForm; // Вуаля!
 OldMainForm.Free;

Но прежде, чем пользоваться такими полухакерскими приемами, сначала нужно очень хорошо подумать - а оно действительно необходимо? Нельзя ли решить задачу нормальными средствами?


123-ий   (2009-01-06 15:42:00) [6]


> Почему?

а смысл какой???


KilkennyCat   (2009-01-06 15:23:00) [7]


> В рантайме делать такие вещи - зло.

Почему?
Я делаю постоянно. Зла не ощущаю.


123-ий   (2009-01-06 15:03:00) [8]

Project -> Options. Выбери главную форму. В рантайме делать такие вещи - зло.


icWasya   (2009-01-05 15:49:00) [9]


 FormInit:=TFormInit.Create(nil);
 FormInit.Show;
 FormInit.Update;

 Application.CreateForm(TMainForm, MainForm);
 MainForm.Update;

 FormInit.Free;

 Application.Run;


Сергей М.   (2009-01-05 14:26:00) [10]


> Как изменить програмно главную форму?


В VCL-приложении - никак.


Sergey13   (2009-01-05 11:20:00) [11]

> [3] MsGuns ©   (05.01.09 11:17)

Хорошо такого подсказчика иметь. 8-)

> [0] VolMyr   (05.01.09 04:07)

Не надо играться с главностью форм. Надо в файле проекта создать и показать ДРУГУЮ форму раньше главной.


MsGuns   (2009-01-05 11:17:00) [12]

Что-то подсказывает мне, что автору нужна сплэш-форма


YurikGL   (2009-01-05 07:03:00) [13]

А что, по твоему, есть главная форма?


KilkennyCat   (2009-01-05 05:49:00) [14]

Я тут же отвечу, как только ошибок станет не более одной. Это я про русский язык.


Наверх

Титульная страница Поиск, карта сайта Написать письмо