13. Notas de la versión #
← Migrar de la 4.0 a la 5.0 · Índice · Asistente de IA →
Una versión adquirida nunca pierde sus componentes: la 5.0 contiene los treinta y siete de la 1.0 a la 4.0, y una clave cuyo mantenimiento cubre la fecha de su build compila con la DLL más reciente — véase Licencia.
5.0 — noviembre 2026 #
Diez componentes: entrada de datos, datos, gráficos, planificación, menús y medios #
- Angular gauge — un indicador de esfera: aguja, arco relleno o marca, rangos coloreados según su tono, marcas de escala, objetivo, un valor ajustable con el ratón y el teclado.
- Carousel — un carrusel al estilo de iTunes: carátulas en relieve (Cover Flow), banda plana o pila, deslizado con inercia, con el teclado, la rueda del ratón o en avance automático; cada elemento es una imagen, un texto enriquecido o una tarjeta con plantilla, añadido a mano o leído desde un DataStore.
- Context menu — un menú contextual nativo construido entrada a entrada, en cascada, con iconos, marcas de verificación y grupos de opciones, abierto en el cursor, bajo un control o en un punto de la pantalla.
- Form — un formulario de entrada en un solo componente: secciones plegables, doce tipos de campo (texto, número, interruptor, lista, fecha, color, etiquetas, valoración…), validación, máscaras, y lectura o escritura de una fila de DataWindow.
- Gantt chart — un diagrama de Gantt: tareas y resúmenes plegables, hitos, dependencias, ruta crítica, escalas del día al trimestre, arrastrar y redimensionar con el ratón, llenado desde un DataStore.
- Kanban board — un tablero kanban: tarjetas arrastradas de una columna a otra, límites de trabajo en curso, etiquetas, vencimientos y avatares, columnas plegables, llenado desde un DataStore y reescrito en el DataWindow.
- Linear gauge — un indicador lineal, horizontal o vertical, de la misma familia que el indicador de esfera: barra o marca, rangos coloreados, marcas de escala, objetivo, valor ajustable.
- Pie chart — un gráfico circular o de anillo animado: porciones que se deslizan hacia sus nuevos valores, etiquetas dentro o fuera, un texto en el centro, una leyenda pulsable, un semicírculo si lo desea, porciones pequeñas agrupadas en «Otros», un DataStore leído en una llamada.
- Property grid — una cuadrícula de propiedades al estilo de Visual Studio: categorías, propiedades desplegables, un editor por tipo (número, booleano, lista, color, fecha…), búsqueda, orden alfabético y panel de ayuda.
- Tree view — un árbol, o una lista en árbol en cuanto tiene columnas: ramas leídas a demanda, casillas de tres estados, edición en el sitio, arrastrar y soltar, búsqueda, orden por columna, totales de rama, llenado desde un DataStore jerárquico y reescrito en el DataWindow, fluido con decenas de miles de nodos.
Qué cambia #
- Lo que se lee sin argumento es una propiedad: la selección, una posición, un estado, la disposición, el último error se leen como cualquier propiedad (
uo.is_selected_key,uo.ib_open,uo.is_last_error), de solo lectura cuando no se escriben;is_layoutsustituye al parof_get_layout/of_set_layout. Las funciones antiguas desaparecen: el compilador muestra cada línea que hay que retocar. - Una palabra por papel:
is_textes lo que un elemento muestra,is_labelel nombre de un dato,is_valuelo que el usuario escribe — las entradas de menú de la cinta y de la barra de estado y los comandos de la paleta pasan deis_labelais_text. La barra de progreso adopta las palabras de los indicadores (ib_show_value,il_value_color,is_format,is_unit), y el gráfico cartesiano como la tabla dinámica escriben sus números medianteis_format, un formato de visualización de PowerBuilder, en lugar deof_set_value_format. - Los eventos dicen más: todo clic derecho sobre un elemento recibe el punto de pantalla donde abrir un menú (
al_x,al_y: barra lateral, pestañas, barra de herramientas, ruta de navegación;ue_tile_contextdel panel de mosaicos pasa a serue_tile_rclicked), y algunos eventos reciben un argumento más — el calendario, el reproductor de sonidos, el toaster, el explorador del shell, el texto enriquecido, el visor Markdown. La barra de botones pone el texto antes del icono en sus adiciones. - Cada verbo devuelve un código:
of_stop,of_closeyof_resetde los componentes no visuales,of_go_back,of_go_forwardyof_stopdel navegador web,of_stopdel reproductor de vídeo devuelven unlong; una llamada escrita como instrucción sigue compilando. Los detalles, componente por componente, y qué modificar: Migrar de la 4.0 a la 5.0.
En el resto de la biblioteca #
- Button ya no está obsoleto: es el componente de un botón solo, Button bar sigue siendo el de una fila de botones.
- Máscaras de entrada numéricas en la cuadrícula de datos (
is_maskde una columna) y en un contador de la cinta (is_mask,is_format): la agrupación aparece a medida que llegan las cifras, los decimales se limitan, las letras se rechazan, y el valor sigue siendo el número desnudo. - Los menús nativos de un componente con un acento propio lo muestran en la entrada señalada.
- crypto: los blobs sin archivo (
of_base64_encode_blob,of_hash_blob,of_encrypt_blob…), la verificación de un token con el juego de claves de Azure AD, Google o Auth0 (of_jwt_verify_jwks, JWK), los claims esperados y la tolerancia de los JWT, nuevos algoritmos (RS384/512, PS256/384/512, ES384, HS384/512), las firmas PSS, los datos adicionales de AES-GCM, los ajustes TOTP y HOTP,of_password_needs_rehash. - webbrowser: la lista de los sitios que puede mostrar (
is_allowed_hosts), un certificado de intranet aceptado por su aplicación (ue_certificate_error), mensajes intercambiados con la página (ue_web_message,of_post_message), el zoom (ii_zoom),ue_load_startedeib_loading. - Los datos y los menús de PowerBuilder: un DataStore, un DataWindow o un DataWindowChild alimenta también el gráfico cartesiano, la barra lateral, el JSON (
of_from_datastore, yof_to_datastoreen el otro sentido) y el cliente REST (of_retrieve); la barra de menús y la paleta de comandos se llenan desde el menú PowerBuilder de una ventana (of_load_menu); el visor PDF y la imagen muestran un blob sin archivo. is_accessible_nameeis_accessible_descriptionen todos los componentes visuales, para los lectores de pantalla; el editor de código gana un historial de deshacer que su código pilota (of_undo,of_redo,ue_undo_state_changed) y Ctrl+/; la ruta de navegación se convierte en una barra de direcciones con autocompletado. La lista completa, componente por componente, está en el 12.6 de Migrar de la 4.0 a la 5.0 y en el historial de cada componente.
Corregido #
- Anillo de foco tras un cuadro de diálogo: un botón (o cualquier componente) pulsado con el ratón que recuperaba el foco al cerrarse un cuadro de diálogo mostraba el anillo de foco del teclado. Como Windows, el componente conserva ahora el modo en que estaba: sin anillo tras un clic, el anillo tras la tecla Tab.
- Control alojado en una pestaña o un panel: un control colocado en una página de Tab o en un panel de Dock container que escribía una propiedad de un componente en su
pbm_sizebloqueaba la aplicación 5 segundos por propiedad, y los clics hechos mientras tanto se perdían. La propiedad se aplica ahora en el acto. - Memoria: cada creación y posterior destrucción de un componente dejaba en memoria una parte de los archivos cargados por su página (unos 0,5 a 1 MB según el componente, desde la 3.0). Una aplicación que abre y cierra a menudo ventanas con componentes veía crecer su memoria sin retorno, hasta la caída de una aplicación de 32 bits. La memoria se devuelve ahora al destruir el componente; no hay nada que cambiar en su código.
- Menús: tras un momento en que la aplicación estaba ocupada, un menú (contextual, desplegable, de una cinta o de una barra de menús) podía dejar de cerrarse con un clic en otro lugar. Ahora siempre se cierra; no hay nada que cambiar en su código.
- commandpalette: una paleta cerrada con Alt+F4 seguía diciéndose abierta, y la siguiente pulsación de su atajo no la volvía a abrir. Ahora se cierra como con Escape.
- El motivo de un fallo (
is_last_error, antesof_get_last_error()) es el de este componente: a menudo era el último mensaje que otro había dejado en la DLL. - crypto:
of_encrypt_fileyof_decrypt_filetratan los archivos de más de 1 MB (el cifrado devolvía-4, el descifrado podía detener una aplicación de 32 bits). - REST client: una petición síncrona ya no congela la ventana, ni siquiera durante una descarga larga.
- Construir a lo grande es rápido: una cinta o un panel de mosaicos llenado elemento a elemento se dibuja una vez (una cinta de 200 controles tardaba de 13 a 14 s), y el editor de código sigue fluido más allá de 2.000 líneas.
- Cuadrícula de datos: un lector de pantalla lee una celda de valoración como su número de estrellas sobre cinco (
4 / 5); abrir y cerrar el editor de una celda numérica sin teclear ya no cambia un valor que el formato redondea.
4.0 — octubre 2026 #
Cinco componentes: datos, gráficos, documentos y sonido #
- Cartesian chart — un gráfico cartesiano animado: columnas, barras, líneas, áreas, dispersión, burbujas, mapas de calor, velas. El tipo se elige por serie: un gráfico combinado (columnas y línea de objetivo en dos ejes) cabe en un solo componente.
- Data grid — una cuadrícula moderna sobre un DataStore: columnas tipadas y celdas enriquecidas, ordenación, filtros, agrupaciones y subtotales, edición en el sitio, volúmenes muy grandes, exportación a CSV y Excel. Lee lo que el DataWindow dice de cada columna (título, formato, tabla de códigos), y el DataWindow sigue siendo el dueño de sus datos.
- Markdown view — un documento Markdown de solo lectura, con los colores del tema: títulos, listas, tablas, casillas de tareas, código coloreado, imágenes — desde un texto o un archivo del equipo.
- Scheduler — un calendario al estilo de Outlook: vistas de día, semana laboral, semana, mes y agenda, arrastrar y soltar, recursos lado a lado, categorías de color, tarjetas e información sobre herramientas escritas con plantillas — llenado cita a cita o desde un DataStore.
- Sound player — un objeto no visual que reproduce un archivo del equipo, una dirección
httpso un pitido sintetizado, de forma asíncrona (eventos) o síncrona (la llamada devuelve el control cuando el sonido termina).
Qué cambia #
- Un cambio pedido por su código (
of_select_*,of_expand,of_open…) lanza el mismo evento que un gesto del usuario, comoSelectTaben PowerBuilder; las preguntas hechas antes de un cambio son opcionales y se activan con una propiedadib_veto_*. - Se van dos métodos:
of_set_datade la tabla dinámica pasa a serof_from_datastore, yof_transformde XML desaparece con XSLT, que el motor del navegador está retirando. Algunos nombres y recuentos se alinean con el resto de la biblioteca. Los detalles, y qué modificar: Migrar de la 3.0 a la 4.0. - Los temas siguen a la aplicación: el acento que fija sobrevive a un cambio de tema, y un eje de tema dejado vacío sigue el suyo.
En el resto de la biblioteca #
- El teclado de la ventana: Intro pulsa el botón predeterminado más cercano al foco, los atajos de un componente responden desde toda la ventana, también una letra subrayada (
&Guardar), y F10 abre la barra de menús. - Todos los menús desplegables buscan al teclear y siguen fluidos con miles de entradas.
- Texto enriquecido: la etiqueta
[symbol=nombre]añade dieciocho glifos monocromos (reloj, lugar, persona, calendario…) que siguen el color del texto. - Novedades en la mayoría de los componentes entregados — pestañas con el teclado (Ctrl+Tab, clic central), paneles separados con un doble clic, chevrón de desbordamiento de la barra de menús, lista desplegable en la barra de herramientas, registro línea a línea del statictext, tamaño real de una imagen, lectura de una celda de la tabla dinámica… La lista completa, componente por componente, está en Migrar de la 3.0 a la 4.0 y en el historial de cada componente.
- Un asistente de IA (Claude, Cursor, VS Code…) puede consultar la API exacta de su versión y comprobar el código que propone, gracias al servidor MCP de la documentación entregado con la demostración.
Corregido #
- Una propiedad decimal (
double) se releía con el separador del equipo: en un Windows francés,1.5volvía mal. - El clic derecho sobre un elemento ya solo produce un evento, en todos los componentes.
- Tiles box:
of_get_layoutdevolvía una disposición vacía.
3.0 — septiembre 2026 #
Once componentes: datos, utilidades y medios #
- Breadcrumb — la ruta de navegación: dónde se está, y vuelta a cualquier nivel con un clic. Ramas abiertas bajo demanda, escritura directa de la ruta, archivos soltados sobre un segmento.
- Button bar — una fila de botones de comando — icono, etiqueta o ambos — en un solo componente; un clic devuelve la clave del botón.
- Crosstab — la tabla dinámica de un DataStore: filas, columnas, valores agregados, filtros, subtotales, campos y medidas calculados, exportación a CSV y Excel.
- Crypto — huellas, HMAC, cifrado por contraseña o por clave, firmas RSA, ECDSA y Ed25519, JWT, contraseñas con sal, TOTP de doble factor y DPAPI — sin instalar nada.
- JSON — construir un documento JSON tipo a tipo, leerlo a lo largo de una ruta y modificarlo en su sitio, en PowerScript puro.
- JSON tree — un documento JSON mostrado como en un editor de código: números de línea, coloreado por tipo, cada bloque plegable, búsqueda.
- REST client — un cliente HTTPS nativo y asíncrono: GET, POST, cabeceras, JSON, multipart, cookies, reintentos, descarga de archivos — sin el muro CORS de un navegador.
- Speech out — la lectura en voz alta con las voces instaladas en el equipo: frase y palabra en curso, cola, diccionario de pronunciación, lectura síncrona.
- Video player — un reproductor de vídeo con su propia barra según el tema: subtítulos, pantalla completa, capítulos, marcadores, lista de reproducción, captura de imagen.
- XML — construir un documento XML elemento a elemento y leerlo con un XPath de verdad: espacios de nombres, modificación, transformación XSLT.
- XML tree — un documento XML mostrado como en un editor de código: etiquetas, atributos y texto coloreados, cada elemento plegable, búsqueda.
Qué cambia #
- Toda posición pasada a un método cuenta desde 1, como las que ya devuelven los eventos de reordenación; una entrada en cascada devuelve su dirección completa. Los detalles, y qué modificar: Migrar de la 2.0 a la 3.0.
- Button se sigue entregando y soportando, pero queda obsoleto en favor de Button bar: una fila de botones cabe en un solo componente.
En el resto de la biblioteca #
of_set_property,of_get_propertyyof_component_name: controlar una propiedad por su nombre, para una pantalla de ajustes o una configuración guardada.- El cuadro de mensaje ofrece una lista de opciones (
of_add_choice,of_choose) además de sus botones.
Corregido #
- Un color releído (
il_text_color,il_accent…) devolvía0, negro, estuviera fijado o no: devuelve el color fijado, y-1cuando es el del tema. ue_errorde Picture y Shell explorer nunca se lanzaba.- Texto enriquecido: una
[palabra]desconocida hacía desaparecer el resto del texto; ahora se muestra tal cual. - Barra de estado:
ue_panel_rclickedda coordenadas de pantalla, para pasarlas tal cual a un menú contextual.
2.0 — septiembre 2026 #
Cinco componentes, todos dedicados a la navegación #
- Menu bar — barra de menús de la aplicación: menús, submenús, entradas marcables, separadores, iconos, atajos y mnemónicos
&Archivo, dibujada por la biblioteca en el tema de la aplicación. - Command palette — un atajo, tres letras, y cualquier acción de la aplicación se alcanza sin buscarla en los menús. Busca en la etiqueta, el grupo y las palabras clave, varias palabras a la vez.
- Radial menu — los comandos en corona alrededor del cursor al hacer clic derecho, elegidos por su dirección en lugar de recorrer una lista.
- Shell explorer — el árbol del shell real de Windows: Escritorio, Este equipo, unidades, carpetas, Red, con los iconos del equipo. Un solo
of_expandabre una ruta profunda. - Stepbar — el hilo de pasos de un asistente: los superados, el actual y los que quedan, en horizontal o en vertical.
Una API remodelada sobre los dieciséis de la 1.0 #
Una clave, una dirección; todo desde el componente; una adición devuelve un código. Las tres reglas, el antes/después y cada firma cambiada están en Migrar de la 1.0 a la 2.0. El motivo: un handle que añadía no podía decir que había rechazado, y tres argumentos para designar un item obligaban a cada componente a inventar su propia manera de hacerlo.
En todos los componentes #
of_count,of_keys_atyof_has, en el componente y en cada nivel: lo que contiene un componente se pregunta, ya no hay que llevar la cuenta uno mismo.- Todo método que devuelve un
longdice qué significa su retorno:0aplicado,-5argumento no válido,-2componente no creado — en la doc integrada de la demo igual que aquí. - Las propiedades de un item se releen en directo: el icono de una entrada de la listbar, el texto y el icono de un mosaico, el estado de un botón de barra — un getter dice lo que está en pantalla, nunca un valor memorizado.
ib_visibleen cada entrada de menú — barra de menús, menú contextual, menú radial, menús de la cinta: ocultar no es atenuar, la entrada sale del menú, atajo incluido, y conserva su clave para volver.- La barra de estado construye sus menús entrada a entrada (
of_add_menu_item ("panel/id", …)), con un handle de entrada que atenúa, marca y oculta — en lugar de los dos arrays paralelos deof_set_panel_menu. ue_script_error: un error de script en la página llega a PowerBuilder con su mensaje y su pila, en lugar de perderse.
Corregido #
- Un item desactivado u oculto ya no responde a nada: ni clic ni teclado — la listbar aún seleccionaba una entrada atenuada con Intro.
- El texto atenuado se lee en todos los temas (contraste 3:1 como mínimo), y el texto al pasar el ratón también en modo oscuro — dos botones desactivados de la cinta se volvían invisibles en Office 2007.
- Una ruta de Windows leída desde la página volvía con las barras invertidas duplicadas (
C:\\Windows); un valor con comillas quedaba cortado. - Dock container: el panel fijado a la izquierda perdía su borde derecho por encima del 100 % de escala de pantalla.
- Cinta: el icono de un botón desactivado no se atenuaba en modo compacto; un título de la barra de menús se iluminaba a la vez que el que estaba bajo el ratón.
- Editor de código: el texto releído tras un plegado era el antiguo, y desplegar sobrescribía lo tecleado.
1.0 — agosto 2026 #
Primera versión: dieciséis componentes — button, code editor, dock container, listbar, message box, PDF viewer, picture, progress, ribbon, statictext, statusbar, tab, tiles box, toaster, toolbar, web browser — una sola DLL que implementar, x86 y x64 con el mismo nombre, sin dependencia .NET, ActiveX ni PBNI. Temas Office, Fluent y Metro, claro y oscuro; seis idiomas y RTL; licencia totalmente sin conexión; PowerBuilder 10.2 a 2025.