Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.04.2013, 13:40
MDM MDM вне форума
Прохожий
 
Регистрация: 06.04.2013
Сообщения: 3
Версия Delphi: D7
Репутация: 10
По умолчанию Cвое событие на нажатие кнопки

Добрый день!
Помогите с GUI. Как повесить свое событие на нажатие кнопки?
Есть отдельный модуль, в котором я определил элементарный класс кнопки

Код:
TBaseObject = class (TObject)
    private
      X,Y,Width,Height: integer;

      Down, Focus, Visible: boolean;
    protected
      fMouseState: TMouseState;
      fOnMouseClick: TOnMouseClick;
      fOnMouseMove: TOnMouseMove;
    public
      Name : string;
      PathEnadle,
      PathDisable,
      PathFocuse: string;
      Constructor Create(AOwner: TComponent); //override;
      property OnMouseClick: TOnMouseClick read fOnMouseClick write fOnMouseClick;
      property OnMouseMove: TOnMouseMove read fOnMouseMove write fOnMouseMove;
      property OnClick: TNotifyEvent read FOnClick write FOnClick;

      Procedure SetMouseState(aMouseX, aMouseY: Single; aIsButtonDown: Boolean);
      procedure SetMouseMove(aMouseX, aMouseY: Single);
      procedure Draw(Canvas: TCanvas);
  end;

  TMyButton = class (TBaseObject)
    private

    public
      procedure Click;
      procedure SetPos(aX,aY, aW,aH:integer); virtual;
  end;

Полностью код расписывать не буду, для того чтобы понять суть вопроса, этого должно хватить.

В основном модуле приложения я создаю переменную кнопки, задаю ей необходимые параметры и т.п. По таймеру я ее отрисовываю.
Мне нужно определить событие нажатия/отжатия и др. Так как это сделано в делфи , на форму ставишь кнопку и в ее событие пишешь код,
procedure TForm1.Button1Click(Sender: TObject);
так вот, мне нужно сделать по аналогии, но без визуализации компонента.
Я не хочу писать код для еще не созданных кнопок в отдельном модуле, где идут определения классов.

Основной модуль примерно такой:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled:=true;
  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;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then MousLeftDown:=true;
  btn1.SetMouseState(x, y, MousLeftDown);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  pos:TPoint;
begin
  btn1.Draw(Image1.Canvas);
end;


Нужно чтобы код процедур кнопок был в Маин юните, и именно тот который напишет пользователь для каждой кнопки свой. Копался в модулях StdCtrls, Controls, в Интернет ресурсах, но то что нужно не нашел или нашел, но знаний понять и переделать не хватает. Сначала подумал, что как-то можно присвоить событию нажатия свою процедуру, примерно так //btn1.onClick:=clickbtn;
Но не тут то было, я что-то совсем запутался, помогите разобраться, желательно с коротким примером, как это реализовать.
Спасибо!
Ответить с цитированием
 


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter