Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определить источник события


arinyshka ©   (2008-04-14 11:15:00) 

мне нужно обработать однотипное событие Click для 15 image на форме. Собственно, нужно узнать, кто из 15 был источником события и взять его tag.  Не хочется перебирать как нибудь так:

for i:=1 to 15 do
begin
   s:='Image' +inttostr(i);
  FImage := SetPayAddFrm.FindComponent(s)as TImage;
  if Assigned(FImage) then ...

Искать источник циклом мне кажется неверным... Есть другой способ?


arinyshka   (2008-04-14 12:48:00) [1]

Удалено модератором


Kolan   (2008-04-14 12:30:00) [2]

> Картинки тоже лежат в БД, в другой таблице…

DBImage?


Kolan   (2008-04-14 12:29:00) [3]

Удалено модератором
Примечание: Флудить завязываем


arinyshka   (2008-04-14 12:27:00) [4]


> А не видать обработки, может и не надо никаких фокусов?
> Может просто  (sender as TImage).действие

В смысле? Я у обретенного имага проверяю тег и хинт :). Если они меня устраивают (задаются программно в другом куске) - то одно действие, если нет - другое...
В конечном итоге по щелчку на имаге, при условии, что он не занят (хинт), я привязываю его к записи в таблице БД (тег - id картинки). Картинки тоже лежат в БД, в другой таблице...


Anatoly Podgoretsky   (2008-04-14 11:51:00) [5]

> arinyshka  (14.04.2008 11:30:05)  [5]

А не видать обработки, может и не надо никаких фокусов?
Может просто  (sender as TImage).действие


<>   (2008-04-14 11:32:00) [6]

Если картинки создавать в ручную, то вот так:


type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   procedure FormCreate(Sender: TObject);
   procedure ImageClick(Sender: TObject);
 private    { Private declarations }
 public     { Public declarations }
 end;

...

procedure TForm1.ImageClick(Sender: TObject);
begin
 Caption:=IntToStr(( Sender as TImage).tag);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.OnClick:=ImageClick;
  Image2.OnClick:=ImageClick;
  Image1.Tag:=1;
  Image2.Tag:=2;
end;


arinyshka   (2008-04-14 11:30:00) [7]

FImage := (sender as TImage);
 if Assigned(FImage) then
            ImageTag:= (FImage as TImage).Tag;

Работает :) Спасибо :) Не сердитесь на глупую ;)


Palladin   (2008-04-14 11:23:00) [8]

Sender это объект того компонента, по которому щелкнули мышкой, простым приведением типов ты получишь этот имаг... иди читай матчасть


arinyshka   (2008-04-14 11:21:00) [9]

а как проверить сендер? все равно циклом перебирать все имаги и смотреть, кто из них сендер?


Игорь Шевченко   (2008-04-14 11:19:00) [10]


> Собственно, нужно узнать, кто из 15 был источником события


Sender очевидно


Palladin   (2008-04-14 11:19:00) [11]

а Sender для кого сделан?


Наверх

Титульная страница Поиск, карта сайта Написать письмо