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);
};
Получение указателя на динамически созданные TShape
Замутил я такую штуку:
Есть элемент TShape
При тычке на этом поле создается объект TShape1, наследник класса TShape (код ниже).
Затем после того как несколько таких объектов создано тыкаем по новому квадратику TShape1 и надо что бы выводились координаты квадратика на поле TShape.
Вот код:
unit.h
Код:
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)
{
// Вот в этой функции надо получить указатель на квадратик по которому тыкнули
}
//---------------------------------------------------------------------------
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)
{
// Вот в этой функции надо получить указатель на квадратик по которому тыкнули
}
//---------------------------------------------------------------------------
Ну и сохраняйте его в приватном поле в методе MouseDown()