In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

De Xailer 1.9 a 6.1

Foro de Xailer profesional en español
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

De Xailer 1.9 a 6.1

Postby buzonjmartial » Mon Apr 01, 2019 1:49 pm

Buenos días,

He empezado ha convertir todos los proyectos y por ahora, gratamente sorprendido con esta nueva versión, el sistema XVC una maravilla, enhorabuena al Equipo de Xailer.

Ahora voy a intentar explicar dudas y problemas que estoy teniendo.

1.- ¿ Existe alguna forma de cargar un BMP en un TPicture y salvarlo como JPG?
Antes lo hacía con freeimage.

2.- Si Xailer tiene los wrappers de freeimage en su lib, me gustaría poder usar algunas funciones, pero no se como las habéis llamado ni si se necesita enlazar algo.
Lo mismo no es así.

3.- Tengo el siguiente error, que antes no sucedía:

LLamo un TFomMenu ---> TFormFicha ----> TFomPrueba ( Este es el orden de llamadas)

Si en TFormPrueba pongo ::oParent:DATAdeTFormFicha, me da error diciendo que oParent es TFormMenu.
¿ Cómo accedo a DATA´s de Clases padres anteriores, que ha cambiado ?

4.- ¿Existe en esta nueva versión alguna forma de ponerle una "VARIABLE" al nClrPane (por ejemplo) de cualquier control en el IDE con mi color verde por ejemplo, y
cambiando su valor me cambie ese color en toda la aplicación ?
Me refiero a cualquier propiedad de los controles en el IDE en general, no a nClrPane en concreto.

5.- En el XVC, una vez "Confirmas" y pones un comentario, si me equivoco, ya no me deja modificar tal comentario, las etiquetas sí, las veces que quiera.
¿ O yo no encuentro como hacerlo y sí es posible?

6.- En el XVC ¿se pueden elegir los colores de las etiquetas?

7.- Antes me dejaba acceder a la propiedad lTransparent en los controles creados por mi que heredaran de la TControl. Ahora me dice que no, porque es PROTECTED.
¿ De que manera se puede modificar esa propiedad actualmente?

Gracias y enhorabuena por el buen trabajo realizado,
Joaquín Martínez
Un Saludo,
Joaquín Martínez
User avatar
ignacio
Site Admin
Posts: 8555
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: De Xailer 1.9 a 6.1

Postby ignacio » Tue Apr 02, 2019 11:12 am

Buenos días,

Code: Select all

1.- ¿ Existe alguna forma de cargar un BMP en un TPicture y salvarlo como JPG?
Antes lo hacía con freeimage.


::oImage1:oPicture:Save( "test.jpg",1 )

Code: Select all

2.- Si Xailer tiene los wrappers de freeimage en su lib, me gustaría poder usar algunas funciones, pero no se como las habéis llamado ni si se necesita enlazar algo.
Lo mismo no es así.


Sólo se han hecho los wrappers que se han necesitado, todos ellos en bajo nivel y sólo accesibles en el modulo interno de clase (no se entrega). Es decir, no son accesibles desde Harbour.

Code: Select all

3.- Tengo el siguiente error, que antes no sucedía:
LLamo un TFomMenu ---> TFormFicha ----> TFomPrueba ( Este es el orden de llamadas)
Si en TFormPrueba pongo ::oParent:DATAdeTFormFicha, me da error diciendo que oParent es TFormMenu.
¿ Cómo accedo a DATA´s de Clases padres anteriores, que ha cambiado ?


No consigo entenderle, lo siento. Mande un ejemplo por favor.

Code: Select all

5.- En el XVC, una vez "Confirmas" y pones un comentario, si me equivoco, ya no me deja modificar tal comentario, las etiquetas sí, las veces que quiera.
¿ O yo no encuentro como hacerlo y sí es posible?


No se puede.

Code: Select all

6.- En el XVC ¿se pueden elegir los colores de las etiquetas?


No se puede.

Code: Select all

7.- Antes me dejaba acceder a la propiedad lTransparent en los controles creados por mi que heredaran de la TControl. Ahora me dice que no, porque es PROTECTED.
¿ De que manera se puede modificar esa propiedad actualmente?


Cuando se ha hecho así es precisamente porque el control no funciona correctamente en modo transparente. No obstante, diga de control se trata y de damos una respuesta más precisa.

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Tue Apr 02, 2019 6:54 pm

Buenas tardes,


Code: Select all

1.- ¿ Existe alguna forma de cargar un BMP en un TPicture y salvarlo como JPG?
Antes lo hacía con freeimage.

  ::oImage1:oPicture:Save( "test.jpg",1 )

Esto es lo que pone la ayuda de XAILER
TPicture:save()
Graba la imagen en disco. No se soporta la conversión entre diferentes formatos de imagen. La imagen se guardará con el mismo formato que se leyó.



Code: Select all

3.- Tengo el siguiente error, que antes no sucedía:
LLamo un TFomMenu ---> TFormFicha ----> TFomPrueba ( Este es el orden de llamadas)
Si en TFormPrueba pongo ::oParent:DATAdeTFormFicha, me da error diciendo que oParent es TFormMenu.
¿ Cómo accedo a DATA´s de Clases padres anteriores, que ha cambiado ?

No consigo entenderle, lo siento. Mande un ejemplo por favor.


Dentro de TFormMenu() llamo al form TFormFicha(), y dentro de TFormFicha() llamo a TFomPrueba() de esta manera:

TFomPrueba():new( Self ):showModal()

Pues Bien, si en TFomPrueba() quiero preguntar por su padre (Por ejemplo para saber el valor de una DATA de TFormFicha() ), siempre se ha usado ::oParent, pero
ahora, ::oParent parece ser, hace referencia a TFormMenu().

Intento clarificar un poco más, tres formularios que se llaman en este orden:

Padre -> Hijo -> Nieto

Si el NIETO pide el valor de ::oParent, ahora devuelve PADRE, antes que era lo correcto, devolvía HIJO.




Code: Select all

7.- Antes me dejaba acceder a la propiedad lTransparent en los controles creados por mi que heredaran de la TControl. Ahora me dice que no, porque es PROTECTED.
¿ De que manera se puede modificar esa propiedad actualmente?

Cuando se ha hecho así es precisamente porque el control no funciona correctamente en modo transparente. No obstante, diga de control se trata y de damos una respuesta más precisa.


Me refiero a XWinControl
Y la clase la heredo así:
CLASS TXgrafica FROM XWinControl

Y en el método new() funcionaba esto: ::ltransparent := .T.
Ahora no.



Gracias,
Un Saludo,
Joaquín Martínez
User avatar
jfgimenez
Site Admin
Posts: 5620
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: De Xailer 1.9 a 6.1

Postby jfgimenez » Tue Apr 02, 2019 7:31 pm

Joaquín,
buzonjmartial wrote:

Code: Select all

1.- ¿ Existe alguna forma de cargar un BMP en un TPicture y salvarlo como JPG?
Antes lo hacía con freeimage.

  ::oImage1:oPicture:Save( "test.jpg",1 )

Esto es lo que pone la ayuda de XAILER
TPicture:save()
Graba la imagen en disco. No se soporta la conversión entre diferentes formatos de imagen. La imagen se guardará con el mismo formato que se leyó.


Eso era antes. Quizás la ayuda esté un poco desactualizada en este punto. Desde que utilizamos GDI+ internamente sí que se puede guardar en otro formato, concretamente en BMP, JPG, PNG y GIF; no recuerdo ahora si hay algún otro formato más.

buzonjmartial wrote:

Code: Select all

3.- Tengo el siguiente error, que antes no sucedía:
LLamo un TFomMenu ---> TFormFicha ----> TFomPrueba ( Este es el orden de llamadas)
Si en TFormPrueba pongo ::oParent:DATAdeTFormFicha, me da error diciendo que oParent es TFormMenu.
¿ Cómo accedo a DATA´s de Clases padres anteriores, que ha cambiado ?

No consigo entenderle, lo siento. Mande un ejemplo por favor.


Dentro de TFormMenu() llamo al form TFormFicha(), y dentro de TFormFicha() llamo a TFomPrueba() de esta manera:

TFomPrueba():new( Self ):showModal()

Pues Bien, si en TFomPrueba() quiero preguntar por su padre (Por ejemplo para saber el valor de una DATA de TFormFicha() ), siempre se ha usado ::oParent, pero
ahora, ::oParent parece ser, hace referencia a TFormMenu().

Intento clarificar un poco más, tres formularios que se llaman en este orden:

Padre -> Hijo -> Nieto

Si el NIETO pide el valor de ::oParent, ahora devuelve PADRE, antes que era lo correcto, devolvía HIJO.


Revísalo bien, porque debes tener algo incorrecto en tu código. ::oParent siempre guarda el objeto que le pasas en el New(), a no ser que lo cambies después o que no le pasas nada a New()

buzonjmartial wrote:

Code: Select all

7.- Antes me dejaba acceder a la propiedad lTransparent en los controles creados por mi que heredaran de la TControl. Ahora me dice que no, porque es PROTECTED.
¿ De que manera se puede modificar esa propiedad actualmente?

Cuando se ha hecho así es precisamente porque el control no funciona correctamente en modo transparente. No obstante, diga de control se trata y de damos una respuesta más precisa.


Me refiero a XWinControl
Y la clase la heredo así:
CLASS TXgrafica FROM XWinControl

Y en el método new() funcionaba esto: ::ltransparent := .T.
Ahora no.

Ha llovido mucho desde xHarbour ;-)
Si quieres seguir usando ::lTransparent, tendrás que declararlo como PUBLIC en la clase hija.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
ignacio
Site Admin
Posts: 8555
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: De Xailer 1.9 a 6.1

Postby ignacio » Tue Apr 02, 2019 7:35 pm

1) Esa limitación no es total. De BMP a JPG funciona correctamente. Probado

2) No consigo reproducir su problema. Lo siento:

Code: Select all

FUNCTION CreateForm( oParent, cCargo )

   LOCAL oForm

   WITH OBJECT oForm := TForm():New( oParent )
      oParent:cText := cCargo
      :Cargo := cCargo
      :nWidth := 400
      :nHeight := 200
      :Create()
      WITH OBJECT TButton():New( oForm )
         :cText := "click!"
         :OnClick :=  {|| CreateForm (oForm, cCargo + "*" ) }
         :Create()
      END WITH
      :ShowModal()
   END WITH

RETURN oForm


2019-04-02 19_24_29-Delphi Tokyo - VMware Workstation.png
2019-04-02 19_24_29-Delphi Tokyo - VMware Workstation.png (72.94 KiB) Viewed 1551 times


3) Tampoco consigo reproducir su error. Aquí funciona correctamente:

Code: Select all

CLASS TXGrafica FROM TWinControl
   METHOD New( oParent ) CONSTRUCTOR
END CLASS

METHOD New( oParent ) CLASS TXGrafica

   ::Super:New( oParent )

   ::lTransparent := .T.

RETURN Self


Saludos

Nota: Es posible que sus problemas se daban al cambio de xHarbour a Harbour. Revise igualmente el texto en rojo de lonuevo.htm

https://www.xailer.com/dokuwiki/doku.php?id=migrar.de.xharbour.a.harbour
https://www.xailer.com/?lonuevo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Tue Apr 02, 2019 8:43 pm

Gracias Ignacio,

1) Gracias, funciona perfectamente como dices.

2) Sigo haciendo pruebas para ver que ocurre exactamente.

3) Solucionado poniendo en mi clase heredada:

PUBLIC:
PROPERTY lTransparent

Parece que la clase TWinControl de Xailer, usa una PROPERTY con ámbito PROTECTED.
Un Saludo,
Joaquín Martínez
User avatar
jfgimenez
Site Admin
Posts: 5620
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: De Xailer 1.9 a 6.1

Postby jfgimenez » Tue Apr 02, 2019 8:53 pm

Joaquín,

buzonjmartial wrote: 3) Solucionado poniendo en mi clase heredada:

PUBLIC:
PROPERTY lTransparent

Parece que la clase TWinControl de Xailer, usa una PROPERTY con ámbito PROTECTED.


Sí, es correcto. Hay controles que derivan de TWinControl que no tienen esa propiedad, y por lo tanto la clase padre no debe mostrarla. Son las clases hijas que sí tengan esa propiedad las que deben "publicarla". El hecho de que exista en TWinControl (aunque sea PROTECTED) es porque comparten la rutina de pintado por defecto. Si no lo hubiéramos hecho así, tendríamos que haber repetido esa misma rutina de pintado en cada una de las clases hijas
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Wed Apr 03, 2019 7:55 am

Buenos días,

¿ Me podéis decir algo sobre esta pregunta? Si se puede hacer de forma fácil o existe algún "truco" para conseguir esa funcionalidad.

Code: Select all

4.- ¿Existe en esta nueva versión alguna forma de ponerle una "VARIABLE" al nClrPane (por ejemplo) de cualquier control en el IDE con mi color verde por ejemplo, y
cambiando su valor me cambie ese color en toda la aplicación ?
Me refiero a cualquier propiedad de los controles en el IDE en general, no a nClrPane en concreto.



Gracias,
Un Saludo,
Joaquín Martínez
User avatar
ignacio
Site Admin
Posts: 8555
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: De Xailer 1.9 a 6.1

Postby ignacio » Wed Apr 03, 2019 11:00 am

Buenos días,

La forma más sencilla es sobrecargar la clase T. Algo así:

Code: Select all

CLASS TEdit FROM XEdit
  PROPERTY nClrPane INIT clBlue
END CLASS


Este código cambia el color de fondo de todos los controles tipo TEdit y heredados, como por ejemplo: TMaskEdit.

Si quieres complicarlo un poquito más, puedes hacer lo siguiente

Code: Select all

CLASS TEdit FROM XEdit
  PROPERTY nClrPane INIT clBlue WRITE METHOD SetClrPane
  METHOD SetClrPane( Value )
END CLASS

METHOD SetClrPane( Value ) CLASS TEdit
  Value := ???????
RETURN ::Super( Value )


Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Wed Apr 03, 2019 11:11 am

Muchas gracias Ignacio,

No sabía si estaba implementado ya de otra forma, pero así, lo veo una solución estupenda.
Un Saludo,
Joaquín Martínez
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Wed Apr 03, 2019 7:03 pm

ignacio wrote:Buenos días,

La forma más sencilla es sobrecargar la clase T. Algo así:

Code: Select all

CLASS TEdit FROM XEdit
  PROPERTY nClrPane INIT clBlue
END CLASS


Este código cambia el color de fondo de todos los controles tipo TEdit y heredados, como por ejemplo: TMaskEdit.

Si quieres complicarlo un poquito más, puedes hacer lo siguiente

Code: Select all

CLASS TEdit FROM XEdit
  PROPERTY nClrPane INIT clBlue WRITE METHOD SetClrPane
  METHOD SetClrPane( Value )
END CLASS

METHOD SetClrPane( Value ) CLASS TEdit
  Value := ???????
RETURN ::Super( Value )


Saludos



Perdón, pero no me sirve esta manera.

Lo que necesito es una variable que pueda ponerla en el IDE en una propiedad de los controles que quiera y poder cambiar el color por ejemplo.

Si tengo 10 TLabel y 10 TEdit por ejemplo y en la propiedad nClrPane de los que yo quiera, le pongo una variable, en mi aplicación pongo clRed por ejemplo,
como valor de esa variable, Xailer cambiaría la variable por su valor a la hora de ejecutarlo.

Esta es la funcionalidad que ando buscando.
Un Saludo,
Joaquín Martínez
User avatar
ignacio
Site Admin
Posts: 8555
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: De Xailer 1.9 a 6.1

Postby ignacio » Wed Apr 03, 2019 7:15 pm

Buenas tardes,

Code: Select all

MEMVAR MiVariable // En algún sitio estará declarada como PUBLIC

CLASS TEdit FROM XEdit
  PROPERTY nClrPane INIT clBlue READE METHOD GetClrPane
  METHOD GetClrPane()
END CLASS

METHOD GetClrPane() CLASS TEdit

RETURN MiVariable
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Wed Apr 03, 2019 7:22 pm

Buenas tardes,

Sí Ignacio, eso entiendo que es así, pero lo que quiero es usar en el IDE la variable MiVariable como una propiedad y que él me permita o
dar un valor por defecto mientras diseño, o que en modo diseño la ignore.

No se si me he explicado bien.

Gracias,
Un Saludo,
Joaquín Martínez
User avatar
jfgimenez
Site Admin
Posts: 5620
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: De Xailer 1.9 a 6.1

Postby jfgimenez » Wed Apr 03, 2019 8:19 pm

Joaquín,

por favor, intenta concretar más lo que necesitas. Si es posible, dinos exactamente qué es lo que quieres hacer. Lo mismo hay alguna solución más sencilla que lo que tú estás pensando.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
buzonjmartial
Posts: 55
Joined: Fri Apr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Postby buzonjmartial » Wed Apr 03, 2019 8:38 pm

Buenas tardes,

A ver si soy capaz de explicarme mejor.

Por ejemplo,

1) en toda mi aplicación, quiero cambiar todos los colores de nClrPane que sean rojos a verdes.
2) en toda mi aplicación, quiero cambiar todos los colores de nClrText que sean rojos a verdes.
3) en toda mi aplicación, quiero cambiar todos los fonts que sean Arial 8 a Tahoma 8.

Una opción sería recorrer todos los controles cada vez que abra un Form y hacer el cambio a mano, sabiendo que valor le puse en el IDE,
pero usando una variable en el IDE sería ideal, luego en el mismo IDE defino esas variables por defecto y trabajo con ellas, y en mi aplicación
podría definir esas variables con el valor que quiera en tiempo de ejecución, no con el valor por defecto que tenían en el IDE, sino con otro, elegido
por el usuario por ejemplo.

Espero haberme explicado ahora.

Gracias,
Un Saludo,
Joaquín Martínez
User avatar
ignacio
Site Admin
Posts: 8555
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: De Xailer 1.9 a 6.1

Postby ignacio » Thu Apr 04, 2019 10:51 am

Buenos días,

luego en el mismo IDE defino esas variables por defecto y trabajo con ellas


Lo siento, eso no se puede hacer. Es del todo imposible.

No obstante y como el anuncio: Perdóname que insista... ;-)

La solución que te he propuesto es perfectamente válida e incluso cientos de veces mejor de la que propones. Funcionaría incluso con controles que hubieses instanciado sin haber tenido en cuenta para nada el asunto del color. Incluso con formularios de otros proyectos que hayas añadido como una librería. A continuación va un proyecto de ejemplo.

Saludos
Attachments
EditColor.zip
(2.45 KiB) Downloaded 31 times
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
User avatar
jfgimenez
Site Admin
Posts: 5620
Joined: Mon Apr 06, 2015 8:48 pm
Contact:

Re: De Xailer 1.9 a 6.1

Postby jfgimenez » Thu Apr 04, 2019 7:57 pm

Joaquín,

la solución que te ha dado Ignacio es la mejor, créeme. Y para el caso 3) puedes sobrecargar el método Create() de TForm y asignar ahí la fuente que tú quieras. Como los controles de un formulario (salvo que cambies expresamente su propiedad oFont) utilizan la fuente del formulario donde estén, pues sólo necesitas cambiarla en el formulario.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info

Return to “Spanish”