新建框架 (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' 会出错.
{---------------------------主窗体--------------------------}
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' 会出错.
解决方案 »
- delphi for win32和delphi for .net有什么区别吗?
- cxgrid中怎么对选定的几条记录进行修改啊?
- 如何将汉字 直销巨头(优莎纳) 转换成 =?GB2312?B?1rHP+r7ezbco08XJr8TJKQ==?=
- 捷荣航材(广州)有限公司招聘DELPHI程序员-试用期月薪3000以上,转正之后7000~8000
- 北京 求职
- 让男人心动的女人
- 做过票打打印程序请进
- delphi 键盘按键操作问题
- 关于BCB5做MIDAS应用服务器的一个重要疑问(或者是BUG)(在DELPHI和BCB版同时贴出)
- 请问谁有列车时刻表的最新数据库,能发送一份给我么?
- SQLConnection1和MDI子窗体释放问题
- Case语句的用法
Form2:Tframe2;
然后调用的时候:
vFrame.edit1.text:='123'就可以了。
谢谢了. 我是新手, 能告诉我哪里改吗?