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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.02.2017, 00:01   #1
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию [РЕШЕНО] Как можно нескольким компонентам назначить ОДИН обработчик событий?

Есть несколько кнопок. Можно ли написать для всех один обработчик, чтобы OnClick в Edit записывался Caption этой кнопки ? Простой метод:
Код:
  ButMas : array[1..6] of TButton ;
............
implementation

{$R *.dfm}

procedure TForm1.FormCreate (Sender: TObject);

var
  Index: Integer;

begin
  for Index:= 1 to 6 do
    begin
      ButMas[Index]:= TButton.Create(Self);
      ButMas[Index].Parent:= Self;
      ButMas[Index].Top:= 12 + 40 * Index;
   и.т.д.
А без массива кнопок, для просто созданных перетаскиванием на форму - никак ?

Последний раз редактировалось Вадим Мошев; 16.02.2017 в 05:29.
digitalis вне форума
Старый 15.02.2017, 00:17   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Да, можно.

1. Киньте на форму столкьо кнопок, сколько вам надо.
2. Выделите их мышкой
3. В инспекторе объектов в разделе найдите нужное событие (onClick, например)
4. Сделайте по нему двойной клик, как будто пишете событие для одного элемента.
5. У вас появится один обработчик, но работать он будет для всех элементов.
6. Чтобы понять, на какую кнопку нажали, надо использовать формальный параметр sender обработчика событий. Для этого в обработчкие просто напишите такой код:

Код:
showMessage( 'Вы нажали кнопку ' +  (sender as TButton).caption );
Вадим Мошев вне форума
Старый 15.02.2017, 00:19   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  if Sender is TButton then Edit1.Text:=TButton(Sender).Caption;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 15.02.2017, 00:22   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Написал пример
1.rar
Вадим Мошев вне форума
Старый 15.02.2017, 20:56   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,545
По умолчанию

Спасибо всем, понял. Буду пробовать. Темку можно прикрыть.
digitalis вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать что бы в Edit был прозрачный текст который при введение в Edit все исчез alman12 Общие вопросы Delphi 22 09.06.2014 22:21
Пустой Edit. Парсер формулы из Edit Silverstone Общие вопросы Delphi 3 16.12.2012 03:07
n.caption romanzi Общие вопросы Delphi 3 19.08.2011 11:50
Копирование строки из Edit в другой Edit. Ibanez Wizard Win Api 3 29.03.2011 02:46
Изменить Caption Joystik Общие вопросы Delphi 10 07.05.2010 10:15