Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.055 c
1-1095148299
resut
2004-09-14 11:51
2004.10.03
Не хватает ресурсов


3-1094450182
dolmat
2004-09-06 09:56
2004.10.03
Как добавить подписи к строкам запроса


14-1095023837
gas
2004-09-13 01:17
2004.10.03
Перетаскивание текста между программами


3-1094463960
galexis
2004-09-06 13:46
2004.10.03
Передача данных запроса к БД из потока


1-1095283565
KilkennyCat
2004-09-16 01:26
2004.10.03
интерфейс как у Delphi.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский