一、        row:=RzStringGrid1.Row;
  if (Row<>0)and(RzStringGrid1.Cells[1,Row]<>'')and(RzStringGrid1.Cells[4,Row]<>'')and(RzStringGrid1.Cells[5,Row]<>'') then
   begin
   number:=strtofloat(RzStringGrid1.Cells[4,row]);
   price:=strtofloat(RzStringGrid1.Cells[5,row]);
   RzStringGrid1.Cells[6,row]:=floattostr(number*price);
   end;
我在selectcell事件中写以上的代码,为什么计算功能有时候能触发,有时候却不触发二、
        RzStringGrid1.Cells[0,0]:='序号';
        RzStringGrid1.ColWidths[0]:=50;
        RzStringGrid1.Cells[1,0]:='产品编码';
        RzStringGrid1.ColWidths[1]:=100;
for i:=1 to 100 do
   begin
   RzStringGrid1.Rows[i].Add(inttostr(i));
   RzStringGrid1.RowHeights[i]:=20;
   end; 
为什么我每重一次,他就加载一次。三、当stringgrid中没有任何记录时,为什么他选择了表头的那一行,我的意思是固定表头那一行,
让他不能选择。(stringgrid的gorowselect为真)

解决方案 »

  1.   

    一,row:=RzStringGrid1.Row; 去掉,把Row用ARow代替,ARow为事件参数,代表当前选中的行号
       不知道楼主是不是这个意思二.RzStringGrid1.Rows[i]为TStrings类型,你调用一次ADD方法当然它就增一次了,你可以这之前先RzStringGrid1.Rows[i].Clear;三.当stringgrid中没有任何记录时,为什么他选择了表头的那一行,我的意思是固定表头那一行,让他不能选择。(stringgrid的gorowselect为真)////////////////
    不太明白什么意思,如果是FixedRow肯定不会选中的,你是不是FixedRows=0了?
      

  2.   

    第三个问题:
    Fixedrows在属性里我没有设置为0
      

  3.   

    第三个问题:
    Fixedrows在属性里我没有设置为0/////////////////////不知道你所说的表头行是不是FixedRow,stringgrid的gorowselect为真时,默认选中的行是
    stringgrid.rows[stringgrid.fixedrows]
      

  4.   

    在cell的离开合进入事件写代码
      

  5.   

    to zhangl_cn:
    我只改了gorowselect为真
      

  6.   

    gorowselect为真
    当记录数为0时,FixedRow被选中