Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
LoadFromFile con una progressbar

Quisiera implementar lo siguiente que paso a detallar:

Tengo un formulario con un datamodule asociado (el datamodule se encarga de cualquier cosa que implique la actualización de la base de datos), en dicho datamodule hago un loadfromfile de archivos jpg (hasta aquí todo correcto y lo tengo funcionando) y lo que quiero es que al mismo tiempo que hago la carga del fichero se me actualice en el formulario una progressbar para que me informe de la carga (tengo imágenes muy grandes - 18 Mgb-) y el proceso puede tardar.

¿Se puede hacer esto? ¿como?.


Gracias de antemano

Responder Con Cita
  #2  
Antiguo 17-04-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
Si estas utilizando un objeto TPicture puedes escribir código en el evento OnProgress. Lo que te debe interesar el la constantes PercentDone que indica que porcentaje del proceso que se ha realizado, este lo pasas la progresbar que debe tener como su valor maximo 100 y minimo 0.

por ejemplo :

Código Delphi [-]
procedure TForm1.Image1Progress(Sender: TObject; Stage: TProgressStage;
  PercentDone: Byte; RedrawNow: Boolean; const R: TRect;
  const Msg: String);
begin
miProgressbar.Position := PercentDone;
form1.update;
end;

Si no estás utilizando un tPicture, entonces necesitarás ir a niveles más bajos. Cualquier cosa, dejamela saber. Saludos.
Responder Con Cita
  #3  
Antiguo 17-04-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
No uso esa clase (TPicture)

En realidad utilizo un componente TJVDBImage (de las JEDI) directamente (detecta varios tipos de formatos gráficos y me libro de controlarlos yo) y por lo que he estado mirando no heredan de forma esplícita ninguna propiedad de la Clase TPicture.

No sé como hacerlo.
Responder Con Cita
  #4  
Antiguo 17-04-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
Entonces estás utilizando un componente de base de datos, el componente del Jedi para ver campos de imagenes.

Me imagino que utilizas el LoadFromfile para crear o modificar un registro, si es así, me imagino que utilizas un código como el siguiente:

Código Delphi [-]

jvDBImage.Picuture.LoadFromFile('...');

Entonces, intenta crear un nuevo procedimiento similar al que te mostré anteriormente, luego en el procedimiento OnCreate del formulario (si es que jvDBImage esta en un formulario), asigna el método OnProgress del jvDBImage.Picture al procedimiento que hayas escrito.

Código Delphi [-]

Procedure Form1.OnCreate(Sender:TObject)
Begin
jvDBImage.Picture.OnProgress := ProcedimeintoOnProgressQueHayasEscrito;

{   ó haciendo referencia al ejemplo anterior    }
jvDBImage.Picture.OnProgress := Form1.Image1Progress;

...
end;

espero que te sirva.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #5  
Antiguo 18-04-2007
Avatar de Jesús Pena
Jesús Pena Jesús Pena is offline
Miembro
 
Registrado: nov 2005
Posts: 88
Poder: 19
Jesús Pena Va por buen camino
Si pero no lo tengo claro

Me podrías dar alguna información mas sobre cómo hacerlo o algún sitio donde pueda consultar esto.

Gracias.
Responder Con Cita
  #6  
Antiguo 18-04-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
me refería a esto

Código Delphi [-]
Form1 = Class(Form)
Procedure Image1Progress(Sender: TObject; Stage: TProgressStage; PercentDone: Byte; 
RedrawNow: Boolean; const R: TRect;const Msg: String);

Procedure OnCreate(Sender:TObject);
end;

Implementation
{en el siguiente procedimiento es donde actualizamos el progressbar}
procedure TForm1.Image1Progress(Sender: TObject; Stage: TProgressStage;
  PercentDone: Byte; RedrawNow: Boolean; const R: TRect;
  const Msg: String);
begin
miProgressbar.Position := PercentDone;
form1.update;
end;

Procedure Form1.OnCreate(Sender:Tobject);
Begin
 jvDBImage1.Picture.OnProgress := Image1Progress;
{en la línea anterior asignamos la propiedad "OnProgress"
del objeto picture contenido dentro del control jvDBImage,
al procedimiento que habíamos escrito anteriormente "Image1Progress"}
end;

En el primer procedimiento le decimos a la computadora que actualize el progressbar con el valor del progreso de carga que lleva la imagen.
en el segundo procedimiento "OnCreate" le decimos a la computadora que en el método OnProgress del objeto Picture ejecute el procedimiento "Image1Progress"

Ese es un resumen del código, pero esa es la ídea. No estoy seguro si funcionará pero la lógica me dice que sí.
Creo que tendras que agregar algunas exceptiones por si acaso algo falla. Fallaría si el control jvDBimage destruye el
objeto Picture cada vez que cambia de imagen o cuando no exista una imagen.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
LoadFromFile y la letra "Ñ" Flecha Varios 12 19-06-2007 11:35:01
ProgressBar en StatusBar CFPA86 Varios 2 22-02-2007 22:04:58
ProgressBar Con dos Formularios mcarazas Varios 2 23-06-2006 05:18:32
Progressbar mminorm Varios 1 29-05-2005 08:19:21
Problemas con Picture.LoadFromFile Ohcan Varios 6 05-02-2005 00:29:34


La franja horaria es GMT +2. Ahora son las 20:03:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi