Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Alex_pac
1291 / 697 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
#1

Отловить Application Run

21.10.2012, 12:49. Просмотров 2350. Ответов 6
Метки нет (Все метки)

нужно отловить событие OnCreate на самой последней форме приложения

Другими словами Событие когда "все формы созданы"
Нужен универсальный код который подойдет любому приложению

Также хотелось бы отловить событие Создания главной формы
И также в универсальном виде, не зависимо от приложения.

Другими словами нужно нечто похожее на TApplicationEvents c данными событиями

Добавлено через 33 минуты
придумал довольно простое решение

1) OnCreate у главной формы оставляем как и было
2) Application.Run можно отловить через показ главной формы

Delphi
1
2
3
4
5
6
7
8
procedure TForm1.FormShow(Sender: TObject);
begin
  if Tag=0 then begin
    tag:=1; // блокируем повторный вызов
    Unit2.Form2.Color:=clRed; // формы уже созданы => Application.Run отработал
    Unit3.Form3.Color:=clRed; 
  end;
end;
таким образом главная форма становится действительно самым главным модулем приложения и логика загрузки других форм не будет разбросана по ним, а будет сосредоточена в одном модуле главной формы.

Особо актуально для ini Файлов, когда надо что поменять на формах при загрузке приложения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 12:49
Ответы с готовыми решениями:

Есть ли жизнь без Application.Run?
Обычное виндовое оконное приложение. Через неделю после очередной доработки,...

Есть ли разница между VCL Forms Application и Application?
Мне нужно открыть VCL Forms Application. Для этого нужно выполнить команду...

Application.Handle и Application.ExeName в Delphi 2010
Здравствуйте такая проблемма. При компиляции программы в Делфи 2010 выскакивают...

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

Run-time кнопка
Здравствуйте. Простая задача: создается в runtime форма, на форме создается...

6
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
21.10.2012, 12:57 #2
А в *dpr файл перед Application.Run вставить код - не подходит?
0
Alex_pac
1291 / 697 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
21.10.2012, 13:00  [ТС] #3
Цитата Сообщение от Одиночка Посмотреть сообщение
А в *dpr файл перед Application.Run вставить код - не подходит?
ну тут уже вопрос в том, кому как нравится.

в drp модуле надо подключать дополнительные модули типа Windows, Graphics и тд и тп если хотим там писать код не ограничиваясь рамками самих модулей форм. То есть лишние телодвижения.

Когда OnShow делается за 1 клик мыши
0
Одиночка
3933 / 1858 / 337
Регистрация: 16.03.2012
Сообщений: 3,869
21.10.2012, 13:06 #4
Я бы, наверное, сделал универсальный модуль, на процедуру, допустим загрузки ini-файлов, которого, ссылался из *dpr.
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
21.10.2012, 21:07 #5
Цитата Сообщение от Alex_pac Посмотреть сообщение
универсальный код который подойдет любому приложению
Цитата Сообщение от Alex_pac Посмотреть сообщение
главная форма становится
А вот у меня, к примеру, нет "главной" формы. Формы есть, но главной нет.
И чем моё приложение не "любое" ? И где твой "универсальный код" ?)
0
Alex_pac
1291 / 697 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
21.10.2012, 21:27  [ТС] #6
главная это та которая первая создается.

я просто хотел решить проблему того код открытия ini файла находился в OnCrete последней формы
а код сохранения ini файла в OnCanClose главной формы

а надо чтобы код открытие и сохранения находился в одном месте, то есть в главной форме.

Как вариант для этого можно использовать "одноразовый onShow"

И где твой "универсальный код"
в рамках решенной задачи с ini файлами код можно считать универсальным
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
21.10.2012, 23:29 #7
Цитата Сообщение от Alex_pac Посмотреть сообщение
главная это та которая первая создается
Не факт.

FirstForm := TSomeForm.Create(..); // вот первая форма, но она не будет главной
Application.CreateForm(TMainForm, MainFom); // а вот это главная форма, но она не первая в порядке создания
0
21.10.2012, 23:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 23:29

Run-time компоненты.
Здравствуйте. Возникла простая задача: имеется 2 потока, в первом идет...

Не активна кнопка Run
Добрый день. Дали мне курсовую, довольно таки простую, но немного нудную. В...

Use Step or Run to continue
Задача заключалась в том, что нужно создать программу, которая находит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru