Самоучитель по Delphi 7 для профессионалов


События - часть 4


Более сложный случай, когда внутри такого метода нужно разобраться, кто собственно его вызвал. Если потенциальные кандидаты имеют разный объектный тип (как в предыдущем абзаце — кнопка и пункт меню), то именно объектный тип можно применить в качестве критерия:

If Sender is TMenuItem then ShowMessage('Выбран пункт меню');

Если же все объекты, разделяющие между собой один обработчик события, относятся к одному классу, то приходится прибегать к дополнительным ухищрениям. Типовой прием — использовать свойство Tag, которое имеется у всех компонентов, и, вполне вероятно, именно для этого и задумывалось:

const colors : array[0..7]

of 

TColor = clWhite,clRed,clBlue,clYellow,clAqua,clGreen, clMaroon,clBlack);

procedure TForml.CheckBoxClick(Sender: TObject); 

begin

with TCheckBox(Sender) do

 if Checked

then Color := Colors[Tag] 

else Color := clBtnFace;

  end;

Пусть в форме имеется несколько переключателей. Для того чтобы при нажатии каждый из них окрашивался в свой цвет, нужно в Инспекторе объектов присвоить свойству Tag значения от 0 до 7 и для каждого связать событие onclick с методом CheckBoxClick. Этот единственный метод справится с задачей для всех переключателей.

 




Начало  Назад  Вперед