procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  a: string;
begin
  a:=DBGrid1.SelectedRows.Items[1];
end;
我这样写应该是返回DBGrid1的被选的那一行的第2个字段的内容,可为什么运行到这里会报错呢?

解决方案 »

  1.   

    a:=DBGrid1.SelectedRows.Items[1].asstring;
      

  2.   

    如此
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    var
      a: string;
    begin
     a := DBgrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString;
     showmessage(a);
    end;end.
      

  3.   

    为什么要转换类型呢?提示里面明明是返回String呀?
      

  4.   

    to:hlddg
    DBGrid1.SelectedRows.Items[1]返回一个String后面已经不能打点没有asstring这个方法了列
      

  5.   

    你是指AsString吗?
    这个是从数据库读出的字段把它转换成string才可以复给a
      

  6.   

    to: tw_cshn我需要的并不是鼠标按下的那个字段的内容,我需要的是那一行的所有内容.
      

  7.   

    鼠标按下的那个内容直接就可以通过DBGrid1.SelectedField.Value就可以获得了呀。
      

  8.   

    你也可以循环读出来就是的,
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    var
      a:string;
      i:integer;
    begin
      a:='';
      for i:=0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
      begin
        a:=a+DBGrid1.DataSource.DataSet.Fields[i].AsString;
      end;
      showmessage(a);
    end;
      

  9.   

    to: tw_cshn
    showmessage(a);的作用是什莫呀?
      

  10.   

    showmessage(a)只是把a显示出来;
    to tw_cshn我等会试试你的方法,但是我总觉得要处理这个问题不一定要绕这么大个圈子吧,我现在奇怪的是DBGrid1.SelectedRows.Items这个属性按理说应该是返回被选中的那一行呀,为什么
    DBGrid1.SelectedRows.Items[0]返回字符传会出错.