Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.18;
Скачать: CL | DM;

Вниз

Делегирование   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
1-58118
Саша
2002-07-05 12:07
2002.07.18
Как Splitter поставить горизонтально.


14-58313
lak_b
2002-06-22 00:35
2002.07.18
комп виснет!


3-57958
oleg_d
2002-06-25 14:00
2002.07.18
организация пользователей в программе


1-58055
Dimich1978
2002-07-08 08:52
2002.07.18
TreeView


1-58202
TPavel
2002-07-06 12:06
2002.07.18
Закрытие программы