Comunidad Gambas-es
Retrocompatibilidad - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Retrocompatibilidad (/thread-373.html)



Retrocompatibilidad - tincho - 25-04-2021

[Imagen: PxtcP2x.jpg]
Hola a todos.
Debido a los recientes cambios en la versión 3.16 de gambas surge un inconveniente, al memos durante unos meses, referente a las retrocompatibilidad de las aplicaciones que se desarrollen en dicha versión del IDE.
Ejemplo: En el caso de WebView sucede que en la versión qt4 este tiene la propiedad .HTML que se usa para pasarle el texto a renderizar pero en la versión gtk3 esta propiedad no existe más y en su lugar hay que usar el método .SetHtml() lo cual hace que nuestros programas sean incompatibles con versiones anteriores de gambas.
Una posible solución pasa por usar un condicional como IF o Select:
Código:
'' Opción 1
If CInt(Split(System.FullVersion, ".")[1]) > 15 Then
  WebView1.SetHtml(sContent)
  Else
  WebView1.HTML = sContent
Endif

'' Opción 2
xClass = Classes["WebView"]
  If xClass.Exist("HTML") Then
  WebView1.HTML = sContent
  Else
    If xClass.Exist("SetHtml") Then
    WebView1.SetHtml(sContent)
    Endif
  Endif
Luego de varios intentos en varios escenarios de componentes, la que funciono en todos los casos es la opción 2.
Saludos


RE: Retrocompatibilidad - jsbsan - 26-04-2021

Tincho:

Gracias por la aportación.

También algunos controles ha habido cambios: con el control moviebox, para salgo parecido, la propiedad .path, desaparece en gambas3.16 y la cambia por .animation

¿sabes si hay alguna de hacerlo con controles? (yo no lo he conseguido)

Nota:
Con la aplicación que me ha pasado, para resolverlo "rapidamente" lo que he hecho es eliminar el control moviebox y poner una imagen fija..


RE: Retrocompatibilidad - tincho - 27-04-2021

(26-04-2021, 09:19)jsbsan escribió: ¿sabes si hay alguna de hacerlo con controles? (yo no lo he conseguido)

Supongo que podría hacerse algo con las propiedades del control, puesto que al final un control es una clase no?
Si tienes algún ejemplo con moviebox pásame el link y hago un test, porque ahora tengo las dos maquinas virtuales.
Saludos.


RE: Retrocompatibilidad - tincho - 28-04-2021

(26-04-2021, 09:19)jsbsan escribió: la propiedad .path, desaparece en gambas3.16 y la cambia por .animation

Bien, estuve investigando las propiedades de las clases en la versión 3.15.2 y la 3.16.0 en el caso de MovieBox es verdad que en el IDE no aparece la propiedad .Path del control, pero en la clase si que esta.
Es decir si creas el control por código o accedes a el mediante Me[Nombredelcontrol] podrías, en principio, asignar la imagen mediante .Path
Saludos


RE: Retrocompatibilidad - tincho - 30-04-2021

El control Splitter, que como saben es el que reemplaza a HSplit y VSplit, da problemas cuando el proyecto lo abrimos en una versión anterior a la 3.16, tiene lógica que sea así pero el problema es que este tipo de cambios hace que los programas creados con la version 3.16 que incluyan este control, no podrán abrirse en versione de gambas anteriores así que atención antes de migrar todos sus programas.
Saludos.


RE: Retrocompatibilidad - tercoide - 30-04-2021

Eso de tener que adaptar código para ofrecer retro compatibilidad no me gusta nada. Angry

Me paso con el WebView de estru3D y termine sacandolo.


RE: Retrocompatibilidad - tincho - 30-04-2021

(30-04-2021, 16:18)tercoide escribió: Eso de tener que adaptar código para ofrecer retro compatibilidad no me gusta nada.

Si, a mi tampoco me gusta.
Ademas, creo, no seria muy complicado realizar una función que guarde el proyecto a una versión anterior arbitraria de gambas. La cosa pasaría por leer cad archivo de código o formulario y verificar ciertas cosas conocidas.
Si se pueden guardar planillas de calculo o diagramas en versiones anteriores a la actual del programa, por que no se va a poder hacer en gambas?
Es una buena idea para un programa no? voy a ver si hago algo al respecto.

(30-04-2021, 16:18)tercoide escribió: Me paso con el WebView de estru3D y termine sacandolo.

Supongo que eso ya no sera un problema a partir de la 3.16 porque ya podes poner el componente gb.gui.webview que intercambia automáticamente entre el de QT y el de GTK
Saludos.


RE: Retrocompatibilidad - tincho - 23-06-2021

Hola, encontré esta página que da algunos consejos para retro compatibilidad
http://gambaswiki.org/wiki/doc/compat?l=es#t1
Saludos.