Вниз
Скачать: 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.012 c
6-1180615621
Alex_C
2007-05-31 16:47
2008.02.17
Получить данные через https протокол


2-1201241651
cr@nk
2008-01-25 09:14
2008.02.17
Поиск делителей числа


8-1173686228
feodul
2007-03-12 10:57
2008.02.17
Где найти учебники по работе с расровыми изображениями?


8-1174153247
San ciz
2007-03-17 20:40
2008.02.17
сохранение файла


2-1201378604
AntonUSAnoV
2008-01-26 23:16
2008.02.17
опять про полосу прокрутки...




   Наверх