Page 1 of 1

Desaparecen Bitmaps en columnas XBROWSE(SOLUCIONADO)

Posted: Sat Jan 04, 2020 4:50 pm
by jvtecheto
Hola foro:

Coloco bitmaps en las columnas del XBROWSE y funciona muy bien la primera vez que abro la ventaja hija
en donde esta el XBROWSE. Lo hago de la siguiente manera

Code: Select all

   :aCols[1]:AddResource( aDbfBmps )
      :aCols[1]:bBmpData := {|| IIF( Emp->Cerrada, 4, 3 ) }
      :aCols[2]:AddResource( aDbfBmps )
      :aCols[2]:bBmpData := {|| IIF( Emp->Activo, 1, 2 ) }   
 
Pero, sorprendentemente la segunda vez y sucesivas que muestro el XBROWSE o sea cierro la ventaja hija
y la vuelvo a mostrar, salen las 2 columnas en blanco.
Antes usando el LISTBOX no ocurria ese comportamiento.

Espero vuestras ayudas, sugerencias.

Saludos

Jose.

Re: Desaparecen Bitmaps en columnas XBROWSE

Posted: Sat Jan 04, 2020 4:53 pm
by Armando
jvtecheto:

Solo una idea, ¿será que al cerrar la ventana hija también destruyes el bitmap (oBmp:END()?, como dije
es solo una idea.

Saludos

Re: Desaparecen Bitmaps en columnas XBROWSE

Posted: Sat Jan 04, 2020 5:21 pm
by cnavarro
Jose, cuando entres en la function que hace la ventana "hija" en la que te aparece el problema, pon al principio, antes de definir el xbrowse ( a modo de debug para ver el contenido de ese array )

Code: Select all

xbrowse( aDbfBmps )
 

Re: Desaparecen Bitmaps en columnas XBROWSE

Posted: Mon Jan 06, 2020 10:49 am
by jvtecheto
Gracias Armando y Cristobal por vuestro interes.

Pero no consigo resolverlo.
Por dar mas datos el codigo que os comento funciona perfecto en LISTBOX, pero como estoy migrando todas las rejillas a XBROWSE me aparece este problema.

mirad cargo los bitmaps en el modulo principal de la aplicacion con esto, aDbfBmps es una variable estatica.

Code: Select all

aDbfBmps = { LoadBitmap( GetResources(), "CHECKED" ), ;  // Activo  1
                LoadBitmap( GetResources(), "UNCHECKED" ), ;   // Desactivado 2
                LoadBitmap( GetResources(), "CANDADO2" ), ;  // Abierto  3
                LoadBitmap( GetResources(), "CANDADO1" )  } // Cerrado  4
 
utilizo esta funcion para exportar a otros modulos.

Code: Select all

FUNCTION GetDbfBmpsMain() 
RETURN aDbfBmps 
 
y la llamo desde el modulo que creo la ventana hija con esto.

Code: Select all

LOCAL aDbfBmps := GetDbfBmpsMain()
 
como comento todo esto con listbox perfecto.

Code: Select all

@ 2, 0 LISTBOX Empw ;
         FIELDS aDbfBmps[ IF( Emp->Cerrada, 4, 3 ) ], aDbfBmps[ IF( Emp->Activo, 1, 2 ) ], Emp->codigo, Emp->Nombre, Emp->Ano ;
         ALIAS cAlias HEADERS "E", "A", "CODIGO", "NOMBRE", "AÑO TRABAJO" VALID ( SaveIniCol( Empw, cAlias ), .T. ) ;
         .... sigue codigo
 
Ahora con XBROWSE

Code: Select all

@ 2, 0 XBROWSE Empw DATASOURCE cAlias ; 
          COLUMNS "", "", "codigo", "Nombre", "Ano" ;
          HEADERS "E", "A", "CODIGO", "NOMBRE", "AÑO TRABAJO" CELL LINES AUTOSORT;  
          OF oWndEmp UPDATE STYLE 2007 ;
          ... sigue codigo.
WITH OBJECT Empw 
      :aCols[1]:AddResource( aDbfBmps )
      :aCols[1]:bBmpData := {|| IIF( Emp->Cerrada, 4, 3 ) }
      :aCols[2]:AddResource( aDbfBmps )
      :aCols[2]:bBmpData := {|| IIF( Emp->Activo, 1, 2 ) }    
      :nColDividerStyle := LINESTYLE_LIGHTGRAY
      :nRowDividerStyle := LINESTYLE_LIGHTGRAY
      :nMarqueeStyle    := MARQSTYLE_HIGHLROW
      /* busqueda incremental integrada
      :lSeekBar    := .T.
      :bClrEdits  := { || { CLR_HRED, CLR_YELLOW } } */
      :bClrStd  := { || IIF( Eval( Empw:bKeyNo,,Empw) % 2 == 0, { CLR_BLACK, color1}, { CLR_BLACK, color2 } ) }
      :bKeyDown := { | nKey | IIf( nKey == 13, EditEmpres( Empw,.F. ), Empw:Refresh() ) }
      
      :CreateFromCode()
   END WITH   

 
La primera vez que abro la ventaja hija perfecto.
La segunda vez las dos columnas salen en blanco, sin datos
Si cierro el programa y lo abro, igual comportamiento.
probando la solucion de Cristobal en ambos XBROWSE me aparece esta pantalla.

Image

Si teneis otra manera de mostrar los bitmaps por favor decidmela.

Saludos

Jose.

Re: Desaparecen Bitmaps en columnas XBROWSE

Posted: Mon Jan 06, 2020 11:42 am
by cnavarro
Define las columnas algo asi

Code: Select all

         WITH OBJECT :aCols[ 2 ]
            :lAllowSizing    := .F.
            :cDataType       := 'F'
            :nDataBmpAlign   := AL_CENTER
            //:lBmpTransparent := .T.
            :lBmpStretch     := .F.
            :AddBitmap( { "VPushRemote0", "VPushRemote1", "VPushRemote2" } )
            :bBmpData        := { || if( < condicion >, 2,  3  ) }    // Nº de imagen a devolver
         END
 

Re: Desaparecen Bitmaps en columnas XBROWSE(SOLUCIONADO)

Posted: Mon Jan 06, 2020 2:29 pm
by jvtecheto
Muchas gracias Cristobal.

Solucionado con AddBitmap.

Un abrazo y feliz dia de Reyes.

Jose.

Re: Desaparecen Bitmaps en columnas XBROWSE(SOLUCIONADO)

Posted: Mon Jan 06, 2020 4:46 pm
by cnavarro
Jose, es importante que definas el tipo de columna: en este caso ( :cDataType := 'F' ), para indicar que contendrá imágenes