Перехват классов в Delphi |
![]() |
![]() |
Статьи |
Вам понадобился специфический компонент в Delphi, типа TButton, но который будет иметь больше свойств или методов, чем стандартная кнопка? Опытные разработчики Delphi, когда им нужен компонент TSuperBtn, применяют два подхода к этой проблеме: ищут готовые сторонние VCL решения или же создают свои собственные компоненты. Ну а если Вам не нужно, чтобы TSuperBtn находился на Палитре Компонентов и нужен только для этого приложения? Как получить TButton с большим количеством свойств и методов, но не TSuperBtn? И как расширить возможности TButton без необходимости создавать унаследованный класс с другим именем? Это можно сделать при помощи вспомогательного класса, но вспомогательный класс будет содержать только вновь добавленные свойства и методы. Большинство начинающих не знают, что они МОГУТ создавать свои собственные пользовательские элементы управления на основе существующего набора VCL, создавая, так называемый класс-перехватчик, который будет иметь то же самое имя, что и основной класс. Перехватчик классов DelphiВо-первых, два класса с одним именем можно применять в Delphi, если эти два класса находятся в разных модулях. Поэтому следующее объявление является правильным:
Приведенный выше код создает перехватчик класса для управления TButton, оригинал TButton объявлен в модуле StdCtrls библиотеки VCL. К тому же это объявление должно быть помещено в отдельный модуль. И самое главное: модуль перехватчика классов должен быть объявлен ПОСЛЕ перечисления модуля основного класса.
Пример перехватчика класса TButton = class(StdCtrls.TButton)Вот один перехватчик класса для TButton. Добавляем новое свойство Text, которое будет хранить строку, а также переопределим процедуру Click, которая будет менять надпись на кнопке, а также выполнять свою основную деятельность.
Теперь поместите кнопку на форму и добавьте модуль Unit2 в конце перечисления модулей в разделе uses, главное, чтобы это было после StdCtrls. В форме для примера у меня такой код:
При выполнении программы и нажатии на кнопку, кнопка поменяет свою надпись, а форма – заголовок. Вариантов использования перехватчика классов может быть много, в зависимости от Ваших потребностей и возможностей. Ну, пожалуй, это все, основные моменты рассмотрены. Если кто и не знал о перехвате классов, то начало положено. Также заметьте, что это может быть применено не только к компонентам VCL, но и к любым классам Delphi. |
Комментарии
have any suggestions on how to get listed in Yahoo News?
I've been trying for a while but I never seem to get there!
Appreciate it
RSS лента комментариев этой записи