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