Засичане класове в Делфи
Ще ви е необходим специфичен компонент в Делфи, сложи вида TButton. но това ще имате повече свойства и методи, различни от стандартния бутон? Опитните Delphi разработчиците, когато те се нуждаят от TSuperBtn компонент. прилагат два подхода към този проблем: търси готови за парти VCL решения, или да създадете свои собствени компоненти.
Е, ако не е нужно да TSuperBtn бях на палитрата компонент, и само за това приложение? Как да стигнем TButton с голям брой свойства и методи, но не TSuperBtn. И TButton разширите възможностите без да е необходимо да се създаде наследен клас с друго име?
Това може да стане с помощта на допълнителен клас, но клас помощник ще съдържа само добавените нови свойства и методи.
Повечето начинаещи не знаят, че те могат да създават свои собствени потребителски контрол въз основа на съществуващ набор от VCL, създаване на така наречения клас Interceptor, което ще има същото име като основен клас.
Interceptor класове Delphi
В горния код създава слушател за контрол клас TButton. TButton оригинален обявен в модула StdCtrls VCL библиотека.
И най-важното, класовете на прехващачи модул трябва да бъдат обявени след прехвърлянето на модула на базовия клас.
Пример прихващач клас TButton = клас (StdCtrls.TButton)
Ето един бърз изтребител клас TButton.
Добавяне на нов текст собственост. който ще се съхранява на низа, както и предефинира процес кликване. което ще се промени етикет на бутона, както и да извършва основната си дейност.
Сега поставете бутон на формата и добавете Unit2 модул в края на модулите, посочени в клаузата за употреба. Най-важното е, че това е след StdCtrls.
Под формата например имам следния код:
Когато стартирате програмата и да натиснете бутона, бутонът ще се промени етикета й, и форма - заглавието.
Ползването на прехващачи класове могат да бъдат много, в зависимост от вашите нужди и възможности.
Е, може би това е всичко, най-важни въпроси. Ако някой не е знаел за прихващането на класове, а след това да започне.
Също така имайте предвид, че тя може да се прилага не само по отношение на компонентите VCL, но и за всички класове Delphi.