我的程序想实现这样的功能,先选专业,进行查询,在dbgird中显示出学生姓名的列表,然后选择一个学生,点击以后,将该学生的各种详细情况在下边的多个edit中输出?
请问各为大哥,这段程序如何实现?能不能帮我写段示范性的源代码?

解决方案 »

  1.   

    bcb help
    The following example copies the selected rows in a db grid to a list box.void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      if (DBGrid1->SelectedRows->Count > 0)
      {
        AnsiString s = "";
        TDataSet *pDS = DBGrid1->DataSource->DataSet;
        for (int i=0; i < DBGrid1->SelectedRows->Count; i++)
        {
          pDS->GotoBook((void *)DBGrid1->SelectedRows->Items[i].c_str());
          for (int j = 0; j < pDS->FieldCount; j++)
          {
            if (j>0)
              s = s+", ";        s = s + pDS->Fields->Fields[j]->AsString;
          }
          ListBox1->Items->Add(s);
          s = "";
        }
      }
    }
      

  2.   

    edit1.text:=dbgrid1.Fields[0].AsString;
    //其它的你可以照这样做。
      

  3.   

    begin
         adoquery1.Close;
         adoquery1.SQL.Clear;
         adoquery1.sql.add('select * from 教师表 ’);
         adoquery1.sql.add('where 教师姓名='''+adoquery1.fieldbyname('教师姓名').asstring+'''');
         adoquery1.Open;
         
         edit1.Text:=dbgrid1.DataSource.DataSet.fieldbyname('教师序号').AsString;
         edit2.Text:=dbgrid1.datasource.dataset.fieldbyname('详细住址').asstring;
    请各位大哥修改一下!!多谢
    end;
      

  4.   

    下面edit直接用dbedit不就行了
    什么代码也不需要写呀
    只需指定连接字段名称、数据集
      

  5.   

    你点一个学生的姓名,那就可以把该学生的其他信息取出来放到edit里面
    edit1.text:=dbgrid1.SelectedField.Text;(你点的是姓名,那么edit1里面就是姓名)
    edit2.Text:=dbgrid1.DataSource.DataSet.fields[1].AsString;(dbgrid1第2列的字段)
    edit2.Text:=dbgrid1.DataSource.DataSet.fields[2].AsString;(dbgrid1第3列的字段)
    依次类推就ok了,我用delphi6实验成功!
      

  6.   

    先要进行学生所有属性的查询!
    然后
    edit1.text:=dbgrid1.Fields[0].AsString;
    //其它的你可以照这样做。
      

  7.   

    进行全属性的查询,可是这时候,我不需要它在dbgrid中显示,是不是要用column的属性啊?
      

  8.   

    var 
      Fgec: string;procedure TfrmSwrz.DBGridEh1CellClick(Column: TColumnEh);
    begin
      Fgec := aqryAction.FieldValues['可以作为唯一的字段'];
    end;然后以此为基准
      

  9.   

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
         adoquery1.Close;
         adoquery1.SQL.Clear;
         adoquery1.SQL.Add('select * from 教师表');
         adoquery1.SQL.Add('where 教师姓名=:教师姓名');
         adoquery1.Parameters.ParamByName('教师姓名').Value:=dbgrid1.SelectedField.Text;
         adoquery1.Open;     edit1.Text:=dbgrid1.DataSource.DataSet.Fields[1].AsString;
         edit2.Text:=dbgrid1.datasource.dataset.Fields[4].AsString;
    end;
    我这样写为什么不对呢?
      

  10.   

    事件可以用dbgrid所关联的dataset的onscroll
      

  11.   

    你的dbgrid控件所连接的datasource控件的dataset属性是什么啊??
      

  12.   

    edit1.text:=dbgrid1.Fields[0].AsString;
      

  13.   

    dataset的属性是adoquery1啊
    这个地方我改过了,还是不行啊,编译没出错,一运行就出错了
      

  14.   

    edit1.text:=dbgrid1.Fields[0].AsString;
    edit1.Text:=dbgrid1.Fields[1].AsString;