在DBGRID的双击事件中加入如下代码,目的是双击一条记录时取对应记录的各项信息procedure TFChld_Parent1.DBGrid1DblClick(Sender: TObject);
var li_TypeCode,i,j:Integer; ls_TypeName: String;
begin
  inherited;
  // DBGrid1.Refresh;
   if DBGrid1.SelectedRows.Count>0 then
    with DBGrid1.DataSource.DataSet do
      for i:=0 to DBGrid1.SelectedRows.Count-1 do
      begin
        GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
        //ls_TypeName := '';
        for j := 0 to Fieldcount - 1 do
        begin
          ls_TypeName := ls_typeName + Fields[j].AsString + ',';
          Edit1.Text := ls_TypeName;
        end;
        ls_TypeName := '';
      end;end;但是DBGrid1.SelectedRows.Count始终为0,不知原因,请问可能是哪些原因?

解决方案 »

  1.   

    选择dgMultiSelect设置为TRUE看看。如果只是单行,那还不如通过数据库的当前记录来取值呢
      

  2.   

    我就纳闷,你那0是怎么得来的!!!
    我试了一下,双击能且只能有一行被选中,除非用左键选择,右键双击,
    注:dbgrid.option要选择dgrowselect和dgmultiselect,这样击起来也比较方便。
      

  3.   

    直接用edit1.text := dbgrid.selectField.text不就行了,双机事件下
      

  4.   

    如果要想实现你的想法,只能将dbgrid->options->dgMultiSelect设为true