PBToolboxAI v5 ← Site

menubar — u_pbt_menubar #

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

Barra de menús de la aplicación: menús, submenús, entradas marcables, separadores, iconos y atajos — todo dibujado por la biblioteca, sin ningún menú de Windows.

▶ Verlo en vivo — Aplicación de demostración, mosaico Menu bar: la vista previa, el código que lo genera y esta página, uno al lado del otro.


De un vistazo #

Userobjectu_pbt_menubar
Clase de ítemsn_pbt_menubar_item (una entrada) · n_pbt_menubar_menu (un menú de la barra)
Sirve paraDar a su ventana la barra de menús de la aplicación, con el mismo tema que todo lo demás
PrincipioUsted declara los menús y luego sus entradas; cada entrada se recupera por su dirección menu/id

Inicio rápido #

// evento open de la ventana
uo_menus.of_add_menu(/*key*/ "file", /*text*/ "Archivo")
uo_menus.of_add_item(/*keys*/ "file/open", /*text*/ "Abrir")
uo_menus.of_add_item(/*keys*/ "file/save", /*text*/ "Guardar")
// event ue_item_selected : (string as_keys)
choose case as_keys
	case "file/open"; of_open_document()
	case "file/save"; of_save_document()
end choose

El modelo: tres niveles, una clave por nivel #

Una barra de menús tiene tres niveles, y cada uno se indica con su clave:

NivelAñadido porClave
El menú de la barraof_add_menusu clave, file
La entrada de un menúof_add_itemla dirección menu/entrada, file/open
La subentrada de una entradaof_add_itemla dirección menu/entrada/subentrada, file/export/pdf — tan profunda como haga falta

Una clave solo es única bajo su padre: por eso una entrada se designa siempre por su dirección completa, primero el menú — nunca por su clave sola. Dos menús pueden así tener cada uno su entrada open, y dos submenús su propio pdf (file/export/pdf, file/print/pdf), sin estorbarse. Una clave no contiene ni / ni |, no está vacía y no empieza por __: las altas la rechazan (-5), igual que una dirección ya ocupada o un padre nunca añadido.

Un separador no tiene clave: of_add_separator traza una línea al final de un menú (file) o de la cascada de una entrada (file/export), y después no hay nada que releer.


Propiedades #

PropiedadTipoPredeterminadoFunción
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""Información sobre herramientas sencilla al pasar por el componente
is_super_tooltip_titlestring""Título de la información enriquecida (prevalece sobre is_tooltip)
is_super_tooltip_textstring""Texto de la información enriquecida (se acepta marcado enriquecido)
is_super_tooltip_imagestring""Imagen de la información enriquecida
ib_wrapbooleanfalsefalse (predeterminado): la barra se queda en una línea; los títulos que no caben, desde el final, pasan al desplegable de un chevron en su extremo (sus entradas en cascada), y la altura ya no cambia. true: la barra salta de línea y anuncia su nueva altura (ue_auto_height) — lo que hacía antes de la 4.0
ib_track_hoverbooleanfalseSuscripción a ue_item_hover: sin ella los desplegables ni siquiera informan de la entrada señalada — un evento disparado a cada movimiento del puntero solo se envía a una aplicación que lo ha pedido

Propiedades de una entrada — n_pbt_menubar_item #

Obtenidas mediante of_item(dirección) — of_item("file/export/pdf"). Una dirección de un solo nivel designa un menú, no una entrada: su handle no cambia nada, use of_menu.

PropiedadTipoPredeterminadoFunción
is_textstring—Cambia la etiqueta de la entrada, en caliente
ib_enabledbooleantrueEntrada activa; una entrada atenuada ya no responde al clic
ib_visiblebooleantrueEntrada retirada de la lista sin ser eliminada — submenú y atajo dormidos con ella; conserva su clave y vuelve tal cual. Un atajo dormido conserva su combinación: tampoco llega a su aplicación; is_shortcut = "" se la devuelve
is_shortcutstring""El acelerador mostrado a la derecha de la entrada (Ctrl+S) — y activo: la combinación lanza ue_item_selected para esa entrada, esté donde esté el foco. En un menú se aprenden los atajos de una aplicación; una tecla mostrada que no hace nada enseña lo contrario. Teclas: una letra, una cifra, de F1 a F24, Enter, Esc, Del, Insert, Home, End, PageUp, PageDown, y con Ctrl o Alt también +, -, ,, ., las flechas (Left…), Space, Tab, Backspace (Ctrl++ para el zoom). Un atajo va en una hoja: en una entrada que abre una cascada no se muestra ni se dispara. La cadena vacía retira ambos. Armado una vez que la entrada existe (of_add_item primero): en una dirección que no designa ninguna entrada, no se arma nada. Antes de actuar, lanza ue_menu_opening de su menú
ib_checkedbooleanfalseMarca de verificación delante de la entrada — para una opción que se activa y se desactiva
is_imagestring""El icono de la entrada, cambiado en caliente: la entrada conserva su lugar en la lista. Mismas rutas que of_add_item (mono:, tint:, archivo.dll:NOMBRE); la cadena vacía lo retira
is_groupstring""Convierte la entrada en una entrada de opción: las entradas de un mismo grupo bajo el mismo padre se excluyen — marcar una (ib_checked = true, o la elección del usuario) desmarca las demás, y una viñeta redonda sustituye a la marca. ue_item_selected sigue diciendo cuál se eligió. La cadena vacía la vuelve una entrada normal
is_tonestring""El tono del comando: su texto, en reposo, en un color del tema claro u oscuro — TONE_DANGER para el que destruye, TONE_WARN, TONE_SUCCESS, TONE_INFO; vacío o TONE_NEUTRAL = el texto del tema. Señalada, la entrada toma los colores de paso del tema; un il_text_color de la entrada prevalece. Las constantes están en u_pbt_menubar
il_accentlong-1Acento de esta entrada: su marca y su borde cuando está señalada (-1 = el del tema)
il_back_colorlong-1Fondo de esta entrada en el desplegable, en reposo
il_text_colorlong-1Color del texto de esta entrada
il_back_color_hoverlong-1Fondo de esta entrada cuando está señalada
il_text_color_hoverlong-1Color del texto de esta entrada cuando está señalada
is_tooltipstring""Se guarda y se relee, pero una entrada del desplegable no muestra ninguna información sobre herramientas: el desplegable nativo no tiene. Solo los títulos de los menús muestran la suya (of_menu)
is_super_tooltip_titlestring""Título de su información enriquecida — guardado, no mostrado (ver is_tooltip)
is_super_tooltip_textstring""Texto de su información enriquecida — guardado, no mostrado
is_super_tooltip_imagestring""Imagen de su información enriquecida — guardada, no mostrada

Propiedades de un menú — n_pbt_menubar_menu #

Obtenidas mediante of_menu(clave) — of_menu("file"). Colores e información sobre herramientas se muestran en el título del menú en la barra.

PropiedadTipoPredeterminadoFunción
is_textstring—Texto del menú, & incluido (mnemónico), cambiado sin reconstruir la barra
ib_enabledbooleantrueMenú atenuado: ya no se abre, sus entradas y sus atajos con él; el teclado lo salta
ib_visiblebooleantrueEl menú sale de la barra — entradas y atajos dormidos con él — y vuelve tal cual. Los atajos dormidos conservan su combinación: tampoco llega a su aplicación
is_alignstring"start"u_pbt_menubar.ALIGN_END coloca el menú al final de la barra, como Ayuda — con los que lo siguen en la misma alineación, después de él; ALIGN_START (predeterminado) lo devuelve entre los demás. Lógico: el final es el lado izquierdo en un diseño de derecha a izquierda. Con el chevron, los títulos del final se pliegan primero
il_accentlong-1Acento de este menú: una línea bajo su título mientras su desplegable está abierto (-1 = ninguno)
il_back_colorlong-1Fondo de su título, en reposo
il_text_colorlong-1Color del texto de su título, en reposo
il_back_color_hoverlong-1Fondo de su título al pasar el ratón o abierto
il_text_color_hoverlong-1Color del texto de su título al pasar el ratón o abierto
is_tooltipstring""Información mostrada cuando el puntero se detiene en su título
is_super_tooltip_titlestring""Título de la información enriquecida de su título
is_super_tooltip_textstring""Texto de esa información enriquecida (se admite marcado enriquecido)
is_super_tooltip_imagestring""Imagen de esa información enriquecida

Métodos #

MétodoFunción
of_add_menu (string as_key, string as_text)Añade un menú a la barra. Devuelve 0 una vez aplicado, -5 si la clave se rechaza (vacía, con / o una barra vertical, que empieza por __, o ya ocupada), -2 si el componente no está creado
of_add_item (string as_keys, string as_text)Añade una entrada en su dirección: file/open en el menú File, file/export/pdf bajo la entrada Export, tan profunda como haga falta. Devuelve 0 una vez aplicado, -5 si la dirección se rechaza: menos de dos niveles, un nivel vacío, una clave con / o una barra vertical o que empieza por __, un menú o una entrada padre nunca añadidos, o una dirección ya ocupada. -2 si el componente no está creado
of_add_item (string as_keys, string as_text, string as_image, boolean ab_checked)Lo mismo, con el icono y la marca. Para atenuar la entrada, ahora o más tarde, use su handle: of_item(dirección).ib_enabled = false. Devuelve 0 una vez aplicado, -5 si la dirección se rechaza: menos de dos niveles, un nivel vacío, una clave con / o una barra vertical o que empieza por __, un menú o una entrada padre nunca añadidos, o una dirección ya ocupada. -2 si el componente no está creado
of_add_separator (string as_keys)Traza una línea de separación al final de un menú (file) o de la cascada de una entrada (file/export). Devuelve 0 una vez aplicado, -5 si no se añadió nada en esa dirección, -2 si el componente no está creado
of_add_header (string as_keys, string as_text) → longAñade un encabezado de sección al final de un menú (view) o de la cascada de una entrada (view/panels): una línea de título sobre las entradas que lo siguen, hasta el siguiente encabezado o separador. No es una entrada — nunca se elige, nunca la cuenta of_count, ni en el límite de demo — y no se dibuja cuando todas las entradas que encabeza están ocultas. Devuelve 0 una vez añadido, -5 si no se creó nada en esa dirección, -2 si el componente no está creado
of_item (string as_keys) → n_pbt_menubar_itemHandle de una entrada, por su dirección — of_item("file/export/pdf") —, para leer o fijar sus propiedades. Es exactamente lo que devuelve ue_item_selected: el argumento se vuelve a dar tal cual aquí. Nunca la clave sola: dos submenús pueden tener cada uno su pdf, y solo la dirección los distingue. Una dirección de un nivel designa un menú: su handle no cambia nada, use of_menu
of_menu (string as_key) → n_pbt_menubar_menuHandle de un menú de primer nivel, para leerlo o cambiarlo en caliente — atenuarlo, ocultarlo, renombrarlo, alinearlo al final, colorearlo — sin reconstruir la barra; ib_visible lo retira de la barra, entradas y atajos dormidos con él
of_remove_item (string as_keys) → longQuita una entrada, en su dirección (file/open, file/export/pdf) — con su cascada; las demás se quedan. Sus handles se liberan y su atajo se desarma: la tecla vuelve a su aplicación. Para vaciar una cascada y conservar la entrada en su sitio: of_clear_items. Devuelve 0 una vez aplicado, -5 si ninguna entrada vive en esa dirección, -2 si el componente no está creado
of_remove_menu (string as_key) → longQuita un menú de primer nivel, con sus entradas — handles liberados, atajos desarmados. La barra se vuelve a dibujar y su altura se vuelve a anunciar. Devuelve 0 una vez aplicado, -5 para un menú nunca añadido, -2 si el componente no está creado
of_insert_item (string as_keys, string as_text, integer ai_index) → longInserta una entrada en un rango de su lista en lugar de al final: as_keys es la dirección que tendrá (file/recent), ai_index su lugar entre las entradas de esa lista, a partir de 1 (0 o menos = al principio; más allá del final = al final). Separadores y encabezados no cuentan: la entrada va justo antes de la que ocupaba ese rango. Una lista de archivos recientes queda así en su sitio, encima de Salir. Devuelve 0 una vez aplicado, -5 si la dirección se rechaza (como of_add_item), -2 si el componente no está creado
of_insert_item (string as_keys, string as_text, string as_image, boolean ab_checked, integer ai_index) → longLo mismo, con el icono y la marca, como of_add_item. Devuelve 0 una vez aplicado, -5 si la dirección se rechaza, -2 si el componente no está creado
of_clear_items (string as_keys) → longVacía un menú (file) o la cascada de una entrada (file/recent) y conserva el menú o la entrada en su sitio — lo que necesita una lista de archivos recientes rehecha en cada apertura. Las entradas que se van se llevan sus handles y sus atajos. Devuelve 0 una vez aplicado, -5 si no se creó nada en esa dirección, -2 si el componente no está creado
of_open (string as_key) → longAbre el desplegable de un menú de primer nivel desde el código, como lo haría un clic en su título: primero se lanza ue_menu_opening, el desplegable aparece con su respuesta, luego ue_item_selected o ue_menu_closed. Un menú plegado en el chevrón se abre desde el chevrón. Devuelve 0 una vez pedido, -5 para un menú desconocido, oculto o atenuado, -2 si el componente no está creado
of_close ( ) → longCierra el desplegable en pantalla — o un menú que aún se está abriendo — sin elección: sigue ue_menu_closed, como con un clic fuera. Si no hay nada abierto, no pasa nada. Devuelve 0 una vez pedido, -2 si el componente no está creado
of_is_open ( ) → booleanTRUE desde que un menú se abre — su ue_menu_opening ha salido — hasta que se cierra, con o sin elección. Leído en el componente, nunca en una copia
of_load_menu (menu am_menu) → longConstruye toda la barra a partir de un menú PowerBuilder — el menú de una ventana: cada elemento de am_menu se convierte en un menú de la barra, sus elementos en las entradas, cascadas incluidas, con su texto (marcas & conservadas), su estado (Enabled, Checked, Visible), su imagen de barra de herramientas cuando es un archivo, y su Shortcut, mostrado y armado. Las claves son los ClassName de los elementos: m_file/m_export/m_pdf. La barra sigue viva: antes de cada apertura (y antes de que actúe un atajo) se ejecuta el Clicked del título, como lo hace PowerBuilder, y luego se vuelve a leer cada elemento: su texto (incluido el atajo escrito tras una tabulación), Enabled, Checked y Visible. Elegir una entrada ejecuta primero el Clicked de su elemento, luego ue_item_selected; un elemento atenuado entretanto no ejecuta nada (ue_menu_closed). Un Clicked no encuentra ParentWindow: guarde la ventana en una variable de instancia del menú. El menú sustituye lo que tenía la barra; mantenga vivo el objeto menú. Devuelve 0 una vez cargado, -5 si am_menu no es válido, -2 si el componente no está creado
of_loaded_item (string as_keys) → menuEl elemento de menú PowerBuilder del que proviene un menú o una entrada (of_load_menu), por su dirección — para leer lo que el menú sabe y la barra no, su MicroHelp para una línea de ayuda en ue_item_hover. Una dirección que no proviene de un menú da una referencia no válida: compruébela con IsValid
of_clear ( )Vacía la barra — menús y entradas; sus handles se liberan y los atajos de las entradas se desarman. Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_reset ( )Vacía la barra y devuelve todas las propiedades a su valor predeterminado. Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_set_redraw (boolean)Agrupa una ráfaga de cambios en un solo renderizado. Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_save_as_png (string) · of_save_as_jpg (string)Exporta el renderizado como imagen. Devuelve 0 una vez escrita la imagen, -4 si la escritura falla, -2 si el componente no está creado

Eventos #

EventoSe dispara cuando
ue_menu_opening (string as_key)Se lanza cuando un menú de primer nivel va a abrirse — y el desplegable espera: solo se abre una vez devuelto el evento. Active, atenúe o rellene aquí sus entradas: el cambio se ve en esta apertura, no en la siguiente. Se lanza también antes de que un atajo de una de sus entradas actúe, como hace Windows: Pegar atenuado o reactivado aquí responde igual a Ctrl+V. El chevrón lo lanza una vez por cada menú que muestra. Cada ue_menu_opening va seguido de exactamente un ue_item_selected o un ue_menu_closed — incluida una apertura abandonada antes de mostrarse: lo que preparó siempre puede deshacerse
ue_menu_closed (string as_key)Un menú se cerró sin elección: por el usuario (clic fuera, Esc, o deslizamiento hacia el menú vecino), por su código que quita, vacía, oculta o atenúa el menú abierto o llama a of_close, por una apertura abandonada antes de que su desplegable apareciera (deslizamiento rápido, Esc, la ventana pierde el foco), y por un atajo cuya entrada atenuó ue_menu_opening. Deshaga aquí lo que ue_menu_opening había preparado (una vista previa, una selección). Una elección lanza ue_item_selected en su lugar, y of_reset no lanza nada
ue_item_selected (string as_keys)El usuario ha elegido una entrada, o pulsado su atajo. as_keys es su dirección, primero el menú — file/open, file/export/pdf: la clave sola no dice de qué submenú sale, y dos submenús pueden tener cada uno la suya. Ese mismo texto se vuelve a dar tal cual a of_item. Una entrada atenuada, oculta o quitada mientras su desplegable estaba abierto no lanza nada. Una entrada de un menú PowerBuilder (of_load_menu) ya ha ejecutado el Clicked de su elemento
ue_item_hover (string as_keys)Con ib_track_hover = true: la entrada bajo el puntero o el teclado en un desplegable abierto, por su dirección (file/export/pdf) — también una entrada atenuada, su ayuda puede decir por qué. Se dispara una vez por entrada, y luego con una dirección vacía al cerrarse el desplegable (antes de ue_item_selected en una elección): escriba el texto de ayuda de una barra de estado y luego vacíelo. En el desplegable del chevrón, un menú plegado sobrevolado devuelve solo su clave (tools): la ayuda de ese menú
ue_auto_height (long al_height)La barra anuncia la altura que necesita — recoloque lo que haya debajo
ue_ready ( )El componente terminó de cargar; todo lo enviado antes se ha reproducido
ue_runtime_missing ( )Falta el runtime WebView2: el componente queda vacío
ue_bg_color (long al_color)El componente calculó su color de fondo de tema; el userobject ya lo adoptó (backcolor)

Una línea, por defecto. Los títulos que no caben pasan al chevron al final de la barra (ib_wrap = false, el valor predeterminado): la altura sigue siendo la de una línea y ue_auto_height se dispara una vez. Con ib_wrap = true la barra salta de línea: nunca se desplaza, su altura sigue las filas y ue_auto_height le indica cuánto en cada cambio de ancho. Abrir el chevrón lanza ue_menu_opening para cada menú que muestra (y ue_menu_closed para cada uno al cerrarse): una aplicación que rellena sus listas al abrir las rellena todas.


Con el teclado #

TeclaEfecto
Alt · F10Da el teclado a la barra y subraya las letras de los menús, como en cualquier aplicación de Windows; una segunda pulsación lo devuelve; Alt actúa al soltarse, solo: Alt+Mayús (cambio de distribución) o Alt+Tab no lo encienden
»El chevron de los títulos que no caben: las flechas se detienen en él como en un título, Intro o Abajo abre la lista de los menús ocultos, y Alt + la letra de un menú oculto abre ese menú desde el chevron
Alt + letraAbre el menú de esa letra (&Archivo) desde cualquier control de la ventana — un campo, un DataWindow. Un atajo Alt+letra registrado por su aplicación va primero. Dos menús con la misma letra: la banda pasa de uno a otro, Intro abre. Una letra acentuada o no latina se teclea como en el teclado (&Édition: Alt + la tecla de la É). Abierto con el teclado, el menú tiene su primera entrada resaltada: Intro la elige
FlechasRecorren los menús y sus entradas, saltando los menús atenuados; la derecha abre una subentrada, la izquierda vuelve arriba. En escritura de derecha a izquierda (RTL) todo se invierte: en la barra, en el desplegable (alineado con el borde derecho de su título) y en las cascadas, que se abren a la izquierda — la izquierda abre, la derecha vuelve arriba
IntroEn un desplegable: elige la entrada resaltada (ue_item_selected). Sobre un título de la barra, Intro, Espacio o Flecha abajo abren el menú. Espacio no elige una entrada — también es la regla de Windows
EscCierra el menú abierto, o sale del modo menú (tras Alt o F10), y devuelve el foco al control que lo tenía. Esc se queda en la barra: no pulsa el botón Cancelar de la ventana

Una barra de menús nunca se queda con el foco. Un clic en un título y luego una elección con el ratón: el teclado vuelve al control donde se tecleaba antes de que se lance ue_item_selected. Edición > Pegar pega pues en el campo en edición, y GetFocus() lo nombra en el evento. Un clic que no abre nada — en un título atenuado, o en la parte vacía de la barra — también deja el teclado en el control donde se escribía.


Ejemplos #

Una barra de menús completa #

// Congelar el dibujo durante la construccion
uo_menus.of_set_redraw(/*on*/ false)

// El menu Archivo, con un icono en Abrir y una linea antes de Salir
uo_menus.of_add_menu(/*key*/ "file", /*text*/ "&Archivo")
uo_menus.of_add_item(/*keys*/ "file/open", /*text*/ "&Abrir...", /*image*/ "mono:img\packimages.dll:svg/samples/folder-open", /*checked*/ false)
uo_menus.of_add_separator(/*keys*/ "file")
uo_menus.of_add_item(/*keys*/ "file/quit", /*text*/ "&Salir")

// Un submenu: Exportar, y luego sus dos formatos
uo_menus.of_add_item(/*keys*/ "file/export", /*text*/ "&Exportar")
uo_menus.of_add_item(/*keys*/ "file/export/csv", /*text*/ "CSV")
uo_menus.of_add_item(/*keys*/ "file/export/pdf", /*text*/ "PDF")

// El menu Ver: una opcion que se marca
uo_menus.of_add_menu(/*key*/ "view", /*text*/ "&Ver")
uo_menus.of_add_item(/*keys*/ "view/grid", /*text*/ "&Cuadricula", /*image*/ "", /*checked*/ true)

// Un solo redibujado, con todo
uo_menus.of_set_redraw(/*on*/ true)

Marcar, desmarcar, atenuar #

// El usuario ha invertido la visualizacion de la cuadricula
uo_menus.of_item(/*keys*/ "view/grid").ib_checked = not uo_menus.of_item(/*keys*/ "view/grid").ib_checked
// Una entrada que ya no tiene sentido se atenua, no desaparece:
// el usuario debe poder ver que existe
uo_menus.of_item(/*keys*/ "file/save").ib_enabled = false

Entradas de opción y un atajo de zoom #

// Dos entradas DE OPCION: marcar una desmarca la otra, una vineta redonda sustituye a la marca
uo_menus.of_add_item(/*keys*/ "view/small", /*text*/ "Iconos &pequenos")
uo_menus.of_add_item(/*keys*/ "view/large", /*text*/ "Iconos &grandes")
uo_menus.of_item(/*keys*/ "view/small").is_group = "size"
uo_menus.of_item(/*keys*/ "view/large").is_group = "size"
uo_menus.of_item(/*keys*/ "view/large").ib_checked = true

// El zoom: Ctrl++ se muestra Y esta activo, este donde este el foco
uo_menus.of_add_item(/*keys*/ "view/zoomin", /*text*/ "&Acercar")
uo_menus.of_item(/*keys*/ "view/zoomin").is_shortcut = "Ctrl++"

Reconstruir la barra #

// Cambiar de espacio de trabajo: se vacia y se vuelve a poner
// of_set_redraw evita repintar en cada linea
uo_menus.of_set_redraw(/*on*/ false)
uo_menus.of_clear()
uo_menus.of_add_menu(/*key*/ "tools", /*text*/ "&Herramientas")
uo_menus.of_set_redraw(/*on*/ true)

Una barra estrecha, Ayuda al final, un texto de ayuda en la barra de estado #

// Ayuda al final de la barra ; lo que no cabe pasa al chevron
uo_menus.of_add_menu(/*key*/ "help", /*text*/ "Ay&uda")
uo_menus.of_add_item(/*keys*/ "help/about", /*text*/ "Acerca de")
uo_menus.of_menu(/*key*/ "help").is_align = u_pbt_menubar.ALIGN_END

// Encabezados de seccion en View
uo_menus.of_add_header(/*keys*/ "view", /*text*/ "Paneles")
uo_menus.of_add_item(/*keys*/ "view/tree", /*text*/ "Arbol")
uo_menus.of_add_item(/*keys*/ "view/output", /*text*/ "Salida")

// Un texto de ayuda en la barra de estado para la entrada senalada
uo_menus.ib_track_hover = true

// ue_item_hover (string as_keys) de uo_menus : vacio al cerrarse el desplegable
choose case as_keys
	case "file/save"
		st_status.Text = "Guarda el documento"
	case else
		st_status.Text = ""
end choose

Una lista de archivos recientes rellenada al abrir #

// Local variables
long ll_i

// Recent en SU sitio en File, declarado una vez : sus entradas se escriben en cada apertura
uo_menus.of_insert_item(/*keys*/ "file/recent", /*text*/ "&Recientes", /*index*/ 3)

// ue_menu_opening (string as_key) de uo_menus : el desplegable lo espera. File : solo las entradas
// de Recent, que conserva su sitio. Edit : Pegar sigue el portapapeles de AHORA - para un
// clic como para Ctrl+V.
choose case as_key
	case "file"
		uo_menus.of_clear_items(/*keys*/ "file/recent")
		for ll_i = 1 to UpperBound(is_recent_files)
			uo_menus.of_add_item(/*keys*/ "file/recent/doc" + String(ll_i), /*text*/ is_recent_files[ll_i])
		next
	case "edit"
		uo_menus.of_item(/*keys*/ "edit/paste").ib_enabled = (Clipboard() <> "")
end choose

// ue_menu_closed (string as_key) de uo_menus : cerrado sin eleccion - deshacer lo que
// ue_menu_opening habia preparado
st_status.Text = ""

Retomar el menú PowerBuilder de una ventana #

// Local variables
menu lm_item

// El menu de la ventana se convierte en la barra : titulos, entradas, atajos, estados.
// im_frame es una variable de instancia (m_frame), guardada mientras la barra la use.
im_frame = create m_frame
uo_menus.of_load_menu(/*menu*/ im_frame)

// El menu sigue mandando : atenue un elemento, la barra lo relee en la proxima apertura
im_frame.m_edit.m_paste.Enabled = false

// ue_item_hover (string as_keys) de uo_menus : el MicroHelp del elemento de menu
lm_item = uo_menus.of_loaded_item(/*keys*/ as_keys)
if IsValid(lm_item) then st_status.Text = lm_item.MicroHelp

Buenas prácticas #

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

Dos ayudas no se heredan: of_icon y of_escape_markup viven en n_pbt_utils. Declare uno — n_pbt_utils lnv_utils, nada que crear — y llámelas sobre él.


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