listbar — u_pbt_listbar #
← Referência dos componentes · Índice do guia
Barra de navegação lateral: secções recolhíveis em acordeão que contêm entradas com ícone, com faixa de destaque na entrada atual e recolha para uma calha de ícones.
▶ Ver ao vivo — Aplicação de demonstração, mosaico Listbar: a pré-visualização, o código que o produz e esta página, lado a lado.
Em resumo #
| Userobject | u_pbt_listbar |
| Classe de items | n_pbt_listbar_section (secção) → n_pbt_listbar_item (entrada) |
| Serve para | Substituir um menu lateral improvisado à custa de botões por uma navegação estruturada, com tema e recolhível |
| Opções opt-in | ib_auto_width, ib_reorderable |
É o único componente da biblioteca que publica ib_auto_width: a sua largura natural tem significado, uma vez que a calha recolhida é nitidamente mais estreita do que a barra expandida. Aliás, o caso corrente já está coberto sem ativar nada — ib_collapsed = true encolhe a barra até à calha e devolve-lhe a largura ao expandir.
Início rápido #
// evento open da janela
// Uma seccao e depois as suas entradas : cada entrada endereca-se por seccao/entrada
uo_nav.of_add_section(/*key*/ "nav", /*text*/ "Navigation")
uo_nav.of_add_item(/*keys*/ "nav/home", /*text*/ "Home", /*image*/ "mono:img\home.svg")
uo_nav.of_add_item(/*keys*/ "nav/docs", /*text*/ "Documents", /*image*/ "mono:img\doc.svg")
uo_nav.of_add_item(/*keys*/ "nav/search", /*text*/ "Search", /*image*/ "mono:img\find.svg")
// Uma segunda seccao, com uma unica entrada
uo_nav.of_add_section(/*key*/ "settings", /*text*/ "Settings")
uo_nav.of_add_item(/*keys*/ "settings/prefs", /*text*/ "Preferences", /*image*/ "mono:img\gear.svg")
// A selecao fica na ENTRADA, pelo seu endereco : a seccao e depois a entrada
uo_nav.of_select_item(/*keys*/ "nav/home")
// of_select_item lanca ue_selection_changed, como um clique : a primeira pagina abre-se ai
// evento ue_selection_changed de uo_nav : (string as_from_keys, string as_keys)
choose case as_keys
case "nav/home" ; of_open_home()
case "nav/docs" ; of_open_documents()
case "settings/prefs" ; of_open_preferences()
end choose
Dois níveis, um endereço #
Um identificador de entrada só é único dentro da sua secção: uma entrada designa-se, portanto, pelo seu endereço, a secção e depois a entrada unidas por / — "nav/docs". É o componente que o recebe (of_item, of_select_item, of_remove_item…); uma secção designa-se apenas pela sua chave (of_section("nav")). Ver Hierarquias.
// Uma seccao pela sua chave, uma entrada pelo seu endereco
uo_nav.of_section(/*key*/ "nav").is_title = "Navigation"
uo_nav.of_item(/*keys*/ "nav/docs").is_text = "Documents"
Os eventos incluem igualmente o caminho completo, e com ele a entrada abandonada: ue_selection_changed(as_from_keys, as_keys).
Propriedades #
| Propriedade | Tipo | Predefinição | Função |
|---|---|---|---|
ib_collapsed | boolean | false | true recolhe a barra numa calha de ícones: os títulos de secção e as etiquetas dão lugar a um filete entre secções, e todas as entradas continuam visíveis, mesmo as de uma secção recolhida (o recolhimento volta à saída da calha). Uma entrada sem ícone mostra a sua inicial, e cada entrada diz a sua etiqueta ao passar o rato |
ib_auto_width | boolean | false | Opt-in: o mesmo para a largura, incluindo expandida (a barra ajusta-se à etiqueta mais comprida). Quanto ao recolhimento em calha, esse já encolhe sozinho; ue_auto_width segue-se em ambos os casos |
ib_reorderable | boolean | false | Opt-in: o utilizador pode deslocar uma entrada com o rato. O deslocamento mantém-se dentro da sua secção — um identificador de entrada só é único aí, pelo que atravessar arriscaria duas chaves idênticas (aciona ue_item_reordered) |
ib_veto_selection | boolean | false | Opt-in: perguntar antes de a seleção se mover — um gesto do utilizador e of_select_item / of_clear_selection (dispara ue_selection_changing, que pode recusar; uma ordem recusada devolve -4). Desativado por omissão, como todo evento cancelável da biblioteca: defina true quando precisar de poder recusar (dados não guardados). Cada pergunta de um gesto custa uma ida e volta ao PowerBuilder (~35 ms) |
is_theme_style | string | "" | Estilo visual do componente (constantes THEME_STYLE_*); vazio = o da aplicação, seguido a cada mudança |
is_theme_mode | string | "" | Variante clara ou escura (constantes THEME_MODE_*); vazio = a da aplicação, seguida a cada mudança |
il_theme_accent | long | -1 | Cor de destaque deste componente (-1 = destaque da aplicação, ou o do tema) |
is_tooltip | string | "" | Tooltip simples apresentado ao passar sobre o componente |
is_super_tooltip_title | string | "" | Título do tooltip enriquecido (prevalece sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto do tooltip enriquecido (aceita marcação enriquecida) |
is_super_tooltip_image | string | "" | Imagem do tooltip enriquecido |
Propriedades de uma secção — n_pbt_listbar_section #
| Propriedade | Tipo | Predefinição | Função |
|---|---|---|---|
is_title | string | "" | Título da secção. Aceita o texto formatado com etiquetas. Um título vazio não apresenta qualquer linha de cabeçalho: a secção passa a ser um simples agrupamento invisível; um espaço separa-a da secção de cima (um filete no trilho), e ela deixa de se recolher — ninguém a poderia reabrir |
ib_collapsed | boolean | false | Acordeão: true recolhe as entradas desta secção. O cabeçalho permanece visível e o respetivo galão roda; ue_section_toggled segue, como num clique no cabeçalho |
ib_pinned | boolean | false | true fixa a secção no fundo da barra (Definições, Ajuda): um rodapé que permanece visível enquanto o resto da barra desliza, empurrado para baixo quando há espaço de sobra, e no fundo do trilho também. Várias secções fixadas empilham-se pela sua ordem. Só muda o desenho: a disposição (of_get_layout) mantém a ordem das secções, e a seta Baixo passa da última entrada de cima para a primeira do rodapé |
is_image | string | "" | Ícone antes do título da secção (formas aceites: caminho, mono:, tint:, recurso de DLL). Uma cadeia vazia retira-o |
il_accent | long | -1 | Destaque desta secção, ou seja, do seu título e de nada mais: as suas entradas mantêm o seu (-1 = o do componente) |
il_back_color | long | -1 | Fundo do título da secção, em RGB(r,g,b) (-1 = o do componente) |
il_text_color | long | -1 | Cor do texto do título da secção (-1 = a do componente) |
il_back_color_hover | long | -1 | Fundo do título sob o ponteiro (-1 = o do componente) |
il_text_color_hover | long | -1 | Cor do texto do título sob o ponteiro (-1 = a do componente) |
Propriedades de uma entrada — n_pbt_listbar_item #
| Propriedade | Tipo | Predefinição | Função |
|---|---|---|---|
is_text | string | "" | Etiqueta da entrada, modificável em tempo real sem reconstruir a barra. Aceita o texto formatado com etiquetas |
is_image | string | "" | Ícone, modificável em tempo real (formas aceites: caminho, mono:, tint:, recurso de DLL) |
ib_enabled | boolean | true | false desativa a entrada: fica no seu lugar e já não responde a nada — nem clique, nem Enter, nem clique direito, e as setas saltam-na |
ib_visible | boolean | true | false oculta a entrada sem a remover da barra. Uma entrada oculta não pode passar a ser a seleção (of_select_item devolve -5); ocultar a que está selecionada mantém-na selecionada, e voltar a mostrá-la devolve-a tal como estava |
is_badge | string | "" | Pastilha de contador no fim da entrada ("12" por ler), nas cores de pastilha do tema; no trilho, no canto do ícone. Qualquer texto curto, marcação aceite. Uma cadeia vazia retira-a |
of_is_selected ( ) → boolean | — | — | Esta entrada é a selecionada? Só leitura, e de propósito: a seleção é um estado da barra inteira, não um indicador por entrada. Para a definir, of_select_item no componente |
is_tooltip | string | "" | Tooltip simples apresentado ao passar sobre o item |
is_super_tooltip_title | string | "" | Título do tooltip enriquecido do item (prevalece sobre is_tooltip) |
is_super_tooltip_text | string | "" | Texto do tooltip enriquecido do item (aceita marcação enriquecida) |
is_super_tooltip_image | string | "" | Imagem do tooltip enriquecido do item |
il_accent | long | -1 | Acento desta entrada: a barra que a marca quando está selecionada usa-o (-1 = o do componente). Para «esta entrada a vermelho», il_back_color / il_text_color |
il_back_color | long | -1 | Fundo próprio da entrada, em RGB(r,g,b) (-1 = o que o tema dá) |
il_text_color | long | -1 | Cor do texto da entrada (-1 = o que o tema dá) |
il_back_color_hover | long | -1 | Fundo da entrada sob o ponteiro (-1 = o que o tema dá) |
il_text_color_hover | long | -1 | Cor do texto da entrada sob o ponteiro (-1 = o que o tema dá) |
Métodos #
No componente #
| Método | Função | |
|---|---|---|
of_add_section (string as_key, string as_text) | Adiciona uma secção no fim da barra. Um texto vazio não desenha nenhuma linha de título. O handle vem de of_section("nav") quando quiser definir uma propriedade. Devolve 0 uma vez aplicado, -5 se a chave estiver vazia, já ocupada ou contiver / ou ` | , -2` se o componente não estiver criado |
of_insert_section (string as_key, string as_text, integer ai_index) | Adiciona uma secção na posição escolhida (primeira posição = 1) em vez de no fim. O índice conta secções, não linhas. Um nome já ocupado é recusado: duas secções com o mesmo nome tornariam ambíguo o endereço de cada uma das suas entradas. Devolve 0 uma vez aplicado, -5 se a chave estiver vazia, já ocupada ou contiver / ou ` | , -2` se o componente não estiver criado |
of_move_section (string as_key, integer ai_index) | Move uma secção para a posição ai_index, com as suas entradas. Mover só o cabeçalho deixaria cair as suas entradas na secção que fica acima delas. Devolve 0 uma vez aplicado, -5 para uma secção que esta barra nunca adicionou, -2 se o componente não estiver criado | |
of_remove_section (string as_key) | Retira uma secção e tudo o que contém. Esvaziá-la mantendo as suas entradas deixá-las-ia órfãs: teriam um identificador de secção que já não nomeia nada. Se a seleção lá estava, ue_selection_changed anuncia que já não há. Devolve 0 uma vez aplicado, -5 para uma secção que esta barra nunca adicionou, -2 se o componente não estiver criado | |
of_section (string as_key) | Handle de uma secção, pela sua chave: o título, o ícone, o recolhimento e as cores definem-se através dele (criado no primeiro acesso). Uma entrada alcança-se antes a partir do componente, pelo seu endereço (of_item) | |
of_add_item (string as_keys, string as_text, string as_image) | Adiciona uma entrada no seu endereço, "nav/home": a secção onde aterra e depois o seu próprio identificador. Uma sobrecarga omite o ícone. Devolve 0 uma vez adicionada, -5 se a secção não foi adicionada por esta barra, se o endereço já estiver ocupado ou se a chave contiver ` | , -2` se o componente não estiver criado |
of_item (string as_keys) | Handle de uma entrada, pelo seu endereço (criado no primeiro acesso) | |
of_insert_item (string as_keys, string as_text, integer ai_index) | Insere uma entrada na posição ai_index dentro da sua secção (primeira posição = 1). Devolve 0 uma vez adicionada, -5 se a secção não foi adicionada por esta barra, se o endereço já estiver ocupado ou se a chave contiver ` | , -2` se o componente não estiver criado |
of_insert_item (string as_keys, string as_text, string as_image, integer ai_index) | O mesmo, com o ícone da entrada: of_add_item aceita um, por isso inserir também tem de poder. Devolve 0 uma vez adicionada, -5 se a secção não foi adicionada por esta barra, se o endereço já estiver ocupado ou se a chave contiver ` | , -2` se o componente não estiver criado |
of_move_item (string as_keys, integer ai_index) | Move uma entrada existente dentro da sua secção, mantendo o seu estado. Devolve 0 uma vez aplicado, -5 para um endereço que esta barra nunca adicionou, -2 se o componente não estiver criado | |
of_remove_item (string as_keys) | Retira uma entrada, designada pelo seu endereço. Se era a seleção, ue_selection_changed anuncia que já não há. Devolve 0 uma vez aplicado, -5 para um endereço que esta barra nunca adicionou, -2 se o componente não estiver criado | |
of_clear ( ) | Esvazia a barra: todas as secções e todas as entradas. Se uma entrada estava selecionada, ue_selection_changed anuncia que já não há (endereço vazio); ue_layout_changed não é disparado, está a reconstruir. Devolve 0 depois de aplicado, -2 se o componente não estiver criado | |
of_select_item (string as_keys) | Seleciona uma entrada, como um clique nela: com ib_veto_selection ativo, ue_selection_changing é perguntado primeiro; depois segue ue_selection_changed, como num clique (logo após o seu script, a partir da fila de eventos), e of_selected_key() lido logo a seguir já devolve o novo endereço. Entrada já selecionada: nada é perguntado nem disparado. Devolve 0 depois de selecionada (ou se já selecionada), -4 se o seu ue_selection_changing recusou (nada se move), -5 para um endereço que esta barra nunca adicionou, uma entrada oculta ou uma entrada que o limite da demonstração não desenha, -2 se o componente não estiver criado | |
of_get_layout ( ) | Relê a disposição atual em JSON: as secções por ordem, cada uma com as suas entradas por ordem e o seu estado recolhido. Guarde-a (ficheiro, base de dados, registo) e devolva-a com of_set_layout no arranque seguinte. O mesmo par tem os mesmos nomes em todos os componentes reorganizáveis | |
of_set_layout (string as_layout_json) | Repõe uma disposição lida com of_get_layout ou recebida com ue_layout_changed. O que a disposição não nomeia mantém o seu lugar no fim: uma disposição de ontem não deve fazer desaparecer o que foi acrescentado desde então. Aplicá-la não gera qualquer event — foi você que a forneceu. Devolve 0 depois de aplicado, -5 para um texto vazio ou que não é um objeto JSON (um ficheiro truncado): nada é enviado; o recolhimento de uma secção ausente é ignorado, -2 se o componente não estiver criado | |
of_clear_selection ( ) | Não deixa nenhuma entrada selecionada, como qualquer movimento: com ib_veto_selection ativo, ue_selection_changing é perguntado primeiro, depois segue ue_selection_changed com um endereço vazio. Nada selecionado já: nada é perguntado nem disparado. Devolve 0 uma vez aplicado, -4 se o seu ue_selection_changing recusou (a entrada continua selecionada), -2 se o componente não estiver criado | |
of_selected_key ( ) | Endereço da entrada selecionada — "nav/docs", "" se não houver nenhuma. É exatamente o que ue_selection_changed lhe entrega: uma comparação é uma comparação, não uma recomposição. Sempre a entrada atual, lida no componente: após um clique, e logo após of_select_item também | |
of_reset ( ) | Esvazia a barra e depois devolve o componente ao seu estado novo. Se uma entrada estava selecionada, ue_selection_changed dispara com um endereço vazio; ue_layout_changed não é disparado. Devolve 0 depois de aplicado, -2 se o componente não estiver criado | |
of_set_redraw (boolean) | Agrupa uma rajada de modificações numa única representação. 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 |
Numa secção — n_pbt_listbar_section #
| Método | Função |
|---|---|
of_count ( ) | Número de entradas da secção, ocultas incluídas |
of_keys_at (long al_index) | Endereço da entrada na posição al_index (a partir de 1) — "nav/docs", pronto a passar tal qual a of_item |
of_has (string as_key) | A secção contém esta entrada? |
Eventos #
| Evento | Acionado quando |
|---|---|
ue_selection_changed (string as_from_keys, string as_keys) | A seleção mudou: o utilizador escolheu uma entrada (clique, Enter, Espaço), o seu código moveu-a (of_select_item, of_clear_selection — uma ordem também o dispara, como SelectItem dispara SelectionChanged), ou a entrada selecionada saiu (of_remove_item, of_remove_section, of_clear, of_reset — as_keys fica então vazio). Mesmos argumentos que ue_selection_changing: a pergunta e o seu desfecho leem-se da mesma forma, e o par as_from_* designa a entrada abandonada (vazio se não houver nenhuma) |
ue_section_toggled (string as_key, boolean ab_collapsed) | O utilizador recolhe ou expande uma secção: clique no título, Enter no título, ou as setas Esquerda / Direita (invertidas da direita para a esquerda), ou o seu código que define ib_collapsed de uma secção |
ue_item_reordered (string as_keys, integer ai_index) | O utilizador terminou de arrastar uma entrada. ai_index é a sua nova ordem dentro da secção, a partir de 1, como of_move_item. Guarde essa ordem para devolver ao utilizador a barra tal como a deixou |
ue_layout_changed (string as_layout_json) | A disposição a guardar mudou: uma entrada ou uma secção moveu-se, uma secção foi recolhida ou expandida, algo foi retirado — pelo utilizador ou pelo seu código. Traz a disposição inteira, não só o que se moveu: guardá-la é uma atribuição. As adições, o trilho, of_set_layout, of_clear e of_reset não o disparam: é construção, não disposição |
ue_item_rclicked (string as_keys) | O utilizador clicou com o botão direito numa entrada: o seu endereço, "nav/docs". Um evento por clique direito, e a entrada não é selecionada. Abra aí o seu próprio menu, no ponteiro: m_menu.PopMenu(PointerX(), PointerY()). Uma entrada desativada não dispara nada |
ue_selection_changing (string as_from_keys, string as_keys) → boolean | Cancelável, colocado antes de a seleção se mover — um gesto do utilizador, of_select_item ou of_clear_selection —, e só quando ib_veto_selection = true (desativado por omissão). Devolva false para ficar onde está: nada se move, e a ordem do seu código devolve -4 |
ue_auto_width (long al_width) | O componente recalculou a sua largura ideal — requer ib_auto_width = 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 #
Menu lateral completo #
// A barra inteira numa so renderizacao
uo_nav.of_set_redraw(/*on*/ false)
// Primeira seccao e as suas tres entradas
uo_nav.of_add_section(/*key*/ "folders", /*text*/ "Folders")
uo_nav.of_add_item(/*keys*/ "folders/recent", /*text*/ "Recent", /*image*/ "mono:img\clock.svg")
uo_nav.of_add_item(/*keys*/ "folders/customers", /*text*/ "Customers", /*image*/ "mono:img\user.svg")
uo_nav.of_add_item(/*keys*/ "folders/archives", /*text*/ "Archives", /*image*/ "mono:img\box.svg")
// Segunda seccao e as suas duas entradas
uo_nav.of_add_section(/*key*/ "tools", /*text*/ "Tools")
uo_nav.of_add_item(/*keys*/ "tools/import", /*text*/ "Import", /*image*/ "mono:img\import.svg")
uo_nav.of_add_item(/*keys*/ "tools/export", /*text*/ "Export", /*image*/ "mono:img\export.svg")
// Uma so renderizacao para tudo e depois a primeira entrada e selecionada
uo_nav.of_set_redraw(/*on*/ true)
uo_nav.of_select_item(/*keys*/ "folders/recent")
Calha recolhível que liberta espaço #
// Recolher numa calha de icones: a barra encolhe por si propria (e retoma a sua
// largura quando a expandir).
uo_nav.ib_collapsed = true
// evento ue_auto_width de uo_nav : (long al_width)
// A barra acabou de adotar a sua largura ideal : realinhar o que esta a sua direita.
uo_content.x = uo_nav.x + al_width
uo_content.width = parent.width - uo_content.x
Acordeão: recolher uma secção #
// Recolher a seccao dos arquivos, pouco usada
uo_nav.of_section(/*key*/ "folders").ib_collapsed = true
// evento ue_section_toggled de uo_nav : (string as_key, boolean ab_collapsed)
// Lembrar o recolhimento escolhido pelo utilizador
of_save_preference("section_" + as_key, String(ab_collapsed))
Definições e Ajuda fixadas no fundo #
Uma secção sem título, fixada: nenhuma linha de cabeçalho, duas entradas que ficam no fundo da barra mesmo quando a navegação, mais longa do que a janela, desliza. Um clique aí seleciona como em qualquer outro lado: ue_selection_changed recebe foot/settings.
// Uma seccao SEM titulo (nenhuma linha de cabecalho), fixada no fundo da barra :
// fica visivel enquanto as entradas de cima deslizam
uo_nav.of_add_section(/*key*/ "foot", /*text*/ "")
uo_nav.of_add_item(/*keys*/ "foot/settings", /*text*/ "Settings", /*image*/ "mono:img\\gear.svg")
uo_nav.of_add_item(/*keys*/ "foot/help", /*text*/ "Help", /*image*/ "mono:img\\help.svg")
uo_nav.of_section(/*key*/ "foot").ib_pinned = true
Reagir à navegação #
// evento ue_selection_changed de uo_nav : (string as_from_keys, string as_keys)
// O endereco traz os dois niveis : duas seccoes podem ter ambas uma entrada "list".
// Local variables
n_pbt_utils lnv_utils // autoinstantiate : nada a criar, nada a destruir
string ls_keys[]
// Divide o endereco : [1] = a seccao, [2] = a entrada
if lnv_utils.of_split_path(/*keys*/ as_keys, /*out*/ ls_keys) < 2 then return
choose case ls_keys[1]
case "folders" ; of_open_folder(ls_keys[2])
case "tools" ; of_run_tool(ls_keys[2])
end choose
Recusar uma mudança de seleção #
// A pergunta esta desativada por OMISSAO : ativa-la para poder recusar uma mudanca
uo_nav.ib_veto_selection = true
// evento ue_selection_changing de uo_nav :
// (string as_from_keys, string as_keys)
// Devolver FALSE mantem o utilizador na entrada que deixa.
if of_has_unsaved_changes(as_from_keys) then
MessageBox("Entrada", "Termine a ficha atual antes de navegar.")
return false
end if
return true
Atualizar uma entrada em tempo real #
// Local variables
n_pbt_listbar_item lnv_entry
// A entrada designa-se pelo seu endereco : a seccao e depois a entrada
lnv_entry = uo_nav.of_item(/*keys*/ "folders/recent")
lnv_entry.is_text = "Recent (12)"
lnv_entry.is_image = "mono:img\clock_full.svg"
// Desativar ou ocultar consoante as permissoes, sem reconstruir a barra
uo_nav.of_item(/*keys*/ "tools/import").ib_enabled = of_is_allowed("import")
uo_nav.of_item(/*keys*/ "tools/export").ib_visible = gb_expert_mode
Seleção controlada a partir do código #
// Colocar a selecao noutro lado : a faixa de destaque segue, e
// ue_selection_changed parte como num clique
uo_nav.of_select_item(/*keys*/ "folders/customers")
// Ou apaga-la por completo
uo_nav.of_clear_selection()
Reconstruir a barra #
// of_clear esvazia seccoes e entradas ; of_reset repoe tambem as predefinicoes
uo_nav.of_clear()
of_build_menu_for_profile()
Boas práticas #
- Uma entrada adiciona-se pelo seu endereço:
of_add_item("nav/home", ...). O handle de secção serve agora apenas para definir uma propriedade, eof_section("nav")devolve-o no primeiro acesso. - Utilize
mono:para os ícones: recolorem-se com o tema, tanto claro como escuro, e permanecem legíveis depois de a barra ser recolhida em calha. - Um título de secção vazio serve de agrupamento discreto: as entradas ficam espaçadas sem que apareça qualquer linha de cabeçalho. Uma tal secção não se recolhe.
- Com o teclado: as setas Cima / Baixo percorrem títulos e entradas, Esquerda / Direita recolhem e expandem uma secção (invertidas da direita para a esquerda), Enter ou Espaço escolhe, uma letra salta para a linha seguinte que começa por ela.
ib_collapsedencolhe o userobject até à calha, mas não desloca os seus outros controlos: trateue_auto_widthpara ocupar o espaço libertado, caso contrário este permanece vazio.- No modo calha só ficam os ícones: cada entrada diz a sua etiqueta ao passar o rato, e uma entrada sem ícone mostra a sua inicial. Dê mesmo assim um ícone a cada uma — uma inicial distingue-se mal de outra.
- A pergunta só é feita se a ativar (
ib_veto_selection = true): faça-o apenas onde precisar de poder recusar uma mudança, porque cada pergunta custa uma ida e volta ao PowerBuilder.of_select_itemnunca a faz. ib_enabled = falseé preferível aib_visible = falsequando a entrada voltará a ficar disponível: o menu não muda de forma diante dos olhos do utilizador.
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.
| Membros | Função | Detalhado em |
|---|---|---|
of_count · of_keys_at · of_has | Percorrer o que o componente contém | 3.2 Os items |
of_reset | Repor o componente a zero | 3.6 Repor um componente a zero: of_reset() |
of_register_shortcut · of_clear_shortcuts | Atalhos de teclado do componente | 3.5 Os atalhos de teclado |
of_is_created · of_is_ready · of_get_last_error | Se nasceu, se está pronto, o que falhou | 3.7 Diagnóstico |
of_save_as_png · of_save_as_jpg | Exportar a renderização como imagem | 3.8 Exportar a representação como imagem |
of_set_redraw | Agrupar as alterações num único repinte | 3.10 Boas práticas |
of_preload_icons | Ícones mostrados sem atraso | Apresentação instantânea: of_icon |
of_set_translation | Traduzir uma legenda do componente | 5.2 Adaptar uma etiqueta: of_set_translation |
of_focus_webview | Dar o foco ao componente | 6.4 Teclado e focus |
of_print · of_print_to_pdf | Imprimir, ou escrever um PDF | 6.9 Imprimir |
of_set_property · of_get_property · of_component_name | Controlar uma propriedade pelo nome | 3.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.