新建框架 (Tframe1), 放在一个edit. 然后在 调用unit3->GetIp 函数, 会出错.(编译后运行, 无反映)
{---------------------------主窗体--------------------------}
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;type
  TMyFrame    =    class    of    TFrame;
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
  private
    Ffrm: TFrame; 
    FCurrentfrmClass:    String; 
    procedure LoadFrameByClassName(FrameClassName: TmyFrame);  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses unit2;{$R *.dfm}procedure TForm1.LoadFrameByClassName(FrameClassName:TmyFrame);
begin
  if Assigned(Ffrm) and (not SameText(FrameClassName.ClassName,FCurrentfrmClass)) then
  FreeAndNil(Ffrm);
  Ffrm := FrameClassName.Create(nil);
  Ffrm.Parent := panel1;
  FCurrentfrmClass := FrameClassName.ClassName;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
LoadFrameByClassName(TFrame2);
end;end.{--------------------框架1-Tframe1-------------------------------}unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls,unit3;type
  TFrame2 = class(TFrame)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2:Tframe2;implementation{$R *.dfm}procedure TFrame2.Button1Click(Sender: TObject);
begin
  getip;
end;end.{-------------------------unit3----------------------------}
unit Unit3;interfaceuses Windows;procedure Getip;implementationuses unit2;procedure Getip;
begin
  form2.Edit1.Text:='123';
end;end.大家可以测试, 如果写:(主窗体) form1.edit1.text:='123' 会正常显示(框架) form2.edit1.text:='123'  会出错.

解决方案 »

  1.   

    当然错了,你这个全局变量在哪里创建过了?var
      Form2:Tframe2;
      

  2.   

    删除掉,那就会出现 undeclared identifier "form2"
      

  3.   

    Call 高手..!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  4.   

    实际上你把frame当一个变量使用就可以了。
    然后调用的时候:
    vFrame.edit1.text:='123'就可以了。
      

  5.   

    把变量删除, 依旧出现: undeclared identifier "frame2"
    谢谢了. 我是新手, 能告诉我哪里改吗?