C++builder StringGrid内的编辑框

C++builder StringGrid内的编辑框,c++builder,tstringgrid,editbox,C++builder,Tstringgrid,Editbox,我在StringGrid中插入Editbox时遇到问题。我的表单上有一个StringGrid和一个Editbox。编辑框在选定的列和行中显示得很好,但我只能在选定的单元格中插入一个数字。。。有人能告诉我怎么把更多的数字放进去吗 tnx //Editbox on change event void __fastcall TForm3::StringGridEditChange(TObject *Sender) { int x,y; x = Form3->VariableGr

我在StringGrid中插入Editbox时遇到问题。我的表单上有一个StringGrid和一个Editbox。编辑框在选定的列和行中显示得很好,但我只能在选定的单元格中插入一个数字。。。有人能告诉我怎么把更多的数字放进去吗

tnx

//Editbox on change event
void __fastcall TForm3::StringGridEditChange(TObject *Sender)
{
    int x,y;

    x = Form3->VariableGrid->Col;
    y = Form3->VariableGrid->Row;

  if (VariableGrid->Col !=2 )
  {
    VariableGrid->Col = 2;
  }
  if (VariableGrid->Row <1 )
  {
    VariableGrid->Row = 1;
    ShowMessage("Prevention!");
  }

  VariableGrid->Cells[VariableGrid->Col][VariableGrid->Row] = StringGridEdit->Text;
  StringGridEdit->Visible = false;
  VariableGrid->SetFocus();

//StringGrid on selectCell event
void __fastcall TForm3::VariableGridSelectCell(TObject *Sender, int ACol, int ARow,
          bool &CanSelect)
{
    if(ACol == 2 && ARow>0)
  {
    TRect R = VariableGrid->CellRect(ACol, ARow);
    R.Left   += VariableGrid->Left;
    R.Right  += VariableGrid->Left;
    R.Top    += VariableGrid->Top;
    R.Bottom += VariableGrid->Top;
    StringGridEdit->Left = R.Left + 1;
    StringGridEdit->Top = R.Top + 1;
    StringGridEdit->Width = (R.Right + 1) - R.Left;
    StringGridEdit->Height = (R.Bottom + 1) - R.Top;
    //Show the editbox
    StringGridEdit->Visible = true;
    StringGridEdit->SetFocus();
  }
  CanSelect = true;
}
//更改事件上的编辑框
void\uu fastcall TForm3::StringGridEditChange(ToObject*发送方)
{
int x,y;
x=Form3->VariableGrid->Col;
y=Form3->VariableGrid->Row;
如果(可变网格->列!=2)
{
可变网格->列=2;
}
如果(VariableGrid->Row-Row=1;
ShowMessage(“预防!”);
}
VariableGrid->Cells[VariableGrid->Col][VariableGrid->Row]=StringGridEdit->Text;
StringGridEdit->Visible=false;
VariableGrid->SetFocus();
//selectCell事件上的StringGrid
void\uu fastcall TForm3::VariableGridSelectCell(TObject*发送方、int-ACol、int-ARow、,
bool&CanSelect)
{
如果(ACol==2&&ARow>0)
{
TRect R=可变网格->单元矩形(ACol,ARow);
R.左+=可变网格->左;
右+=可变网格->左;
R.顶部+=可变网格->顶部;
R.底部+=可变网格->顶部;
StringGridEdit->Left=R.Left+1;
StringGridEdit->Top=R.Top+1;
StringGridEdit->Width=(右+1)-R.左;
StringGridEdit->高度=(右下+1)-右上;
//显示编辑框
StringGridEdit->Visible=true;
StringGridEdit->SetFocus();
}
CanSelect=true;
}

<>在C++ +Builder XE2

为什么使用单独的编辑控件而不是StruGrand的内置编辑器?我在最后一个问题中告诉过你。你只能输入1个字符,因为它一经文本更改就隐藏了编辑。如果你必须使用单独的编辑,那么<代码> OnEnguts事件将比使用“Co”更有意义。de>OnChange事件。感谢您的回答。我解决了我的问题。请将您的解决方案作为答案放在此处