![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Gu韆 de estilo | Buscar | Temas de Hoy | Marcar Foros Como Le韉os |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Dudas con barra de progreso
Saludos a todos, soy nuevo y necesito ayuda con el copiado con barra de progreso. He tomado el c骴igo que tienen publicado y lo acomode a un formulario de tipo di醠ogo, pero tengo varias dudas y quisiera sus opiniones. Les pongo el c骴igo y los puntos de dudas.
unit UBarraProgreso; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ShellAPI, XPMan, StdCtrls, System.UITypes; type TAccionFichero = (accCopiar, accMover); TFormBarraProgreso = class(TForm) Button5: TButton; LabelNombreArchivo: TLabel; ProgressBar1: TProgressBar; LabelHacia: TLabel; LabelDesde: TLabel; labelCopiando: TLabel; procedure Button5Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); private { Private declarations } FListaOrigen, FListaDestino: TStrings; FAccion: TAccionFichero; procedure MoverFicheros; procedure MoverFicheros2; public { Public declarations } property ListaOrigen: TStrings read FListaOrigen write FListaOrigen; property ListaDestino: TStrings read FListaDestino write FListaDestino; property Accion: TAccionFichero read FAccion write FAccion; end; var FormBarraProgreso: TFormBarraProgreso; implementation {$R *.dfm} var Cancel: LongBool; function ProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: Int64; dwStreamNumber, dwCallbackReason, hSourceFile, hDestinationFile: Cardinal; lpData: Pointer): Cardinal; stdcall; var Value: Cardinal; begin Application.ProcessMessages; case dwCallbackReason of CALLBACK_CHUNK_FINISHED: FormBarraProgreso.ProgressBar1.Position := (TotalBytesTransferred * 100) div TotalFileSize; end; Result := PROGRESS_CONTINUE; end; procedure TFormBarraProgreso.Button5Click(Sender: TObject); begin Cancel := True; Close //01-Cuando se cancela la acci贸n de copiar mediante el bot贸n Cancelar, entonces tambien cierre el formulario (No funciona, me pueden ayudar con alguna idea) end; procedure TFormBarraProgreso.FormActivate(Sender: TObject); begin MoverFicheros end; procedure TFormBarraProgreso.FormClose(Sender: TObject; var Action: TCloseAction); begin Cancel := True; ModalResult := mrOk //02-Cuando se cancela la acci贸n de copiar mediante el bot贸n Cerrar del formulario, entonces cancele y cierre el formulario (No funciona, me pueden ayudar con alguna idea) end; procedure TFormBarraProgreso.MoverFicheros; var i: Integer; begin for i := 0 to FListaOrigen.Count - 1 do begin labelCopiando.Caption := 'Copiando ' + IntToStr(i+1) + ' de ' + IntToStr(FListaOrigen.Count) + ' Archivos'; LabelDesde.Caption := 'Desde: ' + ExtractFilePath(FListaOrigen.Strings[i]); LabelHacia.Caption := 'Hacia: ' + ExtractFilePath(FListaDestino.Strings[i]); LabelNombreArchivo.Caption := ExtractFileName(FListaDestino.Strings[i]); if (FAccion = accCopiar) then CopyFileEx(pChar(FListaOrigen.Strings[i]), pChar(FListaDestino.Strings[i]), @ProgressRoutine, nil, @Cancel, 0); // else // 03-Llamar a la funcion o procedmiento que mover谩 los ficheros (Me pueden ayudar con alguna idea) if (Cancel = True) then Break; end; Cancel := True; FormBarraProgreso.Close //04-Cuando termine el proceso, entonces cierre el formulario de forma autom谩tica (No funciona, me pueden ayudar con alguna idea) end; // //Puntos en los que les pido ayuda para solucionarlos // //01-Cuando se cancela la acci贸n de copiar mediante el bot贸n Cancelar, entonces tambien cierre el formulario (No funciona, me pueden ayudar con alguna idea) //02-Cuando se cancela la acci贸n de copiar mediante el bot贸n Cerrar del formulario, entonces cancele y cierre el formulario (No funciona, me pueden ayudar con alguna idea) //03-Llamar a la funcion o procedmiento que mover谩 los ficheros (Me pueden ayudar con alguna idea) //04-Cuando termine el proceso, entonces cierre el formulario de forma autom谩tica (No funciona, me pueden ayudar con alguna idea) //05-Cuando cancelo la copia por cualquiera de las v�*as, cierro el formulario de forma manual despues de unos segundos; // entonces, cuando realizo nuevamente la ejecuci贸n del proceso (abir el formulario y ejecutar todo desde el principio) // abre bien el formulario, pero no copia nada, es decir no se jecuta la acci贸n alguna y supuestamente el formulario es operativamente funcional. // // Les dejo el c贸digo con el cual realizo la llamada al formulario { procedure TForm1.Button1Click(Sender: TObject); var xListaOrigen, xListaDestino: TStrings; begin xListaOrigen := TStringList.Create; xListaDestino := TStringList.Create; xListaOrigen.Add('D:\video1.avi'); xListaOrigen.Add('D:\video2.avi'); xListaOrigen.Add('D:\video3.avi'); xListaDestino.Add('F:\01-videoProcesado.avi'); xListaDestino.Add('F:\02-videoProcesado.avi'); xListaDestino.Add('F:\03-videoProcesado.avi'); Application.CreateForm(TFormBarraProgreso, FormBarraProgreso); FormBarraProgreso.Accion := accCopiar; FormBarraProgreso.ListaOrigen := xListaOrigen; FormBarraProgreso.ListaDestino := xListaDestino; FormBarraProgreso.ShowModal; FormBarraProgreso.Destroy; end; } end.v |
|
#2
|
||||
|
||||
|
Bienvenido a clubdelphi, por favor, no olvides leer nuestra gu韆 de estilo, gracias.
Has puesto tu pregunta en el foro "Trucos", y no es un truco, por lo que la paso a varios. Recuerda, para otras ocasiones que pongas c骴igo, usa las etiquetas apropiadas, ejemplo:
__________________
La otra gu韆 de estilo | B鷖quedas avanzadas | Etiquetas para c骴igo | Colabora mediante Paypal 趌tima edici髇 por Casimiro Notev� fecha: 26-06-2021 a las 10:44:08. |
|
#3
|
||||
|
||||
|
Hola y bienvenido a los foros.
Para estos casos, con tanto c骴igo, es m醩 sencillo para el resto de usuarios entender el problema y hacer cambios, que hagas un peque駉 proyecto de ejemplo y lo adjuntes al mensaje (s髄o c骴igo fuente, no ejecutables). De esa es m醩 f醕il probarlo. Si no te deja colocar links o adjuntos contacta conmigo por privado, me lo env韆s y yo lo adjunto.
__________________
Germ醤 Est関ez => Web/Blog Gu韆 de estilo, Gu韆 alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: M醩 tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | 趌timo mensaje |
| Barra de progreso | nabucodonosor | Delphi para la web | 3 | 01-11-2012 10:57:04 |
| Barra de Progreso | XcamX | MySQL | 1 | 21-12-2010 11:24:52 |
| Barra de progreso? | marlulipe | Impresi髇 | 5 | 26-02-2008 16:51:55 |
| Barra de progreso al compactar | Aprendiendo | Conexi髇 con bases de datos | 2 | 02-05-2007 20:42:32 |
| Mostrar progreso de descarga de IndyFTP con barra de progreso | devicer | Internet | 2 | 05-12-2005 14:59:32 |
|