在delphi中,我想点DBGrid的一个格子,立即通过Label1.caption显示格子内容。
咋写程序?请施教!先谢谢了!!

解决方案 »

  1.   

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if Column.Grid.DataSource.DataSet.Active then
        Label1.Caption := Column.Field.Value;
    end;
      

  2.   

    Label1.Caption := adoQuery1.FieldByName('Field1').AsString;adoQuery1: 数据集
    Field1: 点的那一列的字段名
      

  3.   


    这种方式需要判断字段类型的,如果有整型字段,需要用代码转换为string,否则出错
      

  4.   

    谢谢各位:
        我本来是想用格子内容来定为另一个表的相应记录,然后用几个label显示
    那个记录的几个字段值。但是,我点不同格子后,另一个表的记录不变,值也不变。
    请看毛病在哪里?程序如下:
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    var
     vgh:string;
    begin
      if Column.Grid.DataSource.DataSet.Active then
      begin
       if dm6.ADOtable2.Active then
       begin
        dm6.ADOtable2.Locate('gh',label7.caption,[lopartialkey]);
        label1.caption:=Dm6.ADOTable2.FieldByName('yl').AsString;
        label2.caption:=Dm6.ADOTable2.FieldByName('swd').AsString;
        label3.caption:=Dm6.ADOTable2.FieldByName('zwd').AsString;
        label4.caption:=Dm6.ADOTable2.FieldByName('xwd').AsString;
       end
       else
        showmessage('aaaaa');
      end;
    end;
      

  5.   

    为什么不用数据库敏感控件DBTEXT,直接连接DataSource,随游标变化而变化数据
      

  6.   


    AsString的话,直接转换成string型,不管字段是什么类型
      

  7.   


    哦,确实是这样哈! 按Corn1的写法就是这样写了:
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if Column.Grid.DataSource.DataSet.Active then
        Label1.Caption := Column.Grid.DataSource.DataSet.FieldByName(Column.FieldName).AsString;
    end;
    再把1楼写法贴过来:
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if Column.Grid.DataSource.DataSet.Active then
        Label1.Caption := Column.Field.Value;
    end;
    另外还有一种写法:
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      if Column.Grid.DataSource.DataSet.Active then
        Label1.Caption := Column.Grid.DataSource.DataSet.FieldValues[Column.FieldName];
    end;