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

📄 extractunit.cpp

📁 Winzip的源代码
💻 CPP
字号:
/******************************************************************************\
*                                  JZip                                        *
*                                                                              *
* COPYRIGHT:                                                                   *
*   (C) Copyright 1999-2000 Cramon Utilities and Bytamin-C                     *
*                                                                              *
* WWW:                                                                         *
*   http://www.bytamin-c.com                                                   *
*                                                                              *
* DISCLAMER:                                                                   *
*   THE AUTHOR(S) MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY *
*   OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO   *
*   THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR        *
*   PURPOSE, OR NON-INFRINGEMENT. THE AUTHOR(S) SHALL NOT BE LIABLE FOR ANY    *
*   DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR            *
*   DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.                             *
*                                                                              *
* ---------------------------------------------------------------------------- *
* Last changed      Name                   Changes                             *
* 01/13-2000        Jeppe Cramon           Prepared for OpenSource release     *
\******************************************************************************/

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "registry.hpp"
#include "filectrl.hpp"
#include "ExtractUnit.h"
#include "NewFldrUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SystemControlPack"
#pragma link "SystemTreeView"
#pragma resource "*.dfm"
TExtractForm *ExtractForm;
//---------------------------------------------------------------------------
__fastcall TExtractForm::TExtractForm(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::FormCreate(TObject *Sender)
{
    /* --- Load settings --- */
    TRegistry* thisReg = new TRegistry();
    thisReg->OpenKey("SOFTWARE\\JZip\\ExtractForm", true);
    if (thisReg->ValueExists("Extract To"))
    {
        ExtractToComboBox->Items->CommaText = thisReg->ReadString("Extract To");
    }

    if (thisReg->ValueExists("Last Extract To"))
        ExtractToComboBox->Text = thisReg->ReadString("Last Extract To");

    if (thisReg->ValueExists("Overwrite Files"))
        OverwriteCheckBox->Checked = thisReg->ReadInteger("Overwrite Files");

    if (thisReg->ValueExists("Skip Older Files"))
        SkipOlderCheckBox->Checked = thisReg->ReadInteger("Skip Older Files");

    if (thisReg->ValueExists("Use Folder Names"))
        UserFolderNamesCheckBox->Checked = thisReg->ReadInteger("Use Folder Names");

    // clean up
    delete thisReg;

    if (ExtractToComboBox->Text == "")
        ExtractBitBtn->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::SystemTreeViewChange(TObject *Sender,
      TTreeNode *Node)
{
    static AnsiString Dir;
    if (SystemTreeView->Selected)
    {
        Dir = SystemTreeView->GetNodePath(SystemTreeView->Selected);
        if (Dir == "")
        {
            ExtractBitBtn->Enabled = false;

        }
        else
        {
            ExtractBitBtn->Enabled = true;
            ExtractToComboBox->Text = Dir;
            ExtractToComboBox->Hint = Dir;
        }
    }
    else
    {
        ExtractBitBtn->Enabled = false;
    }
}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::ExtractToComboBoxChange(TObject *Sender)
{
    ExtractToComboBox->Hint = ExtractToComboBox->Text;
    ExtractBitBtn->Enabled = ExtractToComboBox->Text != "";
}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::SpeedButton1Click(TObject *Sender)
{
    try
    {
        SystemTreeView->Directory = ExtractToComboBox->Text;
    }
    catch(...) {}
}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::NewBitBtnClick(TObject *Sender)
{
    // Set label and edit text
    if (ExtractToComboBox->Text == "")
    {
        NewFolderForm->FileNameLabel->Caption = "[None]";
        NewFolderForm->DirNameEdit->Text = "";
    }
    else
    {
        NewFolderForm->FileNameLabel->Caption = MinimizeName(ExtractToComboBox->Text,
                                                          NewFolderForm->FileNameLabel->Canvas,
                                                          NewFolderForm->FileNameLabel->Width);
        NewFolderForm->DirNameEdit->Text = ExtractToComboBox->Text;
    }

    // Show
    NewFolderForm->ShowModal();
    if (NewFolderForm->ModalResult == mrCancel)
        return;

    ForceDirectories(NewFolderForm->DirNameEdit->Text);
    if (DirectoryExists(NewFolderForm->DirNameEdit->Text))
    {
        ExtractToComboBox->Text = NewFolderForm->DirNameEdit->Text;
        ExtractToComboBox->Hint = NewFolderForm->DirNameEdit->Text;
        SystemTreeView->Directory = NewFolderForm->DirNameEdit->Text;
    }
    else
        Application->MessageBox("Couldn't create new Folder!", "Error", MB_OK | MB_ICONERROR);

}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::ExtractBitBtnClick(TObject *Sender)
{
    // Add dir to list
    if (ExtractToComboBox->Items->IndexOf(ExtractToComboBox->Text) == -1)
        ExtractToComboBox->Items->Add(ExtractToComboBox->Text);
}
//---------------------------------------------------------------------------
void __fastcall TExtractForm::FormDestroy(TObject *Sender)
{
    /* --- Save settings --- */
    TRegistry* thisReg = new TRegistry();
    thisReg->OpenKey("SOFTWARE\\JZip\\ExtractForm", true);

    thisReg->WriteString("Extract To", ExtractToComboBox->Items->CommaText);
    thisReg->WriteInteger("Overwrite Files", OverwriteCheckBox->Checked);
    thisReg->WriteInteger("Skip Older Files", SkipOlderCheckBox->Checked);
    thisReg->WriteInteger("Use Folder Names", UserFolderNamesCheckBox->Checked);

    thisReg->WriteString("Last Extract To", ExtractToComboBox->Text);

    // Clean up
    delete thisReg;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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