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 11-07-2024
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: 304
Poder: 21
elrayo76 Va por buen camino
Pantalla de proceso y barra de progreso

Buenas a todos,


Tengo una pantalla en mi aplicación Delphi que cuando se clickea sobre un botón para procesar información muestra una barra de progreso que está en otro formulario. El problema es que el formulario de la barra de progreso no se puede mostrar con ShowModal porque el formulario dejaría de procesar.


El problema es que si alguien presiona sobre el formulario de proceso la barra pasa a estar en un segundo plano, cosa que no debería, esta debería estar en primer plano siempre y cerrarse cuando se termina el proceso de los datos.


Hay alguna forma de solucionar esto?. Hay montón de aplicaciones que mientras procesa un formulario muestra una barra de progreso y esta no se puede pasar a segundo plano. Si se presiona sobre el formulario que la abrió no te deja poner a este en primer plano.


Desde ya muchas gracias por las respuestas
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #2  
Antiguo 11-07-2024
Arturo.Molina Arturo.Molina is offline
Miembro
 
Registrado: feb 2018
Posts: 32
Poder: 0
Arturo.Molina Va por buen camino
Hola,
¿y por qué no pones la barra de progreso en el mismo formulario que el botón?

Puedes colocar su propiedad visible a false y luego:
Código Delphi [-]
barra.visible := true;
// proceso que actualiza la barra
barra.visible := false;
Responder Con Cita
  #3  
Antiguo 11-07-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.432
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por elrayo76 Ver Mensaje
Tengo una pantalla en mi aplicación Delphi que cuando se clickea sobre un botón para procesar información muestra una barra de progreso que está en otro formulario. El problema es que el formulario de la barra de progreso no se puede mostrar con ShowModal porque el formulario dejaría de procesar.

Aunque no muestres el formulario con ShowModal, puedes ponerle en la propiedad FormStyle el valor fsStayOnTop.
Eso no lo muestra modal, pero debería mantenerlo siempre en primer plano.
https://docwiki.embarcadero.com/Libr...Form.FormStyle
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 11-07-2024
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: 304
Poder: 21
elrayo76 Va por buen camino
Cita:
Empezado por Arturo.Molina Ver Mensaje
Hola,
¿y por qué no pones la barra de progreso en el mismo formulario que el botón?

Puedes colocar su propiedad visible a false y luego:
Código Delphi [-]
barra.visible := true;
// proceso que actualiza la barra
barra.visible := false;
Esto que dices lo he pensado. Hasta pense en poner todo lo de la barra en un Frame que luego lo cargo por código y tengo todo centralizado en un solo lugar de como debe funcionar la barra. Porque imaginate que hoy tienes la barra en distintos formularios, el día de mañana la tienes que cambiar, vas a tocar unos cuantos formularios para el cambio?, y si te olvidas de algo y alguna queda distinta, horrible eso.

Igualmente he visto varias aplicaciones que tienen un formulario independiente para la barra. En uno la puedes mover por la pantalla (no es lo que busco) pero no puedes hacer click en el formulario que la inicio porque no te deja trabajar sobre este hasta que no se termine el proceso o sea cancelado.

Saludos
Saludos
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #5  
Antiguo 11-07-2024
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: 304
Poder: 21
elrayo76 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Aunque no muestres el formulario con ShowModal, puedes ponerle en la propiedad FormStyle el valor fsStayOnTop.
Eso no lo muestra modal, pero debería mantenerlo siempre en primer plano.
https://docwiki.embarcadero.com/Libr...Form.FormStyle

No recuerdo si lo he probado, pero voy a ver que resultados da y comentare por si a alguien le puede servir.

Saludos
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #6  
Antiguo 18-07-2024
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: 304
Poder: 21
elrayo76 Va por buen camino
Buenas noches,

Paso a comentarles que al parecer la solución de poner el formulario StayOnTop funcionó, pero no como todos puedan creer. Para que funcionara cuando se crea el formulario en el evento "formCreate" tuve que poner lo siguiente como primera línea:

Código Delphi [-]
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

y el el evento "FormDestroy" del formulario por seguridad puse lo siguiente:
Código Delphi [-]

SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

Esta fue la única forma de que funcionara porque no se que pasa que ninguna de las versiones de Delphi que he probado funciona la propiedad "stayOnTop". La última versión que probé y con la que realmente vengo trabajando es con la 11.2

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

Última edición por Neftali [Germán.Estévez] fecha: 18-07-2024 a las 08:29:45. Razón: Añadir TAG's al código
Responder Con Cita
  #7  
Antiguo 18-07-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.432
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por elrayo76 Ver Mensaje
Paso a comentarles que al parecer la solución de poner el formulario StayOnTop funcionó, pero no como todos puedan creer.
Habría que ver qué códigos estás utilizando en tu aplicación en los eventos OnCreate, OnShow, ... o cómo estás gestionando los formularios. Ver si estás redefiniendo procedimientos como los CreateParams o similares.
La propiedad fsStayOnTop funciona correctamente. Yo la estoy usando y la he probado en diferentes versiones.
Si la activas para un formulario lo mantendrá por encima del resto de los formularios de la aplicación.

Estaría bien, que si comentas que no te ha funcionado, explicaras el porqué.

Cita:
Empezado por elrayo76 Ver Mensaje
Para que funcionara cuando se crea el formulario en el evento "formCreate" tuve que poner lo siguiente como primera línea:
Comentaba lo anterior, porque al final si revisas el código de la VCL, la propiedad fsStayOnTop en un formulario acaba haciendo lo siguiente:

Código Delphi [-]
SetWindowPos(Handle, HWND_STYLE[FFormStyle = fsStayOnTop], 0, 0, 0, 0,
          SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_NOOWNERZORDER);

Si te fijas es bastante similar o igual a lo que tú has puesto en tu código.
Si ver tu código (que sólo conoces tú) es difícil saber porqué esa línea no ha funcionado (o no se ha ejecutado) y sí la que tú has puesto en el FormCreate.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores 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
Dudas con barra de progreso Badillo Varios 2 28-06-2021 09:09:36
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ón 5 26-02-2008 16:51:55
Mostrar progreso de descarga de IndyFTP con barra de progreso devicer Internet 2 05-12-2005 14:59:32


La franja horaria es GMT +2. Ahora son las 22:15:12.


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