这是窗体1的代码
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOQuery1: TADOQuery;
    ADOConnection1: TADOConnection;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation
uses Unit2;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
    Application.CreateForm(Tform2,form2);
    form2.ShowModal;
    adoQuery1.Active:= false;
    adoquery1.Active := true;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
    adoquery1.delete;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
      application.createForm(Tform2,form2);
      form2.Sname := ADOQuery1.fieldbyname('name').AsString;
      form2.ShowModal;
end;end.
窗体2的还没写
unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
  
    Sname :string;
    { Public declarations }
  end;var
  Form2: TForm2;implementation
uses Unit1;
{$R *.dfm}procedure TForm2.Button2Click(Sender: TObject);
begin
    close;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
    Form1.ADOQuery1.Append;
    Form1.ADOQuery1.FieldByName('name').AsString := Form2.Edit1.Text;
    Form1.ADOQuery1.Post;
end;end.
要实现的功能是窗体1的三个按钮实现增加,修改,删除DBGird显示的数据
窗体2实现点击窗体1的增加或者修改按钮就弹出并输入数据传给sql在由DBGird读取!
要用Form1.ADOQuery1.Append;
    Form1.ADOQuery1.FieldByName('name').AsString := Form2.Edit1.Text;
这种方法写!明白我意思的人帮忙写一下怎么办!本人菜鸟!写详细点谢谢拉!

解决方案 »

  1.   

    首先不要在form2中引用form1 procedure TForm1.Button2Click(Sender: TObject);
    var
      form2:TForm2;
    begin
        form2:=TForm2.create(nil);
        form2.Sname := ADOQuery1.fieldbyname('name').AsString;
        form2.ShowModal;
        if (mrOK=form2.ModalResult) then
    begin
       showmessage(form2.Sname);
       这里保存
    end;
        form2.free;end;/************************************
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm2 = class(TForm)
        Edit1: TEdit;
        btn_Cancel: TButton;  ModalResult= mrCancel //设置这两个按钮的属性
        btn_OK: TButton; ModalResult= mrOK   
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
      private
        FSname: String;
        procedure SetSname(const Value: String);
        { Private declarations }
      public
        { Public declarations }
      published
        property Sname:String read FSname write SetSname;
    end;将这里定义的 form2:TForm2 删除implementation{$R *.dfm}{ TForm2 }procedure TForm2.SetSname(const Value: String);
    begin
      FSname := Value;
      Edit1.Text :=Value;
    end;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if ''=trim(Edit1.text) then
      begin
         ShowMessage('不允许为空');
         CanClose:=False;
      end
      else
        FSname:=trim(Edit1.Text);
    end;end.
      

  2.   

    假如数据库中表TestTable的结构是:
    id --- 字符串
    name ----字符串
    增加:
    增加按钮的onclick事件中加入一下代码:    Application.CreateForm(Tform2,form2);
        try
          form2.ShowModal;
        finally
          form2.free;
        end;窗口2中, 放2个编辑框: IdEdit, NameEdit, 用于输入新的记录内容, 再放一按钮用于保存数据,在按钮的onclick事件中写:
    with Adoquery1 do
    begin
      if IdEdit.text = '' or NameEdit.text = '' then
      begin
        //提示输入数据;
        //中止处理
        Exit;
      end;  close;
      sql.clear;
      sql.text := "insert into TestTable Values('''+IdEdit.Text+''','''+NameEdit.Text+''')";
      ExecSQL;
    end;
        
      

  3.   

    新增记录:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //加入一条空白记录
      SampleTable.Append;    
      //设置字段值  
      SampleTable.FieldValues['ALPHANUMERIC'] := Edit1.text;  
      SampleTable.FieldValues['INTEGER'] := StrToInt(Edit2.text);
      //保存
      SampleTable.Post;
    end;
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //插入记录
      ClientDataSet1.Insert;
      //字段赋值
      ClientDataSet1.FieldByName('QUANTITY').AsInteger := StrToInt(Edit1.Text);
      //提交保存
      ClientDataSet1.Post;
    end;
      

  5.   

    读取待更新的记录:
    在窗口2的onshow事件中,加入类似的代码:
    form2.Sname := ADOQuery1.fieldbyname('name').AsString;修改:
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      //插入记录
      adoquery1.edit;
      //字段赋值
      adoquery1.FieldByName('QUANTITY').AsInteger := StrToInt(Edit1.Text);
      //提交保存
      adoquery1.Post;
    end;