Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работать с компонентом на который я нажал [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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо