当单击dbgrid中的一条记录时,在另一个窗体中动态的生成label和edit来显示字段名和对应的值,这样的功能可以实现吗?

解决方案 »

  1.   

    在 DBGrid 的 OnCellClick事件中根据参数 Column 的值就可以得到你需要的字段,再根据单击选中的当前纪录(DBGrid.DataSource.Dataset.FieldByName('ddd').AsString),确定值,把它赋值到你要的地方就行了。
      

  2.   

    使用DBText, DBEdit 与 DbGrid指向相同的数据源或DataSet,就可以自动实现了。
    如果你非要使用Label或Edit的话,
    在Dbgrid的OnColEnter事件中写如下功能的代码:
    从记录集中读相应的值给Label.Label1.Caption := DbGrid1.DataSource.DataSet.Fields.FieldbyName("id").AsString;
      

  3.   

    但我想显示的那个窗体原来并没有label和edit,怎样生成呢。
      

  4.   

    var
      i: integer;
    begin
      for i := 0 to query.fieldcount - 1 do
      begin
        with tlabel.create(form) do
        begin
          parent := form;
          top := x;
          left := y;
          Name := 'Label'+IntToStr(i +1);
          Caption := query.fields[i].displayname;
        end;
        //在这里加入你需要调整的位置x,y
        with tedit.create(form)do
        begin
          parent := form;
          top := x;
          left := y;
          width := z;
          Name := 'Edit'+IntToStr(i +1);
          text := query.fields[i].asstring;
        end;
      end;
    end;
      

  5.   

    Label1.Caption := query1.FieldbyName('field1').AsString;