
O controle de menus e submenus é uma tarefa muito fácil, na linguagem OpusWin. As funções aqui apresentadas devem ser utilizadas apenas quando for necessário.
A função Menu() serve para identificar qual o nome do menu principal selecionado pelo usuário. Caso existam vários menus primários, o programa, eventualmente, precisa saber qual desses menus está sendo processado no momento e, assim, comandar a execução dos procedimentos pertinentes.
A função Menu() retorna, em variável cadeia, o nome do menu principal cujos itens foram selecionados pelo usuário.
Exemplo
if Menu() = "Util1"
do proc_Util1
elseif Menu() = "Util2"
do proc_Util2
else ...
...
endif
A função Popup() serve para identificar qual o nome do menu secundário, ou suspenso, selecionado pelo usuário. Freqüentemente, existem vários menus primários definidos no mesmo programa. Assim sendo, é necessário, eventualmente, saber qual desses menus secundários está sendo processado no momento e, assim, comandar a execução dos procedimentos pertinentes.
A função Popup() retorna, em variável cadeia, o nome do menu secundário cujos itens foram selecionados pelo usuário.
Exemplo
if Popup() = "popU101" .and. bar() = 02
do rot_CODI
endif
A função Prompt() serve para obter o "rótulo" ou "caption" dos itens de um menu (principal ou secundário) de modo que o programa possa reconhecer e processar corretamente os itens do menu selecionado. A função Prompt() retorna, em variável cadeia, o conteúdo que foi especificado no comando prompt, quando da definição dos itens de um menu.
Exemplo
if Menu() = "Util1" .and. Popup() = "popU101" .and. bar() = 02
? prompt()
endif
Observações
O exemplo acima deverá mostrar o "rótulo" ("caption") associado ao item 02 do menu secundário popU101 do menu primário Util1.
A função Pad() serve para obter o nome de um item do menu principal selecionado pelo usuário. Esta informação permite que o programa execute os procedimentos correspondentes, conforme a escolha feita pelo usuário. A função Pad() retorna uma variável cadeia.
Exemplo
if Menu() = "Util1"
? Pad()
endif
Observações
O exemplo acima deverá mostrar o nome do item selecionado pelo usuário na barra de menu principal.
A função Bar() serve para obter o número identificador do item selecionado, dentro de um menu suspenso. A função Bar() retorna uma variável numérica, ou seja o identificador do item selecionado, dentro do menu suspenso referenciado através da função popup().
Exemplo
if Menu() = "Util1" .and. Popup() = "popU101"
? str(Bar())
endif
Observações
O exemplo acima deverá mostrar o número do item selecionado pelo usuário dentro do menu secundário popU101, subordinado ao menu principal Util1.
A função IsMenu() serve para identificar se o procedimento em execução foi invocado, ou não, através da opção do <proc> associada aos comandos PAD e BAR, quando da definição do menu. A função lógica IsMenu() retorna .t. ou .f. dependendo se a procedure corrente foi chamada, ou não, através do acionamento de algum item de menu.
A informação obtida através da função IsMenu() é de grande utilidade, por exemplo, quando o mesmo procedimento é invocado via menu ou via Barra de Ferramentas, como veremos mais adiante.
Exemplo
Proc proc-menu
if IsMenu() = .f. .or. menu() <> "Util1"
return
endif
sel = bar()
do case
case sel = 1
case sel = 2
endcase
Observações
O procedimento proc-menu apenas trabalha quando for chamado pelo menu "Util1".
