procedure TF_jhd.StringGrid1Click(Sender: TObject);
var   
  hz:string;
i,xh:integer;
begin  
  inherited;    
  for xh:=1 to StringGrid1.RowCount do
  begin 
    pyjm:= ' ';  
    For i:=1 to length(Trim(StringGrid1.Cells[2,xh])) div 2 do  
    begin  
      hz:=copy(Trim(StringGrid1.Cells[2,xh]),i*2-1,5);  
      pyjm:=pyjm+F_zct.getpy(hz);   
    end;  
    StringGrid1.Cells[10,xh]:=pyjm;
  end; 
end;  
上述代码是对stringgrid的操作,通过点击我在第十列得到第二列物料名称的拼音,功能我已经实现
现在我想把stringgrid改为dbgrid,怎么改

解决方案 »

  1.   

    TStringgrid和TDBGrid虽然同一个祖先类,但其操作差异很大,你的代码改为TDBGrid后完全不行,一般而言,很少直接对TDBGrig进行数据操作,应该对其DataSet属性进行数据操作。
      

  2.   

    如果StringGrid能用,就不要改了,程序控制DBGrid单元格比较烦的
      

  3.   

    var  
      hz:string; 
    i,xh:integer; 
    begin  
      inherited;    
      for xh:=1 to adoquery1.RecordCount do
      begin 
        pyjm:= ' ';  
        For i:=1 to length(adoquery1.Fields[0].asstring) div 2 do
        begin  
          hz:=copy((adoquery1.Fields[0].asstring),i*2-1,5);
          pyjm:=pyjm+publicpas.getpy(hz);
        end;
        adoquery1.FieldByName('py').AsString:=pyjm;
      end;
    end;
    代码应该不错了
    但显示dataset not in edit or insert mode 怎么回事呀