delphi 2007引用问题

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;

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    问题分析: 在Delphi 2007中,使用uses语句引用其他窗口的变量是一个常见的操作。使用uses语句可以将其他单元文件(包括其他窗口的单元文件)添加到当前窗口的作用域中,从而可以访问其他窗口的变量和方法。根据参考资料中的代码片段,提供的是一个HTML表单,与Delphi的问题似乎没有直接相关性。因此,我们需要通过其他途径解决Delphi的问题。

    解决方案: 要在Form2的FormCreate事件中引用Form1的变量,可以按照以下步骤进行操作:

    1. 在Form2所在的窗口中,使用uses关键字引用Form1所在的单元文件。确保Form1的单元文件被添加到当前项目中。
    uses
      Unit1;
    
    1. 通过Form1的类名来访问其变量。假设Form1的单位名称为Unit1,Form1的类名为TForm1,并且要访问一个名为变量的公共变量。在Form2的FormCreate事件中可以使用以下代码访问Form1的变量:
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      ShowMessage(Unit1.TForm1.Variable);
    end;
    

    这样,当Form2的FormCreate事件被触发时,将弹出一个消息框显示Form1的变量的值。

    注意事项: - 确保Form1的变量是公共的,否则在其他单元中是无法访问的。 - 确保Form1的单元文件在当前项目中正确引用,这样在编译时才能找到Form1的定义。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^