Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

TObject *Sender

7.4K
21 марта 2006 года
AlexanderCam
10 / / 14.10.2004
Тут назрел вопрос. Мне нужно динамически создавать компоненты типа TShape и всем им приписывать один и тот же обработчик скажем MouseDown.
Так вот, в Delphi чтобы не обращаться из обработчика по имени можно было сделать так:
TForm1.Shape1MouseDown(TObject Sender, ...)
begin
(Sender as TShape).Cursor=..;
end;

Тоесть мы работаем именно стем объектом кто вызвал данное событие.
А как также сделать в Borland C++ Builder 6?


(TShape *)Sender->Cursor=...
TShape(Sender)->Cursor=...
так не проходит. :(
7.9K
21 марта 2006 года
uki_
122 / / 26.01.2006
А если так:

((TShape *)Sender)->Cursor = ...

?
7.4K
22 марта 2006 года
AlexanderCam
10 / / 14.10.2004
Цитата:
Originally posted by uki_
А если так:

((TShape *)Sender)->Cursor = ...

?


Заработало, большое спасибо. :)

7.4K
22 марта 2006 года
AlexanderCam
10 / / 14.10.2004
Теперь другой вопрос как присвоить событие созданному компоненту?

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.
Уже созданные и работающин события.
7.9K
22 марта 2006 года
uki_
122 / / 26.01.2006
Чисто случайно не
Shape1MouseDown,Shape1MouseUp, Shape1MouseMove?

т.е. без On.
7.4K
23 марта 2006 года
AlexanderCam
10 / / 14.10.2004
Цитата:
Originally posted by uki_
Чисто случайно не
Shape1MouseDown,Shape1MouseUp, Shape1MouseMove?

т.е. без On.



Да, чисто "случайно" так и оказалось :)

294
23 марта 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by uki_
А если так:

((TShape *)Sender)->Cursor = ...

?


Не рекомендую. Имхо, надо так:

 
Код:
TShape *my_shape = dynamic_cast<TShape*>(Sender);
if(my_shape)
{
    my_shape->Cursor = …
}

Иначе можно схлопотать Access Violation, если Sender на самом деле не TShape*.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог