typedef struct ATag
{
AnsiString nameControl;
TEdit *myLinkEdit;
} TTag;
Как получить имя объекта?
Есть кнопочка +. Есть поле для ввода. Справа от него есть кнопочка - . Если нажать на +, то под первым полем появляется такое же и под кнопочкой - такая же. И так до бесонечности. У каждой кнопочки свое имя. Подскажите, пожалуйста, как мне сделать, чтобы при нажатии на - удалялось поле, соответствующее ему и сам - , то есть узнать, на какой именно из - было нажатие. Я пытался вынуть из Sender его имя, мне говорило, что у него нету такого, пытался передавать сразу указатель на кнопочку, а оно не присваивалось к OnClick, говорило, что Wrong type или что-то такое. Заранее спасибо! :rolleyes:
Код:
Создаешь свою кнопку:
Код:
TButton *myMinusButton = new TButton(this);
(TTag *) myMinusButton->Tag = new TTag;
((TTag *)myMinusButton->Tag)->nameControl = "My ten button";
TEdit *myNewEdit = new TEdit(this);
((TTag *)myMinusButton->Tag)->myLinkEdit = myNewEdit;
myMinusButton->OnClick = MyClickClosure;
(TTag *) myMinusButton->Tag = new TTag;
((TTag *)myMinusButton->Tag)->nameControl = "My ten button";
TEdit *myNewEdit = new TEdit(this);
((TTag *)myMinusButton->Tag)->myLinkEdit = myNewEdit;
myMinusButton->OnClick = MyClickClosure;
При нажатии на минус удалять можно так:
Код:
void __fastcall TForm1::MyClickClosure(TObject *Sender)
{
delete ((TTag *)((TButton *)Sender)->Tag)->myLinkEdit;
}
{
delete ((TTag *)((TButton *)Sender)->Tag)->myLinkEdit;
}
Спасибо! А как сделать чтобы, например. когда этих самых кнопочек делается например 20, появлялся скролл-бар? :)
Код:
int btnTop = 8;
for (int i=0; i < 100; i++){
TButton *newBtn = new TButton(this);
newBtn->ControlStyle << csFramed;
newBtn->Parent = this;
btnTop += newBtn->Height + 5;
newBtn->Top = btnTop;
newBtn->Left = 16;
newBtn->Caption = IntToStr(i);
}
for (int i=0; i < 100; i++){
TButton *newBtn = new TButton(this);
newBtn->ControlStyle << csFramed;
newBtn->Parent = this;
btnTop += newBtn->Height + 5;
newBtn->Top = btnTop;
newBtn->Left = 16;
newBtn->Caption = IntToStr(i);
}
Заранее большое спасибо!
ЗЫ: это мой последний вопрос:rolleyes: :rolleyes: :) :)