Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2007
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Actualizar ProgressBar segun se rellena una StringGrid ó DBGrid

Buenas a todos

Por mas que estoy buscando información en internet no he encontrado nada que me pueda orientar.

El tema en cuestión es que se vaya rellenando una barra de progreso mientras se rellenan las celdas de una StringGrid.

A ver si alguien podría orientarme o decirme donde puedo encontrar información al respecto.


Muchas Gracias a todos
Responder Con Cita
  #2  
Antiguo 14-12-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Bueno, deduzco que para llenar el StringGrid utilizas un bucle, ¿no? un for, un while o un repeat.

Pues coloca una TProgressBar, dale a su propiedad Max el número de iteraciones del bucle (esto es, las veces que se repite) y cada vez que el bucle se ejecute una vez, pues pones una de estas tres cositas:

Código Delphi [-]
ProgressBar.StepIt; //Coloca antes la propiedad Step en 1
ProgressBar.Position:=ProgressBar.Position;
Inc(ProgressBar.Position);


Y después, si mal no recuerdo, para que se vea el efecto tienes que llamar al método Refresh o Repaint (no recuerdo bien ) del Form donde esté o el suyo propio (el de la progressbar, digo).

Espero que te sirva de ayuda. Y mira en la ayuda de Delphi para más información.

Saludos.



Por cierto... ¡¡¡bienvenido al club!!!. Dale un repaso a la guía de estilo (esto de la barra de progreso ya está muy visto )

(vaya, yo dando la bienvenida a alguien... )

Última edición por ixMike fecha: 14-12-2007 a las 20:45:54.
Responder Con Cita
  #3  
Antiguo 14-12-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por ixMike Ver Mensaje
(vaya, yo dando la bienvenida a alguien... )
Es la Primera Vez amigo Ix?.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 14-12-2007
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
No funciona

Gracias pero eso no funciona.
Yo utilizo el evento onDrawCell para rellenar las celdas cogiendo la informacion de un array global. Y dentro de onDrawCell no he podido actualizar ninguna progressbar.

TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

L := Rect.Left + (Rect.Right - Rect.Left - bmp[5*ARow+ACol].Width) div 2;
T := Rect.Top + (Rect.Bottom - Rect.Top -bmp[5*ARow+ACol].Height) div 2;
with StringGrid1.Canvas do
Draw(L, T, bmp[5*ARow+ACol]);

Asi es como la relleno mas o menos.

He buscado en todos los foros del club delphi con la busqueda de progressbar y no he encontrado nada que me oriente.

Gracias
Responder Con Cita
  #5  
Antiguo 14-12-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Ya leiste Guía de Estilo de estos foros?

También te recomiendo que uses las etiquetas [ delphi ] [ /delphi ] (sin los espacios en blanco) cuando quieras agregar código fuente en Delphi...

Sobre tu problema, usas algún for o while para ir llenando el StringGrid?

Algo como:

Código Delphi [-]
for I := 0 to 10 do
begin
  // Agrego dato al StringGrid...
  // Incrementamos el valor de posición de la progressbar
  ProgressBar1.StepIt;
  // Permitimos que se procesen los mensajes para que se refresque la barra de progreso
  Application.ProcessMessages
end;


Saludos...
Responder Con Cita
  #6  
Antiguo 14-12-2007
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Mi StringGrid esta formada por bmps, como el xp o el acdsee (thumbnails). Las celdas tienen el fondo de color con el bmp centrado.
Entonces de la forma que pones no se como pasar el bmp a la StringGrid

Gracias de nuevo
Responder Con Cita
  #7  
Antiguo 14-12-2007
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Perdon por si hace falta

Código Delphi [-]
bmp: Array [0..1000] of TBitmap;

gracias
Responder Con Cita
  #8  
Antiguo 15-12-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Cita:
Empezado por enecumene Ver Mensaje
Es la Primera Vez amigo Ix?.
En el club, creo que esta es la segunda vez (o la tercera, ¡si es que todos se me adelantan siempre!)


Cita:
Empezado por jaimeh
bmp: Array [0..1000] of TBitmap;
yo creo que declarar eso puede ser peligroso... piénsalo... sólo con que cada bitmap ocupe 100KB en memoria, ¡la variable bmp ocupará 100MB! eso es mucha memoria. Pero bueno, como mucho se ralentizaría la máquina (creo, ya he dicho).

Si utilizas DrawCell para dibujar las celdas, entonces, antes de cada dibujado, tendrías que asignar la propiedad Max de la progressbar al número de celdas, y la propiedad position a cero, y cada vez que se dibuje una celda (esto es, en el evento OnDrawCell) incrementar en uno la posición del progressbar. Pero recuerda llamar después de esto a Refresh, Repaint, ProcessMessages o algo similar, porque sino no verás el resultado en pantalla.


Para más información con progressbar mira la ayuda de Delphi.


Saludos.
Responder Con Cita
  #9  
Antiguo 19-12-2007
jaimeh jaimeh is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Poder: 18
jaimeh Va por buen camino
Si, posiblemente sea mucha memoria, debería mantener solo en memoria los bmps que se visualizaran en la stringgrid por defecto, que son 30 celdas, e ir agregando y quitando bmps segun los necesitara o no.
Está claro que al programa le falta mucho, pero solo quería construir un simple visualizador de fotografías que fuera ligero.
Al final, la actualización de la ProgressBar la hago en un procedimiento donde genero los bmps en memoria, que eso es lo que realmente tarda, y antes no se porque, no me dejaba (funcionaba).


Gracias a todos por las respuestas.
Responder Con Cita
Respuesta



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
actualizar datos de una tabla según datos de otra. GustavoCruz SQL 10 01-06-2007 23:18:44
Actualizar ProgressBar de un formulario desde DataModule Jesús Pena Varios 2 13-04-2007 01:27:13
Actualizar datos de un StringGrid desde DB BlackDaemon SQL 37 12-04-2007 07:38:32
Resultados en DBGrid según filtrado Mathom Varios 8 15-12-2005 14:19:04
Actualizar un campo segun opcion de picklist de otra columna de un dbgrid nefy Conexión con bases de datos 5 17-01-2004 20:11:34


La franja horaria es GMT +2. Ahora son las 13:05:21.


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