Page 1 of 1

Consulta FreeImage.dll

Posted: Wed Apr 22, 2020 9:55 am
by MOISES
Hola:

¿Sigue siendo necesaria en la versión actual de FWH?

Gracias.

Re: Consulta FreeImage.dll

Posted: Wed Apr 22, 2020 3:09 pm
by cnavarro
Creo recordar que solo si usas el control IMAGE, pero no si utilizas el control XIMAGE, pruébalo

Re: Consulta FreeImage.dll

Posted: Wed Apr 22, 2020 3:30 pm
by MOISES
Ok, gracias. No sabía si ya habíais migrado todo a GDIPlus.

Re: Consulta FreeImage.dll

Posted: Wed Apr 22, 2020 9:14 pm
by cnavarro
Precisamente para mantener compatibilidad con código de usuarios que utilizaran otras versiones se hizo otra clase XIMAGE

Re: Consulta FreeImage.dll

Posted: Sat Apr 25, 2020 3:16 pm
by MOISES
Cristóbal:

En el REDEFINE faltan las cláusulas UPDATE, ON CLICK, ADJUST y WHEN.

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 12:51 am
by cnavarro
Moisés, te refieres a la clase TIMAGE ?

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 8:11 am
by MOISES
No, me refiero al REDEFINE DE XIMAGE.

Lo he solucionado así, pero sería bueno para facilitar la migración de IMAGE a XIMAGE que el redefine fuera el mismo.

Code: Select all

   oImage:bWhen  := { || .F.}
   oImage:bRClicked := { || mifuncion()}
Lo que si es más importante es que el menú METHOD PopupMenu( nRow, nCol, nFlags ) CLASS TXImage use FWStrings, y esté con la cláusula 2015 por favor.

Gracias.

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 2:36 pm
by cnavarro
Moises, claúsulas hay muchas y es posible que en todos los controles no estén implementadas en su COMANDOS, pero como bien has hecho, para eso están sus codeblocks asociados ( yo suelo trabajar así, con el WITH OBJECT y definiendo sus propiedades, digo en general con cualquier objeto, no sólo con éste )
En cuanto a lo que comentas de cambiar el estilo del menu, prueba lo siguiente:
- Cambia el método POPUPMENU en la class XIMAGE

Code: Select all

//----------------------------------------------------------------------------//

METHOD PopupMenu( nRow, nCol, nFlags ) CLASS TXImage

   local oMenu, oClp

   if PCount() > 0 .and. ! ::lFocused
      ::SetFocus()
   endif

   if ::l2007
      MENU oMenu POPUP 2007
   endif
   if ::l2010
      MENU oMenu POPUP 2010
   endif
   if ::l2013
      MENU oMenu POPUP 2013
   endif
   if ::l2015
      MENU oMenu POPUP 2015
   endif
      MENUITEM "Center"       ACTION ::Center()
      MENUITEM "Fit Width"    ACTION ::FitWidth()
      MENUITEM "Fit Height"   ACTION ::FitHeight()
      MENUITEM "Fit In Rect"  ACTION ::FitRect()
      SEPARATOR
      MENUITEM "Crop"         ACTION ( ::lCrop := .t. )
      //SEPARATOR
      if ::lCanPaste
         SEPARATOR
         MENUITEM "Paste"        ACTION ::Paste() ;
            WHEN ::Paste( .t. )
      endif
      if ::lMnuSave
         SEPARATOR
         MENUITEM "Copy To ClipBoard"
         MENU
            MENUITEM "As Viewed"       ACTION ::CopyToClipBoard( .t. )
            MENUITEM "Original Image"  ACTION ::CopyToClipBoard( .f. )
         ENDMENU
         SEPARATOR
         MENUITEM "Save To File"
         MENU
            MENUITEM "As Viewed"       ACTION ::Save( .t. )
            MENUITEM "Original Image"  ACTION ::Save( .f. )
         ENDMENU
      endif
   ENDMENU

   If PCount() > 0
      ACTIVATE POPUP oMenu AT nRow, nCol OF Self
   endif

return oMenu

//----------------------------------------------------------------------------//
 
y en tu código sólo tendrás que hacer

Code: Select all

   @ 52, 02 XIMAGE oImageT SIZE 410, 200 OF oWndImg NOBORDER   
   oImageT:FitRect()
   oImageT:SetSource( uFile )
   oImageT:l2007 := .F.
   oImageT:l2010 := .F.
   oImageT:l2013 := .F.
   oImageT:l2015 := .T.
 
Dime si te funciona según tus necesidades

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 4:00 pm
by MOISES
Lo primero, muchas gracias por tu ayuda y por tu tiempo.

Creo que para dejarlo perfecto el método debería coger el estilo del menú principal. Me suena que esto lo tenéis implementado, si no lo investigo yo.

Y te paso la implementación de FWString:

Code: Select all


   MENU oMenu POPUP 2007

      MENUITEM FWString("Center")       ACTION ::Center()
      MENUITEM FWString("Fit Width")    ACTION ::FitWidth()
      MENUITEM FWString("Fit Height")   ACTION ::FitHeight()
      MENUITEM FWString("Fit In Rect")  ACTION ::FitRect()

      SEPARATOR
      MENUITEM FWString("Crop")         ACTION ( ::lCrop := .t. )

      SEPARATOR
      if ::lCanPaste
         MENUITEM FWString("Paste")        ACTION ::Paste() ;
            WHEN ::Paste( .t. )
      endif

      MENUITEM FWString("Copy To ClipBoard")
      MENU
         MENUITEM FWString("As Viewed")        ACTION ::CopyToClipBoard( .t. )
         MENUITEM FWString("Original Image")  ACTION ::CopyToClipBoard( .f. )
      ENDMENU

      MENUITEM FWString("Save To File")
      MENU
         MENUITEM FWString("As Viewed")        ACTION ::Save( .t. )
         MENUITEM FWString("Original Image")  ACTION ::Save( .f. )
      ENDMENU
   ENDMENU

 
Y las traducciones de las cadenas que faltan:

{ "As Viewed", }, ;
{ "Crop", }, ;
{ "Fit Height", }, ;
{ "Fit In Rect", }, ;
{ "Fit Width", }, ;
{ "Original Image", }, ;
{ "Save To File", } ;
} )

Español:

{ "Como se ve", }, ;
{ "Recortar", }, ;
{ "Ajustar altura", }, ;
{ "Ajustar en rectángulo", }, ;
{ "Ajustar anchura", }, ;
{ "Imagen original", }, ;
{ "Guardar en archivo", } ;
} )

Francés:

{"Tel que vu", }, ;
{" Couper ", }, ;
{"Ajuster la hauteur", }, ;
{"Ajuster au rectangle", }, ;
{"Ajuster la largeur", }, ;
{"Image originale", }, ;
{"Enregistrer dans un fichier", } ;
} )

Alemán

"Wie gesehen",..;
{"Cut",..;
{"Höhe anpassen", }, ;
{"Für Rechteck anpassen", }, ;
{ "Breite anpassen", }, ;
{"Originalbild", },, ;
{ "In Datei speichern", } ;
} )


Va a quedar muy bien rematado.

Un saludo

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 4:40 pm
by cnavarro
MOISES wrote:Lo primero, muchas gracias por tu ayuda y por tu tiempo.

Creo que para dejarlo perfecto el método debería coger el estilo del menú principal. Me suena que esto lo tenéis implementado, si no lo investigo yo.
Para que coja el estilo del menú de la ventana, sólo tienes que cambiar en el código que te puse lo siguiente
( siempre y cuando la ventana o contenedor del objeto XIMAGE tenga menú claro )

Code: Select all

   oImageT:l2007 := oImageT:oWnd:oMenu:l2007
   oImageT:l2010 := oImageT:oWnd:oMenu:l2010
   oImageT:l2013 := oImageT:oWnd:oMenu:l2013
   oImageT:l2015 := oImageT:oWnd:oMenu:l2015
 

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 5:47 pm
by MOISES
Para dejarlo pulido, me gustaría preguntarte si en la clase menú tienes un valor que diga el estilo concreto, o hay que ir estilo por estilo.

Si no, quizás podría quedar algo así:

oImageT:l2007 := if (hb_isnil(oImageT:oWnd:oMenu:l2007),, oImageT:oWnd:oMenu:l2007)

En todo caso, lo que veas mejor y te ayudo a testearlo para evitar errores con la próxima versión de Fivewin.

Muchas gracias.

Re: Consulta FreeImage.dll

Posted: Sun Apr 26, 2020 7:10 pm
by cnavarro
Moisés, las datas de estilos en la clase MENU, creo recordar que siempre están inicializadas en el method new a .F., por lo que no van a valer nil