Текущий архив: 2009.01.25;
Скачать: CL | DM;
Вниз
Как работать с компонентом на который я нажал Найти похожие ветки
← →
ivak © (2008-12-11 21:55) [0]у меня общий обработчик на 5 компонентов Image: надо загрузить в компонент, на который кликнул юзер картинку.
procedure TForm1.ImageClick(Sender: TObject);
begin
(sender as TControl).picture.loadfromfile("mypicture.bmp");
только свойства picture у (sender as TControl) не имеется.
Вопрос: как загрузить? может есть какие-то методы или свойства?
← →
CodeMaster © (2008-12-11 21:57) [1]Делай TImage(Sender)
← →
korneley © (2008-12-11 23:19) [2]
> CodeMaster © (11.12.08 21:57) [1]
> Делай TImage(Sender)if Sender is TImage then...
А то, мало ли куда этот эвент назначить можно :)
← →
ivak © (2008-12-12 00:15) [3]а можно так:
?
if Sender is TImage.image1 then image1.picture.loadfromfile(...);
← →
ivak © (2008-12-12 00:24) [4]аа нет нельзя..
у меня на форме 5 компонентов TImage!!
как мне определить куда именно юзер нажал. на 1й, 2й, 3й, 4й или пятый?if Sender is TImage
это только класс, а мне сам компонент определить
← →
Германн © (2008-12-12 00:52) [5]Паровозик! Вот то что спасёт ОРД в данной ситуации.
P.S. Для тех кто не знаком с творчеством P.McCartney сообщаю, что "паровозик" - это tag.
← →
sniknik © (2008-12-12 00:56) [6]> if Sender is TImage это только класс,
нет, класс это TImage
> а мне сам компонент определить
не требуется, Sender это собственно сам компонент от которого событие, и есть
проверьif Sender is TImage then ShowMessage(TImage(Sender).Name);
← →
sniknik © (2008-12-12 00:57) [7]Германн © (12.12.08 00:52) [5]
а смысл?
← →
codemaster © (2008-12-12 10:35) [8]Лучше будет сделать вот так
if Sender.ClassType = Timage then
TImage(Sender).Picture ...............
← →
Anatoly Podgoretsky © (2008-12-12 11:11) [9]> codemaster (12.12.2008 10:35:08) [8]
Не стоил, что будет если Sender = nil, лучше классика
Sender is Timage или Sender = TImage
← →
ivak © (2008-12-12 21:41) [10]
> if Sender.ClassType = Timage then
этого не надо ибо обработчик сразу на Image стоит
> TImage(Sender).Picture
а вот это - то что я искал. спасибо большое.
← →
Palladin © (2008-12-12 21:54) [11]
> этого не надо ибо обработчик сразу на Image стоит
да что ты... а ведь поставить можно не только на Image
← →
ivak © (2008-12-12 22:04) [12]одно дело куда ты его поставил в своём воображении
а другое дело - то что я его поставил именно на image а значит реагировать оно будет исключительно если я кликну на image и проверка неуметна.
← →
Сергей М. © (2008-12-12 22:20) [13]
> проверка неуметна
Какого ж лешего ты тогда ее пытался реализовать в [3] ?
← →
sniknik © (2008-12-12 22:39) [14]>> TImage(Sender).Picture
> а вот это - то что я искал. спасибо большое.
плохо искал...
> проверь
> if Sender is TImage then ShowMessage(TImage(Sender).Name);
чем отличается? по принципу, а не содержанию конечно. хотя... если "упереться" в слово Picture и игнорировать смысл... повезло еще, что всего один день искал...
← →
ivak © (2008-12-12 23:21) [15]
> Сергей М. © (12.12.08 22:20) [13]
то по невминательности
← →
Германн © (2008-12-13 01:12) [16]
> sniknik © (12.12.08 00:57) [7]
>
> Германн © (12.12.08 00:52) [5]
> а смысл?
>
Смысла никакого. Но это буквальный и наиболее простой ответ на
> как мне определить куда именно юзер нажал. на 1й, 2й, 3й,
> 4й или пятый?
Тем более что сам сабж подразумевал возможность небольшого флуда. :)
Ибо с какого такого перепуга нужно было в обработчике OnClick приводить Sender к TControl? Имхо, скорее всего сей обработчик был "творчески (но не грамотно) преобразованным" чужим кодом.
← →
SCL © (2008-12-13 20:52) [17]if OpenDialog1.Execute then
(Sender as TImage).Picture.LoadFromFile(OpenDialog1.FileName);
← →
ivak © (2008-12-13 20:54) [18]TControl - это я лоханулся.))
а вот что такое tag? влияет ли его изменение на что нибудь??? потому что проще можно зделать так:
If TImage(Sender).Tag = 1 then ...
Страницы: 1 вся ветка
Текущий архив: 2009.01.25;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.02 c