procedure TFrmLogin.Edit1Click(Sender: TObject);
begin
FocusIndex := 1;
SetInterFaceFocus(FocusIndex);
end;procedure TFrmLogin.BitBtn1Click(Sender: TObject);
var
IniFile : TIniFile;
FrmDownLoadData: TFrmDownLoadData;
begin
Try
if Not TestNetLink then begin
Timer2.Enabled := False;
FrmMain.MsgBox('网络连接已中断,请检查网络后重试!','系统提醒您',1,1);
Timer2.Enabled := True;
Exit;
end else FrmMain.ComLinkDB('1');
if (M_SysInfo.DBLinkBoolean) and (LoginValidate('',Trim(Edit1.Text),Trim(Edit2.Text),Trim(Edit3.Text))) then begin
IniFile := TIniFile.Create(M_SysInfo.ExeFilePath + 'YcxCardiogramCollection.ini');
IniFile.WriteString('WorkMode','DeptName',Trim(Edit1.Text));
IniFile.WriteString('WorkMode','LoginId',Trim(Edit2.Text));
IniFile.WriteString('WorkMode','LoginPW',Encypt(Trim(Edit3.Text)));
IniFile.Free;
M_SysInfo.LoginID := Trim(Edit2.Text);
M_SysInfo.PassWord := Trim(Edit3.Text);
SetIniFileDeptList;
SetIniFileDeviceList;
SetIniFileTestTypeList;
if LoginMode = 'Login' then begin
if M_SysInfo.WorkMode = 4 then M_SysInfo.LoginMode := 2 //bb网络模式
else M_SysInfo.LoginMode := 1 //网络模式
end else begin
{ if M_SysInfo.MsgID > 0 then FrmMain.MsgClientV1.UnRegister(M_SysInfo.MsgID);
FrmMain.MsgClientV1.Register(M_SysInfo.ExeFilePath+'config_c');
FrmMain.MsgClientV1.GetConnectID(M_SysInfo.MsgID);
if M_SysInfo.MsgID <= 0 then begin
Timer2.Enabled := False;
FrmMain.MsgBox('消息服务器没有连接!','系统提醒您',1,1);
Timer2.Enabled := True;
end; }
if LoginMode = 'DownLoadLogin' then begin
Try
self.Hide;
FrmDownLoadData := TFrmDownLoadData.Create(nil);
FrmDownLoadData.ShowModal;
FrmMain.ComLinkDB('2'); //下载完毕恢复连接状态
Finally
FrmDownLoadData.Free;
end;
end;
end;
if LoginMode = 'Login' then
begin
CloseStrate := '网络模式';//BitBtn1.Caption;
end else
CloseStrate := '确认';
Close;
end;
Except
Timer2.Enabled := False;
FrmMain.MsgBox('登录失败!','系统提醒您',1,1);
Timer2.Enabled := True;
end;
end;那个M_SysInfo 从哪儿来的 有什么用? TestNetLink ?
begin
FocusIndex := 1;
SetInterFaceFocus(FocusIndex);
end;procedure TFrmLogin.BitBtn1Click(Sender: TObject);
var
IniFile : TIniFile;
FrmDownLoadData: TFrmDownLoadData;
begin
Try
if Not TestNetLink then begin
Timer2.Enabled := False;
FrmMain.MsgBox('网络连接已中断,请检查网络后重试!','系统提醒您',1,1);
Timer2.Enabled := True;
Exit;
end else FrmMain.ComLinkDB('1');
if (M_SysInfo.DBLinkBoolean) and (LoginValidate('',Trim(Edit1.Text),Trim(Edit2.Text),Trim(Edit3.Text))) then begin
IniFile := TIniFile.Create(M_SysInfo.ExeFilePath + 'YcxCardiogramCollection.ini');
IniFile.WriteString('WorkMode','DeptName',Trim(Edit1.Text));
IniFile.WriteString('WorkMode','LoginId',Trim(Edit2.Text));
IniFile.WriteString('WorkMode','LoginPW',Encypt(Trim(Edit3.Text)));
IniFile.Free;
M_SysInfo.LoginID := Trim(Edit2.Text);
M_SysInfo.PassWord := Trim(Edit3.Text);
SetIniFileDeptList;
SetIniFileDeviceList;
SetIniFileTestTypeList;
if LoginMode = 'Login' then begin
if M_SysInfo.WorkMode = 4 then M_SysInfo.LoginMode := 2 //bb网络模式
else M_SysInfo.LoginMode := 1 //网络模式
end else begin
{ if M_SysInfo.MsgID > 0 then FrmMain.MsgClientV1.UnRegister(M_SysInfo.MsgID);
FrmMain.MsgClientV1.Register(M_SysInfo.ExeFilePath+'config_c');
FrmMain.MsgClientV1.GetConnectID(M_SysInfo.MsgID);
if M_SysInfo.MsgID <= 0 then begin
Timer2.Enabled := False;
FrmMain.MsgBox('消息服务器没有连接!','系统提醒您',1,1);
Timer2.Enabled := True;
end; }
if LoginMode = 'DownLoadLogin' then begin
Try
self.Hide;
FrmDownLoadData := TFrmDownLoadData.Create(nil);
FrmDownLoadData.ShowModal;
FrmMain.ComLinkDB('2'); //下载完毕恢复连接状态
Finally
FrmDownLoadData.Free;
end;
end;
end;
if LoginMode = 'Login' then
begin
CloseStrate := '网络模式';//BitBtn1.Caption;
end else
CloseStrate := '确认';
Close;
end;
Except
Timer2.Enabled := False;
FrmMain.MsgBox('登录失败!','系统提醒您',1,1);
Timer2.Enabled := True;
end;
end;那个M_SysInfo 从哪儿来的 有什么用? TestNetLink ?
要使用需要 new(M_SysInfo ) ,如果是Class ,则需要M_SysInfo := (M_SysInfo的类类型).create() ;
M_SysInfo :应该主要是用来存储数据使用,如果不定义一个record 或class,那么保存多个数据的时候,需要定义多个变量,主要是不容易维护 ;
2、Ctrl+ 鼠标左键,单击 TestNetLink ,可以看到他的定义位置 ;TestNetLink 有可能是一个boolean型的变量,也有可能是一个返回值为boolean的函数 ;
M_SysInfo : PSysInfo; 这是什么类型?
MacTransFile:LongBool;
指针,指向PSysInfo类型
也可能是“自定义的过程或者函数”
然后就这样了,真是不太懂,以前学的C#,没见过指针,听说在C#中指针是被封装好了的,直接用。delphi 不一样.... 能给我解释解释么?type
PSysInfo = Record
LoginMode : Integer; //登录模式 (1:网络模式 2:本地模式)
TestNetLink 是一个函数 用来检测网络连接 返回值是布尔型
TSysInfo = record
LoginMode: Integer;
end;
TSysInfo = record
LoginMode: Integer;
end;var
sys : psysinfo
a : integer; a := sys^.LoginMode;