Главная страница
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.026 c
1-1095430417
Nils
2004-09-17 18:13
2004.10.03
Глюк с Exel2000 в D7


3-1094460794
banderas
2004-09-06 12:53
2004.10.03
Учебник по БД


14-1095030803
Soft
2004-09-13 03:13
2004.10.03
Только что написал


3-1094184007
Карелин Артем
2004-09-03 08:00
2004.10.03
В ожидании EVENT. Чем пользоваться?


14-1095279088
Гранд операнд
2004-09-16 00:11
2004.10.03
Что делать?