针对一条记录,我在修改其某一列值时,判断其是否大于某一特定的值,如果大于,Cell自动回到原来的值。
比如:
ADVStringGird:订单号      采购数量     最大采购数量
000001       10             100当我把10修改为>100的值时,系统提示警告信息,并把采购数值重新置为10
各位请勿建议使用新的控件。
如果有兴趣探讨的可以与我邮件联系 [email protected]

解决方案 »

  1.   

    简单测试了一下
    procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
      ARow: Integer; var Value: String);
    begin
      FValue := StringGrid1.Cells[ACol, ARow];
    end;procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    var
      AStr: STring;
    begin
      if Value <> '' then
      begin
        AStr := StringGrid1.Cells[ACol, ARow];
        if StrToInt(Value) > 100 then
        begin
          StringGrid1.Cells[ACol, ARow] := FValue;
        end;
      end; 
    end;
      

  2.   

    lonoaer说得很好!我在些补充一点:
    procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol,
      ARow: Integer; var Value: String);
    begin
        FValue := StringGrid1.Cells[ACol, ARow];
    end;或者procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
      ARow: Integer; var Value: String);
    begin
      FValue := StringGrid1.Cells[ACol, ARow];
    end;StringGrid1GetEditText 和 StringGrid1GetEditMask 两个事件都行!最后处理一样!
    procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    var
      AStr: STring;
    begin
      if Value <> '' then
      begin
        AStr := StringGrid1.Cells[ACol, ARow];
        if StrToInt(Value) > 100 then
        begin
          StringGrid1.Cells[ACol, ARow] := FValue;
        end;
      end; 
    end;
      

  3.   

    经测试成功,不过AStr: STring;没有使用,由此我又想到一个问题:
    如果此时在超过这个值时,我不把它回置为原来的值,而是把其背景色置为红色,该如果实现呢?
    自己思考中。