Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание события [D6, WinXP]


webpauk ©   (2004-09-16 13:30:00) 

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


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:55:00) [1]

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


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

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


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

Если Вам не нужно, чтобы указанный обработчик события отображался в инспекторе объектов - можете указать свойство - указатель на процедурный тип в секции 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:41:00) [4]

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


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

procedure Form1.DoQuit;

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


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

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


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

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


begin...end   (2004-09-16 13:34:00) [8]

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо