Página 1 de 1

Menu via Banco de Dados

Enviado: 13 Ago 2011 19:04
por HOR INFORMATICA
Olá

Estou convertendo meus programas do clipper para Harbour com Minigui.
Montei um menu com matrizes que carrego de um banco de dados.
Para executar o action também mando carregar de uma matriz, só que não encontrei uma forma de recuperar o numero do item escolhido.

Alguem já teve esse problema ?

Um abraço a todos.
Nota de Moderação:
por Toledo: O presente tópico foi movido da seção Harbour, uma vez que seu conteúdo está mais relacionado com a MiniGui.

MENU VIA BANCO DE DADOS

Enviado: 15 Ago 2011 11:48
por Toledo
Amigo, seja bem-vindo ao Fórum!

Veja um exemplo:

Código: Selecionar todos

#include "hmg.ch"

Function Main

 public aMenu := { {"Cadastro",{{"Clientes","Func_op(1,1)","cadcli"},{"Produtos","Func_op(1,2)","cadpro"},{"Sair","Encerrar()","sair"}}} ,;
                 {"Consulta",{{"Vendas","Func_op(2,1)","conven"},{"Estoque","Func_op(2,2)","conest"}}} ,;
                 {"Ajuda"    ,{{"Help","MsgInfo('Help')"},{"Sobre","MsgInfo('Sobre')"}}}},;
                 cAction

 DEFINE WINDOW Win_1 ;
  AT 0,0 ;
  WIDTH 400 ;
  HEIGHT 400 ;
  TITLE 'Exemplo de Menu' ;
  MAIN 

  DEFINE MAIN MENU
    For nI=1 To Len(aMenu)
      POPUP aMenu[nI,1]
        nOp:=LEN(aMenu[nI,2])
        For nI2=1 To nOp
          cAction:=aMenu[nI,2,nI2,2]
          IF LEN(aMenu[nI,2,nI2])>2
            cNomeAction:=aMenu[nI,2,nI2,3]
            ITEM aMenu[nI,2,nI2,1] ACTION { || &cAction } NAME &cNomeAction
          ELSE
            ITEM aMenu[nI,2,nI2,1] ACTION { || &cAction }
          ENDIF
        Next
      END POPUP
    Next
  END MENU

 END WINDOW

 ACTIVATE WINDOW Win_1

Return

Func Func_op(nOpMenu,nOpSubMenu)
if nOpMenu=1
 if nOpSubMenu=1
  MsgInfo("Menu=Cadastro - SubMenu=Clientes")
 elseif nOpSubMenu=2
  MsgInfo("Menu=Cadastro - SubMenu=Produtos")
 endif
endif
if nOpMenu=2
 if nOpSubMenu=1
  MsgInfo("Menu=Consulta - SubMenu=Vendas")
 elseif nOpSubMenu=2
  MsgInfo("Menu=Consulta - SubMenu=Estoque")
 endif
endif
MsgInfo("Nome da Action: "+This.Name)
Return Nil

Func Encerrar()
Win_1.release
Return Nil
Abraços,

Menu via Banco de Dados

Enviado: 15 Ago 2011 15:00
por HOR INFORMATICA
Obrigado, Toledo, funcionou...

Abraço