![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.10.2011
Сообщений: 49
|
![]()
Есть массив из девяти Tlabel
Нужно чтоб при клике на один из лейблов записывался в переменную его номер. Только нужно чтоб событие было одно для всего массива. Не понимаю как реализовать. Сейчас у меня в программе тысячи строк кода, потому что расписано все в каждом лейбле по событию онКлик, изменено лишь несколько цифр. Хочу чтоб все было в одной процедуре.
Everybody lies.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
один метод обработчик, а в нем применяйте Sender.
уже тысячу раз было. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 | |
Пользователь
Регистрация: 26.10.2011
Сообщений: 49
|
![]() Цитата:
![]()
Everybody lies.
|
|
![]() |
![]() |
![]() |
#4 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
1. проставьте вашим лэйблам номера в свойстве Tag.
2. напишите такой обработчик OnClick и присвойте его всем лэйблам через инспектор объектов: Код:
В вашем случае важно, чтобы нумерация в тагах и число лэйблов были синхронны - размерность массива должна соответствовать числу компонентов. Предполагается, что ваш массив статический.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.10.2011
Сообщений: 49
|
![]()
В tag все записал.
Вот: Код:
[Error] Unit1.pas(190): Incompatible types: 'TLabel' and 'Integer' Лейблы на форме уже есть а массив из них создал так: Код:
Everybody lies.
|
![]() |
![]() |
![]() |
#6 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Вы делфи знаете вообще? В упор ошибки присвоения типов не видите?
Если просто таги: Код:
Код:
"ковыряю изнутри" (с)
Последний раз редактировалось 3D Hunter; 22.01.2012 в 20:18. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 26.10.2011
Сообщений: 49
|
![]()
Ну я сам учу делфи.
Вот сделал так L[TLabel(Sender).Tag].Tag:=TLabel(Sender).Tag; заработало. Но теперь объясните что делает эта строчка? ![]() Я правильно понял, при клике на любой лейбл из массива L, будет обрабатываться процедура Label1Click? а как записать номер лейбла на который кликнули в переменную?
Everybody lies.
|
![]() |
![]() |
![]() |
#8 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]()
Sender - это "неопределенный" объект. но т.к. мы работаем ТОЛЬКО с лэйблами, то нужно привести его к типу TLabel, именно так TLabel(Sender). Теперь получили переменную типа той же Label1 или как вы обращаетесь к компоненту в коде. Теперь и можно вызывать все свойства этого компонента. Чтобы записать номер лэйбла, сначала их нужно пронумеровать, что мы и сделали со свойством Tag.
"ковыряю изнутри" (с)
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 26.10.2011
Сообщений: 49
|
![]() Код:
Everybody lies.
|
![]() |
![]() |
![]() |
#10 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
![]() Код:
"ковыряю изнутри" (с)
Последний раз редактировалось 3D Hunter; 22.01.2012 в 20:38. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
событие для массива созданных элементов | areyoudead | Общие вопросы Delphi | 52 | 14.10.2014 19:25 |
Повесить общую процедуру на событие кучки компонентов | Valio | Общие вопросы Delphi | 14 | 13.10.2014 18:32 |
Формирование массива из компонентов исходного файла (Задача на Turbo Pascal) | Hedgehog92 | Помощь студентам | 0 | 23.11.2011 21:53 |
Создание массива компонентов | artemavd | Общие вопросы Delphi | 8 | 30.03.2009 15:43 |
OnClick для массива компонентов | Dj_smart | Компоненты Delphi | 5 | 30.04.2008 14:16 |