в том и проблема что пользователь может вместо enter например нажать на другую ячейку
, угу, или выйти из StringGrid-а вообще, на другой компонент...
В этом случае понадобится обработать три события:
void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol, int ARow,
const UnicodeString Value)
{
FEdited = true;
if(!StringGrid1->EditorMode)
{
Memo1->Lines->Add("OnSetEditText -> Finished");
FEdited = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
bool &CanSelect)
{
if(FEdited)
{
Memo1->Lines->Add("OnSelectCell -> Finished");
FEdited = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1Exit(TObject *Sender)
{
if(FEdited && !StringGrid1->EditorMode)
{
Memo1->Lines->Add("OnExit -> Finished");
FEdited = false;
}
}
, где
class TForm1 : public TForm
{
__published: // IDE-managed Components
// ...
private: // User declarations
bool FEdited;
};