![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Делегирование [D5, WinXP]
KIERAN © (2002-07-04 00:58:00)У меня такой вопрос.
я делаю DLL. Внутри у меня есть процедура с подобным сдержанием
var
MyImage : TImage ;
begin
MyImage.Create (...);
MyImage.Parent := ... ;
MyImage.onClick := MouseClick(***);
так вот, кто мне подскажет, как мне сделать так, что бы при щелчке на MyImage срабатывала поцедура MouseClick - которую я там тоже написал. Млин ... не работает, если просто так указать он клик на процедуру, что то надо ещё писать, а вот что??????
KIERAN (2002-07-08 15:24:00) [1]SerVS> а где её достать можно??
SerVS (2002-07-07 23:48:00) [2]>KIERAN
А ты не хочешь почитать хоть какуето кгиту типа "ликбез по ООП"?
KIERAN (2002-07-07 20:59:00) [3]Ну млин совсем ничего не получается ... замаелсмя я с этим Дельфи! Млин, ну никак! Может хоть кто-нить простой пример работающий кинет???
Skier (2002-07-05 14:38:00) [4]>Val
> Собственно, компилятор ему об этом и говорит. :)
Ага. Но только по-английски :))
Val (2002-07-05 14:33:00) [5]Вот я и говорю, что так как он объявляет - работать не будет !
Собственно, компилятор ему об этом и говорит. :)
Skier (2002-07-05 13:20:00) [6]>alexdbases
Всё правильно, но(!) посмотри как KIERAN
объявляет ONClickImage.
Вот я и говорю, что так как он объявляет - работать не будет !
alexdbases (2002-07-05 13:13:00) [7]Писать надо так
type
Tform1 = class(TForm)
Image1: TImage;
.....
procedure ONClickImage(Sender: TObject);
.....
procedure TForm1.create(Sender: TObject);
begin
....
Image1.OnClick:=ONClickImage;
...
end;
Так понятние....
Skier (2002-07-05 13:03:00) [8]>alexdbases
procedure ONClickImage(Sender: TObject);
begin
ShowMessage(MyImage.Name) ;
end; <- работать не будет !
Нужно объявлять ONClickImage как метод класса.
alexdbases (2002-07-05 12:57:00) [9]Ещё разок
procedure ONClickImage ;
begin
ShowMessage(MyImage.Name) ;
end;
Надо......
procedure ONClickImage(Sender: TObject);
begin
ShowMessage(MyImage.Name) ;
end;
KIERAN (2002-07-05 00:24:00) [10]library Project2;
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, extctrls;
{$R *.RES}
var
MyImage :TImage ;
procedure ONClickImage ;
begin
ShowMessage(MyImage.Name) ;
end;
procedure CreateImage ;
begin
MyImage := TImage.Create (application.MainForm);
MyImage.Parent := application.MainForm ;
MyImage.OnClick := ONClickImage ;
end;
begin
end.
Вот такой нерабояий код!!!!
А ошибку он выдаёт :
/Incompatible types: method pointer and regular procedure/
с указанием на строку: MyImage.OnClick := ONClickImage ;
что делать??? :(
qube (2002-07-04 15:10:00) [11]> Skier
Присоединяюсь.
>KIERAN
Во-первых, надо сначала правильно создать
MyImage := TImage.Create(...);Во-вторых, не так:
MyImage.onClick := MouseClick(***);а так:
MyImage.onClick := MouseClick;
Skier (2002-07-04 13:53:00) [12]>KIERAN
MyImage.Create (...); Это шутка или ты так объект создаёшь ?
alexdbases (2002-07-04 13:48:00) [13]procedure MouseClick(Sender: Tobject);
......
.....
....
В Криете формы....или Картинки..
MyImage.onClick:=MouseClick;
В MouseClick описываешь что должно с картинкой происходить....
прочиие действия