首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

动态创建 Button,不响应OnClick事件,为什么?解决办法

2012-04-04 
动态创建 Button,不响应OnClick事件,为什么?编译完全通过,运行也正常显示按钮,就是点击动态生成的按钮,没

动态创建 Button,不响应OnClick事件,为什么?

编译完全通过,运行也正常显示按钮,就是点击动态生成的按钮,没有任何反应,求教,代码如下:

C/C++ code
void __fastcall TForm1::Button5Click(TObject *Sender){    TSearchRec sr;    int iAttributes = 0;    AnsiString basePath = "D:\\ShareGTS";    iAttributes |= faAnyFile;    StringGrid1->RowCount = 2;    int serverCount = 0;    StringGrid1->ColWidths[0]=80;    StringGrid1->ColWidths[1]=240;    StringGrid1->ColWidths[2]=80;    StringGrid1->ColWidths[3]=80;    StringGrid1->ColWidths[4]=120;    TRect   Rect   =   StringGrid1-> CellRect(0,0);     if (FindFirst(basePath + "\\build\\lib\\*.jar", iAttributes, sr) == 0)     {          do          {              if ((sr.Attr & iAttributes) == sr.Attr                      &&  sr.Name != "gtsdb.jar" && sr.Name != "gtsutils.jar" && sr.Name != "tools.jar")              {                  serverCount += 1;                  if(serverCount>1)      StringGrid1->RowCount += 1;                  StringGrid1->Cells[0][serverCount] = ChangeFileExt(sr.Name,"");                  StringGrid1->Cells[1][serverCount] = basePath + "\\build\\lib\\" + sr.Name;                  StringGrid1->Cells[2][serverCount] = IntToStr(sr.Size);                  StringGrid1->Cells[3][serverCount] = IntToStr(sr.Time);                  Rect   =   StringGrid1-> CellRect(4,serverCount);                  TButton *myBtn = new TButton(StringGrid1);                  myBtn->Name = String("myBtn")+(serverCount);                  myBtn->Parent = StringGrid1;                  //myBtn->Name = StringGrid1->Cells[0][serverCount];                  myBtn->Caption = "启动";                  myBtn->Left=Rect.right-80;                  myBtn->Top=Rect.Top;                  myBtn->Height=25;                  myBtn->Width=75;                  myBtn->OnClick=operServerClick;              }          } while (FindNext(sr) == 0);          FindClose(sr);     }}//---------------------------------------void __fastcall TForm1::operServerClick(TObject *Sender){    ShowMessage("啊啊啊啊啊啊啊啊啊");}//---------------------------------------


[解决办法]
前几天的帖子,不知道是不是你
TButton *myBtn = new TButton(this);

myBtn->Parent = this;
myBtn->Left=StringGrid1.Left+StringGrid1.Width+Rect.right-80;

试试
[解决办法]
搞清TControl.Owner和Parent的关系。

热点排行