ユーザーが一部のセルを編集できるwxGridを作成したいのですが、間違った値を入力することは禁止されています。たとえば、長さ4の文字列のみを入力できます。したがって、ユーザーが別の長さの文字列を入力した場合は、エラーメッセージを表示して、セルエディタに戻ります。どうやってするの?
たとえば、セル変更イベントEVT_GRID_CELL_CHANGEを処理する場合
void Frame::OnGridCellChange(wxGridEvent& event)
{
int r = event.GetRow(); // get changed cell
int c = event.GetCol(); // get changed cell
if (Grid->GetCellValue(r, c).length() != 4)
{Error E (this);
/* Create the Error message */
E.ShowModal();
// The error message shown, uses clicks OK
// So, what to do here?
}
Grid->ShowCellEditControl();
ユーザーが何も編集しないとセルの変更が生成されないため、解決策ではありませんが、別のセルをクリックするだけです。グリッドに誤った値が表示されます。
新しい値が実際にセルに保存される前に表示されるため、処理EVT_GRID_EDITOR_HIDDEN
は適切ではないようです。