
A definição dinâmica de menus é de grande utilidade, por exemplo, quando os menus, submenus e itens estão previamente cadastrados em bases de dados As funções numéricas, apresentadas a seguir, permitem definir, de maneira dinâmica, os itens de menus e submenus.
A função numérica MakeMenu serve para definir um menu principal, atribuindo-lhe um nome. Esta função retorna um handle numérico (-1, em caso de erro) a ser utilizado na definição dos itens associados ao menu sendo definido.
Sintaxe
hm1=MakeMenu(<nome-menu>)
Onde:
<nome-menu>
É uma expressão cadeia que informa o nome do menu que está sendo definido.
A função numérica MakePopup serve para definir um menu suspenso (ou seja, submenu ou popup) abaixo de um menu ou item de menu, indicados estes pelo seu respectivo "handle". Esta função retorna um handle numérico (-1 em caso de erro) a ser utilizado na definição dos itens de menu associados ao Popup definido pela função MakeMenu.
hpop1=MakePopup (<hm1>, <nome-item>, <nome-prompt>, <msg>, <nome-popup>)
Onde:
<hm1>
É uma expressão cadeia que informa o "handle" do menu principal ao qual pertence este menu popup.
<nome-item>
É uma expressão cadeia que informa o nome do item de um menu principal ou secundário.
<nome-prompt>
É uma expressão cadeia que especifica o "prompt", ou seja o "caption" do Popup.
<msg>
É uma expressão cadeia que especifica a mensagem associada ao Popup.
<nome-popup>
É uma expressão cadeia que especifica o nome do Popup.
As funções numéricas MakePad e MakeBar servem para definir itens de menu principal (Pad) ou itens de menu suspenso (Bar).
h1=[MakePad | MakeBar] ([<hm1>|<hpop1], <nome-item>, <nome-prompt>, <msg>, <nome-proc>)
Onde:
<hm1> | <hpop1>
É uma expressão cadeia que informa o "handle" do menu principal (<Mhm1>) ou menu suspenso (<hpop1>) aos quais pertence este item de menu.
<nome-item>
É uma expressão cadeia que informa o nome do item de um menu principal ou secundário.
<nome-prompt>
É uma expressão cadeia que informa o "prompt" do Popup.
<msg>
É uma expressão cadeia que informa a mensagem associada ao Popup.
<nome-proc>
Especifica o nome da Procedure associada ao item de menu que está sendo definido. A Procedure especificada em <nome-proc> deve ser declarada, previamente, através do comando EXTERNAL. Veja o exemplo abaixo.
Veja a seguir um exemplo que define dinamicamente um menu e vários submenus.
$nolib
prog
external proc01
decl mh1[02]=space(16)
mh1[01]="Informacoes"
mh1[02]="Emergencia"
hm1=MakeMenu("hospub")
hinf1 = MakePad (hm1,"inf1",mh1[01],"",proc01)
hinf2 = MakePopup (hm1,"inf2",mh1[02],"","")
hbar1 = MakeBar (hinf2,"1","Chefia","",proc01)
hbar3 = MakePopup (hinf2,"1","Atendente","","")
hbar31 = MakePopup (hbar3,"1","Mov. Pacientes","","")
hbar311 = MakeBar (hbar31,"1","Procedimentos","",proc01)
hbar32 = MakePopup (hbar3,"2","Alteracoes","","")
hbar321 = MakeBar (hbar32,"1","Dados Pessoais","",proc01)
hbar322 = MakeBar (hbar32,"2","Entrada","",proc01)
hbar323 = MakeBar (hbar32,"3","Saida","",proc01)
hbar324 = MakeBar (hbar32,"4","Plano de Saude","",proc01)
hbar325 = MakeBar (hbar32,"5","Acidentes de Trabalho","",proc01)
hbar33 = MakeBar (hbar3,"3","Cancela Saida","",proc01)
hbar34 = MakeBar (hbar3,"4","Consultas","",proc01)
hbar35 = MakeBar (hbar3,"5","Emite Documentos","",proc01)
Activate Menu hospub
end
proc proc01
? "nada ..."
return
O programa acima produz a seguinte tela:

