|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Animate, ProgressBar
У меня проблема с отображением процесса хода длительных операций, помогите разобраться:
На Panel2 есть Animate1 (CommonAVI=aviCopyFiles), ProgressBar1, Gauge1, Timer1. При нажатии Button1: Код:
procedure TForm1.Button1Click(Sender: TObject); begin Panel2.Visible:=True; Animate1.Active:=True; Timer1.Enabled:=True; CopyFile(PAnsiChar(ExistFile),PAnsiChar(NewFile),False); Animate1.Active:=False; Timer1.Enabled:=False; Panel2.Visible:=False; end; Код:
procedure TForm1.Timer1Event(Sender: TObject); begin Timer1.Enabled:=False; ProgressBar1.StepIt; if ProgressBar1.Position = ProgressBar1.Max then ProgressBar1.Position:=0; Gauge1.Progress:=Gauge1.Progress+1; if Gauge1.Progress = Gauge1.MaxValue then Gauge1.Progress:=0; Timer1.Enabled:=True; end; MAD: «code» tag. Последний раз редактировалось M.A.D.M.A.N., 13.07.2016 в 14:04. |
#2
|
||||
|
||||
Используй CopyFileEx с lpProgressRoutine или SHFileOperation и будет очень красиво.
А так событие таймера не срабатывает когда CopyFile выполняется. Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Спасибо, у меня в книге по Delphi бывает что чего-то не бывает. И во встроенной справке Delphi тоже такое бывает. Кстати, по сайту лазил, читал... А какая заморочка между 32 и 64-битными? У меня XP SP2 x86. А у товарища 8.3 x64 и ничего - работает. Единственное - это форма взяла его темы. Но я заменил Button на Panel, для формы и объектов определил стандартные цвета - и всё! Только заголовок остался по его теме...
|
#4
|
||||
|
||||
Мне SHFileOperation больше нравится. В нем уже отображается стандартный диалог копирования с именем объекта, откуда, куда, оценкой оставшегося времени, скоростью копирования, возможностью отмены операции, возможностью выполнения операции над несколькими файлами. Используются исключительно стандартные цвета и модальность над нужным окном.
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
У меня такой функции нет. Не подскажите код, как её использовать? Про копирование нескольких файлов - у меня так: ExtractFilePath(FileName) в Memo, а потом по нажатии Button "копировать" все файлы из списка Memo копируются в куда надо. Ну и составляется отдельно список файлов (с путями), которые не скопировались.
|
#6
|
||||
|
||||
Код:
uses ShellAPI, ... var SHFileOpStruct: TSHFileOpStruct; begin ZeroMemory(@SHFileOpStruct, SizeOf(TSHFileOpStruct)); SHFileOpStruct.Wnd:=Handle; SHFileOpStruct.wFunc:=FO_COPY; SHFileOpStruct.pFrom:='d:\HDD\Sw.vdi'#0; SHFileOpStruct.pTo:='d:\CommonFiles'; SHFileOpStruct.fFlags:=0; SHFileOpStruct.lpszProgressTitle:='CommonFiles'; SHFileOperation(SHFileOpStruct); end; Пишу программы за еду. __________________ |