Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 570

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
У меня такая проблема: во время работы программы я программно создаю кнопку, после чего мне нужно приделать к ней обработчик событий по нажатию кнопки. Например, чтобы вылетало сообщение.

Приложение:
  1. procedure TForm1.FormClick(Sender: TObject);
  2. var
  3. btn: Tbutton;
  4. begin
  5. btn:=TButton.Create(self);
  6. btn.Width:=75;
  7. btn.Height:=25;
  8. btn.Parent:=Form1;
  9. btn.Name:='Button'+inttostr(i);
  10.  
  11.  
  12. end;


informmm Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: informmm (статус: Посетитель)
Вопрос отправлен: 9 мая 2008, 18:41
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Dron

Здравствуйте, informmm!
Для начала создаём наш обработчик - процедуру с таким же числом параметров и с такими же типами этих параметров. Эту процедуру "прикрепляем" к форме, т.е. делаем её методом формы:

type
  TForm1 = class(TForm)
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
    procedure MyBtnClick(Sender: TObject); //добавлено
  public
    { Public declarations }
  end;
{...}
//В разделе реализации - implementation
procedure TForm1.MyBtnClick(Sender: TObject);
begin
  ShowMessage('Привет!');
end;
А дальше просто присваиваем нашу процедуру событию кнопки:
btn.OnClick:=MyBtnClick;
Желаю удачи!

Ответ отправил: Dron (статус: Студент)
Время отправки: 9 мая 2008, 19:24

Ответ #2. Отвечает эксперт: ANBsoft

Здравствуйте, informmm!
Предыдущий эксперт все описал.
Добавлю только что если этот обработчик должен обслуживать несколько кнопок,
то для определения какая из кнопок вызвала обработчик используется Sender.
Например:
if Sender=Button1 then ShowMessage('Нажата кнопка 1');
if Sender=Button2 then ShowMessage('Нажата кнопка 2');
if Sender=Button3 then ShowMessage('Нажата кнопка 3');
Или что-то вроде этого.

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 10 мая 2008, 11:16


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 12 декабря 2017, 17:02
Выполнено за 0.03 сек.
Рейтинг@Mail.ru