![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Помогите ламеру, скажите, как сделать так, что бы прогресс бар отображал ход копирования папок с файлами (включая подкаталоги).
Я вот попоробовал добавить ПрогрессБар к исходнику "Copy Files" и не смог. Вот его код: Код:
procedure TForm1.Button1Click(Sender: TObject);
Label M;
var
OpStruc:TSHFileOpStruct;
frombuf,tobuf:array[0..128] of Char;
Dir1,Dir2,s:string;
begin
SelectDirectory('Просмотр каталога',Dir1,Dir2);
if Dir2='' then goto M;
FillChar(frombuf, Sizeof(frombuf), 0);
FillChar(tobuf, Sizeof(tobuf), 0);
// s:='';
StrPCopy(frombuf, 'd:\games');
StrPCopy(tobuf, Dir2);
with OpStruc do
begin
Wnd:=Handle;
wFunc:=FO_COPY;
pFrom:=@frombuf;
pTo:=@tobuf;
fFlags:=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:=False;
hNameMappings:=nil;
lpszProgressTitle:=nil;
end;
ShFileOperation(OpStruc);
M:
end;Да, и если нетрудно, скажите заодно, как узнать сколько файлов скопировано, сколько осталось и как получить все это счастье в текстовом формате, и можно ли к Код:
fFlags:=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION; Заранее спасибо. |
|
#2
|
||||
|
||||
|
По поводу копирования папок. Для корректного отображения всего этого дела, надо перед начало копирования подсчитать сколько файлов будет скопировано и самому копировать каждый файл. Для этого юзаем функции FindFirst и FindNext. Почитайте хелп к Делфи, там все хорошо написано.
|