PBToolboxAI v4 ← Site

button — u_pbt_button #

← Referência dos componentes · Índice do guia

Botão com tema: texto e ícone, estilos, emblema de contador, atalho de teclado, botões predefinido e de cancelamento.

⚠️ Vários botões? Prefira buttonbar: uma fila num único componente, onde N button separados custam N vezes a memória (cada componente é uma vista do motor). button continua suportado para o código existente.

▶ Ver ao vivo — Aplicação de demonstração, mosaico Button: a pré-visualização, o código que o produz e esta página, lado a lado.


Em resumo #

Userobjectu_pbt_button
Classe de items— (componente sem items)
Serve paraSubstituir um commandbutton por um botão moderno, com tema, ícone e emblema
Opções opt-inib_track_mouse

Início rápido #

// event open da janela
uo_button.is_text  = "&Guardar"              // & = letra sublinhada : Alt+G aciona-o
uo_button.is_style = uo_button.STYLE_PRIMARY // botao de acao principal
uo_button.is_image = "mono:img\save.svg"     // icone recolorido pelo tema
uo_button.is_shortcut = "Ctrl+S"             // atalho apresentado e ativo
uo_button.is_tooltip = "Guarda o processo em curso"
// event ue_clicked de uo_button
of_save()

Constantes #

ConstanteValorPara
STYLE_STANDARD · STYLE_PRIMARY · STYLE_FLAT"standard" "primary" "flat"is_style

Propriedades #

PropriedadeTipoPredefiniçãoFunção
is_textstring""Etiqueta. Aceita a formatação com etiquetas e o mnemónico & (&Guardar sublinha o G, e Alt+G aciona-o onde quer que esteja o foco na janela, depois dos atalhos explícitos e nunca esbatido; uma barra de menus PB que usa a mesma letra perde-a); && apresenta um E comercial literal. É permitida uma etiqueta feita só de uma imagem ([picture=…])
is_imagestring""Ícone apresentado antes da etiqueta (formas aceites: caminho, mono:, tint:, recurso de DLL)
ii_image_sizeinteger0Tamanho do ícone em píxeis (0 = o tamanho do tema, 18 píxeis)
is_stylestring"standard"Aspeto: STYLE_STANDARD, STYLE_PRIMARY (fundo de destaque, ação principal), STYLE_FLAT (sem contorno)
ib_enabledbooleantrueBotão ativo ou esbatido. Esbatido, ignora o rato e o teclado, sai da ordem de tabulação e deixa à janela Enter, Esc, o seu atalho e a sua mnemónica
ib_defaultbooleanfalseBotão predefinido: Enter aciona-o onde quer que esteja o focus na janela, enquanto estiver ativo; um filete de destaque assinala-o. Com dois botões predefinidos ganha o mais próximo do focus, e em empate nenhum
ib_cancelbooleanfalseBotão de cancelamento: Esc aciona-o onde quer que esteja o focus na janela, enquanto estiver ativo
is_shortcutstring""Atalho de teclado ("Ctrl+S", "F5", "Ctrl+Shift+N"), ativo onde quer que esteja o focus na janela e acrescentado ao tooltip ("Guardar (Ctrl+S)"). Os nomes das teclas escrevem-se em inglês (Enter, Esc, Del, PageUp…); um atalho que a janela não sabe acionar (modificador ou tecla desconhecidos) é recusado e relê-se ""
ii_badgeinteger0Emblema de contador no canto superior final (direito, esquerdo da direita para a esquerda); acima de 99 mostra 99+ (0 = nenhum)
il_badge_colorlong-1Fundo do emblema, em RGB do PowerBuilder (-1 = não definido: a cor que vem do tema; 0 é o preto, como para qualquer outra cor). A cor do texto é escolhida automaticamente para que o contador continue legível
ii_badge_sizeinteger0Altura do emblema em píxeis (0 = o tamanho que vem do tema). O tamanho da letra acompanha sozinho: o contador continua centrado seja qual for a dimensão
ib_track_mousebooleanfalseOpt-in: ativa ue_mouse_enter / ue_mouse_leave
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_reset ( )Repõe todas as propriedades na respetiva predefinição. Devolve 0 depois de aplicado, -2 se o componente não estiver criado
of_set_redraw (boolean)Agrupa uma rajada de modificações num único desenho. Devolve 0 depois de aplicado, -2 se o componente não estiver criado
of_save_as_png (string) · of_save_as_jpg (string)Exporta a representação como imagem. Devolve 0 depois de a imagem ser escrita, -4 se a escrita falhar, -2 se o componente não estiver criado

Eventos #

EventoAcionado quando
ue_clicked ( )O botão é clicado, ou acionado por Enter / Esc / pelo respetivo atalho
ue_rclicked ( )Clique com o botão direito no botão
ue_mouse_enter ( )O rato entra — exige ib_track_mouse = true
ue_mouse_leave ( )O rato sai — exige ib_track_mouse = true
ue_ready ( )O componente terminou o carregamento; tudo o que foi enviado antes foi reproduzido
ue_runtime_missing ( )O runtime WebView2 está ausente: o componente permanece vazio
ue_bg_color (long al_color)O componente calculou a cor de fundo do respetivo tema; o userobject já a adotou (backcolor)

Exemplos #

Os três estilos #

// O botao principal : responde a tecla Enter
uo_ok.is_text     = "Confirmar"
uo_ok.is_style    = uo_ok.STYLE_PRIMARY
uo_ok.ib_default  = true          // tecla Enter

// O botao de cancelar : responde a tecla Esc
uo_cancel.is_text   = "Cancelar"
uo_cancel.is_style  = uo_cancel.STYLE_STANDARD
uo_cancel.ib_cancel = true       // tecla Esc

// Um botao de ajuda discreto
uo_help.is_text  = "Ajuda"
uo_help.is_style = uo_help.STYLE_FLAT   // discreto, sem contorno

Ícone e emblema de notificação #

// Um icone maior e um selo de contador
uo_messages.is_text  = "Mensagens"
uo_messages.is_image = "mono:img\mail.svg"
uo_messages.ii_image_size = 20
uo_messages.ii_badge = 12             // emblema "12"
// Atualizar o contador: o emblema desaparece a 0
uo_messages.ii_badge = ll_unread
// Um emblema vermelho para um alerta, em vez da cor do tema.
// A cor do texto e escolhida sozinha para continuar legivel.
uo_messages.il_badge_color = RGB(/*red*/ 200, /*green*/ 30, /*blue*/ 30)

// Voltar a cor que vem do tema
uo_messages.il_badge_color = -1

Etiqueta enriquecida #

// Texto rico : negrito e tamanho reduzido, ou uma imagem no texto
uo_button.is_text = "[b]Exportar[/b] [size-=20]· CSV[/size-=20]"
uo_button.is_text = "Estado [picture=mono:img\ok.svg,14,14]"

Botão de ação principal com atalho e ajuda #

// Congelar o desenho durante as definicoes
uo_submit.of_set_redraw(/*on*/ false)

// Texto, estilo, atalho, botao predefinido e dica rica
uo_submit.is_text     = "&Confirmar a encomenda"
uo_submit.is_style    = uo_submit.STYLE_PRIMARY
uo_submit.is_shortcut = "Ctrl+Enter"
uo_submit.ib_default  = true
uo_submit.is_super_tooltip_title = "Confirmar"
uo_submit.is_super_tooltip_text  = "Envia a encomenda ao fornecedor." &
                                    + "[br][br][size-=15]Ação irreversível.[/size-=15]"

// Um unico redesenho, com tudo
uo_submit.of_set_redraw(/*on*/ true)

Reagir à passagem do rato #

// Raise ue_mouse_enter and ue_mouse_leave when the pointer comes and goes
uo_button.ib_track_mouse = true
// event ue_mouse_enter de uo_button
uo_status.of_panel(/*key*/ "main").is_text = "Guarda o processo em curso"

Boas práticas #

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_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

Duas ajudas não são herdadas: of_icon e of_escape_markup vivem em n_pbt_utils. Declare um — n_pbt_utils lnv_utils, nada a criar — e chame-as nele.


← Referência dos componentes · Índice do guia