Показать сообщение отдельно
  #2  
Старый 06.04.2013, 15:46
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от MDM
...Как повесить свое событие на нажатие кнопки?..Нужно чтобы код процедур кнопок был в Маин юните, и именно тот который напишет пользователь для каждой кнопки свой...
Так в чём проблема, правильное решение вы сами показали : btn1.onClick:= clickbtn; Всё дело в объявлении т.е. юзер будет делать так
Код:
...
var
btn1: TMyButton;
begin
 btn1 := TMyButton.Create(Self);
 btn1.SetPos(20,20,128,32);
 btn1.Name:='Button1';
 btn1. PathEnadle:='..\mygui\textures\down.bmp';
 btn1. PathDisable:='..\mygui\textures\up.bmp';
 btn1. PathFocuse:='..\mygui\textures\focus.bmp';
 btn1.Draw(image1.Picture.Bitmap.Canvas);
 btn1.onClick:= clickbtn;
end;
Но до этого в секции private нужно обявить процедуру клика
Код:
...
 private
        procedure clickbtn(Sender: TObject);
   end;
...
т.к. TNotifyEvent прописана как procedure(Sender: TObject) of object, а of object означает что она должна быть членом какого-нибудь класса, поэтому юзеру её и надо объявить в классе формы. Ну и сам код в Маин юните
Код:
procedure TForm1.clickbtn(Sender: TObject);
begin
ShowMessage('Я нажалась!');
end; 
И всё.
Ответить с цитированием