Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.17;
Скачать: 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 вся ветка

Текущий архив: 2008.02.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
2-1201083610
Alexandr Malygin
2008-01-23 13:20
2008.02.17
string


1-1194198435
Slim
2007-11-04 20:47
2008.02.17
DBLookupComboboxEh1


2-1200997439
Gusev
2008-01-22 13:23
2008.02.17
Как реализовать "права пользователя" в своей программе? (БД)


2-1201080965
Urist
2008-01-23 12:36
2008.02.17
Exel


15-1200315233
asdf
2008-01-14 15:53
2008.02.17
разбор строки