窗体A中的edit中一个值需要传递到 新开的窗体B的一个edit中。
在窗体A中的按钮单击事件会打开窗体B。如何不破坏封装来传递这个值,全局变量的方法就算了.

解决方案 »

  1.   

    //先此用B的單元文件
    procedure Form1.Button1click(Sender:Tobject);
    begin
      with Tfrom2.create(nil) do 
      begin
        try
          Edit.text := self.Edit.text;
          ShowModal;
        finally
          Free;
        end; 
      end;
    end;//  隨手寫的,功能就是在A中建立模態的窗體B並對其的EDIT賦上A窗體中EDIT的值給它
      

  2.   

    你直接赋值不就可以了 
    按钮单击事件下 Form2.edit1.text := 
      

  3.   

    在窗体B中设置属性private
      FMyValue:string;
      procedure SetValue(Value:string);
    public
      property MyValue:string read FMyValue write SetValue;procedure B.SetValue(Value:string);
    begin
      FMyValue := Value;
    end;A中创建B时B:TB;B := TB.Create(nil);B.MyValue := edit1.text;//这里将触发B的SetValue过程B.Show;
      

  4.   


    //TForm2实现 
    TForm2=class(TForm)
     private
       FA:string;
     public
       property A:string read FA write FA;
       procedure Business;
     end;
    //TForm1实现
    procedure TForm1.OnClick;
    var
      Form2:TForm2;
    begin
      Form2.Create;
      try
        Form2.A:=Edit1.Text;
        Form2.ShowModal;
      finally
        Form2.Free;
      end;
    end;
      

  5.   

    也可以用发消息的方法var
      S: String;
    begin
      S := Edit1.Text;
      SendMessage(form2.Edit1.Handle,wm_settext,0,LongInt(s));
    end;
      

  6.   

    3楼的对,用属性的办法.这样不破坏其封装性.不要用全局变量.应该把Tform也理解成一个类,用全局变量破坏了封装性.同时用属性的方法,在SET_XXXX过程中可以写各种由于此属性变化而在窗体上应作的征理.属性和事件,是学delphi必须会用的,特别是在不同窗体之数据和动作传递.TProcedure 的用法大家去查查.