ЛЕКЦИЯ №3

1. ПРЕОБРАЗОВАНИЕ ТИПОВ. ДОСТУП К ОБЪЕКТАМ И КОМПОНЕНТАМ ЧЕРЕЗ УКАЗАТЕЛИ


При написании обработчиков событий для компонент практически всегда в процедуру передается указатель «Sender» типа «TObject». Данный указатель как правило указывает (ссылается) на тот визуальный компонент, который вызывает данную процедуру. Параметр «Sender» является некоторым усовершенствованным аналогом ссылочной переменной языка Pascal.


Использование параметра «Sender» позволяет делать процедуры – обработчики событий универсальными, позволяющими работать не с одним конкретным компонентом, а с несколькими, имеющими одинаковый тип. Например, можно написать процедуру перемещения кнопки по экрану и привязать эту процедуру ко всем кнопкам формы, после чего все кнопки также смогут перемещаться по экрану. Для этого в процедуре-обработчике необходимо пользоваться только «Sender» конструкциями, а не явными указаниями на компоненты.


Рассмотрим способы доступа к компонентам через указатель «Sender» и методы преобразования типов:


procedure TForm1.Button2Click(Sender: TObject);

var s: TObject; ss: string;

{ Пример опознания типа объекта по указателю "Sender" }

begin

s:=Sender; { или так: s:=button2; }

ss:='tbutton'; { запишем имя типа кнопки в строк. переменную }

if s.ClassNameIs(ss) then showmessage('Кнопка!');

if (s is tbutton) then showmessage('Это кнопка типа "TButton" !')

else showmessage('Это "'+s.ClassName+'" !');

{ Можно так }

try (s as tbutton).caption:='Ok!!!'; except end;

{ Или так }

tbutton(s).caption:='Ok!!!';

{ Или вот-так, если свойство не "Protected" и не "Read-only" }

tcontrol(s).left:=300;

end;


Загрузка...