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

📄 main.cpp

📁 C++Builder程序员编程手记《配书光盘》
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "main.h"
#include "addvalue.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool ExpandCollapseFlag=true;
TStrings *Tempstr;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  AnsiString hkey[6]={"HKEY_CLASSES_ROOT","HKEY_CURRENT_USER",
                      "HKEY_LOCAL_MACHINE","HKEY_USER",
                      "HKEY_CURRENT_CONFIG","HKEY_DYN_DATA"};
  reg=new TRegistryIniFile("");
  str=new TStringList();
  Tempstr=new TStringList();
  for(int i=0;i<6;i++)
    ComboBox1->Items->Add(hkey[i]);
  ComboBox1->Text=hkey[1];
  RadioButton1->Checked=false;
  RadioButton2->Checked=true;
  TreeView1->Items->Add(NULL,"HKEY_CURRENT_USER");
  Node=TreeView1->Items->Item[0];
  GetAllKeys(Node,reg);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::TreeView1Click(TObject *Sender)
{
  int i;
  if(RadioButton2->Checked)
  {
    if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected->Count==0)
    {
      delete reg;
      str->Clear();
      reg=new TRegistryIniFile(AppendKey(TreeView1->Selected));
      reg->RegIniFile->OpenKey("",false);
      ShowRegValue(reg,AppendKey(TreeView1->Selected));
    }
  }
  else
    ShowIniValue(ini,TreeView1->Selected->Text);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::AppendKey(TTreeNode *key)
{
   AnsiString KeyPath;
   TTreeNode *Parent;
   Parent=key;
   KeyPath=key->Text;
   do{
        if(Parent->Parent!=TreeView1->Items->Item[0])
          KeyPath=Parent->Parent->Text+"\\"+KeyPath;
        Parent=Parent->Parent;
   }while(Parent->Parent!=NULL);
   return KeyPath;
}



void __fastcall TForm1::ShowRegValue(TRegistryIniFile *newreg,AnsiString KeyPath)
{
    int i=0;
    TStrings *keyname=new TStringList(),*keyvalue=new TStringList();
    if(newreg!=NULL)
    {
       newreg->RegIniFile->ReadSection("",keyname);
       newreg->RegIniFile->ReadSectionValues("",keyvalue);
       ListView1->Items->Clear();
       if(keyname->Count==0)
       {
        ListView1->Items->Add();
        ListView1->Items->Item[0]->Caption="默认";
       }
       else
       {
          for(i=0;i<keyname->Count;i++)
          {
            ListView1->Items->Add();
            ListView1->Items->Item[i]->Caption = keyname->Strings[i];
            ListView1->Items->Item[i]->SubItems->Add(keyvalue->Strings[i]);
          }
        }
    }
    else
      return;
    delete keyname,keyvalue;
    return;
}

void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
  HKEY hkey[6]={HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG,HKEY_DYN_DATA};
  int SelectHkey,i;

  SelectHkey=ComboBox1->ItemIndex;
  TreeView1->Items->Clear();
  delete reg;
  reg=new TRegistryIniFile("");
  reg->RegIniFile->RootKey=hkey[SelectHkey];
  reg->RegIniFile->OpenKey("",true);
  TreeView1->Items->Add(NULL,ComboBox1->Items->Strings[ComboBox1->ItemIndex]);
  Node=TreeView1->Items->Item[0];
  GetAllKeys(Node,reg);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
  ComboBox1->Enabled=RadioButton2->Checked;
  if(RadioButton1->Checked)
    if(OpenDialog1->Execute())
    {
      str->Clear();
      TreeView1->Items->Clear();
      ListView1->Items->Clear();
      ini=new TIniFile(OpenDialog1->FileName);
      ini->ReadSections(str);
      TreeView1->Items->Add(NULL,ExtractFileName(OpenDialog1->FileName));
      Node=TreeView1->Items->Item[0];
      for(int i=0;i<str->Count;i++)
        TreeView1->Items->AddChild(Node,str->Strings[i]);
     }
     else
        return;
    else
      return;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::ShowIniValue(TIniFile * newini,AnsiString Key)
{
  int i=0;
    TStrings *keyname=new TStringList(),*keyvalue=new TStringList();
    if(newini!=NULL)
    {
       newini->ReadSection(Key,keyname);
       newini->ReadSectionValues(Key,keyvalue);
       ListView1->Items->Clear();
       if(keyname->Count==0)
       {
        ListView1->Items->Add();
        ListView1->Items->Item[0]->Caption="默认";
       }
       else
       {
          for(i=0;i<keyname->Count;i++)
          {
            ListView1->Items->Add();
            ListView1->Items->Item[i]->Caption = keyname->Strings[i];
            ListView1->Items->Item[i]->SubItems->Add(keyvalue->Strings[i]);
          }
        }
    }
    else
      return;
    delete keyname,keyvalue;
    return;
}

void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
  if(RadioButton1->Checked&&ini!=NULL)
  {
    if(Form2->ShowModal()==mrOk)
      if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected!=NULL)
      {
        ini->WriteString(TreeView1->Selected->Text,Form2->Edit1->Text,Form2->Edit2->Text);
        ShowIniValue(ini,TreeView1->Selected->Text);
      }
      else
        return;
    else
      return;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
  if(RadioButton1->Checked&&ini!=NULL)
  {
     if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected!=NULL)
     {
        if(Application->MessageBox("确实要删除此键吗?","",MB_OKCANCEL+MB_ICONQUESTION)!=IDCANCEL)
        {
          ini->DeleteKey(TreeView1->Selected->Text,ListView1->Selected->Caption);
          ShowIniValue(ini,TreeView1->Selected->Text);
        }
        else
          return;
     }
     else
        return;
  }
}
//---------------------------------------------------------------------------


void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
  if(RadioButton1->Checked&&ini!=NULL)
  {
    if(TreeView1->Selected!=TreeView1->Items->Item[0]&&TreeView1->Selected!=NULL&&ListView1->Selected!=NULL)
    {
      Form2->Caption="修改键值";
      Form2->Edit1->Text=ListView1->Selected->Caption;
      Form2->Edit1->Enabled=false;
      Form2->Edit2->Text=ListView1->Selected->SubItems->Text;
      if(Form2->ShowModal()==mrOk)
      {
        ini->WriteString(TreeView1->Selected->Text,Form2->Edit1->Text,Form2->Edit2->Text);
        ShowIniValue(ini,TreeView1->Selected->Text);
        Form2->Caption="设置键值";
        Form2->Edit1->Enabled=true;
      }
      else
        return;
    }
    else
      return;
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{
  if(ExpandCollapseFlag)
  {
    TreeView1->FullExpand();
    ExpandCollapseFlag=false;
  }
  else
  {
    TreeView1->FullCollapse();
    ExpandCollapseFlag=true;
  }

}
//---------------------------------------------------------------------------
void TForm1::GetAllKeys(TTreeNode * CurrentNode,TRegistryIniFile *CurrentReg)
{
  int m,j;
  TRegistryIniFile *TempReg;

  if(CurrentReg->RegIniFile->HasSubKeys())
  {
    Tempstr->Clear();
    if(CurrentReg->RegIniFile->HasSubKeys())
      CurrentReg->ReadSections(Tempstr);
    for(m=0;m<Tempstr->Count;m++)
      TreeView1->Items->AddChild(CurrentNode,Tempstr->Strings[m]);
    for(j=0;j<CurrentNode->Count;j++)
    {
      if(reg!=NULL)
        delete reg;
      reg=new TRegistryIniFile(AppendKey(CurrentNode->Item[j]));
      reg->RegIniFile->OpenKey("",false);
      if(reg->RegIniFile->HasSubKeys())
        GetAllKeys(CurrentNode->Item[j],reg);
      else
        continue;
    }
  }
}

⌨️ 快捷键说明

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