查询一物品,在stringgrid 定位出错,麻烦高手们指点
procedure TForm1.Button7Click(Sender: TObject);
var i,m:integer;
begin
     for i:=1 to StringGrid1.RowCount-1 do
     begin
     if StringGrid1.Cells[0,i]=edit3.Text then
     begin
     m:=i;
     end;
     StringGrid1.SetFocus;
     StringGrid1.Row:=m;
     end;
end;

解决方案 »

  1.   

    肯定是你比较的有问题,StringGrid1.Cells[0,i]=edit3.Text ,是不是Cells[0,i]去错了,0是可不是第一列,而是最左侧的那个灰色的玩意
      

  2.   

    StringGrid1.RowCount-1也有问题,row是从1开始的,根本不用-1,否则就少一行了
      

  3.   


    procedure TForm1.Button7Click(Sender: TObject); 
    var i,m:integer; 
    begin 
        m:= 1;
        for i:=1 to StringGrid1.RowCount-1 do 
        begin 
            if StringGrid1.Cells[0,i]=edit3.Text then 
            begin 
                m:=i; 
            end; 
        end; 
        StringGrid1.SetFocus; 
        StringGrid1.Row:=m; 

    end; 
      

  4.   

       m 没有赋予初始值  应该在循环之前加上加上m:=0 ; 
       至于定位问题 你可以自己尝试调试一下 FixRows 和 FixCols 你自己可以设置
       这个应该不难的
      

  5.   


    这句是错误的,Row是从0开始的,之所以你认为是1,可能因为你设置FixedRows=1了
      

  6.   


    呵呵,bdmh的意思应该是,如果循环从1开始,结束就应该是StringGrid1.RowCount,而不应该-1
    当然这样的话,调用的时候应该是StringGrid1.Cells[0,i-1]
      

  7.   

    我固定栏是0,固定行是1
    我stringgrid是有数据的,我运行程序时,有时正确有时出错,出错的情况是固定的第一行出现重新出现了,在第二行上。
    谢谢大家了,