se eu apenas mudar uma das linhas para:
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
aà o erro encerra.
Mas, o clique no mouse nada faz!
??? :%

Moderador: Moderadores
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
Mas, o clique no mouse nada faz!
Eval( "PCI10001()" )
Eval( "PCI10001()" )
AddItem( texto, codeblock )
AddItem( texto, codeblock )
AddItem( texto, codeblock )
AddItem( texto, codeblock )
AddItem( texto, codeblock )
AddItem( texto, codeblock )
PROCEDURE Main
LOCAL oMenu, oSubMenu, oSubMenu2
SetMode( 30, 90 )
CLS
oMenu := wvgSetAppWindow():MenuBar()
oMenu:AddItem( "teste 1", { || Teste() } )
oMenu:AddItem( "teste 2", { || Teste() } )
// cria submenu de oMenu
oSubMenu := wvgMenu():New( oMenu, , .T. ):Create()
oSubMenu:AddItem( "teste 3, 1 ", { || Teste() } )
oSubMenu:AddItem( "teste 3, 2 ", { || Teste() } )
// cria submenu de oSubMenu
oSubMenu2 := wvgMenu():New( oSubMenu, , .T. ):Create()
oSubMenu2:AddItem( "teste 3, 3, 1 ", { || Teste() } )
oSubMenu2:AddItem( "teste 3, 3, 2 ", { || Teste() } )
oSubMenu2:AddItem( "teste 3, 3, 3 ", { || Teste() } )
// criou, agora adiciona
oSubMenu:AddItem( oSubMenu2, "teste 3, 3" )
// continua adicionando
oSubMenu:AddItem( "teste 3, 4 ", { || Teste() } )
oSubMenu:AddItem( "teste 3, 5 ", { || Teste() } )
// criou, agora adiciona
oMenu:AddItem( oSubMenu, "teste 3" )
// continua adicionando
oMenu:AddItem( "teste 4", { || Teste() } )
oMenu:AddItem( "teste 5", { || Teste() } )
oMenu:AddItem( "teste 6", { || Teste() } )
DO WHILE Inkey(0) != 27
ENDDO
RETURN
FUNCTION Teste()
wapi_MessageBox( ,"teste", "teste" )
RETURN NIL
MenuOption(HB_AnsiToOem("Orçamento ~Simplificado"),{||PCI10001()})
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
MenuOption(HB_AnsiToOem("Orçamentos"),{|| EXECUTA_PROGRAMA_WVG (PCI10001())})
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
microvolution escreveu:Mas, no caso, já executa o codbloque dentro desta linha:
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
Ou seja, já executa automatimente sem o EVAL ou sem a minha função EXECUTA_PROGRAMA_WVG.
Antes de abrir o PCI10001() preciso executar algumas funções tipo: CLOSE ALL e desta forma:
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
não é possÃvel, pois o additem("prompt","ação") já executa automaticamente ao clique do mouse.
está executando sim. basta clicar no mouse sobre a sub-opção desejada que executa sem o EVAL. Como está lá no exemplo da pasta contrib\gwvg\tests\demowvg.PRG/EXE e comparando com o q vc gentilmente me ajudou como sempre.JoséQuintas escreveu:oMenu:AddItem( acMenu[ nCont, 1 ] , bCode )
sim. já funciona. Mas, para funcionar corretamente tenho que colocar um CLOSE ALL e HIDE nos pusbhuttons.JoséQuintas escreveu:Já conseguiu executar um módulo? não? então primeiro faça funcionar.
posso não ter compreendido a métrica correta, mas, este sempre foi e é o desejo: testar um, pra depois ir para o próximo passo.JoséQuintas escreveu:Este deveria ter sido o primeiro teste de todos.
MenuOption(HB_AnsiToOem("Orçamento") ,{||PCI10001()})
bCode := acMenu[ nCont, 3 ] // LINHA QUE REALMENTE FUNCIONA ATÉ AGORA 5/3/19w
oMenu:AddItem( acMenu[ nCont, 1 ] , bCode)
close all // acrescentado para fechar todos os arquivos e não dar erro DBF já aberto.
cDescricao := acMenu[ nCont, 1 ]
bCode := acMenu[ nCont, 3 ]
bCode := { || ExecutaAntes(), Eval( bCode ), ExecutaDepois() }
oMenu:AddItem( cDescricao, bCode )
prezado fiz como sugerido e o conteúdo das 2 funções novas ficou assim:JoséQuintas escreveu:Precisa então de executar antes, e executar depois.
function EXECUTAANTES()
fDESTROI_BOTOES()
set key TECLA_UTIL to UTIL_PROG
close all
return nil
function EXECUTADEPOIS ()
ABRE_ARQ_ACESSO ()
set key TECLA_HELP to
set key TECLA_UTIL to
fCRIA_BOTOES('PCI10000')
return nil
cDescricao := acMenu[ nCont, 1 ]
bCode := acMenu[ nCont, 3 ]
// bCode := { || Executa_Antes_wvg(), eval(bCode) , Executa_Depois_wvg() }
oMenu:AddItem( cDescricao, bCode )
// MenuOption(HB_AnsiToOem("Orçamento") ,{||PCI10001()})
MenuOption(HB_AnsiToOem("Orçamentos") ,{|| ExecutePrg_wvg({||PCI10001()})})
static FUNCTION ExecutePrg_wvg( PROGRAMA )
fDESTROI_BOTOES()
set key TECLA_UTIL to UTIL_PROG
close all // não funcionou 17/12/15w
WvgSetAppWindow():oMenu := nil // linhas oferecidas pelo JQuintas para remover o menu.
eval (PROGRAMA)
ABRE_ARQ_ACESSO ()
set key TECLA_HELP to
set key TECLA_UTIL to
fCRIA_BOTOES('PCI10000')
RETURN NIL // ExecutePrg_wvg
Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes