BCB中对于多个组件的添加事件,有没有不用手动添加的方法,比如使用类似循环的方法
比如我在工程中添加了100个EditBox组件,我想给每个EditBox组件添加OnChange事件,在OnChange事件改变EditBox组件的Text属性,比如:
void __fastcall TForm::Edit1Change(TObject *Sender)
{
String str=Edit1->Text;
if(str.Length()>30)
a->Text="";
}
我的问题有两个,第一是如何不用手动一一添加100个EditBox组件,而是使用一种快速的添加方法?
我尝试过全部选中这100个EditBox组件,如何在对象监视器中添加OnChange事件,但是没有添加100个OnChange事件,而是这些组件的事件都指向了第一个选择的组件的OnChange事件,这样只能改变Edit1->Text
第二是组件的名称是固定的,对100个组件进行操作,我的方法只能是使用100个组件的Name->属性等,请问有没有方法能简化程序书写
比如:
SetStructL(CheckBoxa1,CheckBoxb1,Editc1,Editd1);
SetStructL(CheckBoxa2,CheckBoxb2,Editc2,Editd2);
...
SetStructL(CheckBoxa100,CheckBoxb100,Editc100,Editd100);
有没有简化的程序书写方法
[解决办法]
至于其他99个控件用这个事件,
可以设计时多选控件,在onchange事件时选择指定到Edit1Change。
也可以动态用代码指定。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
this->Edit2->OnChange = this->Edit1Change;
this->Edit3->OnChange = this->Edit1Change;
。。。
}
TEdit *edt;
for (int i = 0; i < 4; i++)
{
edt = (TEdit *)FindComponent(String().sprintf(TEXT("Edit%d"), i + 1));
if (edt)
{
edt->OnChange = Edit1Change;
}
}