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 |
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:
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 :o) 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... :)) |
Cita:
|
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 |
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:
Saludos... |
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 |
|
Cita:
Cita:
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. |
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. |
La franja horaria es GMT +2. Ahora son las 02:29:42. |
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