![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
обработчики на динамически загружаемые image'ы
Тоник © (2008-01-24 18:23:00)мастера помогите решить вопрос!
на форме есть 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 19:36:00) [1]спасибо то что надо :)
Семеныч (2008-01-24 19:24:00) [2]> Тоник (24.01.08 18:43) [5]
Что написано в обработчике, то и выделяется. Написано Image1 - значит и операция будет произведена с Image1.
Используйте Sender - это и будет тот Image, который вызвал обработчик:
with TImageEx(Sender) do
begin
Visible := True;
...
end;
Тоник (2008-01-24 18:43:00) [3]делаю
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
clickmaker (2008-01-24 18:41:00) [4]
> [2] Тоник (24.01.08 18:39)
для всех будут
только под именем Sender будет конкретный
Юрий Зотов (2008-01-24 18:40:00) [5]У всех и будут.
Тоник (2008-01-24 18:39:00) [6]эт то да, но ведь будут срабатывать обработчики для imageex1, а должно у вновь созданного,да и вообще у всех
Семеныч (2008-01-24 18:29:00) [7]ImageXXX := TImageEx.Create(Self);
ImageXXX.Parent := ScrollBox1;
ImageXXX.SetBounds(...);
ImageXXX.OnMouseDown := ImageEx1MouseDown;
ImageXXX.OnMouseEnter := ImageEx1MouseEnter;
ImageXXX.OnMouseUp := ImageEx1MouseUp;