10分的小問題,關於全局變量(10分)

  • 主题发起人 主题发起人 MoQing
  • 开始时间 开始时间
M

MoQing

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在MainForm表單裡定議一個全局變量來存放公司名稱,以後在其他表單可調用他
我現在的做法是:
interface
use ...
type
TMainForm = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
[blue]gcCoTitle:String;
gcCoTitle2:String;[/blue]
 end;
然後在:一個表單的創建事件直接調用他
procedure TfrmLoginFrom.FormCreate(Sender: TObject);
begin
frmloginfrom.caption := gcCoTitle+':: 系統登入窗口'
end;

但是系統報錯,說gcCoTitle不存在,請問我想在主表單定義一個全局變量並且能在另一個表單的創建事件直接調用他,該如何做呢?
 
.....................
 
你定义的 gcCoTitle 和 gcCoTitle2 实际上是 TMainForm 这个类的两个 public 成员变量,在另一个 Unit 中使用应该写成 (TMainForm 的实例名).gcCoTitle。
不过根据你的意思,应该不是这样做。
全局变量应该在 type 下面的 var 部分里面声明,这样其他的 Unit use 了这个 Unit 之后就可以像你的代码那样使用这些变量了。
这是修正后的代码。
interface
use ...
type
TMainForm = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
 end;
var
[blue]gcCoTitle:String;[/blue] // 在这里可以写成 gcCoTitle: string = 'xxxx' 以初始化全局
变量,如果不写会自动初始化为 ''。
[blue]gcCoTitle2:String;[/blue]
 
 
啊,看错问题了……
多说了一大篇,寒……
 
建立一个共享的单元,然后把这个字符串放在那个单元,有用到这个字符串的都引用它
就行了吧
 
uses Main;
{$R *.dfm}
procedure TfrmLoginForm.FormCreate(Sender: TObject);
begin
frmLoginForm.caption := mainform.gcCoTitle+'::系統登錄窗口';
//frmLoginForm.Refresh ;加上此語句也不行
end;
為何frmLoginForm.caption := mainform.gcCoTitle+'::系統登錄窗口';不起作用,frmLoginForm的標題還是沒有改變,且DEBUG追蹤時:frmLoginForm.caption 是已改變的,但是窗口上的標題卻沒變,這是為何?
 
procedure TfrmLoginForm.BitBtn1Click(Sender: TObject);
begin
frmLoginForm.Caption := mainform.gcCoTitle+'::系統登錄窗口';
end;
執行以上代碼後,frmLoginForm的標題卻可正確改變,為何在上面的代碼,即frmLoginForm建立時不行呢?有沒有朋友幫幫忙呢?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
800
import
I
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
830
SUNSTONE的Delphi笔记
S
I
回复
0
查看
649
import
I
后退
顶部