| 
| 
 | Вопрос # 1 570/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!У меня такая проблема: во время работы программы я программно создаю кнопку, после чего мне нужно приделать к ней обработчик событий по нажатию кнопки. Например, чтобы вылетало сообщение.
 Приложение:Переключить в обычный режим procedure TForm1.FormClick(Sender: TObject);var  btn: Tbutton;begin btn:=TButton.Create(self); btn.Width:=75; btn.Height:=25; btn.Parent:=Form1; btn.Name:='Button'+inttostr(i);  end;
|  |   Вопрос задал: 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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |