123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 |
- unit ScUserInfoFrm;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, ZJGrid, HookEdit, ZJEdits, ZJCells;
- type
- TUserInfoForm = class(TForm)
- zgUserInfo: TZJGrid;
- Panel1: TPanel;
- btnOK: TButton;
- btnCancel: TButton;
- Panel2: TPanel;
- Panel3: TPanel;
- Memo1: TMemo;
- Label1: TLabel;
- Label2: TLabel;
- Panel4: TPanel;
- Label3: TLabel;
- edtUserName: TEdit;
- edtPWD: TEdit;
- edtPWD2: TEdit;
- Label4: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- btnCheckUserName: TButton;
- lblBBS: TLabel;
- Label7: TLabel;
- procedure btnOKClick(Sender: TObject);
- procedure btnCheckUserNameClick(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure edtPWDEnter(Sender: TObject);
- procedure lblBBSClick(Sender: TObject);
- procedure zgUserInfoMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure zgUserInfoKeyPress(Sender: TObject; var Key: Char);
- private
- { Private declarations }
- FNew: Boolean;
- FDataList: TStringList;
- public
- { Public declarations }
- procedure Init(var AName, APwd: string; ADataList: TStringList; ANew: Boolean);
- procedure SaveList;
- // 检查输入数据是否合法
- function CheckData: Boolean;
- end;
- function ShowUserInfoForm(var AName, APwd: string; ADataList: TStringList; ANew: Boolean): Boolean;
- implementation
- uses
- ScClientDM, ScUtils, ShellAPI, ScProvinceFrm, IniFiles;
- {$R *.dfm}
- function ShowUserInfoForm(var AName, APwd: string; ADataList: TStringList; ANew: Boolean): Boolean;
- var
- Form: TUserInfoForm;
- bFirstLogon: Boolean;
- begin
- Result := False;
- Form := TUserInfoForm.Create(nil);
- try
- Form.Init(AName, APWD, ADataList, ANew);
- if Form.ShowModal = mrOK then
- begin
- AName := Trim(Form.edtUserName.Text);
- APwd := GetEncryptEditText(Form.edtPWD);
- Form.SaveList;
- Result := True;
- UserConfigInfo.FirstLogon := False; // 这句十分重要
- UserConfigInfo.UserName := AName;
- UserConfigInfo.PassWord := APwd;
- UserConfigInfo.SaveToFile; // 先全部属性保存
- UserConfigInfo.RememberUserInfo(UserConfigInfo.RememberUser);
- end;
- finally
- Form.Free;
- end;
- end;
- {var
- Form: TUserInfoForm;
- begin
- Result := False;
- Form := TUserInfoForm.Create(nil);
- try
- Form.Init(AName, APWD, ADataList, ANew);
- if Form.ShowModal = mrOK then
- begin
- AName := Trim(Form.edtUserName.Text);
- APwd := GetEncryptEditText(Form.edtPWD);
- Form.SaveList;
- Result := True;
- end;
- finally
- Form.Free;
- end;
- end; }
- { TUserInfoForm }
- function TUserInfoForm.CheckData: Boolean;
- var
- I: Integer;
- slstSub: TStringList;
- PWD1, PWD2, ReturnCopy: string;
- endWord: Char;
- begin
- if Trim(edtUserName.Text) = '' then
- begin
- MessageHint(0, '请输入用户名。');
- Result := False;
- edtUserName.SetFocus;
- Exit;
- end;
- if FNew and ClientData.UserExists(Trim(edtUserName.Text)) then
- begin
- MessageHint(0, '用户名已存在,请重新输入。');
- Result := False;
- edtUserName.SetFocus;
- Exit;
- end;
- PWD1 := GetEncryptEditText(edtPWD);
- if Trim(PWD1) = '' then
- begin
- MessageHint(0, '请输入密码。');
- Result := False;
- edtPWD.SetFocus;
- Exit;
- end;
- PWD1 := Trim(PWD1);
- if Pos(' ', PWD1) > 0 then
- begin
- MessageHint(0, '请不要在密码中输入空格。');
- Result := False;
- edtPWD.SetFocus;
- Exit;
- end;
- if (Length(PWD1) < 6) or (Length(PWD1) > 12) then
- begin
- MessageHint(0, '您输入的密码长度不合规范,请重新输入!。');
- Result := False;
- edtPWD.SetFocus;
- Exit;
- end;
- for I := 1 to Length(PWD1) do
- begin
- ReturnCopy := Copy(PWD1, I, 1);
- endWord := ReturnCopy[1];
- if Ord(endWord) >= 128 then
- begin
- MessageHint(0, '请不要在密码中输入汉字。');
- Result := False;
- edtPWD.SetFocus;
- Exit;
- end;
- end;
- PWD1 := GetEncryptEditText(edtPWD);
- PWD2 := GetEncryptEditText(edtPWD2);
- if Trim(PWD2) = '' then
- begin
- MessageHint(0, '请输入确认密码。');
- Result := False;
- edtPWD2.SetFocus;
- Exit;
- end;
- PWD2 := Trim(PWD2);
- if Pos(' ', PWD2) > 0then
- begin
- MessageHint(0, '请不要在确认密码中输入空格。');
- Result := False;
- edtPWD2.SetFocus;
- Exit;
- end;
- if (Length(PWD2) < 6) or (Length(PWD2) > 12) then
- begin
- MessageHint(0, '您输入的密码长度不合规范,请重新输入!。');
- Result := False;
- edtPWD2.SetFocus;
- Exit;
- end;
- for I := 1 to Length(PWD2) do
- begin
- ReturnCopy := Copy(PWD2, I, 1);
- endWord := ReturnCopy[1];
- if Ord(endWord) >= 128 then
- begin
- MessageHint(0, '请不要在确认密码中输入汉字。');
- Result := False;
- edtPWD2.SetFocus;
- Exit;
- end;
- end;
- if FNew and (CompareStr(GetEncryptEditText(edtPWD), GetEncryptEditText(edtPWD2)) <> 0) then
- begin
- MessageHint(0, '两次输入密码不一致,请重新输入,注意区分大小写。');
- Result := False;
- edtPWD.SetFocus;
- Exit;
- end;
- slstSub := TStringList.Create;
- try
- slstSub.Delimiter := '|';
- for I := 0 to FDataList.Count - 1 do
- begin
- slstSub.DelimitedText := FDataList[I];
- if StrToInt(slstSub[3]) = 1 then
- if zgUserInfo.Cells[1, I + zgUserInfo.FixedRowCount].Text = '' then
- begin
- MessageHint(0, Format('请填写[%s]。', [slstSub[0]]));
- Result := False;
- zgUserInfo.Selection.SelectRow(I + zgUserInfo.FixedRowCount, I + zgUserInfo.FixedRowCount);
- Exit;
- end;
- end;
- finally
- slstSub.Free;
- end;
- Result := True;
- end;
- procedure TUserInfoForm.Init(var AName, APwd: string; ADataList: TStringList;
- ANew: Boolean);
- var
- I: Integer;
- slstSub: TStringList;
- begin
- FNew := ANew;
- edtUserName.Enabled := FNew;
- btnCheckUserName.Enabled := FNew;
- edtPWD.Enabled := FNew;
- edtPWD2.Enabled := FNew;
- edtUserName.Text := AName;
- edtPWD.Text := APwd;
- edtPWD2.Text := APwd;
- zgUserInfo.RowCount := ADataList.Count + 1;
- zgUserInfo.Cells[0, 0].Text := '项目';
- zgUserInfo.Cells[1, 0].Text := '内容';
- zgUserInfo.TextAligns.Cols[1] := gaCenterLeft;
- zgUserInfo.Cells[1, 0].TextAlign := gaCenterCenter;
- FDataList := ADataList;
- slstSub := TStringList.Create;
- try
- slstSub.Delimiter := '|';
- for I := 0 to FDataList.Count - 1 do
- begin
- slstSub.Clear;
- slstSub.DelimitedText := FDataList[I];
- zgUserInfo.Cells[0, I + zgUserInfo.FixedRowCount].Text := slstSub[0];
- zgUserInfo.Cells[1, I + zgUserInfo.FixedRowCount].Text := slstSub[1];
- end;
- finally
- slstSub.Free;
- end;
- end;
- procedure TUserInfoForm.btnOKClick(Sender: TObject);
- begin
- if CheckData then
- begin
- ModalResult := mrOK;
- end;
- end;
- procedure TUserInfoForm.btnCheckUserNameClick(Sender: TObject);
- begin
- if ClientData.UserExists(Trim(edtUserName.Text)) then
- begin
- MessageHint(0, '用户名已存在,请重新输入。');
- edtUserName.SetFocus;
- end
- else
- MessageHint(0, '用户名可以使用。');
- end;
- procedure TUserInfoForm.FormDestroy(Sender: TObject);
- begin
- RemoveEncryptEdit(edtPWD);
- RemoveEncryptEdit(edtPWD2);
- end;
- procedure TUserInfoForm.SaveList;
- var
- I: Integer;
- slstSub: TStringList;
- begin
- slstSub := TStringList.Create;
- try
- slstSub.Delimiter := '|';
- for I := 0 to FDataList.Count - 1 do
- begin
- slstSub.Clear;
- slstSub.DelimitedText := FDataList[I];
- slstSub[1] := zgUserInfo.Cells[1, I + zgUserInfo.FixedRowCount].Text;
- FDataList[I] := slstSub.DelimitedText;
- end;
- finally
- slstSub.Free;
- end;
- end;
- procedure TUserInfoForm.FormCreate(Sender: TObject);
- begin
- { 欢迎使用SmartCost 2007网络版!
- 首先请填写您的注册信息。
- 再联系纵横,即可获取授权码:加此QQ 549244533 (请注明网络版授权)或致电 0756-2285686。
- }
- Memo1.Lines.Clear;
- Memo1.Lines.Add('欢迎注册纵横免费网络版!请如实填写您的注册信息。');
- Memo1.Lines.Add('');
- Memo1.Lines.Add(Format('纵横客服中心: %s ', [LoadServicePhone]));
- SetEncryptEdit(edtPWD);
- SetEncryptEdit(edtPWD2);
- end;
- procedure TUserInfoForm.edtPWDEnter(Sender: TObject);
- begin
- SetEncryptEdit(TEdit(Sender));
- end;
- procedure TUserInfoForm.lblBBSClick(Sender: TObject);
- begin
- ShellExecute(0, nil, 'http://www.smartcost.com.cn/bbs', nil, nil, SW_SHOWNORMAL);
- end;
- procedure TUserInfoForm.zgUserInfoKeyPress(Sender: TObject; var Key: Char);
- var sPName: string;
- begin
- if (zgUserInfo.CurRow = 4) and (zgUserInfo.CurCol = 1) then
- begin
- Key := #0;
- sPName := '';
- if ExecScProvinceForm(sPName) then
- zgUserInfo.Cells[1, 4].Text := sPName;
- end;
- end;
- procedure TUserInfoForm.zgUserInfoMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- var sPName: string;
- begin
- // 省份
- if (Button = mbLeft) then
- begin
- if (zgUserInfo.CurRow = 4) and (zgUserInfo.CurCol = 1) then
- begin
- sPName := '';
- if ExecScProvinceForm(sPName) then
- zgUserInfo.Cells[1, 4].Text := sPName;
- end;
- end;
- end;
- end.
|