ошибка при компиляции своего компонента

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

ошибка при компиляции своего компонента

Сообщение earendill » 27.04.2010 19:23:39

Доброго времени суток всем!
Такой вопрос
компонент потомок от TWinControl в него встроен компонент типа панель
при добавлении строчки
Код: Выделить всё
TPanel(heder).OnClick:=HederClick

ругается. Говорит следующую фразу
v2\unit1.pas(319,33) Error: Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"
как победить эту ситуацию?
Использую лазарус 9.28.2 по виндой
earendill
новенький
 
Сообщения: 10
Зарегистрирован: 18.02.2009 07:43:42

Re: ошибка при компиляции своего компонента

Сообщение alaken » 27.04.2010 19:38:09

метод HederClick должен быть методом класса и иметь тип TNotifyEvent

примерно так:
Код: Выделить всё
TSomeClass = class
public
  procedure HederClick(sender: Tobject)
end;
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: ошибка при компиляции своего компонента

Сообщение earendill » 27.04.2010 19:50:04

дык он и есть метод класса
Код: Выделить всё
  { TtreeItem }
  TtreeItem = class(TWinControl)
  private
    Heder:    TPanel;
...
    procedure WMLButtonDown(var Message: TLMLButtonDown); message LM_LBUTTONDOWN;
    procedure WMRButtonDown(var Message: TLMRButtonDown); message LM_RBUTTONDOWN;
    procedure WMMButtonDown(var Message: TLMMButtonDown); message LM_MBUTTONDOWN;
    procedure WMMouseMove(var Message: TLMMouseMove); message LM_MOUSEMOVE;
    procedure WMLButtonUp(var Message: TLMLButtonUp); message LM_LBUTTONUP;
    procedure WMRButtonUp(var Message: TLMRButtonUp); message LM_RBUTTONUP;
    procedure WMMButtonUp(var Message: TLMMButtonUp); message LM_MBUTTONUP;
    procedure WMMouseWheel(var Message: TLMMouseEvent); message LM_MOUSEWHEEL;
    procedure WMLButtonDBLCLK(var Message: TLMLButtonDblClk); message LM_LBUTTONDBLCLK;
    procedure SetCaption(Value: string);
  public
    constructor Create(AOwner: TComponent); override;
    property Caption: string Read ACaption Write ACaption;
    destructor Destroy; override;
    property Visible: boolean Read AVisible Write AVisible;
    property Name: string Read AName Write AName;
    property Toolorweld : Ttoolorweld read AToolorWeld write AToolorweld default twTool;
    procedure Hide;
    procedure expand;
    procedure HederClick (Sender : TObject);
  end; 
earendill
новенький
 
Сообщения: 10
Зарегистрирован: 18.02.2009 07:43:42

Re: ошибка при компиляции своего компонента

Сообщение Mr.Smart » 27.04.2010 19:54:11

earendill
Код: Выделить всё
TPanel(heder).OnClick:=@HederClick
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: ошибка при компиляции своего компонента

Сообщение earendill » 27.04.2010 19:57:23

спасибо за помощь
earendill
новенький
 
Сообщения: 10
Зарегистрирован: 18.02.2009 07:43:42

Re: ошибка при компиляции своего компонента

Сообщение Vadim » 28.04.2010 05:29:24

earendill
Там надо адрес процедуры присваивать, как у Mr.Smart в примере, а Вы пытаетесь присвоить значение процедуры. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 241

Рейтинг@Mail.ru
cron