现在有一个赋值问题:         主界面上有一个PANEL,专门用来嵌套form. 
   form1已经嵌套在主界面的panel中,form1有一个EDIT,BUTTON,现在点击BUTTON跳出界面form2,想从form2里赋值一个字符串给form1.edit1.text,但执行以下语句,form1里没反应. 
  
          Tform1.Button1Click() 
          begin 
              form2.showmodal; 
          end;           Tform2.Button1Click() 
          begin 
              form1.edit1.text   :=edit2.text; 
    close; 
          end;           声明:如果form1不嵌套在主界面的panel中,一切都正常. 
    
   如果form1嵌套在主界面的panel中,form2的这个值该怎么样传递给form1? 

解决方案 »

  1.   

    你的问题所在:
    Form1 嵌入于Panel,所以是动态创建,而你的Form1又是另外由Application自动创建,实际上你的应用程序里头有两个TForm1对象,Form2的Button1Click的动作,应用程序可能认为是对Application自动创建的Form1上对象操作,而Application自动创建对象此时并没有显示出来,所以就出现你所述问题。
    解决办法:
    Project->Options->Forms,把Form1从自动创建窗口对象中移除。
      

  2.   

    按照楼上的说了..没用,出了个错误,你们看一下...能否给断代码试试?project AAA.exe raised exception class EAccessViolation with message 'Access violation at address 0058E4E8 in module 'AAA.exe'. read of address 00000374'. process stopped. Use Step or Run to continue
      

  3.   

    是Form1没有创建吧?
    在窗体OnCreate里头写上Form1 := TForm1.Create(self);
    Form1.Parent := Panel;
    Form1.Align  := alClient;
    Form1.Show;另外,检查一下Form2对象是否实例化
      

  4.   

    嘿嘿,菜鸟,自己找原因吧,估计是在某Form里头创建自身,而后又引发OnCreate事件,导致死循环 ^_^
      

  5.   

                       [align=left]Tform1.Button1Click()   
                        begin   
                            if form2.showmodal= mrok then
                               form1.edit1.text:=form2.edit2.text;   
                        end;                    Tform2.Button1Click()   
                        begin   
                           modalresult:=mrok;   
                        end;[/align]  
      

  6.   

    用一个TFrame代替Form1,比嵌套form好