Lo Nuevo

(Texto en rojo indica modificaciones que pudieran romper su actual código)

Novedades en la versión Xailer 9.0.1

  • IDE:
    • Soporte de VALUES de properties en Intellisense
    • Ajustes en el tamaño de las ventanas en Windows 10/11
    • No cargar nunca ficheros de mas de 1GB en el editor
    • Error al seleccionar varios TGroupBoxMod con el ratón
  • Controles
    • TSummerNote: Nuevos estilos note-tip, note-info y note-warning en el editor de ayudas html
    • TSummerNote: Soportar enlaces dentro de la misma ayuda del tipo «pagina#apartado». Para localizar el «apartado», este tiene que estar solo dentro de un tag,sin más texto
    • TSummerNote: Nuevas propiedades cStyleTags y cStyle. Permiten añadir estilos al menu del editor (ver doc de summernote)
    • TSummerNote: Nueva propiedad cFonts
    • ThtmlhelpView: Nuevas propiedades nPanelWidth, nHelpWidth, nHelpHeight
    • THeaderItemMod: Error de asignación de oHeader:oCol:nFilterEditStyle
    • TTreeViewItemMod: Error de inserción en árbol
    • TBrwColMod: Error con pérdida de foco en control de edición
  • DataControls
    • Sqlite: Actualización de librerías a la última versión 3.45.2
    • TDataset: Evitar deshacer edición cuando se produce un error de salvado
     

Novedades en la versión Xailer 9.0.0

  • General:
    • Adaptaciones a Linux de módulos no visuales
    • Nuevas librarías CGILib, CGILinux y libSQLiteLinux.a
  • IDE:
    • Soporte para compilar en Linux desde windows usando WSL
    • Soporte de ejecución de proyectos CGI desde WSL
    • SQLite editor: Soporte de colaciones UTF8 y herramienta para cambiar el ‘charset’ en cualquier BD
    • Nueva tabla ASCII
    • Nueva opcion «Distribuir en ventana» en «Alinear controles»
    • Intellisense no funcionaba hasta que el archivo estaba guardado
    • Mostrar historial de busqueda en busquedas en editor actual
    • Nuevo componente TMicrosoftMailSend
    • Al mover Xailer de un monitor a otro no se maximizaba la ventana principal
    • Nuevos eventos para plugins: FE_InsertControl, FE_RemoveControl y FE_InsertComponent
    • Poder establecer ‘charset’ a nivel de proyecto
  • Controles
    • TTabs: Evitar seleccionar el tab al añadirlo a su contenedor
    • TMicrosoftMailSend: Nueva clase para envío de correos a través de Microsoft Mail
    • TRadioMenu: Ajustes de pintado
    • TWebView: Nuevo evento OnWebResourceResponseReceived( oSender )
    • TExplorerGroup: Nueva propiedad lCollapsible
    • TCalendarMod: Error al seleccionar el mes de diciembre
  • DataControls
    • Sqlite: Error en conversion de tipos date y datetime
    • Sqlite: Actualización de librerías a la última versión 3.45.1
    • Sqlite: Dos versiones de la misma librería: Una completa (libSqliteFull.a) y otra reducida (libSQLite.a)
    • Sqlite: Nuevas funciones internas AnsiToUtf8() y Utf8ToAnsi()
    • Sqlite: Nuevas colaciones UTF8Case y UTF8NoCase
    • TWebDataSource: Nuevas propiedades lCachedQueries y nCacheTTL
    • TWebDataSource: Nuevas propiedad cChaceDB para poder indicar la ubicación del fichero de cache
    • TWebDataSource: Nuevos métodos DelCachedQueries( [xTable] ) y CachedRatio()
    • TWebDataSource: Error en RefreshCurrent()
    • TDbBrowseMod: Nueva versión de XA_wdsMySql.php que evita que use comas como separador decimal
  • Clases
    • TExStruct: Renombrado comando STRUC a STRUCT por coherencia
    • TExStruct: Soporte de tipos DATETIME
    • TExStruct: Mejora en método ToJson() para que funcione incluso con estructura anidadas
  • Funciones
    • Nueva función UuidCreate() –> cUuid
    • Nueva función NoAccents()
    • La función XA_Ligthness() se hace accesible en alto nivel
     

Novedades en la versión Xailer 8.2.3

  • General:
    • Imposibilidad de crear ejecutables autónomos en versión Personal
  • Controles
    • TBrowseMod: Nuevo método ColWithHeader( cHeader )
    • TBrowseMod: Nuevos métodos HitTest( aPos ) y HitTestCol( nX )
    • TRadioMenu: No se pintaba correctamente cuando Application:nScale !=100%
  • DataControls
    • TDataset: No funcionaban GetRowHash() ni GetRowsHash() con TDbfDataset
  • Clases
    • TSumatra: Nueva propiedad nToolBarHeight

Novedades en la versión Xailer 8.2.2

  • General:
    • Imposibilidad de crear ejecutables autónomos en versiones Personal y Profesional
  • IDE:
    • Nueva propiedad oFont en menues popup
    • Error de escalado en TreeView
  • Controles
    • TTabs: No se disparaba OnContextMenu
    • TEditMod: Nuevo estilo esUPDOWN en propiedad nStyle
    • TEditMod: Nueva propiedad nClickedPos
    • TTimeEditMod: Nueva propiedad lSeconds
    • TTimeEditMod: Incialización a Time() si NIL
    • TTimeEditMod: Soporte de botones Up-Down
    • TButtonMod: Nueva propiedad lFlat
    • TTMenu: Nueva propiedad oFont
    • TTabs: Escalar nTabSize, nTabsMargin y nItemPadding
    • TBrowseMod: Nueva propiedad lTooltips
    • TBrowseMod: Nuevo evento OnDispTooltip( oSender, @cText, @cTitle, @nIcon, nIndex, oCol )
    • TSummerNote: Corrección de errores
  • DataControls
    • libSqlite.a: Actualizada a 3.42.0
    • TDbBrowseMod: Error de ordenación y agrupación corregido
    • TMariaDb, TMySql y TSqlite: Error con queries complejas. Permitir usar HAVING en filtros
  • Funciones
    • Nueva función XA_FunctionExists( cFunction ) -> lExists
  • Ejemplos
    • samples\MovingBox: Nuevo ejemplo de movimiento de controles

Novedades en la versión Xailer 8.2.1

  • IDE:
    • Error en la opción de menú contextual ‘Cambiar a’ de control TSplitButton
  • Controles
    • TWebView: Nueva propiedad nZoomFactor (NOTA: 1.0 es 100%, 1.5 es 150%, etc.)
    • TButtonMod: Error de visualización cuando se incluía ‘&’ en el texto
    • TButtonMod: Nueva propiedad lLegacyBehaviour para que INTRO dispare siempre OnClick
    • THeaderItemMod: Incorrecto pintado de la columna seleccionada
    • TComboboxMod: Error en metodo GetText cuando lFreeEdit a .T.
    • TBrowseMod: Error en asignacion de propiedad lHotTrack
    • TBrowseMod: Error en eventos: lButtonDown, lButtonUp, RButtonDown y RButtonUp
  • DataControls
    • libSqlite.a: Actualizada a 3.41.2
    • TDbBrowseMod: Control de errores y mejoras en AdjustColWidth()
    • TDbBrwColMod: Error en asignación del TDatafield
    • TDbComboboxMod: Error en metodo SetValue() para tipo dtIndex y dtBound con lFreeEdit
  • Funciones
    • Nueva función GetCurrentProcessId() –> nProcessId

Novedades en la versión Xailer 8.2.0

  • IDE:
    • Poner automáticamente el texto HB_SYMBOL_UNUSED( [Parameters] ) cuando se crean métodos en el IDE si el nivel de warning del compilador está establecido a un valor de dos o superior
    • Al añadir una imagen desde disco (no recursos) a un TBtnBmp a veces no la cargaba
    • Nuevo editor de propiedades para propiedades que pueden depender de Application:nScale
    • Nuevo evento ED_TabContextMenu para plugins y componentes
  • Controles
    • TListBoxMod: Error en método OnClick
    • TListboxMod: Nuevo evento OnChanged()
    • TCheckBoxMod: Mejoras de pintado
    • TRadioMod: Click de ratón no cambiaba el foco al control
    • TButtonMod: Error de centrado del texto cuando se usaban aceleradores
    • TButtonMod: Click de ratón no cambiaba el foco al control
    • TButtonMod: : Realizar opacidad con actual color de fondo
    • TBtnPanelMod: Realizar opacidad con actual color de fondo
    • TBrowseMod: Error en métodos SaveState y RestoreState
    • TBrowseMod: Nueva propiedad lHotTrack
    • TBrowseMod: Nueva propiedad lOnEditUseReturn (PUBLIC) Valor NIL utiliza Application:lUseReturn
    • TBrowseMod: Centrar imagen cuando no hay texto en el header de las columnas
    • TBrowseMod: Mejoras en evento OnContextMenu y OnEnter
    • TBrowseMod: OnChar no se disparaba
    • TBrowseMod: Evitar disaro de doble-click si ratón encima de barras de scroll virtuales
    • TBrowseMod: Nueva propiedad nMargin
    • TBrowseMod: Error en la gestión de filtros de la cabecera
    • TBrwColMod: Permitir el uso del evento EditForGrid:OnBtnClick por el usuario
    • TBrwColMod: Error en alinemiento del gridedit
    • TBrwColMod: Error an asignacion de valores por lista desplegable
    • TCalendarMod: Error de modo multi-select
    • TTreeView: Nuevas propiedades nClrSelFocus y nClrSelItem
    • TFastReport: Corregido error de exportación a ODT
  • DataControls
    • libSqlite.a: Actualizada a 3.41.0
    • TMemDataset:Error en método OrgRecno y cambios menores
    • TWebDataSource: Nueva propiedad nSendTimeOut para el envío de emails
    • TWebDataSource: Nuevos métodos RenameFile(), UpLoadFile(), DnLoadFile(), ADirs(), AFiles(), RemoveDir()
    • TWebDataSource: Soporte del método Refresh() que figuraba como VIRTUAL
    • TDbBrwColMod: Nueva propiedad de sólo lectura cDataField
  • Clases
    • TApplication: Nueva propiedad hVersionInfo
    • TScreen: A veces ::aMonitors no tenía los monitores correctamente ordenados
    • TWiaScan: Devices() ahora contiene un tercer valor en cada elemento con el tipo de dispositivo (0=Default, 1=Scanner, 2=Camera, 3=Video)

Novedades en la versión Xailer 8.1.0

  • General:
    • Nuevo sistema de ayudas XHtmlHelp
    • TForm: Nueva propiedad XHtmlHelp
  • IDE:
    • Soporte de comandos ‘dummy’ REGION, BEGINREGION y ENDREGION para folding en editor
    • Soporte de tres monitores
  • Controles
    • TSummerNote: Nuevo control de edición HTML basado en TWebView
    • TAnimatedGif: Nuevo control para mostrar gifs animados
    • TWebView: Nuevo evento OnWebMessageReceived( oSender, cJson )
    • TWebView: Solucionado definitivamente el GPF esporadico al crear el control
    • TWebView: Nuevo método DeleteAllCookies()
    • TBrowseMod: Nuevos eventos OnPostSave() y OnChangeSelected()
    • TBrowseMod: Error en procesamiento de lFastEdit
    • TBrowseMod: Error en búsqueda incremental
    • TBrowseMod: Nuevo metodo TBrwGroup:SumTotal( xCol )
    • TCheckBoxMod: Eliminado evento OnChanged() por inútil. y por mantener funcionalidad con clases no tipo ‘Mod’
    • TRadioMenuMod: Eliminado evento OnChanged() por inútil. y por mantener funcionalidad con clases no tipo ‘Mod’
    • TCheckBoxMod: Cambios en evento OnChange( oSender, lNewValue ) recibe ::lChecked cambiado, pero igualmente se puede cambiar
    • TRadioMenuMod: Cambios en evento OnChange( oSender, lNewValue ) recibe ::lChecked cambiado, pero igualmente se puede cambiar
    • TCheckBoxMod: Mejoras de pintado
    • TRadioMenuMod: Mejoras de pintado
    • TComboBoxMod: Nuevos eventos: InsertItem(), AddItem(), DeleteItem(), DeleteItems(), ModifyItem() y GetCount(). Por compatibilidad con version NO Mod
    • TRadioMod: Mejoras de pintado
    • TSwitch: Cambiar efecto de foco para igualarlo al resto de controles MOD
    • TListboxMod: Nuevos metodos CheckAll() y UnCheckAll()
    • TListboxMod: Evento OnClick se disparaba dos veces
    • TTooltip: No se estaban mostrando los links
    • TTooltip: Nuevo parametro <nLink> en OnLinkClick( oSender, nLink ) que indica el numero de link pulsado, comenzando por 1
    • TLabelEx: Nuevo parametro <nLink> en OnLinkClick( oSender, cText, nLink ) que indica el numero de link pulsado, comenzando por 1
    • TColorComboBox, TComboBox, TFontCombobox, TOptionList: Mejoras en escalado
    • TUpDownMod: Soporte de repetición
    • TEditMod: Evitar que se vea el texto con password si se ha hecho un paste o setvalue
    • TPicture: Añadido parametro <nImageIndex> a todos los metodos LoadXXX()
  • DataControls
    • libSqlite.a: Actualizada a 3.40.0
    • TDbBrowseMod: Error en método Save
    • TMemDataset: Nuevos métodos: TableName(), SqlInsert() y SqlUpdate()
    • TWebDataSource: Nuevos métodos: CurrentDir(), IsDir(), MkDir() y ForceDir()
    • TWebDataSource: Nuevo método: SendMail()
    • TWebDataSource: Mejoras en conexión y control de errores
    • Clases
      • TApplication: Nueva propiedad lDpiAware
      • TReport: Nueva propiedad cPdfFilename
      • TPrinter: Nuevo metodo EmfToPrinter( nPrinter, nFirst, nLast )
      • TSumatraPrinter: Error cuando se intentaba cambiar cualquier propiedad
      • TSumatraPrinter: Nueva propiedad nPageOrient
      • report.ch: Nuevas cláusulas: REPORT .. TO PDF <cPdf> y REPORT .. KEEP
    • Funciones
      • Nueva función xa_VarsEqual( xValue1, xValue2 ) –> lEqual (value)
      • Nueva función xa_UnixTimeStamp2DateTime( nTimeStamp ) –> dtValue

    Novedades en la versión Xailer 8.0.1

    • Controles
      • TWebView: Evitar instanciar ICoreWebView2EnvironmentOptions si no es estrictamente necesario. Una actualizacion reciente de windows esta provocando GPF al instanciar esta interfaz en algunos usuarios
      • TWebView: Nuevo parámetro lIsUtf8> que indica si la cadena ya esta en formato UTF8: METHOD SetContent( cHtml, [lIsUtf8] ) -> nError
      • TGoogleDrive: Cuando cToken es incorrecto, volver a pedir identificarse al usuario, Error cuando ‘errorcode’ se recibia como numerico
      • TDropBox: Cuando cToken es incorrecto, volver a pedir identificarse al usuario, Error cuando ‘errorcode’ se recibia como numerico
      • TOneDrive: Cuando cToken es incorrecto, volver a pedir identificarse al usuario, Error cuando ‘errorcode’ se recibia como numerico
      • TBrowseMod: Nuevo evento OnClickRecSelector()
      • THeaderMod: nHeaderHeight 0 por defecto. En dicho caso se calcula automáticamente
      • TBrowseMod: Recuperar recno despues de un cambio de filtro
      • TCheckBoxMod: Error de pintado cuando disabled
      • TRadioMod: Rediseño de pintado del control
      • TUpdDownMod: Nueva propiedad nClrPenDisabled
      • TEditMod: Error al mostrar el texto con estilo esPASSWORD
      • THeaderMod: nHeight 0 por defecto. En dicho caso se calcula automáticamente
    • DataControls
      • TDbBrowseMod: Rediseño de su sincronización con dataset
      • TDbComboBox: Rediseño de GetValue() y SetValue por cambios en Datacontrols
    • Clases
      • TPrinter: Error en método PreviewControl
    • Comandos
      • Nueva claúsula en comando FILE ADDITIVE
      • Nueva claúsula en comando TEXT INTO ADDITIVE
    • Ejemplos
      • samples\Datacontrols\MariaDB: Nuevo ejemplo de browse con MariaDB
      • samples\Modern\Browses\Freeze: Nuevo ejemplo de browse simulando un freeze de columna

    Novedades en la versión Xailer 8.0.0

    • General
      • Corregidos problemas de pintado en Windows 11
    • Controles
      • TGoogleDrive: Nuevo control para acceder a la nube de Google Drive
      • TDropBox: Nuevo control para acceder a la nube de DropBox
      • TOneDrive: Nuevo control para acceder a la nube de Microsoft
      • TShape: Nuevo control para pintar distintas figuras geométricas
      • TUpDownMod: Nuevo control ‘up-down’ estilo moderno
      • TGmailSend: Adaptada a los cambios realizados por Google
      • TBrowseMod: Error en pintado de líneas verticales
      • TBrowseMod: Error en método DelCol y en evento OnSaveCol
      • TBrowseMod: Error en edición de FastEdit
      • TBrowseMod: Nueva propiedad lAlternateColor (browses con estilo papel pijama)
      • TTrackBarMod: Error en pintado del globo con el porcentaje actual
      • TFastReport: Nuevo método StopReport()
      • TButtonMod: Nueva propiedad nBorderRadius
      • TButtonMod: Eliminada propiedad nBmpAlignment
      • TButtonMod: Nuevas propiedades: oMenu y nOrientation
      • TButtonMod: Nuevo evento OnMenuClick
      • TButtonMod: Nuevas propiedades lDefault y lCancel
      • TButtonMod: Eliminada propiedad oBitmaps. Sustituida por oImagelist + nImage
      • TBtnPanelMod: Nueva propiedad nBorderRadius
      • TEditBtn y TDateEdit: Mejoras de pintado
      • TListBoxMod: Nueva propiedad lShortCuts para soportar atajos de teclado
      • TSplitter: Removed nResizeStyle property as useless
      • TTabs/TTabsItem: Eliminados bitmap de la cruz para cerrar pestañas. Ahora se pintan
      • TImagelist/TBtnBmp: Soporte de ficheros PNG
      • THyperLink: No funcionaban los atajos de teclado (shortcuts)
      • TRadioMod: Nueva propiedad nOpacity
      • TRadioMod: Eliminada propiedad nVAlignment (gestión deprecated)
      • TRadioMod: Cambiada altura a 28
      • THeaderMod: Cambiada altura a 28
      • TEditMod: Cambiada altura a 28
      • TEditMod: Evitar guión bajo en cHint
      • TBrowseMod: Cambiada altura a de Header y Footer a 28
      • TComboBoxMod: Soporte de filtros en la lista desplegable según texto introducido
      • TFastReport: Error en VariableList() y CategoriesList()
    • DataControls
      • TDataset: Error por actualizacion indebida de campos no modificados A partir de Xailer 8 se controla cualquier cambio de tipo (Valtype()) en los campos de un dataset (TDataField) y se generá un error de ejecución en el caso de que se produzcan. Es probable que esto provoque errores en su código. Entendemos que es mejor mostrar el ERROR que enmascararlo.
      • TDataField: Nuevo método HasChanged( Value )
      • TSqlite: Actualizado a la versión 3.38.5
      • TSqlite: Permitir conectar (ATTACH) una BD sin cifrar a una BD cifrada ya abierta. Antes las dos BD tenian que estar sin cifrar, o cifradas con la misma clave. Ahora, la segunda puede estar sin cifrar. Si ambas estan cifradas pero con distinta clave se producira un error.
      • Sqlite:: Aumentada la precision de la funcion local_timestamp() a milisegundos
      • TMySql/TMariaDB:: Permitir indicar la precision de los DATETIME y TIMESTAMP en CreateTable() La precision se indica como decimales, mientras que la longitud se puede dejar a 0 y se ignora. P.ej.: { «Fecha», «T», 0, 3 }
      • TDBBrowseMod: Error en AdjustColsWidth()
      • Nuevo método en todos los DataControls DbLinked() que permite saber si el DataField ha sido asignado con éxito
      • TWebDataSource: Actualizado modulo XA_wdsMySql.php con soporte de charset
    • Clases
      • TSysVer: Soporte de Windows 11
    • Funciones
      • Nueva función XA_DRAWROUNDEDRECT // XA_DrawRoundedRect( hDC, rect, nDia, nColor, nTransparency, nPenSize ) –> NIL
      • Nueva función XA_FILLROUNDEDRECT // XA_DrawRoundedRect( hDC, rect, nDia, nColor, nTransparency ) –> NIL
      • Nueva función XA_UrlEncode( ) ->
      • Nueva función XA_UrlDecode( ) ->
      • Nueva función XA_UrlDecodeToAnsi( ) ->
      • Nueva función XA_DateTimeZ2Local( )
    • Comandos
      • Nuevo comando: FILE INTO NOTA: Permite leer el contenido del fichero dentro de la variable , en tiempo de compilacion. Funciona parecido a #include, pero el contenido va a parar a la variable