Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2010, 01:11   #1
casper0094
Пользователь
 
Регистрация: 19.03.2010
Сообщений: 31
Лампочка Копирование как в Totale

Доброго всем времени суток.
Пытаюсь сделать копирование как в Total Comander, точнее визуальное. Тоесть окошко с прогресс баром которое может работать в фоновом режиме. Пытаюсь вынести в отдельный поток однако незнаю как там создать форму.
casper0094 вне форума Ответить с цитированием
Старый 09.08.2010, 01:36   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Никак.

Вникать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 09.08.2010, 06:13   #3
Alexei91
Заблокирован
Форумчанин
 
Аватар для Alexei91
 
Регистрация: 30.12.2009
Сообщений: 544
Сообщение

Вот код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    pbCopyProgress: TProgressBar;
    cmbCopy: TButton;
    txtFrom: TEdit;
    txtTo: TEdit;
    Label2: TLabel;
    procedure cmbCopyClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  progress: TProgressBar;
  bCancelCopy: BOOL;

{$R *.dfm}

//Функция обратного вызова для отображения хода копирования
function CopyProgressFunc( TotalFileSize: Int64;
                           TotalBytesTransferred: Int64;
                           StreamSize: Int64;
                           StreamBytesTransferred: Int64;
                           dwStreamNumber: DWORD;
                           dwCallbackReason: DWORD;
                           hSourceFile: THandle;
                           hDestinationFile: THandle;
                           lpData: Pointer            ): DWORD; stdcall;
begin
  progress.Position := 100 * TotalBytesTransferred div TotalFileSize;
  Application.ProcessMessages;   //Чтобы не "зависал" интерфейс приложения
  CopyProgressFunc := PROGRESS_CONTINUE;
end;

procedure TForm1.cmbCopyClick(Sender: TObject);
begin
  if cmbCopy.Caption = 'Копировать' then
  begin
    //Запускаем копирование
    progress := pbCopyProgress; //Настроен от 0 до 100%
    bCancelCopy := FALSE;
    cmbCopy.Caption := 'Отмена';
    if CopyFileEx(PAnsiChar(txtFrom.Text), PAnsiChar(txtTo.Text),
                  Addr(CopyProgressFunc), nil, Addr(bCancelCopy),
                  COPY_FILE_FAIL_IF_EXISTS) = FALSE
    then
      MessageBox(Handle, 'Не удается скопировать файл', 'Копирование',
                 MB_ICONEXCLAMATION);
  end
  else
  begin
    //Останавливаем процесс копирования
    bCancelCopy := TRUE;
    cmbCopy.Caption := 'Копировать';
  end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  //Останавливаем процесс копирования
  bCancelCopy := TRUE;
end;

end.
Исходник прилагаю.
Т.к. пример достаточно простой,нужно указывать откуда копировать файла + имя коп. файла и куда копировать + имя коп. файла- так что нужные функции дальше сами добавите.
Почитайте книжку А.Чиртик ... "Delphi Трюки&Эффекты".
P.S.
Хуже занятия на свете нет - изобретать велосипед.
Вложения
Тип файла: zip Красивое копирование файла.zip (6.1 Кб, 99 просмотров)
Темы для WordPress. Русские WordPress шаблоны
Alexei91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование и вставка данных как значение. Shkoda Microsoft Office Excel 1 10.07.2010 13:51
Хитрое копирование ячеек! КАК? edition Microsoft Office Excel 3 01.07.2010 00:05
Копирование Bat{CMD}_Men Общие вопросы Delphi 3 18.04.2010 19:32
Копирование VVVasek Microsoft Office Excel 13 20.09.2008 23:12
Как работатать с записями в Delphi (копирование)? BJF.41 БД в Delphi 0 20.04.2007 21:55