stringGrid 结构如下:(采购单模板)
cpdm       cpmc      dw    sl    dj        je      bzdw  hsxs    bzdj      bzslA001       XXXX      块    1    100.0000    100.00   Kg    100.00  1.0000    100.0000
其中关系如下:bzsl=sl*hsxs
              bzdj=dj/hsxs要求如下: sl,je 保留2个小数位;dj,bzdj,bzsl保留四个小数位(如果有四位小位)请问各位大侠: 如何使得sl,je,dj ,bzdj,bzsl各列保留相留的小数位?需要同时考虑从数据库读取数据填入stringgrid时,修改sl,dj列时,还有bzsl,bzdj获得或失去focus时。。???

解决方案 »

  1.   

    保留两位小数点:
    f:=strtofloat(formatfloat('0.00',number));
    4位0.0000.
    修改文字事件:OnSetEditText
    选择表格事件:OnSelectCell(获得焦点)
    失去焦点,可以综合OnExit和OnSelectCell来处理.
      

  2.   

    当修改sl,dj 时,在哪个事件处理bzsl,bzdj呢?
      

  3.   

    OnSetEditText事件是指修改bzsl,bzdj吧
      

  4.   

    procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    你根据ACol, ARow来确定是对哪个列进行修改.
      

  5.   

    在GetEditMask中加入
      if StringGrid1.Cells[ACol, 0] = 'dj' then
        Value :=  '00000.0000';
    不过有.和线,不知道如何解决