我想把系统PUBLIC变量,自定义函数放在程序的第一个窗口(FLogin)里,自定义函数在别的窗口里面倒是可用FLogin.的方式调用,但是变量在别的窗口却用不了
unit Ulogin;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TFlogin = class(TForm)
    Button1: TButton;    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Flogin: TFlogin;
  Xlanguage:Char;implementationFunction Xgetlanguage(Str_chs:string;Str_cht:String):String;
Begin
    If Xlanguage = 'S' Then
       Xgetlanguage:=Str_chs
    Else Xgetlanguage:=Str_cht;
End;procedure TFlogin.Button1Click(Sender: TObject);
begin
   Fmain.Visible:=True;
end;end.我在第二个窗口里
Xlanguage:=‘S’,//找不到变量??这是为什么?或许有什么其他方法可以实现我的想法,
大师们,救救一只菜鸟吧

解决方案 »

  1.   

    Xlanguage放到public下面;在第二个窗口用Flogin.调用.
    或者是不是你在第二个窗口没有引用ulogin文件?
      

  2.   

    再第二个窗口的use 加入住窗口的unit1;
    可以用unit1.ws(function);
      

  3.   

    unit main1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      Tmain = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
       function wu:string;
      end;var
      main: Tmain;
      s:string;
    implementation
    uses main_frm1;
    一下为调用的窗口
    unit main_frm1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, StdCtrls,main1;type
      Tmain_frm = class(TForm)
        Button1: TButton;
        PopupMenu1: TPopupMenu;
        Button2: TButton;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      privateprocedure Tmain_frm.FormCreate(Sender: TObject);
    begin
    main1.main.wu;
    end;end.
      

  4.   

    Function Xgetlanguage(Str_chs:string;Str_cht:String):String; 要先声明
    Xlanguage:Char; 要放设为公共变量
    第二窗口要unit 
    Ulogin窗口
      

  5.   

    回复zhongguoshuai谢谢,不过有一点问题,Function 放在Public后面,编译通不过,这样就可以
    type
      TForm3 = class(TForm)
      Button1: TButton;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      function xgetlanguage(Str_chs:string;Str_cht:string):string;
    var
      Form3: TForm3;
      xlanguage:char;
    implementation调用时:
    procedure TForm2.Button2Click(Sender: TObject);
    begin
        If Radiobutton1.Checked Then
            Unit3.xlanguage:='S' 
        Else 
            Unit3.xlanguage:='T';
        label1.Caption:=unit3.xgetlanguage('CHS','CHT');
    end;