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

Вниз

Создание события   Найти похожие ветки 

 
webpauk   (2004-09-16 13:30) [0]

Для пункта меню создано событие:


type
  TOnItemMouseClick = procedure of object;

  TMenuItem = class
  private
     fOnItemMouseClick: TOnItemMouseClick;
  public
     constructor Create(aCaption, ffShortCut: String; ItemNumber, fLeft: Integer; aEnable: Boolean = True);
     destructor Destroy; override;
     procedure DoOnItemMouseClick; virtual;
     property OnItemMouseClick : TOnItemMouseClick read fOnItemMouseClick write fOnItemMouseClick;
  end;

procedure TMenuItem.DoOnItemMouseClick;
begin
  if Assigned(fOnItemMouseClick) then fOnItemMouseClick;
end;


А фишка: Menu.Items[0].Items[4].OnItemMouseClick:=DoQuit; - не работает

где DoQuit -
procedure DoQuit;


 
webpauk   (2004-09-16 13:31) [1]

Выдает ошибку:  Incompatible types: "method pointer and regular procedure"


 
begin...end ©   (2004-09-16 13:34) [2]

Объяви DoQuit как метод.


 
webpauk   (2004-09-16 13:34) [3]

Может кто подскажет, как правильно определить событие, чтобы к нему можно было подвязать нужную процедурку


 
webpauk   (2004-09-16 13:37) [4]

>begin...end ©
дык все процедуры, которые надо привязывать к событиям не запишешь как методы. Да и смысла в этом мало.


 
Rem   (2004-09-16 13:40) [5]

procedure Form1.DoQuit;

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


 
webpauk   (2004-09-16 13:40) [6]

может надо как то переписать класс?


 
Rem   (2004-09-16 13:41) [7]

[4]
 Читайте про "делегирование методов".


 
Rem   (2004-09-16 13:44) [8]

Если Вам не нужно, чтобы указанный обработчик события отображался в инспекторе объектов - можете указать свойство - указатель на процедурный тип в секции public.

TMyProc = procedure;  // без of object

TMyClass = class
private
 m_MyProc: TMyProc;
public
 property MyProc: TMyProc read m_MyProc write m_MyProc;
...
end;


 
Rem   (2004-09-16 13:47) [9]

[6]
 Вообще-то объектно-ориентированное программирование в том и заключается, что программисты пишут новые/наследованные классы и логику их взаимодействия. Так что класс действительно надо переписать. Как? - решать Вам.


 
webpauk   (2004-09-16 13:55) [10]

> Rem
TMyProc = procedure!!! Cool!!!
спсб



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
4-1092836312
R1
2004-08-18 17:38
2004.10.03
Диалог свойств файла (ShellExecuteEx)


6-1090844845
Layner
2004-07-26 16:27
2004.10.03
Как послать вместе с посылкой POST строку Referrer?


8-1085232886
Вадим
2004-05-22 17:34
2004.10.03
Декодирование DTFM


1-1095594882
murom
2004-09-19 15:54
2004.10.03
Помогите разобраться с кодировкой


4-1093774979
DimOn2
2004-08-29 14:22
2004.10.03
Заставка