Page 1 of 1

Perdendo valor da variavel

Posted: Thu Jun 15, 2006 7:00 pm
by evaldohc
Esta perdendo o Objeto
Com um Menu com poucos itens não dá o erro, mas o que estou usando tem muitos, acaba perdendo o valor.

Alguém pode me ajudar a mante-la

Obrigado, a seguir listo o código


Error description: Error BASE/1003 Variable does not exist: OMENUTREE

FUNCTION MnuOpen( )

LOCAL oLbx, oMenuTree, oWndMenu
PUBLIC cUsuario

cUSUARIO="01" // Criar Gets para identificar qual usuário será configurado

IF ASCAN( oWnd:oWndClient:aWnd, {|x| x:cargo == "MenuCA"} ) == 0

DEFINE WINDOW oWndMenu MDICHILD FROM 1, 1 TO 40, 300;
TITLE "Controle de Senha Acesso";
BORDER NO of oWnd

IF !FILE("MENUS.DBF")
MsgStop("Arquivo não encotrado MENUS.DBF")
QUIT
ENDIF

Open_file("Menus","Menus",,.F.)
go top

TREE oMenuTree BITMAPS "MnClose.bmp","MnOpen.bmp" OPENED
DO WHILE .NOT. Eof()

DO CASE
CASE Menus->Tipo == 0

IF cUSUARIO$Menus->USUARIOS
TREE BITMAPS "MnClSl.bmp", "MnOpSl.bmp" OPENED
ELSE
TREE BITMAPS "MnClose.bmp","MnOpen.bmp" OPENED
ENDIF

CASE Menus->Tipo == 1

bGrava = 'GravaMarca('+ '"'+Menus->TEXTO+'",oMenutree)'
IF cUSUARIO$Menus->USUARIOS
TREEITEM ALLTRIM( Menus->Texto ) FILENAME "MnClSl.bmp", "MnOpSl.bmp" ACTION &bGrava
ELSE
TREEITEM ALLTRIM( Menus->Texto ) FILENAME "MnClose.bmp","MnOpen.bmp" ACTION &bGrava
ENDIF

CASE Menus->Tipo == 2
TREEITEM "--------------------------------"
CASE Menus->Tipo == 3
ENDTREE
ENDCASE

DBSkip()
ENDDO
ENDTREE

@ 0, 0 LISTBOX oLbx FIELDS "" ;
HEADERS "Arvore de Menus" ;
SIZE 400, 400 ;
OF oWndMenu UPDATE

oLbx:nClrBackHead := CLR_VERDEAGUA // Cor do Fundo do Cabeçalho
//oLbx:nClrForeHead := CLR_HRED // Cor nos Headers - Cabeçalhos
oLbx:SetTree( oMenuTree ) // Carrega Arvore no Listbox
//oLbx:aHeaders := {""} // Cabeçalho
oLbx:bKeyChar = { | nKey | KeyChar( oLbx, nKey ) }

//******* O ERRO ACONTECE NESSA LINHA **********//
oLbx:bLDblClicked = {|| If( oLbx:Cargo:oTree != nil, ;
( oLbx:Cargo:Toggle(), oLbx:Refresh() ),EVAL(oLbx:Cargo:Cargo) )}

oWndMenu:SetControl( oLbx )
oWndMenu:cargo := "MenuCA"

ENDIF

ACTIVATE WINDOW oWndMenu MAXIMIZED

return nil

STATIC FUNCTION KeyChar( oLbx, nKey)

DO CASE
CASE nKey == 13
msginfo("ENTER TESTE")
IF oLbx:Cargo:oTree != NIL
oLbx:Cargo:Toggle()
oLbx:Refresh()
ELSE
EVAL(oLbx:Cargo:Cargo)
ENDIF

CASE nKey == 27

ENDCASE
RETURN nil

FUNCTION GravaMarca(cItem,oMenutree)
msginfo("Click TESTE")
LOCATE FOR Menus->Texto=cItem
IF !(cUSUARIO$USUARIOS)
// Marcar
msginfo("Gravando Usuário " + cUSUARIO + " Acesso a "+cItem)
RLock()
repla USUARIOS WITH Trim(USUARIOS)+"*"+cUSUARIO
ELSE
// Rotina para desmarcar
msginfo("Já esta gravado Usuário " + cUSUARIO + " Acesso a "+cItem)
ENDIF

RETURN NIL