比较上一个单元格StringGrid中的值

时间:2019-01-24 16:43:56

标签: delphi

当我在TStringGrid的单元格中输入完值后,我需要检查它是否大于前一行的值,在同一行上...如果插入,否则将删除 enter image description here

在这种情况下,由于20%较小,因此不会插入

我试图以这种方式进行比较,但每次输入时都会触发此方法,而不是在失去焦点时触发

  procedure TfrmConfiguraClassificacao.listaFaixasSetEditText(Sender: TObject;
  ACol, ARow: Integer; const Value: string);
begin
if Acol=1 then
    //check if it is larger
end;

1 个答案:

答案 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;