/////////////////////////////////////////////////////////// // EiEdit // // Редактор части ресурсов Проклятых Земель // // Copyright (C) 2002 Gipat Group // // Распространяется на условиях // // Gipat Group's opened EI-editor-utility license // // версии 1.0 // // // // www.gipatgroup.org // /////////////////////////////////////////////////////////// //К работе над данным файлом приложили руки, ноги.... короче аффтары: // 1) Sagrer (sagrer@yandex.ru) //////////////////////////////////////////////////////////////////////// unit RBUnPackOptForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, initer, KOL, KOLForPaths; type TRBUnPackOptF = class(TForm) Label1: TLabel; Label2: TLabel; FileNameEd: TEdit; DirNameEd: TEdit; OkBut: TButton; CancelBut: TButton; BrowseFileBut: TButton; BrowseDirBut: TButton; GnrNamBut: TButton; OFD1: TOpenDialog; ReWriteCB: TCheckBox; procedure FormShow(Sender: TObject); procedure BrowseFileButClick(Sender: TObject); procedure GnrNamButClick(Sender: TObject); procedure BrowseDirButClick(Sender: TObject); procedure CancelButClick(Sender: TObject); procedure OkButClick(Sender: TObject); private { Private declarations } public { Public declarations } UnPackFileName : string; end; var RBUnPackOptF: TRBUnPackOptF; implementation uses DelF; {$R *.dfm} procedure TRBUnPackOptF.FormShow(Sender: TObject); begin FileNameEd.Text := UnPackFileName; DirNameEd.Text := GetExtensDirName(UnPackFileName); end; procedure TRBUnPackOptF.BrowseFileButClick(Sender: TObject); begin //По нажатию кнопки - открыть диалог выбора файла... //Подготовить диалог... If DirectoryExists(ExtractFilePath(FileNameEd.Text)) = true then begin OFD1.InitialDir := ExtractFilePath(FileNameEd.Text); OFD1.FileName := ExtractFileName(FileNameEd.Text); end else begin OFD1.InitialDir := DefalDir; end; //Запустить диалог и в случае его усешного завершения - обработать результат. If OFD1.Execute = true then begin FileNameEd.Text := OFD1.FileName; end; //И "сгенерить" имя папки DirNameEd.Text := GetExtensDirName(FileNameEd.Text); end; procedure TRBUnPackOptF.GnrNamButClick(Sender: TObject); begin DirNameEd.Text := GetExtensDirName(FileNameEd.Text); end; procedure TRBUnPackOptF.BrowseDirButClick(Sender: TObject); var ODD1 : POpenDirDialog; begin //По нажатию кнопки - открыть диалог выбора папки... //Подготовить диалог... ODD1 := NewOpenDirDialog('Выберите директорию, в которую будут распакованы файлы',[]); If DirectoryExists(DirNameEd.Text) = true then begin ODD1.InitialPath := DirNameEd.Text; end else begin ODD1.InitialPath := DefalDir; end; ODD1.WndOwner := Application.Handle; //Хендл "хозяина диалога"... //Запустить диалог и в случае его усешного завершения - обработать результат. If ODD1.Execute = true then begin DefalDir := AddLastSlash(ODD1.Path); AnIniFil.Load(IniFilPath); //Лоаднуть инишник. AnIniFil.WriteString('MainSettings','DefalDir',DefalDir); AnIniFil.Save(IniFilPath); //И савнуть. Типа все ок :) DirNameEd.Text := DefalDir; end; //И убить диалог... ODD1.Free; end; procedure TRBUnPackOptF.CancelButClick(Sender: TObject); begin ModalResult := mrCancel; end; procedure TRBUnPackOptF.OkButClick(Sender: TObject); var AllOk : boolean; begin //Ну типа распаковать все чего тока можно :). AllOk := false; //Типа индикатор. if DirectoryExists(DirNameEd.Text) = true then begin //Если папка уже существует, то ее надо прочистить... If ReWriteCB.Checked = true then begin DelForm.DelPath := DirNameEd.Text; DelForm.ShowModal; MkDir(DirNameEd.Text); If DirectoryExists(DirNameEd.Text) = true then begin AllOk := true; end; end else begin //Всеравно распаковать - по типу дополнить :) AllOk := true; end; end else begin //Если папка не существует - ее надо создать. MkDir(DirNameEd.Text); If DirectoryExists(DirNameEd.Text) = true then begin AllOk := true; end; end; If AllOk = true then begin //Если все в порядке - то можно распаковывать. ModalUnPackResToDir(FileNameEd.Text,DirNameEd.Text); end; If AllOk = true then begin ModalResult := mrOk; //Ну и ессно - не забыть закрыть окно. end else begin ModalResult := mrCancel; end; end; end.