Ver Mensaje Individual
  #1  
Antiguo 26-07-2023
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 290
Reputación: 21
elrayo76 Va por buen camino
Formulario con ProgressBar cierra al principal

Buenas a todos,

Tengo una aplicación con un TreeView el cual se carga desde un archivo. Mientras se carga el archivo se abre un formulario que tiene una barra de progreso que se va incrementando. El formulario de la barra de progreso lo abro en no modal para que se pueda ir ejecutando el código del formulario principal.

El tema es que esa misma barra de progreso la uso para cuando se hace click sobre alguno de los nodos del TreeView y se carga un ListView que está también en el formulario principal.

Ahora es donde viene el problema. Lo que sucede es que se ve como la barra de progreso se muestra y se actualiza, el Listview se carga perfecto pero al terminar la carga el formulario principal es como que se pone por detrás de todo lo que se tenga abierto (puede ser el entorno de Delphi)

Les pongo algo de código de como llamo al formulario con la barra de progreso al hacer click en un nodo y se carga el ListView.

Código Delphi [-]
frmProgressBar := TfrmProgressBar.Create(nil);

try
   frmProgressBar.Init('Leyendo archivo', 0, 1);  // Incializa el título, el mínimo y máximo de la barra de progreso.
   frmProgressBar.Message := 'Carga del ListView';  // Mensaje adicional en el form de barra de progreso.
   frmProgressBar.Show;

   // Método que va actializando el progreso de la barra.
   frmProgressBar.UpdateProgress(intEndRecord - intStartRecord);

   // Acá se lee el archivo y se va cargando el ListView.
   // Esto es un ciclo y dentro lo primero que hace es actualizar la barra por cada 1000 lineas leídas
   if (intRecord mod 1000) = 0 then
   begin
      frmProgressBar.Message := Format('Cargando el ListView... %s', [intRecord]);
      // Lo que se hace en este método es actualizar la posición de la barra,
      // Actualizar el mensaje, hacer un Update del formulario y un "Application.ProcessMessages

      frmProgressBar.UpdateProgress(intRecord - intStartRecord);
   end;

   // Acá toda la lógica para cargar el ListView con los datos leídos del archivo   

finally
   frmProgressBar.Release;
end;

Esto es todo. Espero que se entienda y sino es así me lo hacen saber.

Saludos,
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita