Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.17;
Скачать: CL | DM;

Вниз

копирование файлов с Progress Bar   Найти похожие ветки 

 
Mistic ©   (2003-11-06 13:37) [0]

Простите за ламерский вопрос, надо копировать файлы с отображением индикатора копирования в ProgressBar на Form. Если можно киньте работающую функцию,если нет объясните как сделать.


 
malamba   (2003-11-06 13:40) [1]

НЕ знаю, как с копированием, а вот у меня прога заполняет Вордовсий файл всякой требухой.
В код я всунул

PanelForm.Visible:=True;
ProgressBarAct.Visible:=True;
PanelForm.BringToFront;
PanelForm.Update;

ProgressBarAct.StepIt;

юююю
ProgressBarAct.StepIt;
юююю
ProgressBarAct.StepIt;
юююю
ProgressBarAct.Position:=ProgressBarAct.Max;

ююю - это выполняемый код


 
[lamer]Barmaglot ©   (2003-11-06 13:52) [2]

SHFILEOPSTRUCT?


 
Gray Angel   (2003-11-06 13:57) [3]

Собственная функция копированя (например посредством потоков), засунутая в отдельный процесс, в котором есть ссылка на объект типа TProgressBar.

У меня по крайней мере так. Если кто знае стандартные средства, заделитесь опытом плизз.


 
Stas ©   (2003-11-06 14:01) [4]

Есть API функция копирования файлов, которая отображает окно с ProgressBar, так как в Explorer.


 
gek ©   (2003-11-06 14:01) [5]

http://www.swissdelphicenter.ch/en/showcode.php?id=330


 
Романов Р.В. ©   (2003-11-06 14:02) [6]

F1 - CopyFileEx
LPPROGRESS_ROUTINE lpProgressRoutine, // pointer to the callback function

SHFileOperation


 
serge   (2003-11-06 14:03) [7]

Load from WWW.ИСХОДНИКИ.РУ
Копирование файлов со стандартным диалоговым окошком.
Компилятор: Delphi

Следующий пример демонстрирует использование функции SHFileOperation для копирования нескольких файлов и отображения стандартного системного диалога копирования файлов. Следующие флаги так же можно использовать для удаления, перемещения и переименования группы файлов.

TO_COPY
FO_DELETE
FO_MOVE
FO_RENAME

Замечание: Буфер, который содержит имена файлов для копирования должен заканчиваться двумя нулями;

Пример:

uses ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
var
Fo : TSHFileOpStruct;
buffer : array[0..4096] of char;
p : pchar;

begin
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
p := StrECopy(p, "C:\DownLoad\1.ZIP") + 1;
p := StrECopy(p, "C:\DownLoad\2.ZIP") + 1;
p := StrECopy(p, "C:\DownLoad\3.ZIP") + 1;
StrECopy(p, "C:\DownLoad\4.ZIP");

FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := "D:\";
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or
(Fo.fAnyOperationsAborted <> false)) then
ShowMessage("Cancelled")
end;


 
Gray Angel   (2003-11-06 14:05) [8]

To Stas: А название API функции можно узнать плз?


 
Stas ©   (2003-11-06 14:10) [9]

С помощью этой процедуры можно копировать файлы и папки она построена на API, при копировании ввыодится окно с индикатором.

Procedure CopyFolder (OutDir,InDir:String;Handle:HWND);
var
OpStruc: TSHFileOpStruct;
frombuf, tobuf: Array [0..128] of Char;
Begin
FillChar( frombuf, Sizeof(frombuf), 0 );
FillChar( tobuf, Sizeof(tobuf), 0 );
StrPCopy( frombuf, OutDir );
StrPCopy( tobuf, Indir );
With OpStruc DO Begin
Wnd:= Handle;
wFunc:= FO_COPY;
pFrom:= @frombuf;
pTo:=@tobuf;
fFlags:= FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
fAnyOperationsAborted:=false;
hNameMappings:= Nil;
lpszProgressTitle:= Nil;
end;
ShFileOperation( OpStruc );
end;


 
Mistic ©   (2003-11-06 14:30) [10]

Мне нужно чтобы ProgressBar выходил не в отдельном окошке, а отображался на моей форме. с ShFileOperation и так все ясно


 
Stas ©   (2003-11-06 14:34) [11]

А че там сложного ?


 
Stant ©   (2003-11-06 14:39) [12]

Напиши свою функцию CopyFile, копируй блоками по 64kb и после копирования каждого блока обновляй инфу в ProgressBar и вызывай Application.ProcessMessages



Страницы: 1 вся ветка

Текущий архив: 2003.11.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
4-56957
Marat_n
2003-09-22 21:41
2003.11.17
программа, работающая во время простоя системы


6-56785
undersun
2003-09-19 13:50
2003.11.17
Поиск и проверка анонимных прокси


1-56653
Niobe
2003-11-05 12:15
2003.11.17
Запретить изменение размеров формы


1-56618
Quit
2003-11-05 18:16
2003.11.17
WinExec помогите разобраться


14-56820
Marser
2003-10-25 13:51
2003.11.17
AVR 90S2313