Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

обработчики на динамически загружаемые 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
1-1194389113
Slim
2007-11-07 01:45
2008.02.17
Проблемы при открытии ФОРМЫ


1-1194517699
leonidus
2007-11-08 13:28
2008.02.17
Как определить версию Office установленного на машине?


2-1201186046
Knob
2008-01-24 17:47
2008.02.17
Как сделать прозрачность


15-1200502181
rts111
2008-01-16 19:49
2008.02.17
Подскажите, где найти описание формата *.doc?


15-1199946021
Некто
2008-01-10 09:20
2008.02.17
Узнаёте?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский