Page 1 of 1

para Antonio Linares (BITMAP)

Posted: Thu Jul 09, 2009 9:30 pm
by DiGregorio
Estimados Amigos,

Probando la funcion bitmap, me consegui con un curioso detalle, despues de pintar el boton y crear un popmenu, cuando refresco el boton a traves de una de las opciones del popmenu, este bitmap se duplica un poco mas arriba del pintado originalemente.

Code: Select all

#include "FiveWin.ch"

Function Test()
Local oDlgFecha

 DEFINE DIALOG oDlgFecha SIZE 800,600

            @ 10,10   BITMAP  FILENAME ".\BITMAPS\btnbmp.bmp"  PIXEL OF ODLGFECHA    SIZE  25,25 NOBORDER
            
             oDlgFecha:brClicked = { | nRow, nCol, nFlags | ;
                 ShowPopup2( oDlgFecha, nRow, nCol ) }


             Activate dialog oDlgFecha  center;
           

           RETU NIL


FUNCTION SHOWPOPUP2(oDlg,nRow,nCOL)
Local oMenu
 
   MENU oMenu POPUP   2007

    MENUITEM "&PRUEBA"  ;
    action( TBitmap():New( 10, 10, 25, 25,, ".\BITMAPS\btnbmp.bmp", .T., oDlg,,, .F., .F.,,, .F.,, .T.,, .F. ))

   ENDMENU

ACTIVATE POPUP oMenu OF oDlg AT nRow, nCol

RETURN( NIL )
 

Re: para Antonio Linares (BITMAP)

Posted: Tue Jul 14, 2009 4:59 pm
by Antonio Linares
Domenico,

Cuando creas los controles sobre un diálogo, en tu código:

@ 10,10 BITMAP ...

dichas unidades son "lógicas" y no son pixeles. Windows transforma dichas unidades lógicas a pixeles al crear el diálogo y sus controles hijos.

Una vez creado el diálogo, si creamos un control sobre él, estaremos usando pixeles y no unidades lógicas. De ahi la diferencia de posiciones que observas.

Una solución es crear el control hijo desde la claúsula ON INIT del diálogo:

Code: Select all

ACTIVATE DIALOG oDlg ON INIT CreaControles( oDlg )

...

function CreaControles( oDlg )

   @ 10,10   BITMAP ...

   ...

return nil
 
Desde CreaControles() las unidades especificadas serán pixeles.

Re: para Antonio Linares (BITMAP)

Posted: Thu Jul 16, 2009 6:47 pm
by DiGregorio
Gracias Antonio,

En efecto ese era el problema, lo que hize fue crear una funcion que crea los controles y otra que los refresca y funciona perfectamente.

Una pregunta en una Tpanel es posible que estos mismos controles se creen mas pegados que en una dialog, la tPanel maneja diferente las coordenadas????, porque los botones se pintan un tanto extranos.

Nota: igual en la TPanel creo los controles en una funcion para evitar el error de DEFCONTROL.


Gracias.

Re: para Antonio Linares (BITMAP)

Posted: Sat Jul 18, 2009 4:50 pm
by Antonio Linares
Dmenico,

Si nos proporcionas un ejemplo pequeño y autocontenido en PRG, podremos revisarlo y comentarte, gracias