Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Alex_pac
1289 / 695 / 8
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
#1

Отловить Application Run - Delphi

21.10.2012, 12:49. Просмотров 2262. Ответов 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 (Delphi):

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

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

Application.Handle и Application.ExeName в Delphi 2010 - Delphi
Здравствуйте такая проблемма. При компиляции программы в Делфи 2010 выскакивают ошибки: Undeclared identifier 'Handle' at line 138 и...

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

Run-time кнопка - Delphi
Здравствуйте. Простая задача: создается в runtime форма, на форме создается кнопка. Как оформить эту кнопку, чтобы менялась глобальная...

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

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

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

Когда OnShow делается за 1 клик мыши
0
Одиночка
3932 / 1857 / 89
Регистрация: 16.03.2012
Сообщений: 3,869
21.10.2012, 13:06 #4
Я бы, наверное, сделал универсальный модуль, на процедуру, допустим загрузки ini-файлов, которого, ссылался из *dpr.
0
mss
2599 / 2255 / 250
Регистрация: 24.12.2010
Сообщений: 13,726
21.10.2012, 21:07 #5
Цитата Сообщение от Alex_pac Посмотреть сообщение
универсальный код который подойдет любому приложению
Цитата Сообщение от Alex_pac Посмотреть сообщение
главная форма становится
А вот у меня, к примеру, нет "главной" формы. Формы есть, но главной нет.
И чем моё приложение не "любое" ? И где твой "универсальный код" ?)
0
Alex_pac
1289 / 695 / 8
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
21.10.2012, 21:27  [ТС] #6
главная это та которая первая создается.

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

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

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

И где твой "универсальный код"
в рамках решенной задачи с ini файлами код можно считать универсальным
0
mss
2599 / 2255 / 250
Регистрация: 24.12.2010
Сообщений: 13,726
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 компоненты. - Delphi
Здравствуйте. Возникла простая задача: имеется 2 потока, в первом идет выполнение процедуры показа окошка "подождите", во втором потоке...

Создание процедуры в run-time - Delphi
хотелось бы реализовать такой вот механизм: при выборе значения первого комбобокса, программно создавался второй, при выборе второго...

Создание Panel в Run-time - Delphi
Доброго времени суток! Подскажите, что может быть не так? Создаю в Ран-тайме Панели: function CREATE1(AParent : TWinControl;...

Отловить access violation - Delphi
Приветствую Делаю небольшую программку работающую с базой данный MS access. В базу заносится дата, наименование, стоимость,...


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

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

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