我在一个FORM1中定义一个BUTTON事件,想在单击该BUTTON时打开另一个FORM,同时要关闭FORM1,我用
form2.showmodel;
form1.close;
没法把FORM1关闭,该如何解决?
另外,我想把FORM1中的变量S的值传递到FORM2,该?

解决方案 »

  1.   

    你把Form2.ShowModel;
    改为Form2.Show;就可以了在Form2中定义一个与S同类型的变量
    然后 Form2.S := Form1.S就可以了
      

  2.   

    1.form2.showmodel;之后要等到form2关闭后才会执行下一句form1.close;
    2.定义一个全局变量不就行了.^_^
      

  3.   

    试试
    form2.show;
    self.close;type
    Form2 = class(Form)
      ......
      Public
       psMyValue:String;
    end;
    form1中传变量过去时
    uses From2
    ......
    .....
      Form2.psMyValue := s;
      .......
      

  4.   

    可不可以先from1.close,然后再form2.showmodel.
    至于变量可以定义一个全局的变量.
      

  5.   

    1、form2.show;
       self.close;
    2、这个是form1的
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;
       s:string;
    implementation
    uses Unit2;
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    s:='124';
    form2.show;
    self.close;
    end;
    end.
    这个是form2的
    unit Unit2;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    type
      TForm2 = class(TForm)
        Label1: TLabel;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form2: TForm2;
    implementation
    uses Unit1;
    {$R *.dfm}
    procedure TForm2.Button1Click(Sender: TObject);
    begin
    label1.Caption:=s;
    end;
    end.
      

  6.   

    调用form2,关闭form1
      form2.show;
      form1.visible:=false;
    调用form1的变量
      form2.label:=form1.x;//x为form1的全局变量
      

  7.   

    如果Form1是你的主窗体的话,你什么都得不到!!!应为Delphi程序中的主窗体Close,就会整个程序退出了^_^!!! 当然其它的窗体也会被关闭。
    所以如果Form1是主窗体,那么你可以这么做
    Form1.Visibled = false;
    Form2.showmodal;如果你有数据要Form2知道,有三种解决方案:
    1:全局量
    2:在Form1中定义一个public的变量,在 Form2 := TForm2.Create(self)
       在Form2中定义一个pForm : TForm1
       重载Form2的Create,并且使 pForm := OWner;
       然后就可以通过pForm来访问所有的Form1的公有属性和方法
    3:就是在Form2中定义公有属行,在showmdal之前,给这些属行赋值
      

  8.   

    it's almost all above it.
      

  9.   

    上面说的都有道理,变量仅仅是作成全局变量就可以,
    窗口如果是CHILDMID,需要更改一下FORM。SYSTEM,