Форум: "Основная";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];
ВнизДелегирование Найти похожие ветки
← →
KIERAN (2002-07-04 00:58) [0]У меня такой вопрос.
я делаю DLL. Внутри у меня есть процедура с подобным сдержанием
var
MyImage : TImage ;
begin
MyImage.Create (...);
MyImage.Parent := ... ;
MyImage.onClick := MouseClick(***);
так вот, кто мне подскажет, как мне сделать так, что бы при щелчке на MyImage срабатывала поцедура MouseClick - которую я там тоже написал. Млин ... не работает, если просто так указать он клик на процедуру, что то надо ещё писать, а вот что??????
← →
alexdbases (2002-07-04 13:48) [1]procedure MouseClick(Sender: Tobject);
......
.....
....
В Криете формы....или Картинки..
MyImage.onClick:=MouseClick;
В MouseClick описываешь что должно с картинкой происходить....
прочиие действия
← →
Skier (2002-07-04 13:53) [2]>KIERAN
MyImage.Create (...); Это шутка или ты так объект создаёшь ?
← →
qube (2002-07-04 15:10) [3]> Skier
Присоединяюсь.
>KIERAN
Во-первых, надо сначала правильно создать
MyImage := TImage.Create(...);
Во-вторых, не так:
MyImage.onClick := MouseClick(***);
а так:
MyImage.onClick := MouseClick;
← →
KIERAN (2002-07-05 00:24) [4]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 ;
что делать??? :(
← →
alexdbases (2002-07-05 12:57) [5]Ещё разок
procedure ONClickImage ;
begin
ShowMessage(MyImage.Name) ;
end;
Надо......
procedure ONClickImage(Sender: TObject);
begin
ShowMessage(MyImage.Name) ;
end;
← →
Skier (2002-07-05 13:03) [6]>alexdbases
procedure ONClickImage(Sender: TObject);
begin
ShowMessage(MyImage.Name) ;
end; <- работать не будет !
Нужно объявлять ONClickImage как метод класса.
← →
alexdbases (2002-07-05 13:13) [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:20) [8]>alexdbases
Всё правильно, но(!) посмотри как KIERAN
объявляет ONClickImage.
Вот я и говорю, что так как он объявляет - работать не будет !
← →
Val (2002-07-05 14:33) [9]Вот я и говорю, что так как он объявляет - работать не будет !
Собственно, компилятор ему об этом и говорит. :)
← →
Skier (2002-07-05 14:38) [10]>Val
> Собственно, компилятор ему об этом и говорит. :)
Ага. Но только по-английски :))
← →
KIERAN (2002-07-07 20:59) [11]Ну млин совсем ничего не получается ... замаелсмя я с этим Дельфи! Млин, ну никак! Может хоть кто-нить простой пример работающий кинет???
← →
SerVS (2002-07-07 23:48) [12]>KIERAN
А ты не хочешь почитать хоть какуето кгиту типа "ликбез по ООП"?
← →
KIERAN (2002-07-08 15:24) [13]SerVS> а где её достать можно??
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c