Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как программно задать процедуру на событие? [D3, Win2k]


ELKa ©   (2002-12-05 11:59:00) 

Мастера, подскажите, как программно(!) задать процедуру, которая будет вызываться на определенное событие? Объясню проще: в закладке Events в Object Inspector любое событие выбираешь и справа выбираешь какую надо тебе процедуру, а как это же самое сделать программно?

Т.е. что-то типа:
Control.OnMouseClick:=Имя_процедуры (но не совсем так, потому что Делфи такую запись не хавает)


Separator   (2002-12-05 12:21:00) [1]


type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure ControlClick(Sender: TObject); //Это будет твой метод
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ControlClick(Sender: TObject);
begin
// Что будешь делать в методе
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MyControl:= TMyContol.Create(self);
MyControl.Click:= Form1.ControlClick
end;


LongIsland   (2002-12-05 12:19:00) [2]


> ELKa (05.12.02 12:17)
> Все дело в том, что у предка моего компонента НЕТ такого
> события, которое мне надо определить

А может тогда это событие сначала определить?:-)


FreeLancer   (2002-12-05 12:19:00) [3]

Ну вот и разобрались. А то: "Не РАБОТАЕТ" :-)


Кулюкин Олег   (2002-12-05 12:18:00) [4]

2 ELKa (05.12.02 12:13)
> Кулюкин Олег , адресок подскажете?
http://www.delphikingdom.com/
Если не путаю, раздел Hello, World!


ELKa   (2002-12-05 12:17:00) [5]

Все дело в том, что у предка моего компонента НЕТ такого события, которое мне надо определить


LongIsland   (2002-12-05 12:15:00) [6]


> ELKa (05.12.02 12:08)
> FreeLancer - так не работает, я же писала уже.

Что значит не работает?

procedure TForm1.FormCreate(Sender: TObject);
begin
btn:=TButton.Create(Form1);
btn.Parent:=Form1;
btn.Left:=0;
btn.Top:=0;
btn.OnClick:=Button1Click;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Grid.Cells[0,0]:="000000";
end;


FreeLancer   (2002-12-05 12:14:00) [7]


> ELKa (05.12.02 12:08)
> FreeLancer - так не работает, я же писала уже.

Писала или не писала... Какая разница. Если ЭТО не работает, значит проблема в коде. Приводи свои выкладки:
- объявление процедуры
- сама процедура
- назначение ее Event"у Control"а


ELKa   (2002-12-05 12:13:00) [8]

Кулюкин Олег , адресок подскажете?


Бурундук   (2002-12-05 12:13:00) [9]

procedure TForm1.MouseClick(Sender: TObject);
{или TAnyOtherObject.MouseClick(Sender: TObject);}
.....
Control.OnMouseClick := Form1.MouseClick;
// или просто := MouseClick внутри методов Form1


ELKa   (2002-12-05 12:08:00) [10]

FreeLancer - так не работает, я же писала уже.


Кулюкин Олег   (2002-12-05 12:07:00) [11]

В Королевстве Дельфи была статья "Жизнь и смерть в режиме RunTime".


FreeLancer   (2002-12-05 12:06:00) [12]


procedure MouseClick(Sender: TObject);
.....
Control.OnMouseClick := MouseClick;


ELKa   (2002-12-05 12:06:00) [13]

Можете мне написать посто пример? я так бістрее пойму


Виктор Щербаков   (2002-12-05 12:03:00) [14]


> Имя_процедуры (но не совсем так, потому что Делфи такую
> запись не хавает)

Не просто процедуры, а МЕТОДА объекта.


Наверх

Титульная страница Поиск, карта сайта Написать письмо