Page 1 of 1

Pantalla de carga personalizada msgrun - Resuelto

PostPosted: Tue May 23, 2023 6:11 pm
by nlerdafehn
Buenas tardes foro,

Tengo el siguiente codigo, que lo copie de la fuente de msgrun y lo personalize. Le pongo el logo del producto, le saco el titulo y pongo una leyenda. Hasta ahi todo excelente. El problema radica en que no se como hacer para que se active una función que ejecute la acción y a su vez, muestre mi pantalla de carga. Si hago como esta en msgrun con oDlg:bStart, la pantalla queda en blanco, ya he intentado varias cosas, e inclusive multi-thread pero no logro que se cumpla el objetivo. Si a la función de callback le hago un msginfo o algun cartel, ahi SI aparece la pantalla de carga, sino, queda en blanco hasta que termine de ejecutarse.

Code: Select all  Expand view
function Loading(cCaption, bAction, oWndParent)
  LOCAL oDlg, nWidth, uReturn := .f., obrush
 
  DEFAULT bAction  := { || WaitSeconds( 1 ) },;
    cCaption := "Aguarde unos instantes..."

  SET RESOURCES TO 'BARRAS.DLL'

  DEFINE FONT oFuentbt  NAME "Segoe UI Semibold"   SIZE 0, -15
 
  DEFINE DIALOG oDlg RESOURCE "dl_loader"
  Define brush obrush COLOR nRGB(255,255,255)
   
  REDEFINE XIMAGE oImg  ID 4001 RESOURCE '#7777' OF oDlg ADJUST    
  REDEFINE SAY ID 4002 PROMPT cCaption OF oDlg  font oFuentbt TRANSPARENT CENTER
  oDlg:SetBrush( oBrush )      
 
  ACTIVATE DIALOG oDlg ON INIT (oDlg:Center( oWndParent )) on PAINT loadingDoIt(bAction, oDlg, uReturn)  
 
    return uReturn

    function loadingDoIt(bAction, oDlg, uReturn)
  uReturn := Eval( bAction, oDlg )
  oDlg:End()
  SysRefresh()
 
return .t.
 

Re: Pantalla de carga personalizada msgrun - Esperar carga

PostPosted: Tue May 23, 2023 11:47 pm
by nlerdafehn
Bueno, gracias a chatGPT hice que funcione con un timer y va GENIAL.

Comparto la respuesta para el que le interese para hacer un msgrun personalizado con su logo. Donde se pasa el mensaje, la función a ejecutar mientras se muestra el mensaje de carga, y la ventana padre para que se centre.

Code: Select all  Expand view
FUNCTION Loading(cCaption, bAction, oWndParent)
   LOCAL oDlg, nWidth, obrush
 
   DEFAULT bAction  := { || WaitSeconds( 1 ) },;
     cCaption := "Aguarde unos instantes..."
   
   DEFINE FONT oFuentbt  NAME "Segoe UI Semibold"   SIZE 0, -15
 
   DEFINE DIALOG oDlg RESOURCE "dl_loader"
   Define brush obrush COLOR nRGB(255,255,255)
     
   REDEFINE XIMAGE oImg  ID 4001 RESOURCE '#7777' OF oDlg ADJUST    
   REDEFINE SAY ID 4002 PROMPT cCaption OF oDlg  font oFuentbt TRANSPARENT CENTER
   oDlg:SetBrush( oBrush )      
 
   ACTIVATE DIALOG oDlg ON INIT oDlg:Center( oWndParent ) on paint timer(bAction, oDlg)
   RETURN uReturn
 
   function timer(bAction, oDlg, uReturn)
 Define Timer oTimer  INTERVAL 1000 Action loadingDoIt(bAction, oDlg, uReturn)
 ACTIVATE TIMER oTimer
   return .t.
 
   FUNCTION loadingDoIt(bAction, oDlg)
   otimer:end()
 uReturn := .f.
 uReturn := Eval( bAction, oDlg )
   oDlg:End()
   SysRefresh()  
   RETURN .T.

Re: Pantalla de carga personalizada msgrun - Resuelto

PostPosted: Wed May 24, 2023 12:39 pm
by karinha
Nicolás, ¿Puede hacer que el RESOURCE '#7777' y RESOURCE "dl_loader" esté disponible? Sería muy amable de tu parte y ayudaría mucho.

Gracias.

Regards, saludos.

Re: Pantalla de carga personalizada msgrun - Resuelto

PostPosted: Wed May 24, 2023 1:27 pm
by albeiroval
Nicolas, En vez de usar una imagen se podria usar una progress bar, o un Gif ?

Re: Pantalla de carga personalizada msgrun - Resuelto

PostPosted: Sat May 27, 2023 1:46 am
by nlerdafehn
No sabria como subirlo aqui la .dll pero es super basico. Cree un nuevo dialogo, puse meramente un image y un text. Nada mas. Y despues lo redefini. El #7777 es el logo del producto.

Si, el GIF podrias usarlo citandolo directamente desde un archivo en la carpeta del sistema, con FILENAME. El progressbar deberias darle la funcionabilidad e ir pasando los parametros en las funciones de ejecuccion para que vayan actualizando el progress bar.

Yo utilizo bastante msgmeter que funciona muy bien, pero podrias personalizarlo tambien. Deberias echarle un ojo al source

Re: Pantalla de carga personalizada msgrun - Resuelto

PostPosted: Sat May 27, 2023 1:42 pm
by karinha
Nicolás, Utilice la nube de archivos. Cree un .RAR o .ZIP y publique el ENLACE(link) para la descarga.

https://mega.nz/

Gracias, saludos.