TShape *my_shape = dynamic_cast<TShape*>(Sender);
if(my_shape)
{
my_shape->Cursor = …
}
TObject *Sender
Так вот, в Delphi чтобы не обращаться из обработчика по имени можно было сделать так:
TForm1.Shape1MouseDown(TObject Sender, ...)
begin
(Sender as TShape).Cursor=..;
end;
Тоесть мы работаем именно стем объектом кто вызвал данное событие.
А как также сделать в Borland C++ Builder 6?
(TShape *)Sender->Cursor=...
TShape(Sender)->Cursor=...
так не проходит. :(
((TShape *)Sender)->Cursor = ...
?
Цитата:
Originally posted by uki_
А если так:
((TShape *)Sender)->Cursor = ...
?
А если так:
((TShape *)Sender)->Cursor = ...
?
Заработало, большое спасибо. :)
Shape = new TShape(DrawingForm);
Shape->Shape=stCircle;
Shape->Width=50;
Shape->Height=50;
Shape->Left=150;
Shape->Top=150;
Shape->Parent=DrawingForm;
Shape->onMouseDown=DrawingForm-Shape1OnMouseDown;
Shape->onMouseUp=DrawingForm->Shape1OnMouseUp;
Shape->onMouseMove=DrawingForm->Shape1OnMouseMove;
Shape->Show();
В Delphi так можно делать, а тут неработает.
TShape *Shape; Объявил в классе DrawingForm.
Shape1OnMouseDown,Shape1OnMouseUp, Shape1OnMouseMove.
Уже созданные и работающин события.
Shape1MouseDown,Shape1MouseUp, Shape1MouseMove?
т.е. без On.
Цитата:
Originally posted by uki_
Чисто случайно не
Shape1MouseDown,Shape1MouseUp, Shape1MouseMove?
т.е. без On.
Чисто случайно не
Shape1MouseDown,Shape1MouseUp, Shape1MouseMove?
т.е. без On.
Да, чисто "случайно" так и оказалось :)
Цитата:
Originally posted by uki_
А если так:
((TShape *)Sender)->Cursor = ...
?
А если так:
((TShape *)Sender)->Cursor = ...
?
Не рекомендую. Имхо, надо так:
Код:
Иначе можно схлопотать Access Violation, если Sender на самом деле не TShape*.