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

Вниз

Incompatible types: regular procedure and method pointer    Найти похожие ветки 

 
webpauk   (2005-03-14 14:32) [0]

Как внутри класса определить процедуру?

TOnClick = procedure;
TControlEx = class
private
  fOnClick: TOnClick;
  procedure SetClick;
public
  constructor Create;
  property OnClick: TOnClick read fOnClick write fOnClick;
endl;

constructor TControlEx.Create;
begin
  OnClick:=SetClick;
end;


Извне OnClick устанавливается правильно.


 
ламер ©   (2005-03-14 14:37) [1]

TOnClick = procedure of Object;


 
webpauk   (2005-03-14 14:48) [2]

Тогда извне OnClick выдает ошибку. Мне надо, чтобы  у некоторых наследников класса TcontrolEx OnClick было жестко связано с определенной процедурой, определенной внутри класса, а все остальные наследники реагировали бы на стандартный OnClick


 
Digitman ©   (2005-03-14 14:52) [3]


> Как внутри класса определить процедуру?


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

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


 
_1   (2005-03-14 15:05) [4]

I>
> webpauk   (14.03.05 14:48) [2]


Перекрой метод TControl.Click, там описывай нужные действия


 
_1   (2005-03-14 15:21) [5]

Прошу прощения, не заметил что TControlEx, не является наследником TControl. В любом случае, никто не мешает завести метод Click, который вызывать при щелчке мыши, из него вызывать назначенный обработчик fOnClick, тогда в потомках можно будет этот самый Click перекрыть. Если не ошибаюсь именно так в стандартном TControl реализовано.


 
Alexander Panov ©   (2005-03-14 15:34) [6]

webpauk   (14.03.05 14:32)

Правильно делать по-другому, например, так:

TOnClick = procedure;
TControlEx = class
private
 fOnClick: TOnClick;
 procedure Click;
public
 constructor Create;
 property OnClick: TOnClick read fOnClick write fOnClick;
endl;

procedure TControlEx.Click; //Здесь желательно все-таки определять, какой объект передает нажатие кнопки.
begin
 if Assigned(FOnClick) then
 begin
   FOnClick;
   Exit;
 end;
 //Здесь обрабатываем по-умолчанию
end;



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

Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.039 c
1-1110882991
ksu
2005-03-15 13:36
2005.03.27
Мигающий текст в StringGrid


1-1110511647
Poha
2005-03-11 06:27
2005.03.27
Rave


14-1109840007
Marser
2005-03-03 11:53
2005.03.27
Хочу извиниться


14-1110441288
Inventor
2005-03-10 10:54
2005.03.27
Алгоритм составления расписания занятий в ВУЗЕ


1-1110564923
Chroot
2005-03-11 21:15
2005.03.27
Прожиг дисков и печать документов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский