Главная страница
    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.036 c
3-1109078238
Arazel
2005-02-22 16:17
2005.03.27
Не могу подключить клиент к серверу ? MSSQL


4-1108580256
_Леха_
2005-02-16 21:57
2005.03.27
Как получить путь к рабочему столу ?


1-1109987204
ЮЮ
2005-03-05 04:46
2005.03.27
Изменение высоты основного окна TComboBox


1-1110554491
qwe
2005-03-11 18:21
2005.03.27
MemoryStream


14-1110047946
ShanK
2005-03-05 21:39
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский