Application onActive

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
Есть ли возможность в ViewSource или в другом месте отловить OnActive для любой формы из проэкта. То есть при открытии окна не добавляя в неё свой OnActive отловить его показа допустим в другом модуле или вообще в ViewSource

Или есть ли возможность отловить события в Source
 
Last edited by a moderator:

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
Прочитал что можно сдлеть наследовани.
Что типа MyClass = class(TForm, MyInterface) вот только немогу понять можно ли так перекрыть onShow формы или я начал копать не в ту сторону?
 

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
а зачем тебе ето понадибился ?

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

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
Можешь еще раз что надо

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

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

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
А наследовать все формы от твой абстрактной где и будет стоять обработчика и на onShow и на onCteare или onActive
 

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
А наследовать все формы от твой абстрактной где и будет стоять обработчика и на onShow и на onCteare или onActive

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

LeshaRB

Staff member
Premium
Joined
Jun 11, 2007
Messages
319
Reaction score
451
Location
Минск
А как собираешься отлавилвать

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

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
Да у меня готовый проект и к нему нужно добавить функционал: Загрузка из файла или по сети данных для изменения размеров возможно цвета элементов управления на форме.

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

neobi1

Member
Joined
Jul 6, 2014
Messages
50
Reaction score
3
А может кто работал с локальными hook можно пример получения сообщения о создание окна?
 

_zz_

Banned
BANNED
Joined
Jan 15, 2010
Messages
4
Reaction score
0
А что мешает тебе динамически создавать обработчик событий onActive для каждой формы (сильно сомневаюсь что у всех 1205 форм у тебя уникальное имя). Дальше создать 1 процедуру которая будет менять твои формы в зависимости от назначения.

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

kouvaev

Member
Joined
Mar 23, 2009
Messages
26
Reaction score
1
Пишу DLL для изменения свойств формы. ... Форм много 1205 штук и вручную дописывать в каждую форму метод можно чокнутся. Поэтому и ищу более простой вариант. Может кто сталкивался с этим. Нашел способ:"Замена класса на формы и уже в своим классе переопередлять метод DoShow и работать". Но есть и недостаток таких классов в проекте тоже немало.

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