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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 15:34   #1
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию Динамически создаваемые компоненты

В процессе работы на форме создаётся компонент:

LabelTemp:=TLabel.Create(Self);
LabelTemp.Parent:=Self;
LabelTemp.AutoSize:=false;
LabelTemp.Font.Size:=12;
LabelTemp.Width:=200;
LabelTemp.Height:=50;
LabelTemp.Top:=100; LabelTemp.Left:=100;
LabelTemp.Color:=RGB(250,250,250);
LabelTemp.Alignment:=taCenter;
LabelTemp.Caption:=' ';

Как сделать обработчик события для этого компонента?
Aleksandr_59 вне форума Ответить с цитированием
Старый 30.03.2012, 17:04   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Для события OnClick :
// обьявляем сначала процедуру
Код:
TForm1 = class
public
procedure OnClickProc(Sender: TObject);
...

Код:
// Пишем сам код для обработки события
procedure OnClickProc(Sender: TObject);
begin
// код
end;
//

Код:
// Когда создаете лейбл, то добавте строку
LabelTemp.OnClick:=@OnClickProc;
P.S. Могут быть неточности, т.к. без компилятора. Но вроде должно работать.
Delphi_ProGer вне форума Ответить с цитированием
Старый 30.03.2012, 17:14   #3
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию

Спасибо, примерно то же самое надыбал на просторах инета.
Теперь, если определить один обработчик событий для нескольких элементов, то как определить в обработчике, какой из элементов среагировал? Через Self.Name поидёт?
Количество создаваемых элементов заранее неизвестно, раздельные обработчики неприемлемы.
Aleksandr_59 вне форума Ответить с цитированием
Старый 30.03.2012, 17:24   #4
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Aleksandr_59 Посмотреть сообщение
Спасибо, примерно то же самое надыбал на просторах инета.
Теперь, если определить один обработчик событий для нескольких элементов, то как определить в обработчике, какой из элементов среагировал? Через Self.Name поидёт?
Количество создаваемых элементов заранее неизвестно, раздельные обработчики неприемлемы.
Можно и через Self.Name, но если вам нужно что-то менять при клике на лейбл, то нужно делать так например:

Procedure OnClickProc(sender: Tobject);
begin
(sender as TLabel).Caption:='something'; //или TLabel(Sender).Caption:='smth'; - аналогично
//так будет изменяться назва лейбела, по которому был произведен клик
end;
Delphi_ProGer вне форума Ответить с цитированием
Старый 30.03.2012, 17:27   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Можно и через Self.Name
нельзя.

только через Sender.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.03.2012, 17:28   #6
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
нельзя.

только через Sender.
Емм...а почему?

Ааа...затупил)

Потому что Self у нас будет Form1.
А Sender - уже какой-то Label.

Последний раз редактировалось Delphi_ProGer; 30.03.2012 в 17:32.
Delphi_ProGer вне форума Ответить с цитированием
Старый 30.03.2012, 17:44   #7
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию

Спасибо. Получилось через

(Sender as TLabel).Name

Тема закрыта.
Aleksandr_59 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ по паролям на динамически создаваемые диапазоны Dmitrol Microsoft Office Excel 9 03.06.2011 12:13
Переписать с сохранением порядка следования компоненты файла F1 в файл F2, а компоненты файла F2 - в файл Алексей_1 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2011 13:37
C# динамически создаваемые textbox Matsur Помощь студентам 1 21.03.2011 16:19
PopupMenu и динамически созданые компоненты mastersoftna Общие вопросы Delphi 2 11.01.2009 00:11
Avast поднимает тревогу на создаваемые в delphi программы, пишет вирус Xemulb Софт 3 27.11.2008 21:37