PBToolboxAI v5 ← Site

buttonbar — u_pbt_buttonbar #

← Referencia de componentes · Índice de la guía

buttonbar alinea una fila de botones de comando — icono, etiqueta o ambos — en un solo componente. Un clic informa la clave del botón (ue_clicked); cada botón se controla con un handle (of_button) para deshabilitarlo, colorearlo u ocultarlo. El componente a preferir en cuanto hay varios botones: un WebView2 para toda la barra, donde N button separados costarían N.

▶ Verlo en vivo — Aplicación de demostración, mosaico Button bar, con el código y esta página lado a lado.


Inicio rápido #

// A command bar in three lines : key, label, icon
// ("&Save" underlines the S : Alt+S fires the button from anywhere in the window)
uo_bar.of_add_button(/*key*/ "save", /*text*/ "&Save", /*image*/ "mono:img\packimages.dll:svg/samples/save")
uo_bar.of_add_button(/*key*/ "find", /*text*/ "&Find", /*image*/ "mono:img\packimages.dll:svg/samples/find")
uo_bar.of_add_button(/*key*/ "copy", /*text*/ "&Copy")

// A chord : Ctrl+S fires Save, whatever control has the focus
uo_bar.of_button(/*key*/ "save").is_shortcut = "Ctrl+S"

// Grey out a button
uo_bar.of_button(/*key*/ "copy").ib_enabled = false

// React : ue_clicked carries the button key
// (in the ue_clicked event of the component)
CHOOSE CASE as_key
	CASE "save" ; wf_save()
	CASE "find" ; wf_find()
END CHOOSE

Propiedades #

PropiedadTipoPredeterminadoDescripción
ib_enabledbooleantrueLa barra entera habilitada o deshabilitada. Deshabilitada, ningún botón responde — ni clic, ni Intro, Esc, letra Alt o atajo: esas teclas se quedan en la ventana — y la barra sale del orden de tabulación. Cada botón conserva su propio ib_enabled
ii_padding_xinteger12Sangría izquierda/derecha de la barra, en píxeles: el espacio antes del primer botón y después del último. 0 pega los botones a los bordes; -1 = la del tema
ii_padding_yinteger12Sangría superior/inferior de la barra, en píxeles. Un botón LLENA la altura de la barra: esta sangría decide la altura de los botones (barra más alta o sangría menor = botones más altos). 12 por defecto; -1 = la del tema
ii_gapinteger-1Espacio ENTRE dos botones, en píxeles. -1 (por defecto) = el del tema. 0 junta los botones, separados por una línea cuando el tema la tiene
ii_image_sizeinteger0Tamaño de los iconos de los botones, en píxeles; 0 = el del tema (18)
ii_badge_sizeinteger0Altura de las insignias, en píxeles — su texto sigue; 0 = la del tema (16)
is_alignstringendAlinea la fila: start (izquierda), center, end (derecha, predeterminado, como un cuadro de diálogo) o justify (botones de igual ancho en todo el ancho). Valores lógicos (RTL) — constantes ALIGN_*
is_defaultstring""Clave del botón predeterminado — la acción principal, pintada con el acento, que Intro activa (como el Aceptar de un cuadro de diálogo). Cuando un botón de la barra tiene el foco del teclado, Intro activa ESE botón, que lleva entonces el aspecto predeterminado (la convención de Windows); is_default releído sigue siendo la clave puesta. Sin botón predeterminado, el botón con el foco solo conserva su anillo de foco. Un predeterminado deshabilitado u oculto no toma Intro: la tecla se queda en la ventana — nunca va al botón predeterminado de OTRA barra, aunque sea el único. Cuando dos barras de una misma ventana tienen un botón predeterminado (dos hojas MDI, dos paneles), Intro va a la del lado del foco. El rol se va con su botón: quitarlo, o vaciar la barra, vacía is_default. Vacío = ninguno; solo un botón predeterminado a la vez
is_cancelstring""Clave del botón cancelar — el que Esc activa (como el Cancelar de un cuadro de diálogo). Deshabilitado u oculto, no toma Esc. El rol se va con su botón: quitarlo, o vaciar la barra, vacía is_cancel. Vacío = ninguno; solo un botón cancelar a la vez
is_theme_stylestring""Estilo visual del componente (constantes THEME_STYLE_*); vacío = el de la aplicación, seguido en cada cambio
is_theme_modestring""Variante clara u oscura (constantes THEME_MODE_*); vacío = la de la aplicación, seguida en cada cambio
il_theme_accentlong-1Color de acento de este componente (-1 = acento de la aplicación, o el del tema)
is_tooltipstring""Tooltip simple mostrado al pasar el ratón por el componente
is_super_tooltip_titlestring""Título del tooltip enriquecido (prevalece sobre is_tooltip)
is_super_tooltip_textstring""Texto del tooltip enriquecido (se acepta el marcado enriquecido)
is_super_tooltip_imagestring""Imagen del tooltip enriquecido

Métodos #

MétodoFunción
of_add_button (string as_key, string as_text {, string as_image}) → longAgrega un botón de comando al final de la barra: su clave, su etiqueta y, opcionalmente, su icono (archivo de imagen; mono: lo recolorea al tema). La etiqueta acepta marcado enriquecido; &Save subraya la S y hace que Alt+S active el botón, && es un & literal. Una etiqueta vacía da un botón de solo icono. Devuelve 0, -5 con una clave vacía, una clave que contiene / o una barra vertical, una clave ya en la barra, o un botón sin imagen ni texto
of_insert_button (string as_key, string as_text, string as_image, integer ai_index) → longInserta un botón de comando en la posición ai_index (desde 1), desplazando los siguientes; más allá del último va al final, en 0 o menos al principio. Devuelve 0, -5 con una clave vacía, una clave que contiene / o una barra vertical, una clave ya en la barra, o un botón sin imagen ni texto
of_remove_button (string as_key) → longQuita un botón por su clave; los demás conservan su estado vivo. Su letra Alt, los atajos que la aplicación le dio, su rol predeterminado / cancelar, sus colores y su tooltip se van con él. Devuelve 0, -5 con clave vacía o una clave que no nombra ningún botón
of_move_button (string as_key, integer ai_index) → longMueve un botón a la posición ai_index (a partir de 1; más allá del último = al final, 0 o menos = al principio) sin perder su estado vivo. Devuelve 0, -5 con clave vacía o una clave que no nombra ningún botón
of_clear_buttons ( ) → longQuita todos los botones de la barra, con sus letras Alt, los atajos que la aplicación les dio, los roles predeterminado / cancelar, colores y tooltips. Devuelve 0, -2 si no está creado
of_clear_shortcuts ( ) → longQuita el atajo de TODOS los botones: ya no responde, ya no aparece en el tooltip, y is_shortcut se relee vacío. Las letras Alt se quedan. Devuelve 0, -2 si no está creado
of_focus_button (string as_key) → longPone el foco del teclado en UN botón — No en lugar de Sí ante una pregunta destructiva, para que Intro responda No. Devuelve 0, -5 con clave vacía o que no nombra ningún botón, -4 si el botón no puede tomarlo (deshabilitado, oculto, en una barra deshabilitada o no dibujado en modo demo), -2 si no está creado
of_register_shortcut (string as_chord, string as_key) → longDa un atajo de teclado (Ctrl+S, F5…) a UN botón, como su is_shortcut: pulsado en cualquier parte de la ventana, activa el botón (ue_clicked), aunque el foco esté en otro sitio, y se une a su tooltip. Es independiente de la letra Alt del botón. Mientras el botón no pueda activarse (deshabilitado, oculto, no dibujado), la tecla se queda en la ventana. Un atajo vacío lo quita. En una barra un atajo nombra siempre un botón: la forma de un argumento, o una clave que no nombra ningún botón, devuelve -5; un atajo que la ventana nunca puede lanzar (una letra sola, Ctrl+Shift) devuelve -5 y conserva el atajo existente. Devuelve 0, -2 si no está creado
of_button (string as_key) → n_pbt_buttonbar_buttonDevuelve el handle de un botón (por su clave) para leer o cambiar sus propiedades (ver más abajo). Una clave que no nombra ningún botón recibe un handle neutro compartido: lo que se le da no va a ninguna parte. of_count, of_keys_at y of_has cuentan también los botones ocultos

Eventos #

EventoCuándo
ue_clicked (string as_key)Se ha usado un botón: un clic, Intro (el botón predeterminado, o el que tiene el foco), Esc (el botón cancelar), su letra Alt o un atajo registrado en él. Se pasa su clave: una aplicación que conecta Cancelar debe esperarlo también desde Esc. Un botón deshabilitado no emite nada
ue_button_rclicked (string as_key, long al_x, long al_y)Clic derecho sobre UN botón, o tecla Menú sobre el que tiene el foco, con su clave: el lugar donde abrir el menú de ese botón. Un botón deshabilitado no responde. Es el único evento de ese clic derecho: ue_rclicked no se lanza además; al_x, al_y: dónde abrir el menú, en píxeles de pantalla — el puntero, o con el teclado (tecla Menú, Mayús+F10) la esquina inferior izquierda del botón; un contextmenu se abre allí tal cual (uo_menu.of_show(al_x, al_y))
ue_rclicked ( )Clic derecho sobre la barra FUERA de cualquier botón. Un clic derecho sobre un botón lanza solo ue_button_rclicked: un menú escrito en ambos nunca se abre dos veces

Propiedades de un botón (of_button) #

PropiedadTipoPredeterminadoDescripción
ib_enabledbooleantrueHabilita o deshabilita un botón; deshabilitado, no se puede pulsar y ni Intro, ni Esc, ni su letra Alt, ni su atajo lo activan — esas teclas se quedan en la ventana; las flechas lo saltan
ib_visiblebooleantrueMuestra u oculta un botón; oculto, conserva su lugar y vuelve donde estaba
is_textstring""La etiqueta del botón, marcado enriquecido aceptado; se cambia después de agregarlo. &Save subraya la S y hace que Alt+S active el botón desde cualquier parte de la ventana, como un CommandButton de PowerBuilder; && es un & literal. Un botón conserva una etiqueta o un icono: vaciar la etiqueta de un botón sin icono se rechaza, y la etiqueta se relee sin cambios
is_imagestring""Icono del botón (archivo de imagen; mono: sigue el tema); se cambia tras agregarlo. Vaciar el icono de un botón sin etiqueta se rechaza. Un botón de solo icono se anuncia al lector de pantalla por su tooltip (is_tooltip), si no por su clave
is_stylestringstandardEl aspecto del botón: standard, primary (el bloque de acento), flat (sin marco en reposo) o danger (una acción destructiva, en el color de peligro del tema) — constantes STYLE_*; un valor desconocido se relee standard. Un botón deshabilitado pierde su relleno
is_badgestring""Una pequeña insignia en la esquina del botón: un número (3; más allá de 99 muestra 99+) o una palabra corta (New, !). "" o 0 = ninguna. Un lector de pantalla la oye con el nombre del botón
il_badgelong0La misma insignia, como número (0 = ninguna); una insignia de palabra se relee 0 aquí
il_badge_colorlong-1Color de la insignia de ESTE botón; -1 = el del tema, 0 es el negro. El texto encima se elige para que siga legible
is_mnemonicstring""La letra Alt del botón cuando no es el & de su etiqueta — prevalece sobre él: una letra o un dígito, la primera de su clase en la etiqueta se subraya. Vacío = el & de la etiqueta. Mientras el botón no pueda activarse, su letra se queda en la ventana
is_shortcutstring""Un ATAJO de teclado para este botón — Ctrl+S, F5, Ctrl+Shift+P: pulsado en cualquier parte de la ventana, activa el botón y se une a su tooltip (Save (Ctrl+S)). Se relee en su forma canónica (ctrl+s); un atajo que la ventana nunca puede lanzar se rechaza y se relee vacío. Como of_register_shortcut(chord, key). La letra Alt es el & de la etiqueta, o is_mnemonic
il_back_colorlong-1Fondo de ESTE botón (-1 = el del componente, que sigue el tema)
il_text_colorlong-1Color del texto de ESTE botón (-1 = el del componente)
il_back_color_hoverlong-1Fondo de ESTE botón al pasar (-1 = el del componente)
il_text_color_hoverlong-1Color del texto de ESTE botón al pasar (-1 = el del componente)
il_accentlong-1Acento de ESTE botón: tiñe su insignia y, cuando es el botón predeterminado (o en estilo primary), su relleno (-1 = el acento del componente)

Heredado de la base común #

Estos miembros existen en todos los componentes visuales — no son propios de este. Se detallan una sola vez, en los capítulos transversales; esta tabla solo dice dónde leerlos.

MiembrosFunciónDetallado en
of_count · of_keys_at · of_hasRecorrer lo que el componente contiene3.2 Los items
of_resetPoner el componente a cero3.6 Poner un componente a cero: of_reset()
of_register_shortcut · of_clear_shortcutsAtajos de teclado del componente3.5 Los atajos de teclado
of_is_created · of_is_ready · of_get_last_errorSi ha nacido, si está listo, qué ha fallado3.7 Diagnóstico
of_save_as_png · of_save_as_jpgExportar el render como imagen3.8 Exportar la representación como imagen
of_set_redrawAgrupar los cambios en un solo repintado3.10 Buenas prácticas
of_preload_iconsIconos mostrados sin retardoVisualización instantánea: of_icon
of_set_translationTraducir una etiqueta del componente5.2 Adaptar una etiqueta: of_set_translation
of_focus_webviewDar el foco al componente6.4 Teclado y foco
of_print · of_print_to_pdfImprimir, o escribir un PDF6.9 Imprimir
of_set_property · of_get_property · of_component_nameControlar una propiedad por su nombre3.1 El motor de propiedades
is_accessible_name · is_accessible_descriptionEl nombre y la descripción que dice un lector de pantalla3.4 Propiedades y eventos opcionales

← Referencia de componentes · Índice de la guía