Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: CL | DM;

Вниз

Перехватывание созданным компонентом событий мыши.   Найти похожие ветки 

 
Afonya   (2003-07-04 16:15) [0]

Добрый день всем мастакам!
Сложилась интересная ситуация с созданием компонента.
Создаю компонент, наследуя его от TChartShape (пакет TeeChartPro v.5), но никак не могу его "обучить" обрабатывание событий мыши (OnMouseMove, OnMouseDown ...)
Не подскажете что здесь не так:

type
TMyShape = class(TChartShape)
private
{ Private declarations }
function GetLeft : real;
function GetTop : real;
function GetWidth : real;
function GetHeigth : real;
procedure SetLeft(const NewLeft : real);
procedure SetTop(const NewTop : real);
procedure SetWidth(const NewWidth : real);
procedure SetHeigth(const NewHeigth : real);


protected
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
procedure _Click(var Message : TMessage); message WM_LBUTTONDBLCLK;
procedure MouseMove(var Message : TMessage); message WM_MOUSEMOVE;

public
constructor Create(AOwner: TComponent); override;

published
property Left : real read GetLeft write SetLeft;
property Top : real read GetTop write SetTop;
property Width : real read GetWidth write SetWidth;
property Heigth: real read GetHeigth write SetHeigth;

end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("Samples", [TMyShape]);
end;


{ TMyShape }

constructor TMyShape.Create(AOwner: TComponent);
begin
inherited;
X0 := 0;
Y0 := 0;
Width := 50;
Heigth:= 50;
//OnClick := _Click;
end;


function TMyShape.GetHeigth: real;
begin
Result := odds(Y0,Y1);
end;

function TMyShape.GetLeft: real;
begin
Result := X0;
end;

function TMyShape.GetTop: real;
begin
Result := Y0;
end;

function TMyShape.GetWidth: real;
begin
Result := odds(X0,X1);
end;

procedure TMyShape.MouseMove(var Message: TMessage);
begin
inherited;
with Message do
ShowMessage("XPos = ");
end;

procedure TMyShape.SetHeigth(const NewHeigth: real);
begin
Y1 := Y0 + NewHeigth;
end;

procedure TMyShape.SetLeft(const NewLeft: real);
begin
X0 := NewLeft;
end;

procedure TMyShape.SetTop(const NewTop: real);
begin
Y0 := NewTop;
end;

procedure TMyShape.SetWidth(const NewWidth: real);
begin
X1 := X0 + NewWidth;
end;

procedure TMyShape.WMLButtonDown(var Message: TWMLButtonDown);
begin
inherited;
with Message do
ShowMessage("X = " + IntToStr(XPos));
end;

procedure TMyShape._Click( Sender: TChartSeries; ValueIndex: Integer;
Button: TMouseButton; Shift: TShiftState; x, y: Integer);
begin
ShowMessage("X = " + IntToStr(X));
//SendMessage(Owner.Handle MouseMove)
end;

end.


 
reonid ©   (2003-07-04 16:27) [1]

А в _Click где inherited? -
и вообще, для таких случаев обычно принято
диспетчерские методы TControl.Click, TControl.MouseDown и тд


 
Afonya   (2003-07-04 20:33) [2]

Reonid, я имею ввиду, как научить компонент реагировать на мышь, если это от родителя ему не передается.


 
panov ©   (2003-07-04 21:22) [3]

>Afonya (04.07.03 20:33)

Reonid, я имею ввиду, как научить компонент реагировать на мышь, если это от родителя ему не передается.

Ставить обработку всех сообщений в Application. От мышки сообщения обрабатывать - остальные передавть обработчику(как один из вариантов)



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

Текущий архив: 2003.07.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-55503
panov
2003-07-04 15:38
2003.07.17
Object types или class?


1-55497
Пубертанец
2003-07-04 09:06
2003.07.17
Как создать объекты производного класса еще в предке?


14-55760
Vika
2003-07-03 09:36
2003.07.17
DBGrid с возможностью выделения строки, как в Excel


3-55395
Лора
2003-06-23 13:25
2003.07.17
ADO


1-55512
Ш-К
2003-07-04 16:55
2003.07.17
Повторный запуск приложения.