
Apresentamos, a seguir, os comandos utilizados para definir menus, acompanhados de explicações e exemplos específicos.
A definição e ativação de menus e submenus é uma tarefa muito fácil, na linguagem OpusWin. Muitos dos comandos, opções e parâmetros são opcionais, devendo ser utilizados apenas quando for necessário. Ao final, apresentaremos uma tabela de referência e alguns exemplos completos de menus e submenus.
O comando MENU serve para:
O nome atribuído ao menu principal pode ser obtido e verificado através da função menu() e deve ser especificado nos comandos ACTIVATE e DEACTIVATE, que veremos mais adiante.
Exemplo
MENU Util1
Observações
No exemplo acima, Util1 é o nome atribuído ao menu principal, cuja definição está sendo iniciada.
O comando PAD serve para:
Exemplo
PAD U1 prompt "&Tools" popup U1p1
? pad() + " " + ? prompt() + " " + ? popup()
Observações
No exemplo acima, estamos definindo um item de menu principal. O nome do item é U1, seu rótulo é &Tools e, quando acionado (pelo mouse ou através de ALT-T), vai ser aberto um menu secundário, ou suspenso, chamado U1p1.
Podemos utilizar o recurso de teclas aceleradoras, ou atalhos, para acionar um item de menu, bastando incluir o símbolo & imediatamente antes do caracter escolhido. Por exemplo, no exemplo acima, escolhemos a letra T para acionar o item U1 através do atalho ALT-T.
O nome atribuído a um item do menu principal pode ser obtido e verificado através da função pad(). O rótulo associado a um item de menu pode ser obtido e processado através da função prompt() e o nome de um menu secundário pode ser obtido e processado pela função popup().
Após a execução da segunda linha do exemplo acima, dentro do contexto do exemplo que estamos começando a codificar, será mostrado na tela a seguinte seqüência de caracteres: U1 &Tools U1p1.
O comando BAR serve para:
Os operandos e parâmetros do comando BAR são idênticos aos do comando PAD, com a seguinte diferença: O comando PAD define itens de menu principal e o comando BAR define itens de menus secundários ou suspensos.
Cada item de menu, definido através de um comando BAR, pode abrigar, por sua vez, um outro menu suspenso, ou submenu, identificado pelo operando popup <pop> e definido pelo comando BAR1, subordinado de forma hierárquica ao comando BAR.
Exemplo
MENU Util1
PAD U1 prompt "&Tools" popup U1p1
BAR 01 prompt "&Utilities..." popup popU101 message "OpenBASE Utilities"
BAR1 01 prompt "WinADIC";
message "Adiciona registros aos arquivos de um Banco de Dados";
do prupU1
Observações
No exemplo acima, através do comando BAR, estamos definindo o item 01 (BAR 01) do menu secundário conhecido pelo nome de U1p1. Quando este item for acionado, via mouse ou via CTRL-U, será aberto o menu suspenso (ou secundário) cujo nome é popU101. Se o mouse for apenas deslizado sobre o rótulo "&Utilities", será exibida, na janela (ou barra) de status a mensagem: "OpenBASE Utilities".
Não existe procedimento associado ao item 01 do menu secundário U1p1, pois esse mesmo item constitui, por sua vez, um outro menu secundário, de nome popU101, cujos itens serão especificados através do comando BAR1, conforme veremos a seguir.
O comando BARnn serve para:
Os operandos e parâmetros do comando BARnn são idênticos aos do comando BAR.
Cada item de menu, definido através dos comandos BARnn, pode abrigar, por sua vez, um outro menu suspenso, ou submenu, identificado pelo parâmetro <pop> do operando popup, sendo que os itens deste novo menu suspenso são definidos através de comandos BARnn+1.
Cada comando BARnn pode ter outros comandos BARnn+1 a ele subordinados, de forma hierárquica, até o máximo de 32 níveis, como vemos no exemplo a seguir.
Exemplo
BAR 01 prompt "&Utilities..." popup popU101 message "OpenBASE Utilities"
BAR1 01 prompt "WinADIC";
message "Adiciona registros aos arquivos de um Banco de Dados";
do prupU1
BAR1 02 prompt "WinCODI";
message "Apresenta informações sobre a licença do OpenBASE";
do prupU1
Observações
No exemplo acima, através do comando BAR1, estamos definindo os itens 01 (BAR1 01) 02 (BAR1 02) do menu secundário conhecido pelo nome de popU101. Quando estes itens forem acionados, pressionando o mouse, será acionada a rotina prupU1. Não podem ser "passados" parâmetros (nem faz sentido neste contexto) para o procedimento especificado em <proc>.
Se o mouse for deslizado (sem "Clicar"), sobre o rótulo "WinADIC", será exibida, na janela (ou barra) de status a mensagem: "Adiciona registros aos arquivos de um Banco de Dados". A barra de status vai ser gerada, automaticamente, pela OpusWin, sem necessidade de uma definição específica por parte do usuário.
Os itens 01 e 02 do menu secundário popU101 são itens elementares de menu, por isso não foi codificada neles a cláusula popup <pop>. Ou seja, a opção "do <proc>" não pode ser utilizada junto com a opção "popup <pop>".
O comando EndMenu serve para finalizar a definição de um menu principal, todos os menus secundários a ele subordinados e os seus itens.
Exemplo
BAR 06 prompt "Sobre a Linguagem OpusWin..." do prupU2
EndMenu
O comando ACTIVATE MENU serve para ativar um menu principal.
Exemplo
SetWindowIcon "world.ico"
set border on
Activate MENU Util1
O comando DEACTIVATE MENU serve para desativar um menu principal.
Exemplo
Deactivate MENU Util1
quit
