📄 untsetup.pas
字号:
unit untSetup;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, dximctrl, Registry, IniFiles;
type
TFrmSetup = class(TForm)
PageControl1: TPageControl;
TabSystem: TTabSheet;
TabSelf: TTabSheet;
BtnOK: TBitBtn;
BtnCancle: TBitBtn;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Panel1: TPanel;
Label1: TLabel;
ImgFaceList: TdxImageListBox;
Panel2: TPanel;
ImgFace: TImage;
Label2: TLabel;
EdtUserName: TLabeledEdit;
EdtOldPwd: TLabeledEdit;
EdtNewPwd1: TLabeledEdit;
EdtNewPwd2: TLabeledEdit;
ChbRunWithSystem: TCheckBox;
ChbAutoShowMsg: TCheckBox;
CheckBox3: TCheckBox;
ChbAskClose: TCheckBox;
HotKey1: THotKey;
Label3: TLabel;
ChbOnlineInfo: TCheckBox;
TabMsg: TTabSheet;
GroupBox3: TGroupBox;
CmbLeaveMsg: TdxImageComboBox;
Label4: TLabel;
MemMsg: TMemo;
Label5: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure BtnCancleClick(Sender: TObject);
procedure ImgFaceListClick(Sender: TObject);
procedure EdtUserNameKeyPress(Sender: TObject; var Key: Char);
procedure EdtUserNameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BtnOKClick(Sender: TObject);
procedure CmbLeaveMsgChange(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure MemMsgKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmSetup: TFrmSetup;
implementation
uses dm_share, Var_Share, main;
var
LeaveMsg1,LeaveMsg2,LeaveMsg3,LeaveMsg4:string;
{$R *.dfm}
procedure TFrmSetup.FormCreate(Sender: TObject);
var
i:integer;
MyBmp:TBitMap;
Reg:TRegistry;
MyIni:TIniFile;
begin
Caption:='设置';
{-----------个人信息-----------}
ImgFaceList.ImageList:=DMShare.ImgLarge;
for i := 0 to 84 do
begin
ImgFaceList.AddItem('',i);
end;
MyBmp:=TBitMap.Create;
ImgFaceList.ImageList.GetBitmap(iFaceID,MyBmp);
ImgFace.Picture.Bitmap:=MyBmp;
ImgFaceList.ItemIndex:=iFaceId;
EdtUserName.Text:=sUserName;
{-----------系统信息----------}
ChbAutoShowMsg.Checked:=bAutoshowMsg;
ChbOnlineInfo.Checked:=bOnlineInfo;
ChbAskClose.Checked:=bAskClose;
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True) then
begin
ChbRunWithSystem.Checked:=Reg.ValueExists('NetMsg');
Reg.CloseKey;
end;
finally
Reg.Free;
end;
{-----------------消息设定----------------}
//离线消息
MyIni:=TIniFile.Create(ExtractFilePath(Application.ExeName)+sQQNumber+'\FndSetup.ini');
try
LeaveMsg1:=MyINi.ReadString('setup','LeaveMsg1','离线消息一');
LeaveMsg2:=MyINi.ReadString('setup','LeaveMsg2','离线消息二');
LeaveMsg3:=MyINi.ReadString('setup','LeaveMsg3','离线消息三');
LeaveMsg4:=MyINi.ReadString('setup','LeaveMsg4','离线消息四');
finally
MyIni.Free;
end;
CmbLeaveMsg.ItemIndex:=0;
MemMsg.Text:=LeaveMsg1;
end;
procedure TFrmSetup.BtnCancleClick(Sender: TObject);
begin
Close;
end;
procedure TFrmSetup.ImgFaceListClick(Sender: TObject);
var
i:integer;
MyBmp:TBitMap;
begin
i:=ImgFaceList.ItemIndex;
MyBmp:=TBitMap.Create;
ImgFaceList.ImageList.GetBitmap(i,MyBmp);
ImgFace.Picture.Bitmap:=MyBmp;
end;
procedure TFrmSetup.EdtUserNameKeyPress(Sender: TObject; var Key: Char);
begin
if Key='*' then
begin
Key:=#0;
windows.Beep(999,88);
end;
if (Length(EdtUserName.Text)>=20) and (Key<>#8) then
begin
Key:=#0;
windows.Beep(999,88);
end;
end;
procedure TFrmSetup.EdtUserNameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=vk_Return then
begin
BtnOK.Click;
end;
end;
procedure TFrmSetup.BtnOKClick(Sender: TObject);
var
Reg:TRegistry;
MyIni:TIniFile;
begin
{处理个人信息的更改}
//下面为除错处理
if EdtUserName.Text='' then
begin
MessageBox(GetActiveWindow(),'用户名不能为空!','提示',MB_OK+MB_ICONiNFORMATION);
Abort;
end;
if (EdtOldPwd.Text<>'') or (EdtNewPwd1.Text<>'') or (EdtNewPwd2.Text<>'') then
begin
if EdtOldPwd.Text<>sPassword then
begin
MessageBox(GetActiveWindow(),'旧密码错误,请重新输入!','错误',MB_OK+MB_ICONERROR);
Abort;
end;
if EdtNewPwd1.Text<>EdtNewPwd2.Text then
begin
MessageBox(GetActiveWindow(),'两次新密码不相符,请重新输入!','错误',MB_OK+MB_ICONERROR);
Abort;
end;
if (EdtNewPwd1.Text='') or (EdtNewPwd2.Text='') then
begin
MessageBox(GetActiveWindow(),'新密码不能为空!','错误',MB_OK+MB_ICONERROR);
Abort;
end;
end;
//下面为更新数据库和全局变量
sUserName:=EdtUserName.Text;
iFaceID:=ImgFaceList.ItemIndex;
if EdtOldPwd.Text<>'' then sPassword:=EdtOldPwd.Text;
with DMShare.TblUsers do
begin
Open;
First;
if Locate('QQNumber',sQQNumber,[]) then
begin
Edit;
FieldValues['UserName']:=sUserName;
Post;
Edit;
FieldValues['FaceID']:=iFaceID;
Post;
Edit;
FieldValues['Password']:=sPassword;
Post;
end;
Close;
end;
{完成个人信息更改处理}
{---------------------------Next Setup--------------------}
{开始处理“系统设置”}
bAutoShowMsg:=ChbAutoShowMsg.Checked;//自动弹出信息
bOnlineInfo:=ChbOnlineInfo.Checked;//上下线通知
bAskClose:=ChbAskClose.Checked;//取出时确认
//将设定写进 INI 文件
MyIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+sQQNumber+'\FndSetup.ini');
try
MyIni.WriteBool('setup','AutoShowMsg',bAutoShowMsg);
MyIni.WriteBool('setup','OnlineInfo',bOnlineInfo);
MyIni.WriteBool('setup','Askclose',bASkClose);
finally
MyINI.Free;
end;
{随系统运行而运行}
if ChbRunWithSystem.Checked then
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True) then
begin
Reg.WriteString('NetMsg',Application.ExeName);
Reg.CloseKey;
end;
finally
Reg.Free;
// inherited;
end;
end
else
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True) then
begin
Reg.DeleteValue('NetMsg');
Reg.CloseKey;
end;
finally
Reg.Free;
// inherited;
end;
end;
{完成“系统设置”的处理}
{----------------------Next Page Setup----------------------}
{开始设置“消息设定”页}
//将自定义的消息写进INI文件
MyIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+sQQNumber+'\FndSetup.ini');
try
MyIni.WriteString('setup','LeaveMsg1',LeaveMsg1);
MyIni.WriteString('setup','LeaveMsg2',LeaveMsg2);
MyIni.WriteString('setup','LeaveMsg3',LeaveMsg3);
MyIni.WriteString('setup','LeaveMsg4',LeaveMsg4);
finally
MyIni.Free;
end;
//处理 ItmOnline 菜单的离线部分的 caption
FrmMain_QQ.ItmLeave1.Caption:=LeaveMsg1;
FrmMain_QQ.ItmLeave2.Caption:=LeaveMsg2;
FrmMain_QQ.ItmLeave3.Caption:=LeaveMsg3;
FrmMain_QQ.ItmLeave4.Caption:=LeaveMsg4;
{完成“消息设定”页的处理}
self.Close;
end;
procedure TFrmSetup.CmbLeaveMsgChange(Sender: TObject);
begin
case CmbLeaveMsg.ItemIndex of
0 : MemMsg.Text:=LeaveMsg1;
1 : MemMsg.Text:=LeaveMsg2;
2 : MemMsg.Text:=LeaveMsg3;
3 : MemMsg.Text:=LeaveMsg4;
end;
end;
procedure TFrmSetup.Button1Click(Sender: TObject);
begin
case CmbLeaveMsg.ItemIndex of
0 : LeaveMsg1:=MemMsg.Text;
1 : LeaveMsg2:=MemMsg.Text;
2 : LeaveMsg3:=MemMsg.Text;
3 : LeaveMsg4:=MemMsg.Text;
end;
end;
procedure TFrmSetup.MemMsgKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
Key:=#0;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -