Вниз
Скачать: CL | DM;

обработчики на динамически загружаемые image ы   Найти похожие ветки 

← →
Тоник   (2008-01-24 18:23) [0]

мастера помогите решить вопрос!
на форме есть scrollbox, в него загружаются и распологаются image(их может быть много).
для того чтобы выделять иконку я делал так(Image1 - рамка при наведении, image2 - рамка при нажатии):
procedure TForm1.ImageEx1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 Image1.Visible := false;
 Image2.Visible := True;
 image2.Left := ImageEx1.Left-4;
 Image2.Top := ImageEx1.Top - 4;
end;

procedure TForm1.ImageEx1MouseEnter(Sender: TObject);
begin
 Image2.Visible := false;
 Image1.Visible := True;
 image1.Left := ImageEx1.Left-4;
 Image1.Top := ImageEx1.Top - 4;
end;

procedure TForm1.ImageEx1MouseLeave(Sender: TObject);
begin
 Image2.Visible := false;
 Image1.Visible := false;

end;

procedure TForm1.ImageEx1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 Image1.Visible := true;
 Image2.Visible := false;
 image1.Left := ImageEx1.Left-4;
 Image1.Top := ImageEx1.Top - 4;
end;

криво но работает как надо, так вот мне надо сделать так чтобы эти обработчики распространились на все image"ы которые находятся в scrollbox"e
как это сделать?


← →
Семеныч   (2008-01-24 18:29) [1]

ImageXXX := TImageEx.Create(Self);
ImageXXX.Parent := ScrollBox1;
ImageXXX.SetBounds(...);
ImageXXX.OnMouseDown := ImageEx1MouseDown;
ImageXXX.OnMouseEnter := ImageEx1MouseEnter;
ImageXXX.OnMouseUp := ImageEx1MouseUp;


← →
Тоник   (2008-01-24 18:39) [2]

эт то да, но ведь будут срабатывать обработчики для imageex1, а должно у вновь созданного,да и вообще у всех


← →
Юрий Зотов ©   (2008-01-24 18:40) [3]

У всех и будут.


← →
clickmaker ©   (2008-01-24 18:41) [4]


> [2] Тоник   (24.01.08 18:39)

для всех будут
только под именем Sender будет конкретный


← →
Тоник   (2008-01-24 18:43) [5]

делаю
var
 new_image:TImageEx;
begin
new_image := TImageEx.Create(Self);
new_image.Parent := ScrollBox1;
new_image.Picture.LoadFromFile("icon.png");
new_image.Left := 10;
new_image.Top := 100;
new_image.OnMouseDown := ImageEx1MouseDown;
new_image.OnMouseEnter := ImageEx1MouseEnter;
new_image.OnMouseUp := ImageEx1MouseUp;

при наведении срабатывает и выделяется imageex1 а не new_image


← →
Семеныч   (2008-01-24 19:24) [6]

> Тоник   (24.01.08 18:43) [5]

Что написано в обработчике, то и выделяется. Написано Image1 - значит и операция будет произведена с Image1.

Используйте Sender - это и будет тот Image, который вызвал обработчик:

with TImageEx(Sender) do
begin
 Visible := True;
 ...
end;


← →
Тоник   (2008-01-24 19:36) [7]

спасибо то что надо :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
15-1200149061
TUser
2008-01-12 17:44
2008.02.17
Turbo Delphi + Win 2003


8-1173470589
Ricks
2007-03-09 23:03
2008.02.17
Количество уникальных цветов в изображении


2-1201086730
Guriev
2008-01-23 14:12
2008.02.17
Как расчитать количество рабочих дней между двумя датами?


2-1201455070
Бэтман
2008-01-27 20:31
2008.02.17
ComboBox


15-1200227591
Lip
2008-01-13 15:33
2008.02.17
Как проверить введенное число в С




   Наверх