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

Ваш аккаунт

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

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

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

Получение указателя на динамически созданные TShape

2.1K
15 сентября 2010 года
Ilya_V
25 / / 26.05.2003
Добрый день.

Замутил я такую штуку:

Есть элемент TShape
При тычке на этом поле создается объект TShape1, наследник класса TShape (код ниже).
Затем после того как несколько таких объектов создано тыкаем по новому квадратику TShape1 и надо что бы выводились координаты квадратика на поле TShape.

Вот код:

unit.h
Код:
class TForm1 : public TForm
{
__published:    // IDE-managed Components
  TShape *Shape1;
  TGroupBox *GroupBox1;
  TRadioButton *RadioButton1;
  TRadioButton *RadioButton2;
  TEdit *Edit1;
  TEdit *Edit2;
  void __fastcall Shape1MouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
  void __fastcall NewOnClick(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
  void __fastcall Shape1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y);
private:    // User declarations
public:     // User declarations
  __fastcall TForm1(TComponent* Owner);
};


class TShape1 : public TShape{

  private:

  public:
  TShape1 * Pointer;
  __fastcall TShape1(TComponent* Owner);
};



Unit.cpp
Код:
void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (RadioButton1->Checked == true){
  TShape1 * TmpShape = new TShape1(this);
  TmpShape->Pointer =  TmpShape;
  TmpShape->Parent = this;
  TmpShape->Width = 20;
  TmpShape->Height = 20;
  TmpShape->Top = Shape1->Top + Y - TmpShape->Height/2;
  TmpShape->Left = Shape1->Left + X - TmpShape->Width/2;
  TmpShape->Visible = true;
  TmpShape->OnMouseDown = &NewOnClick;
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
// Вот в этой функции надо получить указатель на квадратик по которому тыкнули
}
//---------------------------------------------------------------------------
14
15 сентября 2010 года
Phodopus
3.3K / / 19.06.2008
Ну и сохраняйте его в приватном поле в методе MouseDown()
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог