Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.024 c
1-1095244178
Ms.Dunkul
2004-09-15 14:29
2004.10.03
таскание формы 2


3-1094456201
_Сергей_
2004-09-06 11:36
2004.10.03
Как на "клиенте" максимально быстро отловить крах SQL


14-1095146447
KSergey
2004-09-14 11:20
2004.10.03
Win2k и autoexec.bat


4-1092994681
eli
2004-08-20 13:38
2004.10.03
Как узнать раскладку клавиатуры


14-1095385238
Думкин
2004-09-17 05:40
2004.10.03
С днем рождения! 17 сентября




   Наверх