⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untsetup.pas

📁 一个QQ的界面源码
💻 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 + -