Application onActive

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
Есть ли возможность в ViewSource или в другом месте отловить OnActive для любой формы из проэкта. То есть при открытии окна не добавляя в неё свой OnActive отловить его показа допустим в другом модуле или вообще в ViewSource

Или есть ли возможность отловить события в Source
 
Последнее редактирование модератором:

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
Прочитал что можно сдлеть наследовани.
Что типа MyClass = class(TForm, MyInterface) вот только немогу понять можно ли так перекрыть onShow формы или я начал копать не в ту сторону?
 

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
а зачем тебе ето понадибился ?

Пишу DLL для изменения свойств формы. Все работает замечательно если поместить его в OnShow формы, но форм много 1205 штук и вручную дописывать в каждую форму метод можно чокнутся. Поэтому и ищу более простой вариант. Может кто сталкивался с этим. Нашел способ:"Замена класса на формы и уже в своим классе переопередлять метод DoShow и работать". Но есть и недостаток таких классов в проекте тоже немало.
 

LeshaRB

Свой
Регистрация
11 Июн 2007
Сообщения
319
Реакции
467
Credits
25
Можешь еще раз что надо
 

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
Можешь еще раз что надо

Суть в том чтобы при создании любой формы из проекта вызывался метод в в котором я мог бы поменять форму. Методы "OnShow" "ОnCreate" использовать не могу так как модулей много и прописывать это вручную проблематично.

По поводу перекрытия класса TForm сделал работает но одно НО
не хотелось бы запихивать в каждый модуль свой модуль в котором происходит перекрытие. Смотрел по поводу "Unit Alias" где можно простой "Forms" заменить на мой "MyForms" тоже все хорошо до одного момента при замене "Vcl.Froms" на "MyForms" получается у компилятора "Out of Memory"
;(
 

LeshaRB

Свой
Регистрация
11 Июн 2007
Сообщения
319
Реакции
467
Credits
25
А наследовать все формы от твой абстрактной где и будет стоять обработчика и на onShow и на onCteare или onActive
 

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
А наследовать все формы от твой абстрактной где и будет стоять обработчика и на onShow и на onCteare или onActive

В таком случае нужно добавлять в USES ссылку на свой модуль и важно что бы она была в конце всех остальных. Я тоже к такому варианту пришел и мне она не особо нравится потому что нужно будет руками вносить коррективы во все модули проекта.
 

LeshaRB

Свой
Регистрация
11 Июн 2007
Сообщения
319
Реакции
467
Credits
25
А как собираешься отлавилвать

у тебя готовый проект или что
 

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
Да у меня готовый проект и к нему нужно добавить функционал: Загрузка из файла или по сети данных для изменения размеров возможно цвета элементов управления на форме.

Это все работает только если я вручную добавляю свой метод в OnShow или OnCreate.
А хотелось бы не добавлять вручную или как можно меньше действий при этом совершить
 

neobi1

Местный
Регистрация
6 Июл 2014
Сообщения
49
Реакции
3
Credits
82
А может кто работал с локальными hook можно пример получения сообщения о создание окна?
 

_zz_

Banned
BANNED
Регистрация
15 Янв 2010
Сообщения
4
Реакции
0
Credits
0
А что мешает тебе динамически создавать обработчик событий onActive для каждой формы (сильно сомневаюсь что у всех 1205 форм у тебя уникальное имя). Дальше создать 1 процедуру которая будет менять твои формы в зависимости от назначения.

Добавлено через 1 минуту
И не обязательно динамически создавать именно в модуле той формы которую хочешь менять, скорее всего ты используешь некий модуль который прописан в uses остальных формах.
 
Последнее редактирование модератором:

kouvaev

Местный
Регистрация
23 Мар 2009
Сообщения
28
Реакции
4
Credits
55
Пишу DLL для изменения свойств формы. ... Форм много 1205 штук и вручную дописывать в каждую форму метод можно чокнутся. Поэтому и ищу более простой вариант. Может кто сталкивался с этим. Нашел способ:"Замена класса на формы и уже в своим классе переопередлять метод DoShow и работать". Но есть и недостаток таких классов в проекте тоже немало.

Сделать свою базовую форму, туда поместить обработку, а все 1205 форм просто должны наследовать эту базовую