譬如我有一个DBGrid控件,里面显示有N条数据!我随便选择一条数据,点击“修改”它就表显示在我设定的对应EDIT中显示出来!并有修改的功能
为什么我点来点去都是只会显示第一次数据?在“修改”按键加入的代码是:
procedure TForm4.Button2Click(Sender: TObject);
begin
  Application.CreateForm(TForm7,Form7);
  Form7.ShowModal;
  Form7.Free;
end;
在FORM加入的代码是:
procedure TForm7.FormCreate(Sender: TObject);
begin
  Edit1.Text:=ADOQuery2.Fieldbyname('IDNO').AsString;
end;
end.

解决方案 »

  1.   

    Edit1.Text=AdoQuery1.FieldByName('字段名').Values;
      

  2.   

    呃,上面只是说的选中数据,显示到EDIT里边
    如果你想带修改功能,建议你用DBEDIT
      

  3.   

    Edit1.Text:=dbgrid1.SelectedField.AsString;
      

  4.   

    procedure Tform1.adoquery1AfterScroll(DataSet: TDataSet);
    begin
     Edit1.Text=AdoQuery1.FieldByName('字段名').AsString;
    end;这个更好用....
      

  5.   

    不建议用DBEDIT这类东西,太慢了,还是用EDIT好,自己写代码处理数据
      

  6.   


    楼主说是带修改,而没说要自已写代码处理,所以我说用DBEDIT
      

  7.   

    不知道下面的是不是楼主想要的效果
    procedure TForm4.Button2Click(Sender: TObject); 
    begin   //这里添加了可以修改的代码
      Self.ADOQuery2.Edit;
      Application.CreateForm(TForm7,Form7); 
      Form7.ShowModal; 
      Self.ADOQuery2.Fieldbyname('IDNO').AsString := Form7.Edit1.Text;
      Self.ADOQuery2.Post;
      Form7.Free; 
    end; 
    在FORM加入的代码是: 
    procedure TForm7.FormCreate(Sender: TObject); 
    begin           //修改的地方,加了Form4指定Edit1.Text的值为Form4的数据集选中记录的值
      Edit1.Text := Form4.ADOQuery2.Fieldbyname('IDNO').AsString; 
    end; 
    end.
      

  8.   


    修改功能是有了,但是EDIT里面显示的还是只有第一条记录?procedure TForm7.FormCreate(Sender: TObject); 
    begin          //修改的地方,加了Form4指定Edit1.Text的值为Form4的数据集选中记录的值 
      Edit1.Text := Form4.ADOQuery2.Fieldbyname('IDNO').AsString; 
    end; 
    end.按这个写下去了也不行?
      

  9.   

    晕啊~~~~
    这个很简单的问题搞得那么复杂干什么呢?
    引用4楼的代码:
    procedure Tform1.adoquery1AfterScroll(DataSet: TDataSet); 
    begin 
      Edit1.Text:=AdoQuery1.FieldByName('字段名').AsString; 
    end;
     
    修改Edit1后,在按回车后或离开Edit后触发修改动作,保存到数据库里去
    procedure Tform1.Edit1Exit(Sender: TObject);
    begin 
      AdoQuery1.Edit;
      AdoQuery1.FieldByName('字段名').AsString:=Edit1.Text;
      AdoQuery1.Post;
    end;
     
    或者
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key=VK_RETURN then
      begin
        AdoQuery1.Edit;
        AdoQuery1.FieldByName('字段名').AsString:=Edit1.Text;
        AdoQuery1.Post;
      end;
    end;
      

  10.   

    用DBEDIT不好嗎?
    或者你在點修改按鈕的時候加入:
    edit1.text := ADOQuery2.Fieldbyname('IDNO').AsString; 
      

  11.   

    用DBEdit控件就什么事也没了。都不用写代码。