PBToolboxAI v5 ← Site

statusbar — u_pbt_statusbar #

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

Barra de estado con paneles: texto enriquecido, iconos, anchuras fijas o automáticas, alineación a la izquierda o a la derecha, paneles en los que se puede hacer clic, mini barra de progreso y estados con color.

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


De un vistazo #

Userobjectu_pbt_statusbar
Clase de itemsn_pbt_statusbar_panel (panel) · n_pbt_statusbar_menu_item (entrada de lista)
Sirve paraMostrar en la parte inferior de la ventana el estado de la aplicación: contexto, avance, avisos discretos
Opciones opt-inib_announce

Inicio rápido #

// event open de la ventana
// of_add_panel(clave, texto, icono, alineacion, anchura)
// la clave encuentra el panel mas tarde ; anchura 0 = ajustada al texto, -1 = toma el espacio libre
uo_status.of_add_panel(/*key*/ "state", /*text*/ "Ready",          /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ -1)
uo_status.of_add_panel(/*key*/ "pos",   /*text*/ "Line 12, Col 4", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 0)
uo_status.of_add_panel(/*key*/ "clock", /*text*/ "12:00",          /*icon_file*/ "", /*align*/ uo_status.ALIGN_END,   /*width*/ 140)
// Actualizar un panel en cualquier momento, mediante su identificador
uo_status.of_panel(/*key*/ "state").is_text = "Guardando..."

El modelo: paneles con clave #

La barra es una sucesión de paneles, añadidos por orden. Un panel recibe un identificador al crearse: es por él como se le encuentra después para cambiar su texto, su icono o su estado.

El identificador es una clave de direccionamiento, no un interruptor de interactividad:

// El panel muestra un texto nuevo
uo_status.of_panel(/*key*/ "state").is_text = "3 registros modificados"

Véase Base común · Los items.


Propiedades #

PropiedadTipoPredeterminadoFunción
ib_show_resize_gripbooleanfalseMuestra el asa de redimensionamiento en la esquina del final de la barra; arrastrarla redimensiona la ventana que lleva la barra — una hoja MDI, no su marco — desde su esquina inferior derecha (inferior izquierda en lectura de derecha a izquierda). Solo se dibuja cuando la barra ocupa la esquina inferior de esa ventana y la ventana puede redimensionarse: maximizada, sin borde redimensionable o con la barra colocada más arriba, desaparece y la propiedad sigue establecida
ib_announcebooleanfalsePara los lectores de pantalla: a true, un texto o un estado que cambia en un panel visible se lee (una región viva cortés, que deja al lector terminar su frase). Un mensaje de of_flash_panel se lee siempre, diga lo que diga esta propiedad: un mensaje está hecho para leerse. Desactivado por defecto: un reloj al segundo hablaría todo el día
is_helpstring""La MicroHelp de un marco PowerBuilder: lo que escribía SetMicroHelp. Se muestra ENCIMA del texto del panel que nombra is_help_panel — su is_text sigue leyendo su propio texto —; "" le devuelve su texto. Un mensaje de of_flash_panel pasa delante mientras dura
is_help_panelstring""Clave del panel que muestra is_help — normalmente el primero, el de Ready. Vacío = ningún panel de ayuda: is_help espera a que se nombre uno
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_panel (string as_key, string as_text, string as_icon_file, string as_align, integer ai_width)Añade un panel al final de la barra; una anchura de -1 lo convierte en un muelle que toma el espacio libre (ib_spring). Devuelve 0 una vez aplicado, -5 si la clave ya está tomada, contiene / o ` o empieza por __ (una clave vacía añade un panel decorativo), -2` si el componente no está creado
of_add_sep ( )Inserta una ruptura de grupo en la posición actual. Los paneles ya se separan con una línea fina : esta es más ancha, para que los paneles de antes y de después se lean como dos grupos. Llámela entre dos of_add_panel ; abre el grupo del panel que la sigue (del lado del anterior cuando viene la última). Un separador no es un panel : no cuenta ni para of_count / of_keys_at ni en las posiciones. Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_insert_panel (string as_key, string as_text, string as_icon_file, string as_align, integer ai_width, integer ai_index)Inserta un panel en una posición concreta, contada en paneles a partir de 1 (0 o menos = el primero, más allá del último = al final). Mismos rechazos que of_add_panel. Devuelve 0 una vez aplicado, -5 si la clave ya está tomada o contiene / o `, -2` si el componente no está creado
of_move_panel (string as_key, integer ai_index)Desplaza un panel existente a otra posición, contada en paneles a partir de 1. Devuelve 0 una vez aplicado, -5 ante una clave vacía o que la barra nunca recibió, -2 si el componente no está creado
of_remove_panel (string as_key)Elimina un solo panel, con su lista desplegable ; los demás conservan su estado. Devuelve 0 una vez aplicado, -5 ante una clave vacía o que la barra nunca recibió, -2 si el componente no está creado
of_panel (string as_key) → n_pbt_statusbar_panelDevuelve el handle de un panel (creado en el primer acceso). Una clave vacía (panel decorativo), una dirección o una lista no designan nada: su handle no escribe en ninguna parte y se relee vacío
of_flash_panel (string as_key, string as_text, long al_ms)Muestra un mensaje durante al_ms milisegundos y luego vuelve a mostrar el texto del panel (al_ms ≤ 0 = 2 segundos). El mensaje pasa POR ENCIMA del texto: is_text se relee siempre como el texto del panel, nunca como el mensaje. Devuelve 0 una vez aplicado, -5 ante una clave vacía, una dirección o una clave que la barra nunca recibió, -2 si el componente no está creado
of_add_menu_item (string as_keys, string as_label) · (as_keys, as_label, as_image)Añade una entrada a la lista desplegable de un panel : as_keys tiene dos niveles, el panel y luego la entrada ("enc/utf8"). Desde la primera entrada el panel se vuelve un selector : el clic abre la lista, y la elección vuelve por ue_panel_menu_clicked con la misma dirección. Una etiqueta vacía toma la clave. Devuelve 0 una vez aplicado, -5 ante una dirección que no tiene dos niveles, un panel que la barra nunca recibió o una entrada ya tomada, -2 si el componente no está creado
of_insert_menu_item (string as_keys, string as_label, integer ai_index) · (as_keys, as_label, as_image, ai_index)Inserta una entrada en una posición precisa, contada en entradas a partir de 1: un separador no lo es. Devuelve 0 una vez aplicado, -5 con una dirección que no tiene dos niveles, una clave que empieza por __, un panel que la barra nunca recibió o una entrada ya tomada, -2 si el componente no está creado
of_add_menu_separator (string as_key)Línea de separación en la lista del panel as_key. Un separador no tiene dirección: solo of_clear_menu lo retira, y una lista hecha solo de separadores no es una lista (ni flecha ni clic). Devuelve 0 una vez aplicado, -5 ante una clave vacía o un panel que la barra nunca recibió, -2 si el componente no está creado
of_remove_menu_item (string as_keys)Quita una sola entrada; ida la última, el panel recupera el comportamiento que le da ib_clickable. Devuelve 0 una vez aplicado, -5 con una dirección que la barra nunca recibió, -2 si el componente no está creado
of_move_menu_item (string as_keys, integer ai_index)Mueve una entrada a otra posición de su lista, contada en entradas a partir de 1: un separador no lo es. Devuelve 0 una vez aplicado, -5 con una dirección que la barra nunca recibió, -2 si el componente no está creado
of_menu_item (string as_keys) → n_pbt_statusbar_menu_itemDevuelve el handle de una entrada (creado en el primer acceso), para atenuarla, marcarla o renombrarla. Una dirección sin dos niveles no designa nada : su handle no escribe en ningún sitio y se relee vacío
of_clear_menu (string as_key)Quita toda la lista desplegable; el panel recupera el comportamiento que le da ib_clickable. Devuelve 0 una vez aplicado, -5 con una clave vacía, una dirección o un panel que la barra nunca recibió, -2 si el componente no está creado
of_dock_bottom ( )Coloca la barra a lo largo del borde INFERIOR de lo que la lleva (una ventana, una pestaña, un userobject), en todo su ancho; su altura no cambia. Llámela en el evento resize de la ventana. En un marco MDI, redimensione mdi_1 al espacio que queda: WorkSpaceHeight() - uo_status.Height. Devuelve 0 una vez colocada, -5 si la barra no está ni en una ventana ni en un userobject, -2 si el componente no está creado
of_clear ( )Vacía la barra: todos los paneles y todos los separadores. Devuelve 0 una vez aplicado, -2 si el componente no está creado
of_reset ( )Vacía la barra y devuelve las propiedades a su valor predeterminado. Devuelve 0 una vez aplicado, -2 si el componente no está creado

Los argumentos de of_add_panel #

ArgumentoValoresEfecto
as_keylibre, o ""Clave del panel, con la que se le vuelve a encontrar después. Vacío = panel decorativo, ni direccionable ni pulsable
as_texttextoContenido del panel. Se acepta el texto enriquecido con etiquetas
as_icon_fileruta de imagen, o ""Icono mostrado antes del texto (formas aceptadas)
as_alignALIGN_START (predeterminado) o ALIGN_ENDLado hacia el que se empuja el panel. Valores lógicos: START = inicio de la lectura (izquierda en escritura de izquierda a derecha). Los alias físicos "left" / "right" siguen aceptándose
ai_widthpíxeles, 0 o -1Anchura fija. 0 = el panel se ajusta a su contenido; -1 = un muelle que toma todo el espacio libre de la barra (ib_spring)

En un panel — n_pbt_statusbar_panel #

MiembroTipoPredeterminadoFunción
is_textstring""Texto del panel, se acepta el texto enriquecido con etiquetas
is_imagestring""Icono del panel, modificable en cualquier momento
ib_enabledbooleantruePanel atenuado y sin clic
ib_visiblebooleantruePanel oculto, sin ser retirado de la barra
ii_progressinteger—Minibarra de progreso en el panel, junto al texto, de 0 a 100 (por encima de 100 la barra está llena y se relee 100); un valor negativo la hace desaparecer. Se relee -1 cuando el panel no tiene barra (y 0 para una barra al 0 %)
is_statestring""Estado semántico del panel, que colorea su texto y marca su borde inicial: véanse las constantes más abajo. Cualquier otro valor equivale a « ningún estado » y se relee vacío; un panel desactivado aparece atenuado, marca de estado incluida
ib_indeterminatebooleanfalseBarra animada sin valor, para un tratamiento de duración desconocida. Independiente de ii_progress, que sigue siendo el porcentaje exacto
ib_clickablebooleanfalse¿Reacciona el panel al clic? Opt-in: un panel permanece inerte mientras no se pida, conservando su clave — se pilota y lleva una información sobre herramientas. Un panel con lista desplegable ya es pulsable
ib_springbooleanfalseMuelle: el panel toma todo el espacio libre de la barra, y su texto es el primero en recortarse cuando la ventana se estrecha — el panel Ready que crece con la ventana. Varios muelles se reparten el espacio; una anchura fija cede
is_tooltipstring""Información sobre herramientas del panel (se acepta el marcado de texto enriquecido). También aparece en un panel atenuado, para decir por qué. Sin ella, un panel cuyo texto está recortado muestra su texto entero al pasar el ratón
is_super_tooltip_titlestring""Título de la información enriquecida del panel (prevalece sobre is_tooltip)
is_super_tooltip_textstring""Texto de la información enriquecida del panel (se acepta el marcado)
is_super_tooltip_imagestring""Imagen de la información enriquecida del panel
il_accentlong-1Acento de este panel: el relleno de su mini barra de progreso. -1 = el acento del componente
il_back_colorlong-1Fondo de este panel en reposo. -1 = el de la barra
il_text_colorlong-1Color del texto de este panel en reposo. Un estado (is_state) o un panel atenuado pinta primero su propio color: el significado gana al color. -1 = el de la barra
il_back_color_hoverlong-1Fondo bajo el puntero — solo un panel clicable (ib_clickable) responde al puntero. -1 = el del tema
il_text_color_hoverlong-1Color del texto bajo el puntero, en un panel clicable. -1 = el del tema

En una entrada de lista — n_pbt_statusbar_menu_item #

Obtenida con of_menu_item(/*keys*/ "enc/utf8"): la dirección tiene dos niveles, el panel y luego la entrada. La lista es un menú nativo: una propiedad cambiada mientras está abierto se ve en la siguiente apertura.

MiembroTipoPredeterminadoFunción
is_labelstring""Texto de la entrada
is_imagestring""Imagen delante del texto, modificable en cualquier momento
ib_enabledbooleantrueEntrada atenuada: se muestra, pero no se puede elegir
ib_checkedbooleanfalseMarca delante de la entrada, para el valor en uso
ib_visiblebooleantrueEntrada retirada de la lista sin ser eliminada: volver a mostrarla no requiere nada más

Las propiedades que hereda todo manejador de elemento — is_tooltip, is_super_tooltip_title, is_super_tooltip_text, is_super_tooltip_image, il_accent, il_back_color, il_text_color, il_back_color_hover, il_text_color_hover — no tienen efecto en una entrada: la lista es un menú nativo, que no muestra ni información sobre herramientas ni colores de una entrada. Se ignoran y se releen vacías (-1 para un color). Una posición en una lista cuenta entradas: un separador no lo es, y of_count("enc"), of_keys_at("enc", n), of_has("enc/utf8") recorren las entradas de un panel. Una clave que empieza por __ está reservada al componente.

// The menu of the encoding panel, entry by entry
uo_status.of_add_menu_item(/*keys*/ "enc/utf8", /*label*/ "UTF-8")
uo_status.of_add_menu_item(/*keys*/ "enc/ansi", /*label*/ "ANSI")
uo_status.of_menu_item(/*keys*/ "enc/utf8").ib_checked = true     // the current value
uo_status.of_menu_item(/*keys*/ "enc/ansi").ib_enabled = false    // not available here

Constantes de estado #

ConstanteValorUso
STATE_NONE""Ningún estado: apariencia normal
STATE_INFO"info"Información
STATE_WARNING"warning"Advertencia
STATE_ERROR"error"Error
STATE_SUCCESS"success"Éxito

Como para toda propiedad con valores predefinidos, utilice la constante en lugar de la cadena:

// The panel takes the colors of a warning
uo_status.of_panel(/*key*/ "state").is_state = n_pbt_statusbar_panel.STATE_WARNING

Eventos #

EventoSe activa cuando
ue_panel_clicked (string as_key)Se hace clic en un panel pulsable (ib_clickable)
ue_panel_double_clicked (string as_key)Un panel pulsable recibe un doble clic — el atajo clásico detrás de Línea 12, Col 4 que abre un "Ir a la línea". Nunca en un panel con lista desplegable: su primer clic abrió la lista
ue_panel_rclicked (string as_key, long al_x, long al_y)Un panel con clave recibe un clic derecho — clicable o no (un menú contextual no es una activación), nunca si está desactivado. Un solo evento por clic derecho. al_x y al_y son píxeles de pantalla ; para un menú PowerBuilder, PopMenu(PointerX(), PointerY()) de su ventana. Desde el teclado, la tecla Menú o Mayús+F10 sobre el panel que tiene el foco lo lanza también, en la esquina inferior izquierda del panel
ue_panel_menu_clicked (string as_keys)Se ha elegido una entrada de una lista desplegable de panel (véase of_add_menu_item). as_keys lleva los dos niveles: el panel, luego la entrada — "enc/utf8". Con el teclado, Intro, Espacio, Flecha arriba o abajo abren la lista. Un panel retirado, desactivado u ocultado mientras su lista está abierta la cierra, y no se activa nada
ue_ready ( )El componente ha terminado de cargarse; todo lo enviado antes se ha reproducido
ue_runtime_missing ( )El runtime WebView2 está ausente: el componente permanece vacío
ue_bg_color (long al_color)El componente ha calculado el color de fondo de su tema; el userobject ya lo ha adoptado (backcolor)

Con el teclado #

La barra es una sola parada de tabulación: solo entran en ella los paneles hechos para ser pulsados, y las flechas los recorren.

TeclaEfecto
FlechasPasan al panel interactivo anterior / siguiente, en bucle; los paneles de visualización y los desactivados se saltan
Inicio / FinPrimer / último panel interactivo
Intro o EspacioDispara el panel — es decir, ue_panel_clicked, o la apertura de su lista desplegable si la tiene
Arriba / AbajoEn un panel que lleva una lista desplegable: la abren, encima del panel
Tecla Menú o Mayús+F10ue_panel_rclicked del panel que tiene el foco, en su esquina inferior izquierda

Un panel que se limita a mostrar no es un control: no es enfocable ni se anuncia como tal. Un panel pulsable pero desactivado sí permanece anunciado como no disponible, en lugar de pasar por texto. Una barra de progreso anuncia su valor, y una indeterminada no anuncia ninguno — esa ausencia es el sentido de la palabra. Un panel clicable atenuado sigue mostrando su información sobre herramientas — la que dice por qué está atenuado — y un panel con lista dice si su lista está abierta.

Un lector de pantalla oye los mensajes de of_flash_panel sin que el foco se mueva: para eso sirve una barra de estado (una región viva cortés). Los demás cambios — un texto nuevo, un estado nuevo — solo se leen con ib_announce = true; si no, un reloj al segundo hablaría todo el día.

El foco sobrevive a la reconstrucción de la barra: un panel añadido, quitado, oculto o atenuado la reconstruye, y el foco vuelve al mismo panel (al siguiente cuando ya no puede tomarlo). Un texto, un estado o un progreso cambian en su sitio, sin reconstruir nada — un reloj al segundo nunca roba el foco.


Ejemplos #

Anchuras fijas y anchuras automáticas #

// Anchura 0 : el panel ocupa exactamente el espacio de su texto
uo_status.of_add_panel(/*key*/ "", /*text*/ "Panel ajustado al contenido", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 0)

// Anchura fija en pixeles : util cuando el texto cambia a menudo,
// para que los paneles vecinos no se muevan en cada actualizacion
uo_status.of_add_panel(/*key*/ "pos", /*text*/ "Línea 1, Col 1", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 150)

// Un panel empujado al extremo opuesto
uo_status.of_add_panel(/*key*/ "clock", /*text*/ "12:00", /*icon_file*/ "", /*align*/ uo_status.ALIGN_END, /*width*/ 140)

Iconos y paneles con clic #

// Una clave hace el panel direccionable ; ib_clickable lo hace pulsable
uo_status.of_add_panel(/*key*/ "save", /*text*/ "Guardado", /*icon_file*/ "mono:img\save.svg", /*align*/ uo_status.ALIGN_START, /*width*/ 0)
uo_status.of_add_sep()   // linea de separacion entre dos grupos de paneles
uo_status.of_add_panel(/*key*/ "conn", /*text*/ "Conectado",   /*icon_file*/ "mono:img\plug.svg", /*align*/ uo_status.ALIGN_START, /*width*/ 0)
uo_status.of_add_panel(/*key*/ "user", /*text*/ "Alex Martin",  /*icon_file*/ "mono:img\user.svg", /*align*/ uo_status.ALIGN_END, /*width*/ 160)

// Solo estos dos responden al clic (ue_panel_clicked)
uo_status.of_panel(/*key*/ "conn").ib_clickable = true
uo_status.of_panel(/*key*/ "user").ib_clickable = true
// event ue_panel_clicked de uo_status
choose case as_key
    case "conn" ; open(w_connection_settings)
    case "user" ; open(w_profile)
end choose

Texto enriquecido en un panel #

Los paneles aceptan el texto enriquecido con etiquetas: estilos, colores y pequeñas imágenes directamente en el texto.

// Una bienvenida a la izquierda
uo_status.of_add_panel(/*key*/ "", /*text*/ "Bienvenido [b]a[/b] [accent]PBToolboxAI[/accent]", &
                       /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 0)

// El estado de la conexion a la derecha
uo_status.of_add_panel(/*key*/ "", /*text*/ "[green]En línea[/green] [picture=mono:img\plug.svg,14,14]", &
                       /*icon_file*/ "", /*align*/ uo_status.ALIGN_END, /*width*/ 0)
// Variables locales
long ll_changed

// El texto enriquecido vale tambien para las actualizaciones
ll_changed = dw_list.ModifiedCount()
uo_status.of_panel(/*key*/ "state").is_text = "[b]" + String(ll_changed) + "[/b] records changed"

Seguir un proceso largo #

// Local variables
n_pbt_statusbar_panel lnv_import

// El panel de importacion, luego su handle para seguirlo
uo_status.of_add_panel(/*key*/ "import", /*text*/ "Importación", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ 220)
lnv_import = uo_status.of_panel(/*key*/ "import")
// Variables locales
long ll_percent

// En el bucle de tratamiento : la mini barra sigue el progreso
for ll_percent = 0 to 100 step 25
    lnv_import.ii_progress = ll_percent
    lnv_import.is_text     = "Import " + String(ll_percent) + " %"
next
// Al final : ocultar la mini barra y senalar el resultado
lnv_import.ii_progress = -1                       // valor negativo = barra oculta
lnv_import.is_text     = "Importación finalizada"
lnv_import.is_state    = lnv_import.STATE_SUCCESS

Señalar un aviso discreto #

// Local variables
n_pbt_statusbar_panel lnv_panel

// El panel de la conexion
lnv_panel = uo_status.of_panel(/*key*/ "conn")

// Sin conexion : el panel muestra un error ; conectado : vuelve a la normalidad
if not ib_connected then
    lnv_panel.is_text  = "Sin conexión"
    lnv_panel.is_state = lnv_panel.STATE_ERROR
else
    lnv_panel.is_text  = "Conectado"
    lnv_panel.is_state = lnv_panel.STATE_NONE   // vuelta a la apariencia normal
end if

Adaptar la barra al contexto #

// Ocultar un panel sin eliminarlo : mas tarde recuperara su sitio
uo_status.of_panel(/*key*/ "user").ib_visible = ib_user_signed_in

// Atenuarlo cuando la accion correspondiente no tiene sentido
uo_status.of_panel(/*key*/ "save").ib_enabled = ib_document_open

// Reorganizar : colocar el panel de estado al principio (posiciones contadas a partir de 1)
uo_status.of_move_panel(/*key*/ "state", /*index*/ 1)

// Retirar un panel que ya no sirve
uo_status.of_remove_panel(/*key*/ "import")

El asa de redimensionamiento #

// Arrastrar el asa de la esquina redimensiona la ventana que lleva la barra (oculta mientras esta maximizada)
uo_status.ib_show_resize_grip = true

Un panel que toma el espacio libre #

Como el panel « Listo » de toda barra de estado de Windows: crece con la ventana, empuja los paneles del final hasta el extremo, y su texto es el primero en recortarse cuando falta espacio.

// Una anchura de -1 : el panel toma todo el espacio libre
uo_status.of_add_panel(/*key*/ "state", /*text*/ "Ready", /*icon_file*/ "", /*align*/ uo_status.ALIGN_START, /*width*/ -1)
uo_status.of_add_panel(/*key*/ "clock", /*text*/ "12:00", /*icon_file*/ "", /*align*/ uo_status.ALIGN_END, /*width*/ 140)

// Lo mismo en un panel que ya existe
uo_status.of_panel(/*key*/ "state").ib_spring = true

Colocar la barra al pie de la ventana #

of_dock_bottom la coloca a lo largo del borde inferior de lo que la lleva, en todo el ancho: basta una llamada en el evento resize. En un marco MDI, las hojas se reparten lo que queda encima.

// evento resize de la ventana : la barra sigue el borde inferior
uo_status.of_dock_bottom()
// evento resize de un marco MDI : la barra abajo, las hojas encima
uo_status.of_dock_bottom()
mdi_1.Resize(WorkSpaceWidth(), WorkSpaceHeight() - uo_status.Height)

Retomar la MicroHelp #

En un marco MDI con MicroHelp, PowerBuilder escribe la ayuda del elemento de menú bajo el puntero, y SetMicroHelp escribe la suya. La barra retoma ese papel: nombre una vez el panel que muestra la ayuda (is_help_panel) y luego escriba is_help donde llamaba a SetMicroHelp. La ayuda se muestra encima del texto del panel, y "" le devuelve el texto.

// Una vez : el panel que muestra la ayuda (el primero, normalmente)
uo_status.is_help_panel = "state"

// Donde llamaba a SetMicroHelp : la ayuda aparece encima de Ready
uo_status.is_help = "Saving the order..."

// "" devuelve al panel su propio texto
uo_status.is_help = ""
// evento ue_item_hover de una menubar (uo_menu) : la ayuda de la entrada bajo el puntero
uo_status.is_help = this.of_item(/*keys*/ as_keys).is_tooltip
// evento getfocus de un campo (sle_name) : su Tag es su ayuda
uo_status.is_help = sle_name.Tag

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