Главная страница
    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.043 c
3-1191244296
Draught
2007-10-01 17:11
2008.02.17
Объеденить несколько строк из таблицы в отдну строку.


8-1173970224
Insert
2007-03-15 17:50
2008.02.17
Обработка потока видео!


15-1200365060
zSergey
2008-01-15 05:44
2008.02.17
Разыскивается компонент


15-1200327179
Ломброзо
2008-01-14 19:12
2008.02.17
HTML DOS Layout


6-1180530369
Чародей
2007-05-30 17:06
2008.02.17
host email





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский