想动态的获取数据库表中某个字段的名称,触发条件是在ADOQuery.Edit的时候,比如在窗体上的DBEdit1的内容变化时。获得和DBEdit1绑定的数据库中字段的名称。比如DBEdit1绑定到id上了。当DBEdit1.Text变化时,把“id”显示出来!

解决方案 »

  1.   

    DBedit内容变化和字段名有关么?
    显示字段名:
    adoquery1.fielddefs.Update;
    for i:=0 to adoquery1.fielddefs.Count-1 do
    ListBox1.Items.Add(adoquery1.fielddefs[i].Name);
    或Edit1.Text:=dbedit1.DataField;
    改变绑定:
    dbedit1.DataField:=***;
      

  2.   

    取表名:ADOConnection1.GetTableNames(listbox1.Items);
    取字段名:ADOQuery1.GetFieldNames(FieldsBox.Items);
      

  3.   

    谢谢各位,但是我的窗体上有200个Edit,我不知道哪个绑定到了哪个字段上,就是想知道如果这个Edit.text的内容变化的话就能把其对应的字段名提出来!有没有办法?
      

  4.   

    在你dbedit的onchange中写***:=dbedit.DataField;
      

  5.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      i,j:integer;
    begin
      j:=Form1.ComponentCount;
      for i:=0 to j-1 do
      begin
        if form1.Components[i] is TEdit then
        begin
          (form1.Components[i] as tedit).OnChange:=showname;
        end;
      end;
    end;procedure TForm1.showname(sender: tobject);
    begin
      showmessage((sender as tedit).Text)
    end;不知道我是否正确理解了你的意思。
      

  6.   

    楼上的差不多啊,不过楼主的是DBEdit关联的数据集字段名,依葫芦画一下:)procedure TForm1.FormCreate(Sender: TObject);
    var
      i: integer;
    begin
      ;
      for i:=0 to Form1.ComponentCount-1 do
      begin
        if form1.Components[i] is TDBEdit then
        begin
          (form1.Components[i] as TDBEdit).OnChange:=showname;
        end;
      end;
    end;procedure TForm1.showname(sender: tobject);
    begin
      showmessage((sender as TDBEdit).DataField)
    end;