DOCUMENTAÇÃO DO MENU TRI!

MENU.PRG:
Através de um arquivo de MENU MPR, ele gera um cursor chamado MENU_PRONTO com os dados organizados de modo que a classe abaixo possa trabalhar adequadamente.

Requisitos:
- VFP9
- GDIPLUSX com as classes instaladas na pasta Classes do MENU.

Objeto: Método/Propriedade: Descrição:
botoes comando Executa o command do menu
botoes sub= Determina se o botão esta num sub-menu ou cabeçalho (.T. sim / .F. não)
botoes pai= Em caso de ser um sub=.T. ele guarda o nome do "pai"
botoes mouseMove()

Caso o botão não tenha um comando, considera-se "pai", então, ao passar o mouse por ele e o form de sub-menu estiver visivel, o botão leva um clique para puxar o sub-menu para ele.
E por fim define-se a imagem de fundo do botão.

botoes mouseLeave() Limpa o botão para o estado: sem fócu
botoes click() - Caso não seja um Sub(!this.sub) e não tenha um comando, ele tira o sub-sub-menu se existir e organiza um sub-menu para exibir os ítens "filhos".
- Caso não seja um Sub(!this.sub) e tenha um comando, ele esconde os forms e executa o comando.
- Caso seja um Sub(this.sub) ele busca os sub-ítens de segundo nivel, e organiza o objeto form "sub_form"
     
_menu sub= Caso seja menu de segundo-nivel, ele levará .T.
_menu atual= Armazena o código do pai que o ativou
_menu tab= Armazena a ordem tab do objeto atual para navegar sob os ítens através do teclado
_menu gera() - De acordo com um cursor "itens" gerado por seu menu-pai, ele gera os botões e configura suas dimensões baseado nos tamanhos necessários dos botões.
- Ao final, executa a pintura do fundo do objeto this.imgcanvas1 e define a imagem de fundo do this.imgcanvas2
_menu limpa() Apaga todos os botões baseados na classe botoes
_menu keyPress() Identifica a tecla pressionada, para efetuar a navegação sob os botões.
_menu deactivate() No momento em que se clicar fora do form, tirando o fóco dele, efetua-se o seguinte:
- caso não seja this.sub e não haja um sub de segundo nivel, aí ele some.
- caso ele seja um this.sub ele sempre sumirá
- ou então, ele fica visivel.
_menu.imgcanvas1 BeforeDraw() Desenha o fundo gradiente que os botões posicionam-se sob.
     
icone . . Exibe o ícone do ítem do menú.
     
_cont_menu2 init() Declara reconhecimento de funções de DLL necessária para GDI+, cria uma propridade System para facilitar interação com GDI+. E cria o objeto OBJ que refere-se ao sub-menu principal.
_cont_menu2 gera() Começa apagando todos objetos que não possuam Asterisco(*) na propriedade TAG. Organiza dados do cursor e gera um SCAN com os dados do novo Cursor que contém apenas os dados de ítens pais. E efetua a criação dos ítens.
Por fim, ele se melhor posiciona na tela para se caso ele esteja em uma classe toolbar.
     
Variaveis:   Descrição:
obj   Refere-se ao sub-menu principal, aquele ativado ao clicar-se nos pais. É originado baseado na _menu.
Ele é uma vez criado e depois apenas setado como Visivel ou Invisivel.
sub_form   Refere-se ao sub-menu se segundo nivel, aquele ativado a partir de um sub-menu de primeiro nivel.
Ele é criado sempre que necessário e apagado da memória sempre que fechado.
     

Exemplo de aplicação:
- menu_teste.sct - contém um exemplo com menu no form simples, em toolbar docked e undocked.

 

Maiores informações: http://www.lipsil.com.br/menu.htm
Sugestões: rafaellippert@gmail.com

Um abraço,
Rafael Lippert