Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Изменение Position & BorderStyle у формы


Автор: Mal Hack 13.11.2004, 22:46
Вопрос такой...
Есть форма. Объекты на ней создаются кодом в OnActivate..
Надо кодом изменить Position & BorderStyle формы, до показа оной... Тобишь чтобы форма уже показалась с учетом этих параметров.
Как только я пытаюсь засушуть их в OnShow, OnActivate выскакивает ошибка о невозможности изменения визуальных свойств. (Cannot change Visible on OnShow o OnHide)...
Почему она появляется мне в принципе понятно.
Вопрос в том, куда впихнуть код, чтобы этого - не было (без использования OnCreate и DFM).

Заранее спасибо.

Автор: Alex 13.11.2004, 23:13
А почему в OnCreate не можешь засунуть?

Автор: Mal Hack 13.11.2004, 23:24
Фишка преподавателя в OnCreate ничего не совать...
Аргумент (мой)...
OnCreate вызывается при Application.Run, а например форма-заставка показывется раньше...
Вот код проекта:
Код

 Application.Initialize;
 PromptForm := TPromptForm.Create(Application);
 PromptForm.Show;
 PromptForm.Update;
 while PromptForm.Timer1.Enabled do
   Application.ProcessMessages;
 Application.Title := '';
 Application.CreateForm(TMainForm, MainForm);
 PromptForm.Hide;
 PromptForm.Free;
 Application.Run;

Поэтому использование OnCreate в частности для PromptForm- невозможно smile
ИМХО. По крайней мере в OnCreate динамически созданный объект не показывался на форме (Prompt).

Автор: Alex 13.11.2004, 23:33
Application.Run;
Метод предназначен для внутреннего использования и позволяет начать выполнение приложения. Этот метод вместе с методом инициализации (Initialize) и методом создания главной формы (CreateForm) автоматически записывается в основном блоке программы при создании ее заготовки.

Тo, что ты говоришь не правда и OnCreate в частности, для PromptForm вызовется раньше, чем форма покажется.

Но если ты не хочешь все-таки писать в OnCreate, то кто мешает тебе сделать настройку между строкой "PromptForm := TPromptForm.Create(Application);" и "PromptForm.Show;"

Автор: Mal Hack 13.11.2004, 23:45
Цитата
Но если ты не хочешь все-таки писать в OnCreate, то кто мешает тебе сделать настройку между строкой "PromptForm := TPromptForm.Create(Application);" и "PromptForm.Show;"

Спасибо. Именно та и сделал (+1).
Честно, просто даже не предполагал, что в проектном файле можно так с формами оперировать...
Огромное спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)