当我在TStringGrid的单元格中输入完值后,我需要检查它是否大于前一行的值,在同一行上...如果插入,否则将删除
在这种情况下,由于20%较小,因此不会插入
我试图以这种方式进行比较,但每次输入时都会触发此方法,而不是在失去焦点时触发
procedure TfrmConfiguraClassificacao.listaFaixasSetEditText(Sender: TObject;
ACol, ARow: Integer; const Value: string);
begin
if Acol=1 then
//check if it is larger
end;
答案 0 :(得分:1)
当用户移至另一个单元格(OnSelectCell
)或焦点移至另一个控件(OnExit
)时,您可以验证该单元格。
使用OnSetEditText
事件存储上次编辑的单元格位置。
遵循以下原则:
Type
TfrmConfiguraClassificacao = Class(TForm)
...
private
fCol,fRow : Integer;
function CellValidated : Boolean;
...
end;
...
procedure TfrmConfiguraClassificacao.listaFaixasEnter(Sender : TObject);
begin // Initialize edited cell location
fCol := -1;
fRow := -1;
end;
procedure TfrmConfiguraClassificacao.listaFaixasSetEditText(Sender: TObject;
ACol, ARow: Integer; const Value: string);
begin // Save the edited cell location
fCol := ACol;
fRow := ARow;
end;
procedure TfrmConfiguraClassificacao.listaFaixasSelectCell(Sender : TObject;
ACol, ARow: Longint; var CanSelect: Boolean);
begin // Validate edited cell location
CanSelect := CellValidated;
end;
procedure TfrmConfiguraClassificacao.listaFaixasExit(Sender : TObject);
begin // Validate edited cell location
if not CellValidated then
// Handle focus redirection
end;
function TfrmConfiguraClassificacao.CellValidated : Boolean;
begin
Result := True;
if fCol=1 then begin
// if not larger, handle it and set Result to false
end;
end;