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
Responder
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9250
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por ignacio »

Buenos días,

Código: Seleccionar todo

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 )

Código: Seleccionar todo

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.

Código: Seleccionar todo

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.

Código: Seleccionar todo

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.

Código: Seleccionar todo

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

Código: Seleccionar todo

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]
https://www.xailer.com
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

Buenas tardes,

Código: Seleccionar todo

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ó.


Código: Seleccionar todo

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.



Código: Seleccionar todo

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
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por jfgimenez »

Joaquín,
buzonjmartial escribió:

Código: Seleccionar todo

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 escribió:

Código: Seleccionar todo

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 escribió:

Código: Seleccionar todo

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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9250
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por ignacio »

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

2) No consigo reproducir su problema. Lo siento:

Código: Seleccionar todo

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) Visto 10112 veces
3) Tampoco consigo reproducir su error. Aquí funciona correctamente:

Código: Seleccionar todo

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.ph ... .a.harbour
https://www.xailer.com/?lonuevo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

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
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por jfgimenez »

Joaquín,
buzonjmartial escribió: 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
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

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.

Código: Seleccionar todo

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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9250
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por ignacio »

Buenos días,

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

Código: Seleccionar todo

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

Código: Seleccionar todo

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]
https://www.xailer.com
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

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
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

ignacio escribió:Buenos días,

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

Código: Seleccionar todo

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

Código: Seleccionar todo

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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9250
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por ignacio »

Buenas tardes,

Código: Seleccionar todo

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]
https://www.xailer.com
buzonjmartial
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

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
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por jfgimenez »

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
Mensajes: 100
Registrado: Vie Abr 10, 2009 11:02 pm

Re: De Xailer 1.9 a 6.1

Mensaje por buzonjmartial »

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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9250
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por ignacio »

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
Adjuntos
EditColor.zip
(2.45 KiB) Descargado 300 veces
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: De Xailer 1.9 a 6.1

Mensaje por jfgimenez »

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
Responder