我定义了一个全局变量:
unit T_Login;
........
public
User_ServerData:String;
User_ServerName:String;
User_UserName:string;
User_UserPass:string;
........
然后在单元内赋值,
User_ServerData:='1'
在别的窗体进行调用
uses T_Login;
..........
edit1.text:= T_Login.User_ServerData; <-问题在这里,User_ServerData为'',而不是'1'
请问大侠们这是为什么?谢谢。
unit T_Login;
........
public
User_ServerData:String;
User_ServerName:String;
User_UserName:string;
User_UserPass:string;
........
然后在单元内赋值,
User_ServerData:='1'
在别的窗体进行调用
uses T_Login;
..........
edit1.text:= T_Login.User_ServerData; <-问题在这里,User_ServerData为'',而不是'1'
请问大侠们这是为什么?谢谢。
例如定义一个公共变量,在一个单元
public
User_ServerData:String; 然后
procedure TTM_Login.Button2Click(Sender: TObject);
begin
User_ServerData:='hello';
end;然后在另一个窗体中
edit1.text:=T_Login.User_ServerData;
T_Login.User_ServerData中不是'hello'而是''。请教大侠们这是为什么?
在一个单元中
public
User_ServerData:String;定义一个过程(取INIFile)
procedure TTM_Login.Read_INIFiles;
var
inifile:Tinifile;
begin
inifile:=tinifile.Create(ExtractFilePath(Application.ExeName)+'\database.ini');
if fileexists(ExtractFilePath(Application.ExeName)+'\database.ini') then
begin
User_ServerData:=inifile.ReadString('DBconfig','DataBaseName',User_ServerData);
User_ServerName:=inifile.ReadString('DBconfig','ServerName',User_ServerName);
User_UserName:=inifile.ReadString('DBconfig','UserName',User_UserName);
User_UserPass:=inifile.ReadString('DBconfig','UserPass',User_UserPass);
end
else
begin
showmessage('请确认系统已正确初始化。');
end;
end;然后在一个按钮事件触发procedure TTM_Login.Button1Click(Sender: TObject);
var
Tempstr:string;
begin
Read_INIFiles;
TM_Form.show;
end;
然后在TM_Form窗体中
procedure TTM_Form.FormCreate(Sender: TObject);begin
StatusBar1.Panels.Items[3].Text:=TM_Login.User_UserName; <-错误在这里,User_UserName为'',而在TM_Login中它却有值。
end;
IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)))+'database.ini'
看来你对delphi刚开始学,严格的按照我说的做:
1.单击options...菜单,除主窗体外,其他的窗体都放到右边框内,Auto-create forms里只留下主窗体(如果有数据摸快的也可以留下,如果窗体太多,修改起来困难则新键个工程试)
procedure TTM_Login.Read_INIFiles;
var
inifile:Tinifile;
strName:string;
begin
strname:=IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)))+'database.ini';
if not fileexists(strname) then
begin
showmessage('文件不存在!');
exit;
end;
inifile:=tinifile.Create(strname);
User_ServerData:=inifile.ReadString('DBconfig','DataBaseName',User_ServerData);
User_ServerName:=inifile.ReadString('DBconfig','ServerName',User_ServerName);
User_UserName:=inifile.ReadString('DBconfig','UserName',User_UserName);
User_UserPass:=inifile.ReadString('DBconfig','UserPass',User_UserPass);
inifile.free;
end;procedure TTM_Login.Button1Click(Sender: TObject);
var
Tempstr:string;
begin
Read_INIFiles;
TM_Form:=TTM_Form.create(self);
try
TM_Form.ShowModal;
finally
TM_Form.free;
end;
end;
StatusBar1.Panels.Items[3].Text:=TM_Login.User_UserName改在Show事件中才OK的,就是Create TM_Form->ReadIni->Show
wks(mex)的解决方法也挺好的
initialization
当中不行吗?
procedure TTM_Login.Button1Click(Sender: TObject);
var
Tempstr:string;
begin
Read_INIFiles;
StatusBar1.Panels.Items[3].Text:=TM_Login.User_UserName;
TM_Form.show;
end;或者你搞一个Ontime事件,即使刷新你的状态条StatusBar1
你再改变变量,现在TM.StatusBar1.Panels.Items[3].Text是不会变的了。
你可以考虑在你的TTM_Login.Button1Click事件中看窗体TM是否创建,
如果创建就再给TM.StatusBar1.Panels.Items[3].Text赋一次值。