![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
обработчик события для множества сгенерированных мемо полей [D7, XP]
Zloi_Funtik © (2008-04-09 10:14:00)У меня в коде создается некоторое количество мемо полей, там же при создании я присваиваю им имена. А каким образом теперь для них всех сделать, чтобы они реагировали на определенные события? Спасибо.
Zloi_Funtik (2008-04-09 16:10:00) [1]Спасибо всем большое! Дело продвинулось вперёд!
Gydvin (2008-04-09 12:14:00) [2]
> Kolan © (09.04.08 11:44) [10]
> > заранее подготовить нужное колличество обработчиков…Так
> как же ты его узнаешь, если контролы генерятся динамичски?
>
Если не известно кол-во TMemo то - один обработчик с одним действием на всех (по крайне мере шаблоных). Если нужны абсолютно разные действия то - тоже один, но нужно пометить эти поля как нибуть (на имена объектов сложно расчитывать) а дальше через тот же case юзать свою часть кода. И естественно нужно знать конечное колличество создаваемых объектов. Вроде так.
зы. Все разжевывания собсно предназначены автору сабжа
Gydvin (2008-04-09 11:55:00) [3]
> Kolan © (09.04.08 11:44) [10]
> > заранее подготовить нужное колличество обработчиков…Так
> как же ты его узнаешь, если контролы генерятся динамичски?
>
> {RASkov} © (09.04.08 11:49) [11]
> > [10] Kolan © (09.04.08 11:44)for N:=0 to 10 do with
> TMemo.Create(self) do begin Parent:=Self; Left:= Top:
> = case N of 0: OnChange:=ChangeMemo0 1: OnChange:=ChangeMemo1
> 2: OnChange:=ChangeMemo2 .... end; end;Гы) Дурь)
Точно ;0)
Gydvin (2008-04-09 11:54:00) [4]
> а то с использованием Sender не очень понятно.
procedure TForm1.YourOnChangeHandler(Sender: TObject);
begin
with Sender as TMemo do TMemo(Sender).text:='bla-bla';
end;
{RASkov} (2008-04-09 11:49:00) [5]> [10] Kolan © (09.04.08 11:44)
for N:=0 to 10 do
with TMemo.Create(self) do begin
Parent:=Self;
Left:=
Top:=
case N of
0: OnChange:=ChangeMemo0
1: OnChange:=ChangeMemo1
2: OnChange:=ChangeMemo2
....
end;
end;
Гы) Дурь)
Kolan (2008-04-09 11:44:00) [6]> заранее подготовить нужное колличество обработчиков
Так как же ты его узнаешь, если контролы генерятся динамичски?
Gydvin (2008-04-09 11:43:00) [7]
> Kolan © (09.04.08 10:31) [5]
> > Либо для каждого отдельный А как же ты назначишь каждому
> свой?
заранее подготовить нужное колличество обработчиков...
:0)
Kolan (2008-04-09 11:03:00) [8]
with TMemo.Create(Self)
do begin
OnChange := YourOnChangeHandler;
Parent := Self;
Left := nach_left;
Top := nach_top;
clickmaker (2008-04-09 10:59:00) [9]OnChange := YourOnChangeHandler;
Zloi_Funtik (2008-04-09 10:55:00) [10]
> Надо там, где ты их создаешь им всем назначить один и тот
> же обработчик какого-нибуди события.
>
> А вотом в этом обработчике анализировать Sender…
А можно продемострировать куда мне что вставлять, а то с использованием Sender не очень понятно.
Вот фрагмент, где у меня создают мемо поля:
for k:=0 to E1 do begin
nach_left:=nach_left+87 ;
for i:=0 to E2 do
with TMemo.Create(Self)
do begin
Parent := Self;
Left := nach_left;
Top := nach_top;
Width:=86;
name:='Memo'+inttostr(nameM);
height:=45;
BorderStyle:=bsNone;
Color:= clNone;
nach_top:=nach_top+46;
nameM:=nameM+1;
if i=E2 then nach_top:=80;
end;
end;
Спасибо.
Kolan (2008-04-09 10:31:00) [11]> Либо для каждого отдельный
А как же ты назначишь каждому свой?
Gydvin (2008-04-09 10:29:00) [12]не успел )
Gydvin (2008-04-09 10:25:00) [13]назначить им, заранее подготовленный, обработчик событий есно. Либо для каждого отдельный либо один на всех и юзать череp sender.
зы. Лучше всего сделать массив tmemo и ни каких имен не назначать.
Kolan (2008-04-09 10:20:00) [14]Надо там, где ты их создаешь им всем назначить один и тот же обработчик какого-нибуди события.
А вотом в этом обработчике анализировать Sender
Сергей М. (2008-04-09 10:19:00) [15]
> при создании я присваиваю им имена
Можно и не присваивать, ибо они как правило нафиг не нужны.
> создается некоторое количество мемо полей
Владелец у них у всех один и тот же или разные ?