我要实现的是对一个cell中的数进行修改,然后按照一定的计算关系计算出值显示在其他的cell中
关键是如何判断这个cell被修改过,判断后又如何激发对其他cell的修改呢?

解决方案 »

  1.   

    修改过程中,动态修改。procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    begin
        StringGrid1.Cells[4,ARow]:='haha'+Value;
    end;
      

  2.   

    这样还是没有判断cell的值有没有被修改啊!
    这个事件是什么时候被激发呢?
    如果我在一个cell中随便打个空格,或者把原先的4改成5又改回去了,也会被激发?
      

  3.   

    我一定得准确捕捉到哪个cell被修改,因为别的地方有用到这个的:(
      

  4.   

    hang,lie: integer;
        txt: string;procedure Tzjcl.qx_stgGetEditText(Sender: TObject; ACol, ARow: Integer;
      var Value: String);
    begin
      lie:=Acol;
      hang:=Arow;
      txt:=trim(Value);         //进入时取值
    end;procedure Tzjcl.qx_stgSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    var
      s:string;
    begin
        s:=trim(stringgrid1.cells[lie,hang]);
        if s=txt then exit                 //单元格没有修改就退出
        //其它代码
    end;
      

  5.   

    这方面的开发没什么意义,看看Excel吧,谁能超过它.建议不如直接调用Excel了
      

  6.   

    这样好像不行
    运行起来点击某个cell后先执行selectcell事件,这个时候txt还没有赋值,为空,这样还没有做改动的时候就会判别成改动过了!
    而且不知道为什么,GetEditText这个事件被不断地执行好多次!