我想用StringGrid作为单据项目的输入,具体各列如下:
id  产品名称  数量  单价      金额   折扣(%) 折后金额
01  AAAAAAA   2.00  25.5000   51.00  60.00   30.60   
要求如下:
  1、从数据库读取数据后,显示如上表所示。。
  2、当编辑完数量、单价、金额、折扣、折后金额各列后,该列以指定小数位数显示。
  3、当编辑完数量、单价、金额、折扣、折后金额等其中一列后,其它相关列要作相应的计算,
     并以指定格式显示。  4、各编辑列提供数据恢复能力: 即修改了数据,但未按下Enter或者离开该单元格前,
     可按下Esec按恢复原有数据。  本人刚才尝试了StringGrid的OnSetEditText/及OnDrawSell来实现,但好容易造成死循环。

解决方案 »

  1.   

    本人刚才尝试了StringGrid的OnSetEditText/及OnDrawSell来实现,但好容易造成死循环。
    得出的经验是: 在StringGrid中的onDrawSell事件中不要给该单元格赋值,否则容易造成死循环。
    OnSetEditText中,每次有键盘输入修改时,都要执行一次
      

  2.   

    用STRINGGRID就是这个毛病,暂时没有找到好的方法
      

  3.   

    复:sanzheng(三正) 你说的StringGrid毛病是指哪呀?
      

  4.   

    这个功能为什么需要用StringGrid来完成任务呢,有什么好处吗?或者有什么特别的意图?
    建议直接使用DBGRID 或者使用cxGrid.
    简单的问题不要复杂化。
      

  5.   

    感觉dbGrid类与数据源邦得太紧密,不容得进行数据校验,所以取用StringGrid实现单据的输入控件。
    这样的选择有错吗?
      

  6.   

    使用DBGrid类,当输入离开当前列或移动到另一行时,输入被直接写入clientDataSet, 不容易对数据进行校验,顺便想问问:现在软件公司用StringGrid类还是dbGrid类作为表格输入??、
      

  7.   

    可以在ONKEYPREES事件中写代码,进行数据输入的控制校验
      

  8.   

    复: Erice(白雪公猪) 你是指dbGrid呢还是指stringGrid呢?
      

  9.   

    考察TField的事件:OnChange、OnGetText、OnSetText、OnValidate
    如果要检验值得正确性,可以在OnSetText、OnValidate,如果值不能接受,可以Raise一个错误。
      

  10.   

    我指的是stringGrid,你有QQ没,给你贴图!!
      

  11.   

    建议使用TopGrid,可以加快开发速度。功能也很强大。
      

  12.   

    我指的是STRINGGRID写数据的时候要频繁打开数据库,那样比较慢
      

  13.   

    在OnSetEditText中做吧 没有更好的方法