Delphi2007写的程序,有Form1和Form2两个窗口,主窗口是Form2,想在Form2.FormCreate引用Form1的变量,报错不成功,确定使用uses Unit1;
请大家帮看下,谢谢!
procedure TForm2.FormCreate(Sender: TObject);
begin
**Pname:=StrtoHex(Form1.hotelname.Text);**_引用提示报错_
Edit1.Text:=GetCPUIDStr;
CheckReg;
end;
Procedure TForm2.CheckReg();//检查程序是否在注册表中注册.
var
Rego:Tregistry;
begin
Rego:=Tregistry.Create;
Rego.RootKey:=HKEY_CURRENT_USER;
Rego.OpenKey('SOFTWARE\Arhca',False);
IF Rego.ValueExists(PName)= True then
begin
Form2.Hide;
application.createform(Tform1,form1);
form1.show; //显示
rego.Free;
end
else Form2.Caption:='软件未注册,请注册';
end;
Procedure TForm2.CreateReg();//创建用户信息.
var Rego:Tregistry;
begin
**Pname:=StrtoHex(Form1.hotelname.Text);** 引用Fomr1的变量成功
Rego:=Tregistry.Create;
Rego.RootKey:=HKEY_CURRENT_USER;
rego.OpenKey('SOFTWARE\Arhca',True) ;
Rego.WriteString(Pname,Pname);//写入用户名.
Rego.Free;
Application.messagebox( '注册成功', '提示', MB_OK + MB_ICONEXCLAMATION);
CheckReg; //刷新进入下一个
end;
不知道你这个问题是否已经解决, 如果还没有解决的话:问题分析: 在Delphi 2007中,使用uses语句引用其他窗口的变量是一个常见的操作。使用uses语句可以将其他单元文件(包括其他窗口的单元文件)添加到当前窗口的作用域中,从而可以访问其他窗口的变量和方法。根据参考资料中的代码片段,提供的是一个HTML表单,与Delphi的问题似乎没有直接相关性。因此,我们需要通过其他途径解决Delphi的问题。
解决方案: 要在Form2的FormCreate事件中引用Form1的变量,可以按照以下步骤进行操作:
uses
Unit1;
procedure TForm2.FormCreate(Sender: TObject);
begin
ShowMessage(Unit1.TForm1.Variable);
end;
这样,当Form2的FormCreate事件被触发时,将弹出一个消息框显示Form1的变量的值。
注意事项: - 确保Form1的变量是公共的,否则在其他单元中是无法访问的。 - 确保Form1的单元文件在当前项目中正确引用,这样在编译时才能找到Form1的定义。