我有两个form窗口form1 ,form2,
form1 是主窗口。form2 是子窗口
现在form2 中有一个成员变量(就说是整型吧)form1中也有一个成员变量(就说是整型吧);
 
form1中有一个按钮,点击这个按钮后,弹出form2 ,form2中有一个按钮,两个edit,在两个edit中分别输入一个整数。点按钮。把两个数相加,并保存在form2 的那个整形成员里。通过那个整形成员赋值给form1 中的那个整形成员。
我写了如下的代码。但是有问题procedure TForm1.BitBtn3Click(Sender: TObject);
begin
form2.show;//为什么它不会停在这里,
//我希望它像打开文件的对话框一样,把弹出的对话框处理完了后,才继续往下进行
form1.i:=form2.i+form.j;
end;

解决方案 »

  1.   

    建议楼主看一下delphi的源码,delphi有一个函数叫inputbox,就看这个函数的源码就明白了。
      

  2.   

    procedure TForm1.BitBtn3Click(Sender: TObject);
    begin
      //form2.show;//为什么它不会停在这里,
      form2 := TForm2.create(Application);
      try
        form2.ShowModal;//对话框是模态的,要用ShowModal;Show是非模态的,这个该知道的吧
        //我希望它像打开文件的对话框一样,把弹出的对话框处理完了后,才继续往下进行
        form1.i:=form2.i+form2.j;
      finally
        form2.Free;
      end;end;
      

  3.   

    在给你一个例子
    form1有一个Edit1
    form2有Edit1和Edit2
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with TForm2.Create(Application) do
      try
        ShowModal;
        Form1.Edit1.Text := Edit2.Text + Edit1.Text;   //
      finally
        Free;
      end;end;
    你看看执行后是是什么结果,其实都是一样的过程
      

  4.   

    第一个问题:
    //unit1中的代码
    {$R *.dfm}
    uses unit2;
    procedure TForm1.FormClick(Sender: TObject);
    begin
       form2.ShowModal;
       form1.i:=form2.i;
       showmessage(inttostr(form1.i));
    end;end.
    //unit2中的代码
    {$R *.dfm}
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      form2.i:=5;
    end;
    end.
    运行正常,说明之可以正常传递!//////////////////////////////////////////////////////////
    第二个问题:
    应该Form2.showmodal,
    作为模态窗体才可。A modal form is one where the application can't continue to run until the form is closed.