Здравствуйте.
Для edit1 написана процедура OnСhange , как сделать с помощью sender as ,чтобы эта процедура выполнялась для всех других edit?
Модератор: Модераторы
Azaza писал(а):Для edit1 написана процедура OnСhange
procedure MyChange(ed: TEdit);
var
i: integer;
s: string;
begin
s := ed.Text;
for i := 1 to Length(s) do
if s[i] = '-' then s[i] := '+';
ed.Text := s;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
MyChange(Sender as TEdit);
end;
Azaza писал(а):чтобы эта процедура выполнялась для всех других edit?
stanilar писал(а):Может написать класс-хелпер для TEdit?
resident писал(а):Это как?
unit MyEditUnit;
uses Cntrls;
type
TMyEdit = class(TEdit)
protected
procedure OnChange(Sender: TObject); override;
// Обычно значимые методы в вкл объявлены как виртуал
...
unit MainFormUnit;
uses Cntrls, Forms, MyEditUnit;
type
TEdit = class (MyEditUnit.TMyEdit);
TMainForm = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
...
TMyEdit = class(TEdit)
protected
procedure Change; override;
end;
Жаль, что так и не удалось услышать начальника транспортного цеха
Azaza писал(а):Я думал , что есть метод, с помощью которого можно даже не выбирать в инспекторе объектов процедуру для других edit.
resident писал(а):Метод stanilar
zub писал(а):зы.
Удивлен что такой хак работает. кто объяснит на каком этапе происходит подмена классов?
type
TEdit = class (MyEditUnit.TMyEdit);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 253