求高手指导!使用select语句查询之后,DBGrid有数条记录,现在单击其中的一条记录,要求使记录的某些字段的内容显示到对应的edit、datetimepicker或memo等控件中。已经设定了DBGrid的options属性dgRowSelect为TRUE,dgMultiSelect为true
    我的DBGrid的cellclick事件代码:
             procedure TForm10.DBGrid1CellClick(Column: TColumn);
             begin
               with dm.qry1 do
                 begin
                   memo1.Text:=dbgrid1.DataSource.DataSet.FieldValues['REMARK'].AsString;
                   date1.Date:=dbgrid1.DataSource.DataSet.FieldValues['BIRTH'].AsDatetime;
                   Cno.Text:=inttostr(dbgrid1.DataSource.DataSet.FieldValues['Cno'].Asinteger);
                   Cname2.Text:=dbgrid1.DataSource.DataSet.FieldValues['CNAME'].AsString;
                   category2.Text:=dbgrid1.DataSource.DataSet.FieldValues['category'].AsString;
                   address.Text:=dbgrid1.DataSource.DataSet.FieldValues['ADDRESS'].AsString;
                   telephone.Text:=dbgrid1.DataSource.DataSet.FieldValues['TELEPHONE'].AsString;

                 end;
              end;
     还请高手指导,怎样才能使目的实现?

解决方案 »

  1.   

    1、dgMultiSelect是让Grid列表允许多选,和你的要实现的功能无关
    2、代码都写好了,您有什么问题呢?
      

  2.   

    因为这个代码有问题,运行的时候,我单击一条记录后报错,弹出错误 Variant does not reference an
    automation object .所以,请教各位!
      

  3.   

    改成类似的写法dbgrid1.DataSource.DataSet.FiledByName('REMARK').AsString跟踪,看看是那句话赋值时出错,是否和字段类型有关
      

  4.   

    直接用dbEdit吧,不用写代码。多好。
      

  5.   

    with dm.qry1 do
    begin
      if active = false then exit;
      if isempty then exit;
      if 主键是空 then exit;end;
      

  6.   

    在qry1的AfterScroll的事件里写
    procedure TfrmBase1.qry1AfterScroll(DataSet: TDataSet);
    begin
      inherited;
      with Form10 do
      begin
        memo1.Text := DataSet.FieldValues['REMARK'].AsString;
        date1.Date := DataSet.FieldValues['BIRTH'].AsDatetime;
        Cno.Text := inttostr(DataSet.FieldValues['Cno'].Asinteger);
        Cname2.Text := DataSet.FieldValues['CNAME'].AsString;
        category2.Text := DataSet.FieldValues['category'].AsString;
        address.Text := DataSet.FieldValues['ADDRESS'].AsString;
        telephone.Text := DataSet.FieldValues['TELEPHONE'].AsString;
      end;
    end;
      

  7.   

    把 with dm.qry1 do去掉试试。建议用dbedit,直接关联DBGrid的DataSource。这样你每点一行记录,dbedit的内容会自动更新。