StringGrid的一个bug !很好复现。熟手请进!
本人为了获取从stringgrid单元格中离开的事件,发现一个问题。可能自己没有完全理解其中含义。望高手指教。
我的做法是使用OnSelectCell 和 OnSetEditText两个事件。
bool changed;
void __fastcall TForm1::listSetEditText(TObject *Sender, int ACol,
int ARow, const AnsiString Value)
{
if(changed==false)return;
ShowMessage(Value);
changed=false;
}
//---------------------------------------
void __fastcall TForm1::listSelectCell(TObject *Sender, int ACol, int ARow,
bool &CanSelect)
{
changed=true;
ShowMessage("C or R changed"); <--------------------- 问题所在!
}
程序很简单。
但是注释倒数第2行的ShowMessage后,所有的结果都不对了,而且SetEditText中引用的几个参数也都变化为select后的cell内容。
呵呵 本人现在只能通过打开一个隐藏透明的自定义窗口的方法解决这个问题。
望高手赐教!
[解决办法]
每个事件都有它发生的条件,另外事件也有发生的顺序,本身这不是Bug,你这个问题很简单,仔细研究一下.
[解决办法]