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

📄 setting.cpp

📁 关于书籍《Borland c++Builder工程实践》的源代码
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "setting.h"
#include "screen.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSettingForm *SettingForm;
//---------------------------------------------------------------------------
__fastcall TSettingForm::TSettingForm(TComponent* Owner)
     : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::RadioButton1Click(TObject *Sender)
{
     CheckListBox1->Enabled=RadioButton2->Checked;
     TrackBar1->Enabled=!RadioButton2->Checked;
     PreviewBitBtn->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::RadioButton2Click(TObject *Sender)
{
     CheckListBox1->Enabled=RadioButton2->Checked;
     PreviewBitBtn->Enabled=false;
     TrackBar1->Enabled=!RadioButton2->Checked;
     for(int i=0;i<16;i++)
        CheckListBox1->Checked[i]=true;
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::FormCreate(TObject *Sender)
{
     Reg= new TRegistry();
     AnsiString Path=ExtractFilePath(Application->ExeName);
     try
     {
     ListBox1->Items->LoadFromFile(Path+"PicList");
     ListBox2->Items->LoadFromFile(Path+"SndList");
     }
     catch(...){}

     Reg->RootKey=HKEY_CURRENT_USER;
     Reg->OpenKey("\\Software\\ScreenSaverDIY\\",
          true);
     if (!Reg->ValueExists("Mode"))     //不存在则赋默认初值
     {
          Reg->WriteInteger("Mode",1);
          Reg->WriteInteger("Speed",3);
          RadioButton1->Checked=true;
          for (int i=0;i<16;i++)
               Reg->WriteBool("Effect"+IntToStr(i),true);
     }
     else   //存在则读取
     {
          if(Reg->ReadInteger("Mode")==0)
          {
               RadioButton1->Checked=true;
               TrackBar1->Position=Reg->ReadInteger("Speed");
          }
          else RadioButton2->Checked=true;
          for (int i=0;i<16;i++)
               CheckListBox1->Checked[i]=
               Reg->ReadBool("Effect"+IntToStr(i));
     }
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::FormDestroy(TObject *Sender)
{
     delete Reg;      
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::ExitBitBtnClick(TObject *Sender)
{
     Close();
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::PicAddBitBtnClick(TObject *Sender)
{
     OpenDialog1->Filter = GraphicFilter(__classid(TGraphic));
     if (OpenDialog1->Execute()){
          if (FileExists(OpenDialog1->FileName))
               ListBox1->Items->Add(OpenDialog1->FileName);
          else MessageBox(Handle,"文件不存在!","错误",MB_OK);
     }
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::PicDelBitBtnClick(TObject *Sender)
{
    ListBox1->Items->Delete(ListBox1->ItemIndex);    
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::MusicAddBitBtnClick(TObject *Sender)
{
     OpenDialog1->Filter = "All Music Files(*.mdi;*.wav)|*.mid;*.wav|MIDI Files(*.mdi)|*.mid|Wave Files(*.wav)|*.wav";
     if (OpenDialog1->Execute()){

          if (FileExists(OpenDialog1->FileName))
               ListBox2->Items->Add(OpenDialog1->FileName);
          else MessageBox(Handle,"文件不存在!","错误",MB_OK);
     }
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::MusicDelBitBtnClick(TObject *Sender)
{
    ListBox2->Items->Delete(ListBox2->ItemIndex);    
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::SaverSelCheckBoxClick(TObject *Sender)
{
    PasswordCheckBox->Enabled=SaverSelCheckBox->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::ReNameCheckBoxClick(TObject *Sender)
{
    NameEdit->Enabled=ReNameCheckBox->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TSettingForm::PreviewBitBtnClick(TObject *Sender)
{
    TScreenForm *ScreenForm=new TScreenForm(NULL);
    if (ScreenForm->ShowModal()) delete ScreenForm;
}
//---------------------------------------------------------------------------
void __fastcall TSettingForm::ApplyBitBtnClick(TObject *Sender)
{
     if( MessageDlg("确定应用您所做的设置么?",mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0)
         ==mrNo)
         return;
     AnsiString Path=ExtractFilePath(Application->ExeName);
     if (ListBox1->Count)  ListBox1->Items->SaveToFile(Path+"PicList");
     else
     {
        ShowMessage("您没有加入图片,请先加入图片!");
        return;
     }
     ListBox2->Items->SaveToFile(Path+"SndList");
     //保存设置变量
     if (RadioButton1->Checked)
     {
          Reg->WriteInteger("Mode",0);
          Reg->WriteInteger("Speed",TrackBar1->Position);
     }
     else  Reg->WriteInteger("Mode",1);
     for (int i=0;i<16;i++)
        Reg->WriteBool("Effect"+IntToStr(i),CheckListBox1->Checked[i]);

     if (SaverSelCheckBox->Checked)  //设为当前屏保
     {
         TRegistry *Reg1= new TRegistry();
         Reg1->RootKey=HKEY_CURRENT_USER;
         Reg1->OpenKey("\\Control Panel\\Desktop",true);
         Reg1->WriteString("ScreenSaveActive","1");
         //获取系统目录
         char *buffer;
         AnsiString srcfile,destfile;
         unsigned int size;
         buffer=new char[255];
         size=256;
         GetSystemDirectory(buffer,size);
         //复制文件
         srcfile=Path+"ScreenSaverDIY.SCR";
         destfile=AnsiString(buffer)+"\\"+NameEdit->Text+".SCR";
         if (FileExists(AnsiString(buffer)+"\\ScreenSaverDIY.SCR"))
            DeleteFile( (AnsiString(buffer)+"\\ScreenSaverDIY.SCR").c_str() );
         CopyFile(srcfile.c_str(),destfile.c_str(),0);
         srcfile=Path+"PicList";
         destfile=AnsiString(buffer)+"\\"+"PicList";
         CopyFile(srcfile.c_str(),destfile.c_str(),0);
         srcfile=Path+"SndList";
         destfile=AnsiString(buffer)+"\\"+"SndList";
         CopyFile(srcfile.c_str(),destfile.c_str(),0);
         //修改注册表
         if (!ReNameCheckBox->Checked)
            destfile=AnsiString(buffer)+"\\Screen~1.SCR";
         else
         {
            if (NameEdit->Text.Length()<=6)
                destfile="\\"+NameEdit->Text+".SCR";
            else
                destfile="\\"+NameEdit->Text.SubString(1,6)+"~1.SCR";
         }
         Reg1->WriteString("SCRNSAVE.EXE",destfile);
         if (PasswordCheckBox->Checked) //设置密码
                Reg1->WriteString("ScreenSaverIsSecure","1");
         else   Reg1->WriteString("ScreenSaverIsSecure","0");

         delete Reg1;
     }
     PreviewBitBtn->Enabled=true;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -