CAPÍTULO 3
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini



3.5 Menus


A criação de menus e realmente fácil já que um assistente da IDE permite desenha-los. Pressionando o botão direito do mouse sobre o formulário, e selecionar a opção Editor de menu...

Os menus são criado em arvores, isto é cada menu de primeiro nível, por exemplo os típicos menus da barra superior de muitos programas como Arquivo, Editar, ajuda, etc., terão menus filhos que ficarão um nível abaixo deste e, por sua vez se estes tiverem filhos ficarão um nível mais abaixo.

Tudo isso se controla com os botões com forma de flecha, as verticais permitem trocar a ordem de aparição dos menus, e com as horizontais modificamos a profundidade destes.
Figura 22
Figura 22. Localização do Editor de menu
As propriedades mais importantes são o Nome, que é o nome do objeto menu e que corresponderá com seu gestor de eventos, o Título que é o texto que aparecerá na tela, um ícone a escolher se o desejarmos, e um possível atalho de teclado para acessa-lo sem necessidade do mouse.

Se deixarmos o nome de um menu em branco, este parecerá como uma barra separadora em lugar de uma entrada de menu normal.

Na figura 23 podemos ver um exemplo com um menu principal que tem três opções, e seus correspondentes submenus.
Figura 23
Figura 23. Exemplo de menus com submenus.
    O formulário terá o aspecto da figura 24. Se pressionarmos sobre um dos menus que não tenham filhos, a IDE nos levará diretamente ao evento Click do menu, que é onde podemos criar o código que será executado quando o usuário pressionar o menu. Figura 24
Figura 24. Formulário FMain
PUBLIC SUB menuSelessionar_Click()

..............

END
Se o que desejamos é criar um menu daqueles que aparece quando o usuário pressiona, por exemplo, o botão direito sobre o formulário ou outro controle, teremos que criar um menu de primeiro nível com sua propriedade visible FALSE, e seus correspondentes filhos. Depois é só lançar o evento do formulário o controle que nos interessa, por exemplo ao pressionarmos o botão direito sobre o formulário, que é detectado mediante a gestão do evento Menu, indicaremos a nosso menu invisível que deve mostrar-se como um menu contextual: Figura 25
Figura 25. Formulário FMain
PUBLIC SUB Form_Menu()

menuEditar.Popup()

END
Ao executar o código, veremos o resultado ao pressionar o botão direito do mouse sobre o formulário.

Quanto a natureza dos menus, não são mais que objetos, ainda que neste caso não provem da classe Control, se bem que dispõem de algumas propriedades comuns como Text ou Picture.
Figura 26
Figura 26. Resultado do menu contextual
Na hora de criar um menu, teremos que indicar seu objeto pai, que poderá ser uma janela ou formulário para os menus de primeiro nível, ou outro menu para os filhos do primeiro. Os menus também podem ser criados ou destruídos diretamente por código Figura 27
Figura 27. Resultado do menu contextual
PUBLIC SUB Form_Open()

  DIM h1 AS Menu

  DIM h2 AS Menu

  DIM h3 AS Menu

 
  h1 = NEW Menu(ME)

  h1.Text = "Ações"

 
  h2 = NEW Menu(h1) AS "h2"

  h2.Text = "Enviar"

 
  h3 = NEW Menu(h1) AS "h3"

  h3.Text = "Deletar"

END



HOME

Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoit Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativo. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativo sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)