advstringgrid控件的使用(请大家帮忙啊,非常感谢!)(80)

  • 主题发起人 主题发起人 shubiao123
  • 开始时间 开始时间
S

shubiao123

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现advstringgrid的定时刷新,就是比如说我的advstringgrid一共有四列,在同一行上如果前三列里有单元格里的值变化了,则更新第四列里的值为原第四列的值见去变化的单元格里的值,这个函数是写在TForm1.AdvStringGrid1CellsChanged(Sender: TObject; R: TRect);还是写在TForm1.AdvStringGrid1CellChanging(Sender: TObject; OldRow, OldCol, NewRow, NewCol: Integer; var Allow: Boolean);里呢?具体怎么写呢,能简单写个例子吗?
 
给你一段代码参考:procedure TfrmDemo.AdvStringGrid1CellValidate(Sender: TObject; ACol, ARow: Integer; var Value: String; var Valid: Boolean);var temp: Double;begin // 检查输入的内容是否为浮点数 if (Value = '') or (Value = '.') or (not TryStrToFloat(Value, temp)) then Value := '0'; //可以直接写代码 with Sender as TAdvStringGrid do begin Cells[3, ARow] := Cells[0, ARow] + Cells[1, ARow] + Cells[2, ARow]; end;end;
 
谢谢楼上的大哥,可我不知道究竟写在那个函数里啊?或者最大的问题就是不知道怎样判断出格子里的值有变化啊?还请各位高手帮忙啊?
 
就写在 AdvStringGrid 的 OnCellValidate 事件中啊
 
那格子里的值是否变化了怎么写啊?我格子里的值初始化为0,是定时刷新的,可能一下子变成5就不变了,也有可能变成6或7,我是想只要有变化了就让第四列的值和这个变化的值想减啊?
 
如果:1、第四列的内容是根据第1、2、3列的值算出来的,例如相加;2、第1、2、3列的单元格是允许Edit的,也就是让用户自己去输入(可以设定输入的格式,如只能输入浮点数等);那么就按照我写的试一下,你测试过结果吗?你不必去管格子里的值是否变化了,只要搞清楚第四列的值是怎样通过前3列计算出来的就可以了。祝你好运!
 
接受答案了.
 
后退
顶部