PBToolboxAI v5 ← Site

buttonbar — u_pbt_buttonbar #

← Referência dos componentes · Índice do guia

buttonbar alinha uma fila de botões de comando — ícone, rótulo ou ambos — num único componente. Um clique reporta a chave do botão (ue_clicked); cada botão é controlado por um handle (of_button) para o desativar, colorir ou ocultar. O componente a preferir assim que há vários botões: um WebView2 para toda a barra, onde N button separados custariam N.

▶ Ver ao vivo — Aplicação de demonstração, mosaico Button bar, com o código e esta página lado a lado.


Início 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

Propriedades #

PropriedadeTipoPredefinidoDescrição
ib_enabledbooleantrueA barra inteira ativa ou desativada. Desativada, nenhum botão responde — nem clique, nem Enter, Esc, letra Alt ou atalho: essas teclas ficam para a janela — e a barra sai da ordem de tabulação. Cada botão mantém o seu próprio ib_enabled
ii_padding_xinteger12Recuo esquerdo/direito da barra, em pixels: o espaço antes do primeiro botão e depois do último. 0 cola os botões às bordas; -1 = o do tema
ii_padding_yinteger12Recuo superior/inferior da barra, em pixels. Um botão PREENCHE a altura da barra: este recuo decide a altura dos botões (barra mais alta ou recuo menor = botões mais altos). 12 por predefinição; -1 = o do tema
ii_gapinteger-1Espaço ENTRE dois botões, em pixels. -1 (predefinição) = o do tema. 0 junta os botões, separados por uma linha quando o tema a tem
ii_image_sizeinteger0Tamanho dos ícones dos botões, em pixels; 0 = o do tema (18)
ii_badge_sizeinteger0Altura dos emblemas, em pixels — o seu texto acompanha; 0 = a do tema (16)
is_alignstringendAlinha a fila: start (esquerda), center, end (direita, predefinição, como uma caixa de diálogo) ou justify (botões de igual largura em toda a largura). Valores lógicos (RTL) — constantes ALIGN_*
is_defaultstring""Chave do botão predefinido — a ação principal, pintada com o acento, que Enter aciona (como o OK de uma caixa de diálogo). Quando um botão da barra tem o foco do teclado, Enter aciona ESSE botão, que passa a ter o aspeto predefinido (a convenção do Windows); is_default relido continua a ser a chave posta. Sem botão predefinido, o botão com o foco mantém apenas o seu anel de foco. Um predefinido desativado ou oculto não toma o Enter: a tecla fica com a janela — nunca vai para o botão predefinido de OUTRA barra, mesmo que seja o único. Quando duas barras da mesma janela têm um botão predefinido (duas folhas MDI, dois painéis), o Enter vai para a do lado do foco. O papel sai com o seu botão: removê-lo, ou esvaziar a barra, esvazia is_default. Vazio = nenhum; apenas um botão predefinido de cada vez
is_cancelstring""Chave do botão cancelar — o que Esc aciona (como o Cancelar de uma caixa de diálogo). Desativado ou oculto, não toma o Esc. O papel sai com o seu botão: removê-lo, ou esvaziar a barra, esvazia is_cancel. Vazio = nenhum; apenas um botão cancelar de cada vez
is_theme_stylestring""Estilo visual do componente (constantes THEME_STYLE_*); vazio = o da aplicação, seguido a cada mudança
is_theme_modestring""Variante clara ou escura (constantes THEME_MODE_*); vazio = a da aplicação, seguida a cada mudança
il_theme_accentlong-1Cor de destaque deste componente (-1 = destaque da aplicação, ou o do tema)
is_tooltipstring""Tooltip simples apresentado ao passar sobre o componente
is_super_tooltip_titlestring""Título do tooltip enriquecido (prevalece sobre is_tooltip)
is_super_tooltip_textstring""Texto do tooltip enriquecido (aceita marcação enriquecida)
is_super_tooltip_imagestring""Imagem do tooltip enriquecido

Métodos #

MétodoFunção
of_add_button (string as_key, string as_text {, string as_image}) → longAdiciona um botão de comando no fim da barra: a sua chave, o seu rótulo e, opcionalmente, o seu ícone (ficheiro de imagem; mono: recolore-o ao tema). O rótulo aceita marcação rica; &Save sublinha o S e faz Alt+S acionar o botão, && é um & literal. Um rótulo vazio dá um botão só com ícone. Devolve 0, -5 numa chave vazia, numa chave com / ou uma barra vertical, numa chave já na barra, ou num botão sem imagem nem texto
of_insert_button (string as_key, string as_text, string as_image, integer ai_index) → longInsere um botão de comando na posição ai_index (a partir de 1), deslocando os seguintes; além do último vai para o fim, em 0 ou menos para o início. Devolve 0, -5 numa chave vazia, numa chave com / ou uma barra vertical, numa chave já na barra, ou num botão sem imagem nem texto
of_remove_button (string as_key) → longRemove um botão pela sua chave; os restantes mantêm o seu estado vivo. A sua letra Alt, os atalhos que a aplicação lhe deu, o seu papel predefinido / cancelar, as suas cores e a sua tooltip saem com ele. Devolve 0, -5 com chave vazia ou uma chave que não nomeia nenhum botão
of_move_button (string as_key, integer ai_index) → longMove um botão para a posição ai_index (a partir de 1; além do último = no fim, 0 ou menos = no início) sem perder o seu estado vivo. Devolve 0, -5 com chave vazia ou uma chave que não nomeia nenhum botão
of_clear_buttons ( ) → longRemove todos os botões da barra, com as suas letras Alt, os atalhos que a aplicação lhes deu, os papéis predefinido / cancelar, cores e tooltips. Devolve 0, -2 se não criado
of_clear_shortcuts ( ) → longRemove o atalho de TODOS os botões: já não responde, já não aparece no tooltip, e is_shortcut relê-se vazio. As letras Alt ficam. Devolve 0, -2 se não criado
of_focus_button (string as_key) → longPõe o foco do teclado num ÚNICO botão — Não em vez de Sim perante uma pergunta destrutiva, para que o Enter responda Não. Devolve 0, -5 com chave vazia ou que não nomeia nenhum botão, -4 se o botão não o pode tomar (desativado, oculto, numa barra desativada ou não desenhado em modo demo), -2 se não criado
of_register_shortcut (string as_chord, string as_key) → longDá um atalho de teclado (Ctrl+S, F5…) a UM botão, como o seu is_shortcut: premido em qualquer lugar da janela, aciona o botão (ue_clicked), mesmo quando o foco está noutro sítio, e junta-se ao seu tooltip. É independente da letra Alt do botão. Enquanto o botão não puder acionar-se (desativado, oculto, não desenhado), a tecla fica para a janela. Um atalho vazio remove-o. Numa barra um atalho nomeia sempre um botão: a forma de um argumento, ou uma chave que não nomeia nenhum botão, devolve -5; um atalho que a janela nunca pode lançar (uma letra sozinha, Ctrl+Shift) devolve -5 e mantém o atalho existente. Devolve 0, -2 se não criado
of_button (string as_key) → n_pbt_buttonbar_buttonDevolve o handle de um botão (pela sua chave) para ler ou mudar as suas propriedades (ver abaixo). Uma chave que não nomeia nenhum botão recebe um handle neutro partilhado: o que lhe é dado não vai para lado nenhum. of_count, of_keys_at e of_has contam também os botões ocultos

Eventos #

EventoQuando
ue_clicked (string as_key)Um botão foi usado: um clique, Enter (o botão predefinido, ou o que tem o foco), Esc (o botão cancelar), a sua letra Alt ou um atalho registado nele. A sua chave é passada: uma aplicação que liga o Cancelar deve esperá-lo também pelo Esc. Um botão desativado não emite nada
ue_button_rclicked (string as_key, long al_x, long al_y)Clique direito sobre UM botão, ou tecla Menu sobre o que tem o foco, com a sua chave: o lugar para abrir o menu desse botão. Um botão desativado não responde. É o único evento desse clique direito: ue_rclicked não é lançado além dele; al_x, al_y: onde abrir o menu, em píxeis de ecrã — o ponteiro, ou pelo teclado (tecla Menu, Shift+F10) o canto inferior esquerdo do botão; um contextmenu abre-se aí tal como estão (uo_menu.of_show(al_x, al_y))
ue_rclicked ( )Clique direito na barra FORA de qualquer botão. Um clique direito num botão lança apenas ue_button_rclicked: um menu escrito em ambos nunca abre duas vezes

Propriedades de um botão (of_button) #

PropriedadeTipoPredefinidoDescrição
ib_enabledbooleantrueAtiva ou desativa um botão; desativado, não se clica e nem Enter, nem Esc, nem a sua letra Alt, nem o seu atalho o acionam — essas teclas ficam para a janela; as setas saltam-no
ib_visiblebooleantrueMostra ou oculta um botão; oculto, mantém o lugar e regressa onde estava
is_textstring""O rótulo do botão, marcação rica aceite; muda-se depois de adicionar. &Save sublinha o S e faz Alt+S acionar o botão de qualquer lugar da janela, como um CommandButton PowerBuilder; && é um & literal. Um botão mantém um rótulo ou um ícone: esvaziar o rótulo de um botão sem ícone é recusado, e o rótulo relê-se inalterado
is_imagestring""Ícone do botão (ficheiro de imagem; mono: segue o tema); alterar após adicionar. Esvaziar o ícone de um botão sem rótulo é recusado. Um botão só com ícone é anunciado ao leitor de ecrã pela sua tooltip (is_tooltip), senão pela sua chave
is_stylestringstandardO aspeto do botão: standard, primary (o bloco de destaque), flat (sem moldura em repouso) ou danger (uma ação destrutiva, na cor de perigo do tema) — constantes STYLE_*; um valor desconhecido relê-se standard. Um botão desativado perde o preenchimento
is_badgestring""Um pequeno emblema no canto do botão: um número (3; além de 99 mostra 99+) ou uma palavra curta (New, !). "" ou 0 = nenhum. Um leitor de ecrã ouve-o com o nome do botão
il_badgelong0O mesmo emblema, como número (0 = nenhum); um emblema-palavra relê-se 0 aqui
il_badge_colorlong-1Cor do emblema DESTE botão; -1 = a do tema, 0 é o preto. O texto por cima é escolhido para continuar legível
is_mnemonicstring""A letra Alt do botão quando não é o & do seu rótulo — prevalece sobre ele: uma letra ou um dígito, a primeira da sua espécie no rótulo é sublinhada. Vazio = o & do rótulo. Enquanto o botão não puder acionar-se, a sua letra fica para a janela
is_shortcutstring""Um ATALHO de teclado para este botão — Ctrl+S, F5, Ctrl+Shift+P: premido em qualquer lugar da janela, aciona o botão e junta-se ao seu tooltip (Save (Ctrl+S)). Relê-se na sua forma canónica (ctrl+s); um atalho que a janela nunca pode lançar é recusado e relê-se vazio. Como of_register_shortcut(chord, key). A letra Alt é o & do rótulo, ou is_mnemonic
il_back_colorlong-1Fundo DESTE botão (-1 = o do componente, que segue o tema)
il_text_colorlong-1Cor do texto DESTE botão (-1 = a do componente)
il_back_color_hoverlong-1Fundo DESTE botão ao passar (-1 = o do componente)
il_text_color_hoverlong-1Cor do texto DESTE botão ao passar (-1 = a do componente)
il_accentlong-1Destaque DESTE botão: pinta o seu emblema e, quando é o botão predefinido (ou no estilo primary), o seu preenchimento (-1 = o destaque do componente)

Herdado da base comum #

Estes membros existem em todos os componentes visuais — não são próprios deste. São detalhados uma só vez, nos capítulos transversais; esta tabela apenas diz onde os ler.

MembrosFunçãoDetalhado em
of_count · of_keys_at · of_hasPercorrer o que o componente contém3.2 Os items
of_resetRepor o componente a zero3.6 Repor um componente a zero: of_reset()
of_register_shortcut · of_clear_shortcutsAtalhos de teclado do componente3.5 Os atalhos de teclado
of_is_created · of_is_ready · of_get_last_errorSe nasceu, se está pronto, o que falhou3.7 Diagnóstico
of_save_as_png · of_save_as_jpgExportar a renderização como imagem3.8 Exportar a representação como imagem
of_set_redrawAgrupar as alterações num único repinte3.10 Boas práticas
of_preload_iconsÍcones mostrados sem atrasoApresentação instantânea: of_icon
of_set_translationTraduzir uma legenda do componente5.2 Adaptar uma etiqueta: of_set_translation
of_focus_webviewDar o foco ao componente6.4 Teclado e focus
of_print · of_print_to_pdfImprimir, ou escrever um PDF6.9 Imprimir
of_set_property · of_get_property · of_component_nameControlar uma propriedade pelo nome3.1 O motor de propriedades
is_accessible_name · is_accessible_descriptionO nome e a descrição que um leitor de ecrã diz3.4 Propriedades e eventos opcionais

← Referência dos componentes · Índice do guia