form1的onclick事件:
if unit2.Frm_2=nil then
begin
   unit2.Frm_2:=Unit2.TFrm_2.Create(nil);
   unit2.Frm_2.Label1.Caption:='aaaa';
   unit2.Frm_2.Show;
else
   unit2.Frm_2.Show;
这时frm_2的Label1显示出来是“aaaa”但是无论我在frm_2的onshow还是onCreate中用showmessage(Label1.Caption),都显示为空,获取不到“aaaa”为什么呢?

解决方案 »

  1.   


    if unit2.Frm_2=nil then
    begin
      unit2.Frm_2:=Unit2.TFrm_2.Create(nil);
      //OnCreate事件没有捕捉到Label1.Caption是正常的,因为这时候Label1.Caption还没有赋值
      unit2.Frm_2.Label1.Caption:='aaaa';
      unit2.Frm_2.Show;
      //OnShow也获取不到?代码跟踪一下,是不是你的IDE把Frm_2窗体自动创建了。
    else
      unit2.Frm_2.Show;
      //自动创建的OnCreate, OnShow事件获取Label1.Caption肯定是空的。
      

  2.   

    if unit2.Frm_2=nil then
    begin
      unit2.Frm_2:=Unit2.TFrm_2.Create(nil);
      unit2.Frm_2.Label1.Caption:='aaaa';
      unit2.Frm_2.Show;
    end
    else
    begin
      unit2.Frm_2.Label1.Caption:='aaaa';
      unit2.Frm_2.Show;
    end;
      

  3.   

    unit2.Frm_2.Label1.Caption:='aaaa';这句最好是在Frm_2的OnCreate或OnShow中付值!
      

  4.   

    先确认是否每次都能进入到
    unit2.Frm_2.Label1.Caption:='aaaa';
    或者
    Frm_2.Show中做了什么
      

  5.   


    可能是自动创建了。 
    也有可能是在 onshow 里又处理了一次?
      

  6.   

    檢查onshow事件,看一下有沒有處理的代碼???一般form參數傳遞都是form名稱+組件名稱再賦值
      

  7.   

    我在Frm_2 onshow的时候
    lebel2.caption=label1.cation
    结果
    label1.caption显示的是aaa
    但lebel2.caption显示的是label1原来的caption,并不是aaa