回 帖 发 新 帖 刷新版面

主题:急救!!怎么在BCB中为动态生成的控件添加事件呢???

本人在程序运行时,动态的生成了一些控件,并利用从数据库中导出的数据为这些控件设置了属性,可是不知道怎么在这么控件下添加一些事件???哪位高手知道的话,请说明一下,最好的话能不能举个例子,谢了!!!!

回复列表 (共1个回复)

沙发

可以单独设计一个公用的事件响应函数,然后为每个动态生成的控件的相应响应函数赋值,内容就是这个公共的响应函数。

例如,用鼠标随机在窗体上点击,生成新的Image控件,然后让所有的新Image控件具有相同的响应Click的函数:

void __fastcall TForm1::ImgClick(TObject *Sender)
{
  TImage *cn;
  cn=(TImage *)Sender;
  TPoint pt;
  GetCursorPos(&pt);
  // 。。。。。pt.x
  ShowMessage("新增站点!");
}

void __fastcall TForm1::onClick(TObject *Sender)
{
  int ii;
  TPoint pt;
  GetCursorPos(&pt);

  ImnCount++; //ImnCount是静态私有成员变量
  ii= ImnCount;
  Imn[ii]=new TImage(this);//Imn是静态私有成员变量,容纳新的图片控件

  Imn[ii]->Parent=this;


  Imn[ii]->Picture->LoadFromFile("xxxLarge.bmp");
  Imn[ii]->Visible = true;
  Imn[ii]->PopupMenu = PopupMenu1;
  
  Imn[ii]->OnClick=ImgClick; //注意这一句,其他的响应函数可以以类似的方式实现

  Imn[ii]->Left=pt.x;
  Imn[ii]->Top=pt.y;


}
[em9]

我来回复

您尚未登录,请登录后再回复。点此登录或注册