Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2011, 22:18   #1
AlexMe
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 12
По умолчанию Узнать название картинки при нажатии на нее.

Как узнать название картинки при нажатии на нее?
Код:
procedure TForm1.imgClick(Sender: TObject);
begin
ind:=img.Name;
end;
С помощью этого кода я узнаю только название последней из созданных картинок, а не той на которую нажали.
AlexMe вне форума Ответить с цитированием
Старый 14.07.2011, 22:19   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

ну как-то так:
Код:
ind:=(Sender as TImage).Name;
Человек_Борща вне форума Ответить с цитированием
Старый 14.07.2011, 22:20   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
procedure TForm1.imgClick(Sender: TObject);
begin
ind:=Timage(Sender).Name;
end;
ZuBy вне форума Ответить с цитированием
Старый 14.07.2011, 22:21   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
ind:=Timage(Sender).Name;
лучше через as, так как он проверяет типы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 22:22   #5
AlexMe
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 12
По умолчанию

спасибо большое!
AlexMe вне форума Ответить с цитированием
Старый 14.07.2011, 22:25   #6
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
лучше через as, так как он проверяет типы.
тогда уж так
Код:
if (sender is TImage) then
 ind := (sender as TImage).Name;
т.к. (sender as timage) это тоже самое что и timage(sender) проверки на тип нету!
ZuBy вне форума Ответить с цитированием
Старый 14.07.2011, 23:09   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
это тоже самое что и timage(sender) проверки на тип нету!
для классов есть, и она выбьет исключение если классы несовместимы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.07.2011, 23:21   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
для классов есть, и она выбьет исключение если классы несовместимы.
Хотелось бы уточнить
Пусть sender не совместим с TImage, но имеет свойство Tag, тогда:

(sender as TImage).Tag:=1 - вывалится в исключение
TImage(sender).Tag:=1 - возможно, а может даже точно выполнится без ошибки

Я правильно понял


Добавил

Проверил - так и получается - второй вариант нормально отработал

Цитата:
Информативно и познавательно
Как раз там о разнице между (sender as TImage) и TImage(sender) ничего нет.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.07.2011 в 00:40.
Аватар вне форума Ответить с цитированием
Старый 14.07.2011, 23:46   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Информативно и познавательно: http://parsers.info/2009/12/operatory-as-i-is-delphi/

Последний раз редактировалось Человек_Борща; 14.07.2011 в 23:49.
Человек_Борща вне форума Ответить с цитированием
Старый 15.07.2011, 05:18   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Проверил - так и получается - второй вариант нормально отработал
только в том случае если они одинакого расположены в памяти(смещение от начала объекта)
если вы TButton привели к TImage, то именно так и выходит, так как Tag наследован от TControl, который у них общий.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод картинки при нажатии на кнопку Надя11111 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 30.06.2011 21:24
Изменить название ToggleButton при нажатии. agregator Microsoft Office Excel 6 06.04.2011 12:13
Скрытие кнопки при нажатии на нее MyLastHit Общие вопросы Delphi 10 03.08.2010 22:23
Не работает клава а при нажатии на нее перестает работать мышь!! Дима я Компьютерное железо 10 02.03.2010 17:10
Увеличение картинки при наведении на нее курсор messi013 Общие вопросы Delphi 5 10.01.2010 17:22