Jump to content
Fivewin Brasil

Classe TTree 32 bist


leo@lhsistemas.com

Recommended Posts

Bom dia.

Estou com o seguinte erro abaixo ao migrar o módulo de acessos do meu software de 16bits para 32bits utilizando FW + xHb + xDev.

Alguém pode me informar que erro é este.

 

Application
===========
   Path and name: D:\CLIPPER\PAFECF\LHACESSO.EXE (32 bits)
   Size: 1,660,416 bytes
   Time from start: 0 hours 0 mins 4 secs
   Error occurred at: 15/03/2013, 09:45:32
   Error description: Error BASE/1066  Argument error: conditional
   Args:
     [   1] = A   { ... }

Stack Calls
===========
   Called from: .\source\classes\TTREEVIE.PRG => TTREEVIEW:NEW(149)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => CREATREE(469)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => (b)CHILDTREE(451)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE(985)
   Called from: .\source\classes\MDICHILD.PRG => TMDICHILD:ACTIVATE(245)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => CHILDTREE(451)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => (B)_CACESSOS(359)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(985)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => _CACESSOS(359)

Variables in use
================
   Procedure     Type   Value
   ==========================
   TTREEVIEW:NEW
     Param   1:    N    0
     Param   2:    N    0
     Param   3:    N    0
     Param   4:    N    0
     Param   5:    O    Class: TMDICHILD
     Param   6:    A    Len:   13
     Param   7:    L    .F.
     Param   8:    N    150
     Param   9:    B    {|| ... }
     Param  10:    U    
     Param  11:    L    .F.
     Param  12:    O    Class: TTREEVIEW
     Param  13:    C    "[_NTOP]"
     Param  14:    O    Class: TTREEVIEW
     Param  15:    A    Len:   13
     Param  16:    U    
     Param  17:    U    
     Param  18:    C    "[ERRORSYS]"
   CREATREE
     Param   1:    O    Class: TMDICHILD
     Local   1:    U    
     Local   2:    U    
     Local   3:    U    
     Local   4:    U    
   (b)CHILDTREE
     Param   1:    O    Class: TMDICHILD
   TWINDOW:ACTIVATE
     Param   1:    C    "NORMAL"
     Param   2:    U    
     Param   3:    U    
     Param   4:    U    
     Param   5:    U    
     Param   6:    U    
     Param   7:    U    
     Param   8:    B    {|| ... }
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Param  12:    U    
     Param  13:    U    
     Param  14:    U    
     Param  15:    U    
     Param  16:    U    
     Param  17:    U    
     Local   1:    U    
     Local   2:    U    
     Local   3:    O    Class: TMDICHILD
     Local   4:    U    
     Local   5:    U    
   TMDICHILD:ACTIVATE
     Param   1:    U    
     Param   2:    U    
     Param   3:    U    
     Param   4:    U    
     Param   5:    U    
     Param   6:    U    
     Param   7:    U    
     Param   8:    B    {|| ... }
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Param  12:    U    
     Param  13:    U    
     Param  14:    U    
     Param  15:    U    
     Param  16:    U    
     Param  17:    U    
     Param  18:    O    Class: TMDICHILD
     Param  19:    C    "[ACTIVATE]"
   CHILDTREE
     Local   1:    O    Class: TBAR
     Local   2:    O    Class: TMDICHILD
     Local   3:    U    
   (B)_CACESSOS
     Param   1:    O    Class: TMDIFRAME
   TMDIFRAME:ACTIVATE
     Param   1:    C    "NORMAL"
     Param   2:    U    
     Param   3:    U    
     Param   4:    U    
     Param   5:    U    
     Param   6:    U    
     Param   7:    U    
     Param   8:    B    {|| ... }
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Param  12:    U    
     Param  13:    U    
     Param  14:    U    
     Param  15:    U    
     Param  16:    U    
     Param  17:    B    {|| ... }
     Param  18:    U    
     Param  19:    U    
     Local   1:    O    Class: TMDIFRAME
     Local   2:    U    
     Local   3:    U    
   _CACESSOS
     Param   1:    C    "¦"
     Local   1:    N    1
     Local   2:    U    

Classes in use:
===============
     1 ERROR
     2 HASHENTRY
     3 HBCLASS
     4 HBOBJECT
     5 TWINDOW
     6 TMDIFRAME
     7 TMENU
     8 TMENUITEM
     9 TBRUSH
    10 TMDICLIENT
    11 TFONT
    12 TMSGBAR
    13 TRECT
    14 TMSGITEM
    15 TTIMER
    16 TMDICHILD
    17 TCONTROL
    18 TICON
    19 TBAR
    20 TBTNBMP
    21 TTREEVIEW
    22 TREG32

 

Link to comment
Share on other sites

Bom dia,

 

Segue anexo ( Classe tree )prg que uso em meu sistema, espero que resolva o problema, qualquer coisa é só entrar em contato.

 

//--------------------------------  Inicio da Classe  -----------------------------------

// Win32 TreeView support


 

#include "FiveWin.ch"
#include "Constant.ch"


 

#define COLOR_WINDOW         5
#define COLOR_WINDOWTEXT     8
#define COLOR_BTNFACE       15
#define COLOR_BTNSHADOW     16
#define COLOR_BTNHIGHLIGHT  20


 

#define FD_BORDER            8
#define FD_HEIGHT           22


 

#define DT_CENTER            1
#define DT_VCENTER           4


 

#define WINDING              2
#define SC_KEYMENU       61696   // 0xF100


 

#define TVS_HASBUTTONS       1
#define TVS_HASLINES         2
#define TVS_LINESATROOT      4
#define TVS_SHOWSELALWAYS   32 //   0x0020
#define TVS_DISABLEDRAGDROP 16 //   0x0010


 

#ifdef __CLIPPER__
   #define CTRL_NAME "SysTreeView"
#else
   #define CTRL_NAME "SysTreeView32"
#endif


 

#ifdef __XPP__
   #define Super ::TControl
   #define ScanItems ScanItem
#endif


 

//----------------------------------------------------------------------------//


 

CLASS TTreeView FROM TControl


 

   DATA   aItems
   DATA   oImageList
   DATA   bChanged


 

   METHOD New( nTop, nLeft, oWnd, nClrFore,;
               nClrBack, lPixel, lDesign, nWidth, nHeight,;
               cMsg ) CONSTRUCTOR


 

   METHOD ReDefine( nId, oWnd, nClrFore, nClrBack, lDesign, cMsg ) CONSTRUCTOR


 

   METHOD Add( cPrompt, nImage )


 

   METHOD VScroll( nWParam, nLParam ) VIRTUAL   // standard behavior requested


 

   METHOD HScroll( nWParam, nLParam ) VIRTUAL


 

   METHOD CollapseAll( oItem ) INLINE ScanItems( ::aItems, .f. ),;
      oItem := ::GetSelected(), if( oItem <> nil, oItem:MakeVisible(), nil )


 

   METHOD CollapseBranch( oItem ) INLINE ;
      If( oItem == nil, oItem := ::GetSelected(),), ;
      If( oItem != nil, ( oItem:Collapse(), ScanItems( oItem:aItems, .f. ), oItem:MakeVisible() ),)


 

   METHOD Expand() INLINE AEval( ::aItems, { | oItem | oItem:Expand() } )


 

   METHOD ExpandAll( oItem ) INLINE ScanItems( ::aItems, .t. ),;
      oItem := ::GetSelected(), if( oItem <> nil, oItem:MakeVisible(), nil )


 

   METHOD ExpandBranch( oItem ) INLINE ;
      If( oItem == nil, oItem := ::GetSelected(), nil ), ;
      If( oItem != nil, ( oItem:Expand(), ScanItems( oItem:aItems, .t. ), oItem:MakeVisible() ), nil )
     
   METHOD GetSelected()
   METHOD GetItem( hItem )


 

   METHOD Select( oItem ) INLINE TVSelect( ::hWnd, oItem:hItem )


 

   METHOD GetSelText() INLINE TVGetSelText( ::hWnd )


 

   METHOD SelChanged() INLINE If( ::bChanged != nil, Eval( ::bChanged, Self ), nil )


 

   METHOD SetImageList( oImageList )


 

   METHOD DeleteAll() INLINE ( TVDelAllItems( ::hWnd ), ::aItems := {} )


 

   METHOD HitTest( nRow, nCol )
  
   METHOD HandleEvent( nMsg, nWParam, nLParam )


 

   METHOD Initiate( hDlg ) INLINE Super:Initiate( hDlg ), ::SetColor( ::nClrText, ::nClrPane )
  
   METHOD cToChar() INLINE Super:cToChar( CTRL_NAME )
  
   METHOD SetColor( nClrText, nClrPane ) INLINE ;
      Super:SetColor( nClrText, nClrPane ), TVSetColor( ::hWnd, nClrText, nClrPane )


 

   METHOD Toggle() INLINE AEval( ::aItems, { | oItem | oItem:Toggle() } )


 

   METHOD ToggleAll( oItem ) INLINE ScanItems( ::aItems, , .t. ), ;
      oItem := ::GetSelected(), If( oItem <> nil, oItem:MakeVisible(), nil )


 

   METHOD ToggleBranch( oItem ) INLINE ;
      If( oItem == nil, oItem := ::GetSelected(), nil ), ;
      If( oItem != nil, ( oItem:Toggle(), ScanItems( oItem:aItems, , .t. ), oItem:MakeVisible() ), nil )


 

ENDCLASS


 

//----------------------------------------------------------------------------//


 

METHOD New( nTop, nLeft, oWnd, nClrFore,;
            nClrBack, lPixel, lDesign, nWidth, nHeight, cMsg ) CLASS TTreeView


 

   DEFAULT nTop     := 0, nLeft := 0,;
           oWnd     := GetWndDefault(),;
           nClrFore := oWnd:nClrText,;
           nClrBack := GetSysColor( COLOR_WINDOW ),;
           lPixel   := .f.,;
           lDesign  := .f.,;
           nWidth   := 200, nHeight := 150


 

   ::nStyle    = nOR( WS_CHILD, WS_VISIBLE,;
                      If( lDesign, WS_CLIPSIBLINGS, 0 ), WS_TABSTOP,;
                      TVS_HASBUTTONS, TVS_HASLINES, TVS_LINESATROOT, TVS_SHOWSELALWAYS, TVS_DISABLEDRAGDROP)


 

   ::nId       = ::GetNewId()
   ::oWnd      = oWnd
   ::cMsg      = cMsg
   ::nTop      = If( lPixel, nTop, nTop * SAY_CHARPIX_H )
   ::nLeft     = If( lPixel, nLeft, nLeft * SAY_CHARPIX_W )
   ::nBottom   = ::nTop + nHeight - 1
   ::nRight    = ::nLeft + nWidth - 1
   ::lDrag     = lDesign
   ::lCaptured = .f.
   ::nClrText  = nClrFore
   ::nClrPane  = nClrBack
   ::aItems    = {}


 

   if ! Empty( oWnd:hWnd )
      ::Create( CTRL_NAME )
      oWnd:AddControl( Self )
      ::SetColor( nClrFore, nClrBack )
   else
      oWnd:DefControl( Self )
   endif


 

   ::Default()


 

   if lDesign
      ::CheckDots()
   endif


 

return Self


 

//----------------------------------------------------------------------------//


 

METHOD ReDefine( nId, oWnd, nClrFore, nClrBack, lDesign, cMsg ) CLASS TTreeView


 

   DEFAULT oWnd     := GetWndDefault(),;
           nClrFore := oWnd:nClrText,;
           nClrBack := oWnd:nClrPane,; // GetSysColor( COLOR_WINDOW ),;
           lDesign  := .f.


 

   ::nId     = nId
   ::oWnd    = oWnd
   ::aItems  = {}


 

   ::Register( nOR( CS_VREDRAW, CS_HREDRAW, TVS_HASBUTTONS, TVS_HASLINES, TVS_LINESATROOT ) )


 

   oWnd:DefControl( Self )


 

return Self


 

//----------------------------------------------------------------------------//


 

METHOD Add( cPrompt, nImage ) CLASS TTreeView


 

   local oItem


 

   oItem := TTVItem():New( TVInsertItem( ::hWnd, cPrompt,, nImage ), Self )


 

   oItem:cPrompt := cPrompt
   oItem:nImage  := nImage


 

   AAdd( ::aItems, oItem )


 

return oItem


 

//----------------------------------------------------------------------------//


 

static function ScanItems( aItems, lExpand, lToggle )


 

   local oItem, i


 

   DEFAULT lExpand := .t., lToggle := .f.


 

   for i := 1 to Len( aItems )
       oItem = aItems[ i ]


 

       if lToggle
          oItem:Toggle()
       elseif lExpand
          oItem:Expand()
       else
          oItem:Collapse()
       endif


 

       if Len( oItem:aItems ) != 0
          ScanItems( oItem:aItems, lExpand, lToggle )
       endif
   next


 

return nil


 

//----------------------------------------------------------------------------//


 

METHOD GetSelected() CLASS TTreeView


 

return SearchItem( ::aItems, TVGetSelected( ::hWnd ) )


 

//----------------------------------------------------------------------------//


 

METHOD GetItem( hItem ) CLASS TTreeView


 

return SearchItem( ::aItems, hItem )


 

//----------------------------------------------------------------------------//


 

METHOD HitTest( nRow, nCol ) CLASS TTreeView


 

   local hItem


 

   hItem := TVHitTest( ::hWnd, nRow, nCol )


 

   If hItem > 0
      return ::GetItem( hItem )
   Endif


 

return nil


 

//----------------------------------------------------------------------------//


 

METHOD SetImageList( oImageList ) CLASS TTreeView


 

   ::oImageList = oImageList


 

   TVSetImageList( ::hWnd, oImageList:hImageList, 0 )


 

return nil


 

//----------------------------------------------------------------------------//


 

METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TTreeView


 

   do case
      case nMsg == WM_CHAR
           if nWParam == VK_RETURN
              return 1
           endif
   endcase
  
return Super:HandleEvent( nMsg, nWParam, nLParam )             


 

//----------------------------------------------------------------------------//


 

static function SearchItem( aItems, hItem )


 

   local n, oItem


 

   for n = 1 to Len( aItems )
      if Len( aItems[ n ]:aItems ) > 0
         if ( oItem := SearchItem( aItems[ n ]:aItems, hItem ) ) != nil
            return oItem
         endif
      endif
      if aItems[ n ]:hItem == hItem
         return aItems[ n ]
      endif
   next


 

return nil


 

//---------------  Fim da Classe ----------------------------------//

 

Copie e cole em algum prg do seu sistema ou para um novo prg, inclua no bat de compilação, espero que de certo.  Vale lembrar ainda que eu não sou o autor do código, apenas mais um usuário, ok?

 

[]´s

lAugusto

São José dos Pinhais - PR

Link to comment
Share on other sites

gunafe, bom dia.

 

Valeu pelo código, porém, o erro ainda persiste, veja abaixo:

 

Application
===========
   Path and name: D:\CLIPPER\PAFECF\LHACESSO.EXE (32 bits)
   Size: 1,659,392 bytes
   Time from start: 0 hours 0 mins 0 secs
   Error occurred at: 20/03/2013, 10:47:23
   Error description: Error BASE/1066  Argument error: conditional
   Args:
     [   1] = A   { ... }

Stack Calls
===========
   Called from: D:\CLIPPER\PAFECF\xdev\TREEVIEW.PRG => TTREEVIEW:NEW(188)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => CREATREE(471)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => (b)CHILDTREE(453)
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE(985)
   Called from: .\source\classes\MDICHILD.PRG => TMDICHILD:ACTIVATE(245)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => CHILDTREE(453)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => (B)_CACESSOS(361)
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(985)
   Called from: D:\CLIPPER\PAFECF\LHACESSO.PRG => _CACESSOS(361)
 

Link to comment
Share on other sites

Boa Tarde,

 

Eu penso que não é necessário atualizar a versão do fivewin, mas enfim..  Seguinte meu amigo, se puder, poste o trecho do seu código de modo que seja possivel compilar e verificar onde esta o problema, comigo funciona muito bem e minha versão do five não é das mais novas. 

 

[]´s

Luiz Augusto

São José dos Pinhais - PR

Link to comment
Share on other sites

Léo, pelo erro, você está criando a classe TTree de forma errada, ou seja, está passando um parâmetro com valor númerico, caracter, data, ou NULO

 

e esse parâmetro deveria ser LÓGICO.

 

É só olhar o método NEW da classe TTree que tu mata o problema.

 

Posta o código de criação que você fez no seu LHACESSO.PRG, linha 471 provavelmente.

 

Quanto a atualizar o Fivewin...... isso é algo extremamente complicado e trabalhoso para empresas, pelo menos aqui é, devido vários motivos, e isso não significa de modo algum estar defasado ou parado no tempo.

Link to comment
Share on other sites

Ercilei, bom dia.

 

Segue abaixo o código completo:

 

#include "fivewin.ch"
#include "treeview.ch"
#include "FileIO.ch"
STATIC oWnd

FUNCTION _CAcessos(cUsu,cModo)
   LOCAL oBarra
   Private aMatVar := {}

   SET 3D LOOK ON
   set epoch to   1960
   set date to    british
   set bell       on
   set console    off
   set deleted    on
   set exclusive  off
   set scoreboard off
   set cursor     off
   set century    on
   setblink(.F.)
   sethandlecount(255)
    
    cUsu := "S"
    
   IF cUsu = Nil
      MsgInfo("Informe o Usuario !!!","Erro !")
      Return(Nil)
   ENDIF

   cModo := If(cModo=Nil,1,Val(cModo))

   cArqConf := cUsu

   cUsu := Cript(Left(Alltrim(cUsu+Space(20)),20),1)

   Aadd(aMatVar,{3,"CORES->Cada1","",;
      'If(cTpLj$"2_7",scl1111_(),'+;
      'If(cTpLj="3",scl1113_(),'+;
      'If(cTpLj="5",scl1112_(),scl1110_())))'})

   Aadd(aMatVar,{4,"CORES->Cada2","",;
      'If(cTpLj$"2_7",scl1111_(,"A"),'+;
      'If(cTpLj="3",scl1113_(,"A"),'+;
      'If(cTpLj="5",scl1112_(,"A"),scl1110_(,"A"))))'})

   Aadd(aMatVar,{6,"CORES->Cada3a","","scl113d_()"})
   Aadd(aMatVar,{7,"CORES->Cada3b","","scl1134_()"})
   Aadd(aMatVar,{8,"CORES->Cada3c","","scl113e_()"})
   Aadd(aMatVar,{10,"CORES->Cadb1","","scl1210_()"})
   Aadd(aMatVar,{11,"CORES->Cadb2","","scl1210_(,'A')"})
   Aadd(aMatVar,{12,"CORES->Cadb3","","scl1220_()"})
   Aadd(aMatVar,{13,"CORES->Cadc1","","scl1310_()"})
   Aadd(aMatVar,{14,"CORES->Cadc2","","scl1320_()"})
   Aadd(aMatVar,{15,"CORES->Cadc3a","","scl1330_()"})
   Aadd(aMatVar,{16,"CORES->Cadd","","scl1400_()"})
   Aadd(aMatVar,{17,"CORES->Cade","","scl1500_()"})
   Aadd(aMatVar,{18,"CORES->Cadn","","scl1f00_()"})
   Aadd(aMatVar,{19,"CORES->Cadp","","scl1i00_()"})
   Aadd(aMatVar,{20,"CORES->Esta1","","scl1610_()"})
   Aadd(aMatVar,{21,"CORES->Esta2","","scl1610_(,'A')"})
   Aadd(aMatVar,{22,"CORES->Esta5e","","scl164E_()"})
   Aadd(aMatVar,{23,"CORES->Esta7","","scl16a0_()"})
   Aadd(aMatVar,{24,"CORES->Esta5a","","scl164a_()"})
   Aadd(aMatVar,{25,"CORES->Esta8","","scl164f_()"})
   Aadd(aMatVar,{26,"CORES->Esta9","","scl164g_()"})
   Aadd(aMatVar,{27,"CORES->Esta10","","_GeraBToledo()"})
   Aadd(aMatVar,{28,"CORES->Cadg","","scl1700_()"})
   Aadd(aMatVar,{29,"CORES->Cadk","","scl1d00_()"})
   Aadd(aMatVar,{30,"CORES->Cadl","","scl1E00_()"})
   Aadd(aMatVar,{31,"CORES->Cadm","","scl1h00_()"})
   Aadd(aMatVar,{32,"CORES->Cado","","scl1g00_()"})
   Aadd(aMatVar,{33,"CORES->Cadi","","scl1b00_()"})
   Aadd(aMatVar,{34,"CORES->Cadj","","scl1c00_()"})
   Aadd(aMatVar,{35,"CORES->UltH","","scl6b00_()"})
   Aadd(aMatVar,{36,"CORES->Ultn","","scl1510_()"})
   Aadd(aMatVar,{37,"CORES->estb1","","scl2110_()"})
   Aadd(aMatVar,{38,"CORES->estb5a","","scl2171_(,oWndPrinc)"})
   Aadd(aMatVar,{39,"CORES->Fina1","","SCL3110_()"})
   Aadd(aMatVar,{40,"CORES->Fina2","","SCL3110_('A')"})
   Aadd(aMatVar,{41,"CORES->Fina3","","SCL3110_('E')"})
   Aadd(aMatVar,{42,"CORES->Fina4","","SCL3140_()"})
   Aadd(aMatVar,{43,"CORES->Finb1","","SCL3210_()"})
   Aadd(aMatVar,{44,"CORES->Finb2","","SCL3210_('A')"})
   Aadd(aMatVar,{45,"CORES->Finb3","","SCL3210_('E')"})
   Aadd(aMatVar,{46,"CORES->Finb4","","SCL3240_()"})
   Aadd(aMatVar,{47,"CORES->Finb6","","SCL3250_()"})
   Aadd(aMatVar,{48,"CORES->Bana","","SCL4100_(1)"})
   Aadd(aMatVar,{49,"CORES->Banb","","SCL4100_(2)"})
   Aadd(aMatVar,{50,"CORES->Banc","","SCL4100_(3)"})
   Aadd(aMatVar,{51,"CORES->esta3","","SCL1630_()"})
   Aadd(aMatVar,{52,"CORES->esta3e","","scl1637_()"})
   Aadd(aMatVar,{53,"CORES->esta3i","","SCL163b_()"})
   Aadd(aMatVar,{54,"CORES->cadc3c","","SCL163d_()"})
   Aadd(aMatVar,{55,"CORES->esta3g","","SCL163b1_()"})
   Aadd(aMatVar,{56,"CORES->esta3h","","_EmitSVDav()"})
   Aadd(aMatVar,{57,"CORES->esta8n","","SCL1684_()"})
   Aadd(aMatVar,{58,"CORES->esta8d","","SCL1683_()"})
   Aadd(aMatVar,{59,"CORES->esta8j","","SCL168B_()"})
   Aadd(aMatVar,{60,"CORES->esta8b","","SCL1682_()"})
   Aadd(aMatVar,{61,"CORES->Fina5","","SCL3151_()"})
   Aadd(aMatVar,{62,"CORES->Finb5","","scl3251_()"})
   Aadd(aMatVar,{63,"CORES->Estc1","","scl212s_()"})
   Aadd(aMatVar,{64,"CORES->Estc2","","scl212x_()"})
   Aadd(aMatVar,{65,"CORES->Ultb1","",;
      'If(MsgYesNo("Confirma Manutencao ?",'+;
      '"Reorganizar Arquivos !!!"),_CriaArq(0,2),.F.)'})

   Aadd(aMatVar,{66,"CORES->UltJ","","scl6900_() "})
   Aadd(aMatVar,{67,"CORES->Ultc","","_Acessos() "})
   Aadd(aMatVar,{68,"CORES->Estb4a","",;
      "MsgInfo('Apenas no Modulo de Vendas !!!','Alerta !!!')"})

   Aadd(aMatVar,{69,"CORES->Estb4d","",;
      "MsgInfo('Apenas no Modulo de Vendas !!!','Alerta !!!')"})

   Aadd(aMatVar,{70,"CORES->Estb4f","",;
      "MsgInfo('Apenas no Modulo de Vendas !!!','Alerta !!!')"})

   Aadd(aMatVar,{71,"CORES->Estb4g","",;
      "MsgInfo('Apenas no Modulo de Vendas !!!','Alerta !!!')"})

   Aadd(aMatVar,{72,"CORES->Estb4h","",;
      "MsgInfo('Apenas no Modulo de Vendas !!!','Alerta !!!')"})

   Aadd(aMatVar,{73,"CORES->Estb4i","","scl2120_()"})
   Aadd(aMatVar,{90,"CORES->Estc1","",""})

   Aadd(aMatVar,{91,"CORES->Estc2","",""})

   Aadd(aMatVar,{92,"CORES->esta3s","","SCL163b2_()"})
   Aadd(aMatVar,{93,"CORES->esta8a","","SCL1681_()"})
   Aadd(aMatVar,{94,"CORES->ultb2","","scl6200_(1)"})
   Aadd(aMatVar,{95,"CORES->ultb3","","scl6200_(2)"})
   Aadd(aMatVar,{96,"CORES->ultd1","",""})

   Aadd(aMatVar,{97,"CORES->ultd2","",""})

   Aadd(aMatVar,{98,"CORES->ultd3","",""})

   Aadd(aMatVar,{99,"CORES->ultd4","",""})

   Aadd(aMatVar,{100,"CORES->ultd6","",""})

   Aadd(aMatVar,{101,"CORES->exc_it","",""})

   Aadd(aMatVar,{102,"CORES->lib_ds","",""})

   Aadd(aMatVar,{103,"CORES->esta3j","","SCL163e_()"})
   Aadd(aMatVar,{104,"CORES->imp_dv","",""})

   Aadd(aMatVar,{105,"CORES->en_ex","",""})

   Aadd(aMatVar,{106,"CORES->esta3k","","SCL163b3_()"})
   Aadd(aMatVar,{107,"CORES->esta3ij","","SCL163c_()"})

   Aadd(aMatVar,{1107,"CORES->esta3ij","","SCL163i_()"})

   Aadd(aMatVar,{108,"CORES->estb5g","","scl2179_()"})
   Aadd(aMatVar,{109,"CORES->pr_al","",""})
   Aadd(aMatVar,{110,"CORES->pr_ex","",""})

   Aadd(aMatVar,{111,"CORES->can_cp","",""})

   Aadd(aMatVar,{112,"CORES->estd16","","scl164h_()"})
   Aadd(aMatVar,{113,"CORES->cadb4a","","scl1241_()"})
   Aadd(aMatVar,{114,"CORES->cadb4b","","scl1242_()"})
   Aadd(aMatVar,{115,"CORES->cadb4c","","scl1243_()"})
   Aadd(aMatVar,{116,"CORES->Finb5f","","scl3257_()"})
   Aadd(aMatVar,{117,"CORES->Cadc3n","","scl1k00_()"})
   Aadd(aMatVar,{118,"CORES->Cadc3m","",""})

   Aadd(aMatVar,{119,"CORES->cl_bl","",""})

   Aadd(aMatVar,{120,"CORES->finb7","","SCL3270_()"})
   Aadd(aMatVar,{121,"CORES->finb5d","","SCL3280_()"})
   Aadd(aMatVar,{122,"CORES->esta3l","","SCL163b4_()"})
   Aadd(aMatVar,{123,"CORES->nt_in","",""})
   Aadd(aMatVar,{124,"CORES->nt_al","",""})
   Aadd(aMatVar,{125,"CORES->nt_ex","",""})
   Aadd(aMatVar,{126,"CORES->Estb4i","","scl2121_()"})
   Aadd(aMatVar,{127,"CORES->finb5e","","SCL3290_()"})
   Aadd(aMatVar,{128,"CORES->cl_al","",""})
   Aadd(aMatVar,{129,"CORES->cl_ex","",""})
   Aadd(aMatVar,{130,"CORES->fo_al","",""})
   Aadd(aMatVar,{131,"CORES->fo_ex","",""})
   Aadd(aMatVar,{132,"CORES->fo_hi","",""})
   Aadd(aMatVar,{133,"CORES->fo_lu","",""})
   Aadd(aMatVar,{134,"CORES->Cadb4","","scl1230_()"})
   Aadd(aMatVar,{135,"CORES->pa_al","",""})
   Aadd(aMatVar,{136,"CORES->rc_al","",""})
   Aadd(aMatVar,{137,"CORES->esta3m","","SCL163f_()"})
   Aadd(aMatVar,{138,"CORES->En_Al","",""})
   Aadd(aMatVar,{139,"CORES->En_Ex","",""})
   Aadd(aMatVar,{140,"CORES->Pr_Pr","",""})
   Aadd(aMatVar,{141,"CORES->Esta8k","",""})
   Aadd(aMatVar,{142,"CORES->Finc","","SCL329A_()"})
   Aadd(aMatVar,{143,"CORES->cadb4d","",""})
   Aadd(aMatVar,{144,"CORES->cadb4d1","","scl1244_()"})
   Aadd(aMatVar,{145,"CORES->cadb4d2","",""})
   Aadd(aMatVar,{146,"CORES->cadb4d3","",""})
   Aadd(aMatVar,{147,"CORES->esta3r","","scl1j00_()"})
   Aadd(aMatVar,{148,"CORES->esta3s","","SCL163b2_()"})
   Aadd(aMatVar,{149,"CORES->esta4","","scl16b0_()"})
   Aadd(aMatVar,{1149,"CORES->esta4","","scl16b1_()"})
   Aadd(aMatVar,{150,"CORES->esta5","","SCL217E_()"})
   Aadd(aMatVar,{151,"CORES->Find","","SCL329B_()"})
   Aadd(aMatVar,{152,"CORES->esta3n","","SCL163g_()"})
   Aadd(aMatVar,{153,"CORES->esta3o","","SCL163h_()"})
   Aadd(aMatVar,{154,"CORES->his_in","",""})
   Aadd(aMatVar,{155,"CORES->his_al","",""})
   Aadd(aMatVar,{156,"CORES->his_ex","",""})
   Aadd(aMatVar,{157,"CORES->Fina4a","","SCL3140_()"})
   Aadd(aMatVar,{158,"CORES->Finb4a","","SCL3240_()"})
   Aadd(aMatVar,{159,"CORES->esta3p","","SCL163j_()"})
   Aadd(aMatVar,{160,"CORES->cadc3d","","SCL163k_()"})

   cur_dir      := "\"+curdir()
   mat_seg      := directory("\HL_FLJ.INI","H")
   nsalto_print := 60
   cporta_fis   :="COM2"

   if len(mat_seg) = 0
      setcolor("")
      clear

      MsgAlert("O arquivo de configuracao nao foi encontrado","Erro !!!")

      clear all
      quit
   else
      texto  = memoread("\HL_FLJ.INI")
      Texto_2= alltrim(memoline(texto,80,2))
      texto_2= alltrim(cript(texto_2,2))
   endif

   cpath_dll :=texto_2+"\DLL"

   set default to &texto_2
   set path    to &texto_2
   path_2    = texto_2

   if ! file("EMP01.DBF") .or. ! file("EMP01A.NTX")
      MsgAlert("Execute LHCONFIG.EXE !!!","Erro !!!")
      clear all
      quit
   endif

   lEGrade:=.T.
   cTpAT  :="1"

   Use EMP01 Alias EMP01 Shared New
   Set Index To EMP01A

   texto_2 :=alltrim(emp01->path_emp)
   path    :=texto_2+"\TMP\"

   set default    to &texto_2
   set path       to &texto_2

   firma    :=emp01->nome_fan

   If ! Empty(EMP01->Layout)
      Firma := EMP01->Layout
   EndIf

   DbCloseAll()

   If cModo = 2
      aMatAcesso := {}

      oFile = TTxtFile():New( texto_2+"\"+Alltrim(Left(cArqConf,8))+".LHC" )

      while ! oFile:lEof()
         cLine =  oFile:cLine

         cMenu   := Left(cLine,At("|",cLine)-1)
         cLine   := SubStr(cLine,At("|",cLine)+1)
         cAcesso := Left(cLine,At("|",cLine)-1)
         cChama  := SubStr(cLine,At("|",cLine)+1)

         Aadd(aMatAcessos,cAcesso)

         oFile:Skip()
      enddo

      oFile:Close()

      Use CORES Shared New Alias ATUAL
      Set Index To CORESA
      cStruct := ATUAL->( DbStruct())

      DbCreate(Alltrim(Left(cArqConf,8))+".DBF",cStruct)
      Use (Alltrim(Left(cArqConf,8))+".DBF") Exclusive New Alias CORES
      Index On CORES->usuario To (Alltrim(Left(cArqConf,8)))

      If ATUAL->( Dbseek(cUsu))
         CORES->( DbAppend())

         CORES->Usuario := ATUAL->USuario

         For nI := 1 to Len(aMAtAcessos)
            cVar  := aMatAcessos[nI]
            &CVar := .T.
         Next

      EndIf

      ATUAL->( DbCloseArea())
   Else
      Use CORES Shared New
      Set Index To CORESA
   EndIf

   //seek cript(substr("S"+space(20),1,20),1)

   seek cUsu

   Use ULT01 Shared New

   cTpLj:=ULT01->TComer
   cCRes:="N"

   If ULT01->Grade = "N" .or. ULT01->Grade = "1"
      lEGrade:=.F.
   EndIf

   If ULT01->Reserva = "S"
      cCRes:="S"
   Endif

   cTpAt:= ULT01->TpAtend

   //Set Resources To cpath_dll+"\PAFECF2.DLL"

   If cModo = 1
      DEFINE WINDOW oWnd FROM 0,0 TO 400,600 PIXEL ;
             TITLE "Control de Acessos dos Usuarios do Sistema" ;
             MDI Menu MenuPrincipal()
   Else
      DEFINE WINDOW oWnd FROM 0,0 TO 400,600 PIXEL ;
             TITLE "CADASTRAMENTO DE ACESSO PERSONALIZADOS" ;
             MDI Menu MenuPrincipal()
   EndIf

   DEFINE FONT oFont NAME "MS Sans Serif" SIZE 0,16


   SET MESSAGE OF oWnd KEYBOARD NOINSET FONT oFont
   SET FONT OF oWnd TO oFont

   ACTIVATE WINDOW oWnd ;
      On Init ChildTree() VALID ;
      MsgYesNo( "Deseja Encerrar Controle de Usuarios ?", "Selecione uma Opcao !" )

   If File(cArqConf)
      FErase(cArqConf)
   EndIf

   If cModo = 2
      cArqConf := Texto_2+"\"+Alltrim(cArqConf)+".LHC"
      nIHdl := fcreate( cArqConf,0 )

      nPos := AScan(aMAtVar,{|x| x[1] = 107 })

      If nPos > 0 .and. ! Empty(aMAtVar[nPos,3])
         cTexto := aMatVar[nPos,3]

         nPos := AScan(aMAtVar,{|x| x[1] = 1107 })

         If nPos > 0
            aMAtVar[nPos,3] := cTexto
         Endif

      Endif

      If ! lEGrade
         nPos := AScan(aMAtVar,{|x| x[1] = 37 })

         If nPos > 0 .and. ! Empty(aMAtVar[nPos,3])
            aMAtVar[nPos,4] := "scl2111_()"
         EndIf

      EndIf

      nPos := AScan(aMAtVar,{|x| x[1] = 149 })

      If nPos > 0 .and. ! Empty(aMAtVar[nPos,3])
         cTexto := aMatVar[nPos,3]

         nPos := AScan(aMAtVar,{|x| x[1] = 1149 })

         If nPos > 0
            aMAtVar[nPos,3] := "Ajuste de Preco por Fator"
         Endif

      EndIf

      For nX := 1 to Len(aMatVar)

         If ! Empty(aMatVar[nX,3]) .and. &(aMatVar[nX,2]) .and. ;
            ! Empty(aMatVar[nX,4])
            FWrite( nIHdl, aMatVar[nX,3]+"|"+aMatVar[nX,2]+"|"+aMatVar[nX,4] + CRLF )
         EndIf

      Next

      FClose( nIHdl )
   EndIf

   DbCloseAll()

   If cModo =2
      cArqConf := StrTran(cArqConf,".LHC","")

      If File(cArqConf+".DBF")
         FErase(cArqConf+".DBF")
         FErase(cArqConf+".NTX")
      EndIf

   Endif

RETURN nil

FUNCTION ChildTree()

   LOCAL oBarra
   LOCAL oChild
   LOCAL oTree

   DEFINE WINDOW oChild FROM 0,0 TO 400,600 PIXEL ;
          TITLE "Banco de Dados do Usuario "+;
          Alltrim(Cript(CORES->Usuario,2)) MDICHILD ICON "Database"

   DEFINE BUTTONBAR oBarra OF oChild SIZE 28,29 _3D

   DEFINE BUTTON RESOURCE "Atualizar" OF oBarra ;
          MESSAGE "Atualizar Base de Dados ..." ACTION ( oTree:End(),;
          oChild:Refresh(.T.) ,;
          oTree := CreaTree(oChild) ) ;
          NOBORDER TOOLTIP "Atualizar Base de Datos ..."

   SET MESSAGE OF oChild NOINSET
   DEFINE MSGITEM OF oChild:oMsgBar PROMPT "Controlando Acessos do Usuario" SIZE 250

   ACTIVATE WINDOW oChild ON INIT (oChild:Maximize(),oTree := CreaTree(oChild))

RETURN NIL

FUNCTION CreaTree(oChild)

   LOCAL oTree
   LOCAL oRoot
   LOCAL oLink

   LOCAL nStep

   @ 0, 0 TREE oTree OF oChild ;
     SIZE 0, 0 PIXEL ;
     BITMAPS { "Paper","FoldClose","FoldOpen", "BookClose", "BookOpen",;
               "Tabla", "Procedimiento", "Usuario", "Server", "Ejecutivo",;
               "Respaldo","selected","unselected" } ;
     TREE STYLE nOr( TVS_HASLINES, TVS_HASBUTTONS ) ;
     ON DBLCLICK ClickTree(oTree)

   oChild:SetControl(oTree)

   oRoot := oTree:GetRoot()
   oRoot2:= oTree:GetRoot()
   oRoot3:= oTree:GetRoot()

   // Acessos Sistema de Retaguarda //

   oRoot:=oRoot:AddLastChild( "Controle de Acessos LH Retaguarda", 9, 8 )
   oLink:=oRoot:AddLastChild( "Cadastros", 3, 2 )
          oBloq1:=oLink:AddLastChild( "Clientes" , 3, 2 )
                oBloq1:AddLastChild( "Inclusao" ,,_VAMenu2(3,1,"ClientesInclusao") )
                oBloq1:AddLastChild( "Consulta/Alteracao/Exclusao" ,,_VAMenu2(4,1,"ClientesConsulta/Alteracao/Exclusao"))
                oBloq1:AddLastChild( "Altera Clientes" ,,_VAMenu2(128,1,"ClientesAltera Clientes"))
                oBloq1:AddLastChild( "Exclui Clientes" ,,_VAMenu2(129,1,"ClientesExclui Clientes"))
                oBloq1:AddLastChild( "Libera Clientes Bloqueados" ,,_VAMenu2(119,1,"ClientesLibera Clientes Bloqueados"))
                oBloq11:=oBloq1:AddLastChild( "Relatorios de Clientes" , 3, 2 )
                oBloq11:AddLastChild( "Completo"    ,,_VAMenu2(6,1,"Relatorios de ClientesCompleto"))
                oBloq11:AddLastChild( "Aniversario" ,,_VAMenu2(7,1,"Relatorios de ClientesAniversario"))
                oBloq11:AddLastChild( "Planos"      ,,_VAMenu2(8,1,"Relatorios de ClientesPlanos"))
          oBloq2:=oLink:AddLastChild( "Fornecedores" , 3, 2 )
                oBloq2:AddLastChild( "Inclusao"                    ,,_VAMenu2(10,1,"FornecedoresInclusao"))
                oBloq2:AddLastChild( "Consulta/Alteracao/Exclusao" ,,_VAMenu2(11,1,"FornecedoresConsulta/Alteracao/Exclusao"))
                oBloq2:AddLastChild( "Altera Fornecedor" ,,_VAMenu2(130,1,"FornecedoresAltera Fornecedor"))
                oBloq2:AddLastChild( "Exclui Fornecedor" ,,_VAMenu2(131,1,"FornecedoresExclui Fornecedor"))
                oBloq2:AddLastChild( "Alterar Historico" ,,_VAMenu2(132,1,"FornecedoresAlterar Historico"))
                oBloq2:AddLastChild( "Dados Comerciais" ,,_VAMenu2(133,1,"FornecedoresDados Comerciais"))
                oBloq2:AddLastChild( "Relatorios"                  ,,_VAMenu2(12,1,"FornecedoresRelatorios"))
                oBloq2:AddLastChild( "Conexao com Fornecedores"    ,,_VAMenu2(134,1,"FornecedoresConexao com Fornecedores"))
               oBloq40:=oBloq2:AddLastChild( "Compras", 3, 2 )
                     oBloq40:AddLastChild("Comprador" ,,_VAMenu2(117,1,"ComprasComprador"))
                     oBloq40:AddLastChild("Lancamento" ,,_VAMenu2(113,1,"ComprasLancamento"))
                     oBloq40:AddLastChild("Alteracao"  ,,_VAMenu2(114,1,"ComprasAlteracao"))
                     oBloq40:AddLastChild("Tabela de Autorizacao",,_VAMenu2(115,1,"ComprasTabela de Autorizacao"))
                     oBloq41:=oBloq40:AddLastChild("Relatorios" ,3,2)
                     oBloq41:AddLastChild("Emite Pedido de Compras" ,,_VAMenu2(144,1,"RelatoriosEmite Pedido de Compras"))
                     oBloq41:AddLastChild("Emite Saldo dos Pedidos de Compras" ,,_VAMenu2(145,1,"RelatoriosEmite Saldo dos Pedidos de Compras"))
                     oBloq41:AddLastChild("Comparacao com Tabela de Autorizacao Mensal" ,,_VAMenu2(146,1,"RelatoriosComparacao com Tabela de Autorizacao Mensal"))

          If cTpLj = "7"
             oBloq3:=oLink:AddLastChild( "Funcionario" , 3, 2 )
                   oBloq3:AddLastChild( "Inclusao"                    ,,_VAMenu2(13,1,"FuncionarioInclusao"))
                   oBloq3:AddLastChild( "Consulta/Alteracao/Exclusao" ,,_VAMenu2(14,1,"FuncionarioConsulta/Alteracao/Exclusao"))
                   oBloq3:AddLastChild( "Relatorios"                  ,,_VAMenu2(15,1,"FuncionarioRelatorios"))
          Else
             oBloq3:=oLink:AddLastChild( "Vendedor" , 3, 2 )
                   oBloq3:AddLastChild( "Inclusao"                    ,,_VAMenu2(13,1,"VendedorInclusao"))
                   oBloq3:AddLastChild( "Consulta/Alteracao/Exclusao" ,,_VAMenu2(14,1,"VendedorConsulta/Alteracao/Exclusao"))
                   oBloq3:AddLastChild( "Relatorios"                  ,,_VAMenu2(15,1,"VendedorRelatorios"))
          EndIf

          oBloq4:=oLink:AddLastChild( "Grupos"      ,,_VAMenu2(16,1,"CadastrosGrupos"))
          oBloq5:=oLink:AddLastChild( "Sub-Grupos"  ,,_VAMenu2(17,1,"CadastrosSub-Grupos"))
          oBloq6:=oLink:AddLastChild( "Multi-Grupos",,_VAMenu2(18,1,"CadastrosMulti-Grupos"))
          oBloq7:=oLink:AddLastChild( "Marca"       ,,_VAMenu2(19,1,"CadastrosMarca"))
          oBloq8:=oLink:AddLastChild( "Produto" , 3, 2 )
                oBloq8:AddLastChild( "Inclusao"                    ,,_VAMenu2(20,1,"ProdutoInclusao"))
                oBloq8:AddLastChild( "Consulta/Alteracao/Exclusao" ,,_VAMenu2(21,1,"ProdutoConsulta/Alteracao/Exclusao"))
                oBloq8:AddLastChild( "Alterar Produtos" ,,_VAMenu2(109,1,"ProdutoAlterar Produtos"))
                oBloq8:AddLastChild( "Excluir Produtos" ,,_VAMenu2(110,1,"ProdutoExcluir Produtos"))
                oBloq8:AddLastChild( "Alterar Preco de Promocao" ,,_VAMenu2(140,1,"ProdutoAlterar Preco de Promocao"))
                oBloq8:AddLastChild( "Gera Codigo de Barras"       ,,_VAMenu2(22,1,"ProdutoGera Codigo de Barras"))

                If lEGrade
                   oBloq8:AddLastChild( "Grades"                   ,,_VAMenu2(23,1,"ProdutoGrades"))
                EndIf

                oBloq8:AddLastChild( "Altera Codigo de Produtos"   ,,_VAMenu2(24,1,"ProdutoAltera Codigo de Produtos"))

                If ! lEGrade
                  oBloq8:AddLastChild( "Familia de Produtos"       ,,_VAMenu2(25,1,"ProdutoFamilia de Produtos"))
                EndIf

                If cTpLj = "3" .or. ULT01->Producao = "S"
                  oBloq8:AddLastChild( "Composicao"                ,,_VAMenu2(26,1,"ProdutoComposicao"))
                EndIf

                If cTpLj = "1"
                  oBloq8:AddLastChild( "Produtos em Falta",,_VAMenu2(112,1,"ProdutoProdutos em Falta"))
                Endif

                oBloq8:AddLastChild( "Gera Codigo para Balanca"    ,,_VAMenu2(27,1,"ProdutoGera Codigo para Balanca"))
                oBloq8:AddLastChild( "Ajuste de Precos"    ,,_VAMenu2(149,1,"ProdutoAjuste de Precos"))
          oBloq9 :=oLink:AddLastChild( "Natureza de Operacao" , 3, 2 )
                oBloq9:AddLastChild( "Consulta"  ,,_VAMenu2(28,1,"Natureza de OperacaoConsulta"))
                oBloq9:AddLastChild( "Inclusao"  ,,_VAMenu2(123,1,"Natureza de OperacaoInclusao"))
                oBloq9:AddLastChild( "Alteracao" ,,_VAMenu2(124,1,"Natureza de OperacaoAlteracao"))
                oBloq9:AddLastChild( "Exclusao"  ,,_VAMenu2(125,1,"Natureza de OperacaoExclusao"))
          oBloq10:=oLink:AddLastChild( "Condicao de Pagamento"     ,,_VAMenu2(29,1,"CadastrosCondicao de Pagamento"))
          oBloq11:=oLink:AddLastChild( "Transportadoras"           ,,_VAMenu2(30,1,"CadastrosTransportadoras"))
          oBloq12:=oLink:AddLastChild( "Portador"                  ,,_VAMenu2(31,1,"CadastrosPortador"))
          oBloq12:=oLink:AddLastChild( "Planos Comerciais"         ,,_VAMenu2(32,1,"CadastrosPlanos Comerciais"))
          oBloq12:=oLink:AddLastChild( "Ramo de Atividade"         ,,_VAMenu2(147,1,"CadastrosRamo de Atividade"))
          oBloq12:=oLink:AddLastChild( "Rede de Clientes"         ,,_VAMenu2(148,1,"CadastrosRede de Clientes"))
          oBloq13:=oLink:AddLastChild( "Conta"                     ,,_VAMenu2(33,1,"CadastrosConta"))
          oBloq14:=oLink:AddLastChild( "Sub-Conta"                 ,,_VAMenu2(34,1,"CadastrosSub-Conta"))
          oBloq15:=oLink:AddLastChild( "Lojas"                     ,,_VAMenu2(35,1,"CadastrosLojas"))
          oBloq16:=oLink:AddLastChild( "Cadastro do Contabilista"  ,,_VAMenu2(36,1,"CadastrosCadastro do Contabilista"))
          oBloq17:=oLink:AddLastChild( "Cadastro Situacao da Conta Cliente" ,,_VAMenu2(118,1,"CadastrosCadastro Situacao da Conta Cliente"))
          oBloq42 :=oLink:AddLastChild( "Historico Contabil" , 3, 2 )
                oBloq42:AddLastChild( "Inclusao"  ,,_VAMenu2(154,1,"Historico ContabilInclusao"))
                oBloq42:AddLastChild( "Alteracao" ,,_VAMenu2(155,1,"Historico ContabilAlteracao"))
                oBloq42:AddLastChild( "Exclusao"  ,,_VAMenu2(156,1,"Historico ContabilExclusao"))

   oLink:=oRoot:AddLastChild( "Movimentacao", 3, 2 )
      oBloq17:=oLink:AddLastChild("Entradas",,_VAMenu2(37,1,"MovimentacaoEntradas"))
      oBloq17:=oLink:AddLastChild("Alterar Notas",,_VAMenu2(138,1,"MovimentacaoAlterar Notas"))
      oBloq17:=oLink:AddLastChild("Excluir Notas",,_VAMenu2(139,1,"MovimentacaoExcluir Notas"))
      oBloq18:=oLink:AddLastChild("Balanco" ,,_VAMenu2(38,1,"MovimentacaoBalanco"))
      oBloq18:=oLink:AddLastChild("Nota Fiscal de Devolucao/Reentrada" ,,_VAMenu2(126,1,"MovimentacaoNota Fiscal de Devolucao/Reentrada"))

      If ULT01->Producao = "S"
         oBloq19:=oLink:AddLastChild("Ordem de Fabricacao" ,,_VAMenu2(108,1,"MovimentacaoOrdem de Fabricacao"))
      EndIf

      If ULT01->CFrete = "S"
         oBloq19:=oLink:AddLastChild("Conhecimento de Frete" ,,;
                 _VAMenu2(150,1,"MovimentacaoConhecimento de Frete"))
      EndIf

   oLink:=oRoot:AddLastChild( "Financas", 3, 2 )
      oBloq19:=oLink:AddLastChild("Contas a Pagar",3,2)
         oBloq19:AddLastChild("Inclusao"           ,,_VAMenu2(39,1,"Contas a PagarInclusao"))
         oBloq19:AddLastChild("Consulta/Alteracao" ,,_VAMenu2(40,1,"Contas a PagarConsulta/Alteracao"))
         oBloq19:AddLastChild("Alteracao de Contas" ,,_VAMenu2(135,1,"Contas a PagarAlteracao de Contas"))
         oBloq19:AddLastChild("Exclusao"           ,,_VAMenu2(41,1,"Contas a PagarExclusao"))
         oBloq19:AddLastChild("Quita"              ,,_VAMenu2(42,1,"Contas a PagarQuita"))
         oBloq19:AddLastChild("Estorna"            ,,_VAMenu2(157,1,"Contas a PagarEstorna"))
         oBloq19:AddLastChild("Fatura a Pagar",,_VAMenu2(151,1,"Contas a PagarFatura a Pagar"))
      oBloq20:=oLink:AddLastChild("Contas a Receber",3,2)
         oBloq20:AddLastChild("Inclusao"           ,,_VAMenu2(43,1,"Contas a ReceberInclusao"))
         oBloq20:AddLastChild("Consulta/Alteracao" ,,_VAMenu2(44,1,"Contas a ReceberConsulta/Alteracao"))
         oBloq20:AddLastChild("Alteracao de Contas" ,,_VAMenu2(136,1,"Contas a ReceberAlteracao de Contas"))
         oBloq20:AddLastChild("Exclusao"           ,,_VAMenu2(45,1,"Contas a ReceberExclusao"))
         oBloq20:AddLastChild("Quita"              ,,_VAMenu2(46,1,"Contas a ReceberQuita"))
         oBloq20:AddLastChild("Estorna"            ,,_VAMenu2(158,1,"Contas a ReceberEstorna"))
         oBloq20:AddLastChild("Ficha de Cliente"   ,,_VAMenu2(47,1,"Contas a ReceberFicha de Cliente"))
         oBloq20:AddLastChild("Boleto Bancario"   ,,_VAMenu2(120,1,"Contas a ReceberBoleto Bancario"))
         oBloq20:AddLastChild("Duplicata"   ,,_VAMenu2(121,1,"Contas a ReceberDuplicata"))
         oBloq20:AddLastChild("Previa de Recebimento",,_VAMenu2(127,1,"Contas a ReceberPrevia de Recebimento"))
         oBloq20:AddLastChild("Fatura a Receber",,_VAMenu2(142,1,"Contas a ReceberFatura a Receber"))
      oBloq21:=oLink:AddLastChild("Bancario",3,2)
         oBloq21:AddLastChild("Contas"       ,,_VAMenu2(48,1,"BancarioContas"))
         oBloq21:AddLastChild("Movimentacao" ,,_VAMenu2(49,1,"BancarioMovimentacao"))
         oBloq21:AddLastChild("Extratos"     ,,_VAMenu2(50,1,"BancarioExtratos"))
   oLink:=oRoot:AddLastChild( "Relatorios", 3, 2 )
         oBloq22:=oLink:AddLastChild("Produtos x Estoque" ,,_VAMenu2(51,1,"RelatoriosProdutos x Estoque"))
         oBloq23:=oLink:AddLastChild("Etiquetas Cod.Barras" ,,_VAMenu2(52,1,"RelatoriosEtiquetas Cod.Barras"))
         oBloq24:=oLink:AddLastChild("Vendas" ,,_VAMenu2(53,1,"RelatoriosVendas"))
         oBloq24:=oLink:AddLastChild("Vendas Canceladas" ,,_VAMenu2(152,1,"RelatoriosVendas Canceladas"))
         oBloq24:=oLink:AddLastChild("Devolucoes" ,,_VAMenu2(153,1,"RelatoriosDevolucoes"))
         oBloq24:=oLink:AddLastChild("Sugestao de Compras" ,,_VAMenu2(122,1,"RelatoriosSugestao de Compras"))
         oBloq24:=oLink:AddLastChild("Produtos Comprados",,_VAMenu2(137,1,"RelatoriosProdutos Comprados"))
         oBloq24:=oLink:AddLastChild("Produtos nao Movimentados",,_VAMenu2(159,1,"RelatoriosProdutos nao Movimentados"))
         oBloq25:=oLink:AddLastChild("Comissao" ,,_VAMenu2(54,1,"RelatoriosComissao"))

         If cTpLj = "7"
            oBloq25:=oLink:AddLastChild("Comissao por Pagamento" ,,_VAMenu2(160,1,"RelatoriosComissao por Pagamento"))
         Endif

         If cTpAt >= "3"
            oBloq26:=oLink:AddLastChild("Movimento de DAV" ,,_VAMenu2(55,1,"RelatoriosMovimento de DAV"))
            oBloq27:=oLink:AddLastChild("Segunda Via do DAV" ,,_VAMenu2(56,1,"RelatoriosSegunda Via do DAV"))

            If cTpLj = "6"
               oBloq33:=oLink:AddLastChild("Emitir Varias Copias DAV",,_VAMenu2(104,1,"RelatoriosEmitir Varias Copias DAV"))
            EndIf

            oBloq34:=oLink:AddLastChild("Relatorio de Reservas",,_VAMenu2(92,1,"RelatoriosRelatorio de Reservas"))
         EndIf

         oBloq28:=oLink:AddLastChild("Notas Emitidas" ,,_VAMenu2(57,1,"RelatoriosNotas Emitidas"))
         oBloq29:=oLink:AddLastChild("Total Por ICMS" ,,_VAMenu2(58,1,"RelatoriosTotal Por ICMS"))
         oBloq30:=oLink:AddLastChild("Fiscal/Sintegra",,_VAMenu2(59,1,"RelatoriosFiscal/Sintegra"))
         oBloq31:=oLink:AddLastChild("Inventario Estoque" ,,_VAMenu2(60,1,"RelatoriosInventario Estoque"))
         oBloq33:=oLink:AddLastChild("Ficha Cardex",,_VAMenu2(93,1,"RelatoriosFicha Cardex"))

         If ! cTpLj $ "34"
            oBloq34:=oLink:AddLastChild("Vendas Apuracao PIS/COFINS" ,,_VAMenu2(103,1,"RelatoriosVendas Apuracao PIS/COFINS"))
         EndIf

         If cTpAt >= "3"
            oBloq35:=oLink:AddLastChild("Controle DAV/RPV" ,,_VAMenu2(106,1,"RelatoriosControle DAV/RPV"))
         EndIf

         oBloq36:=oLink:AddLastChild("Ranking de Vendas" ,,_VAMenu2(107,1,"RelatoriosRanking de Vendas"))
         oBloq37:=oLink:AddLastChild("SPED PIS/COFINS",,_VAMenu2(141,1,"RelatoriosSPED PIS/COFINS"))

         oBloq32:=oLink:AddLastChild("Relatorio Financeiro" ,3,2)
            oBloq32:AddLastChild( "Contas a Pagar"   ,,_VAMenu2(61,1,"Relatorio FinanceiroContas a Pagar"))
            oBloq32:AddLastChild( "Contas a Receber" ,,_VAMenu2(62,1,"Relatorio FinanceiroContas a Receber"))
            oBloq32:AddLastChild( "Posicao Financeira" ,,_VAMenu2(116,1,"Relatorio FinanceiroPosicao Financeira"))
   oLink:=oRoot:AddLastChild( "Comunicacao", 3, 2 )
         oBloq22:=oLink:AddLastChild("Exporta Cadastros" ,,_VAMenu2(63,1,"ComunicacaoExporta Cadastros"))
         oBloq23:=oLink:AddLastChild("Importa Movimento" ,,_VAMenu2(64,1,"ComunicacaoImporta Movimento"))
   oLink:=oRoot:AddLastChild( "Utilitarios", 3, 2 )
         oBloq24:=oLink:AddLastChild("Manutencao" ,,_VAMenu2(65,1,"UtilitariosManutencao"))
         oBloq27:=oLink:AddLastChild("Conferencia Produto",,_VAMenu2(94,1,"UtilitariosConferencia Produto"))
         oBloq28:=oLink:AddLastChild("Conferencia Estoque Geral",,_VAMenu2(95,1,"UtilitariosConferencia Estoque GeralConferencia Estoque Geral"))
         oBloq25:=oLink:AddLastChild("Parametros" ,,_VAMenu2(66,1,"UtilitariosParametros"))
         oBloq26:=oLink:AddLastChild("Controle de Usuarios" ,3,2)
               oBloq26:AddLastChild( "Consulta Usuarios",,_VAMenu2(67,1,"Controle de UsuariosConsulta Usuarios"))
               oBloq26:AddLastChild( "Cadastrar Novo Usuario",,_VAMenu2(96,1,"Controle de UsuariosCadastrar Novo Usuario"))
               oBloq26:AddLastChild( "Alterar Senha",,_VAMenu2(97,1,"Controle de UsuariosAlterar Senha"))
               oBloq26:AddLastChild( "Alterar Acessos",,_VAMenu2(98,1,"Controle de UsuariosAlterar Acessos"))
               oBloq26:AddLastChild( "Excluir Usuario",,_VAMenu2(99,1,"Controle de UsuariosExcluir Usuario"))
               oBloq26:AddLastChild( "Copiar Acessos de Usuario",,_VAMenu2(100,1,"Controle de UsuariosCopiar Acessos de Usuario"))

   // Acessos Sistema de Vendas //

   oRoot2:=oRoot2:AddLastChild( "Controle de Acessos LH VENDAS", 9, 8 )
      oLink:=oRoot2:AddLastChild( "Vendas", 3, 2 )
            oBloq24:=oLink:AddLastChild("Venda Direta"       ,,_VAMenu2(68,1,"VendasVenda Direta"))
            oBloq24:=oLink:AddLastChild("Relatorios Fiscais" ,,_VAMenu2(69,1,"VendasRelatorios Fiscais"))
            oBloq24:=oLink:AddLastChild("Cancelamento de Vendas" ,,_VAMenu2(70,1,"VendasCancelamento de Vendas"))

            If ULT01->SCan = "S"
               oBloq24:=oLink:AddLastChild("Permissao para Cancelamento" ,,_VAMenu2(111,1,"VendasPermissao para Cancelamento"))
            EndIf

            oBloq24:=oLink:AddLastChild("Caixa" ,,_VAMenu2(71,1,"VendasCaixa"))

            If At("LAND",Firma) != 0 .or. cTpLj = "1"
               oBloq24:=oLink:AddLastChild("Troca de Mercadoria" ,,_VAMenu2(72,1,"VendasTroca de Mercadoria"))
            EndIf

            oBloq24:=oLink:AddLastChild("Nota Fiscal Manual" ,,_VAMenu2(73,1,"VendasNota Fiscal Manual"))
            oBloq24:=oLink:AddLastChild("Exclui Item na Venda (ECF)" ,,_VAMenu2(101,1,"VendasExclui Item na Venda (ECF)"))
            oBloq24:=oLink:AddLastChild("Desconto Acima do limite",,_VAMenu2(102,1,"VendasDesconto Acima do limite"))
            oBloq24:=oLink:AddLastChild("Cancelamento Nota Fiscal",,_VAMenu2(105,1,"VendasCancelamento Nota Fiscal"))
      oLink:=oRoot2:AddLastChild( "Comunicacao", 3, 2 )
            oBloq25:=oLink:AddLastChild("Importa Cadastros" ,,_VAMenu2(90,1,"ComunicacaoImporta Cadastros"))
            oBloq25:=oLink:AddLastChild("Exporta Movimento" ,,_VAMenu2(91,1,"ComunicacaoExporta Movimento"))


   /*  // Acessos Sistema de Compras //
   oRoot3:=oRoot3:AddLastChild( "Controle de Acessos LH COMPRAS", 9, 8 )
      oLink:=oRoot3:AddLastChild( "Compras", 3, 2 )
            oBloq24:=oLink:AddLastChild("Comprador" ,,_VAMenu2(117,1,"ComprasComprador"))
            oBloq24:=oLink:AddLastChild("Lancamento" ,,_VAMenu2(113,1,"ComprasLancamento"))
            oBloq24:=oLink:AddLastChild("Alteracao"  ,,_VAMenu2(114,1,"ComprasAlteracao"))
            oBloq24:=oLink:AddLastChild("Tabela de Autorizacao",,_VAMenu2(115,1,"ComprasTabela de Autorizacao"))
            oBloq24:=oLink:AddLastChild("Relatorios" ,3,2)
               oBloq24:AddLastChild("Emite Pedido de Compras" ,,_VAMenu2(144,1,"RelatoriosEmite Pedido de Compras"))
               oBloq24:AddLastChild("Emite Saldo dos Pedidos de Compras" ,,_VAMenu2(145,1,"RelatoriosEmite Saldo dos Pedidos de Compras"))
               oBloq24:AddLastChild("Comparacao com Tabela de Autorizacao Mensal" ,,_VAMenu2(146,1,"RelatoriosComparacao com Tabela de Autorizacao Mensal"))
*/

   oTree:UpdateTV()
   oTree:Expand(0)
   oTree:Expand(7)
   //oTree:Expand(10)
   oTree:SetFocus()

RETURN oTree
**************************************************************************
Function ClickTree( oTree )
LOCAL oLink := oTree:GetLinkAt( oTree:GetCursel() )
LOCAL cPrompt := oLink:TreeItem:cPrompt
LOCAL cParent, nPos,nPos2

If At( Left(cPrompt,19) , "Controle de Acessos" ) > 0
Else
   nPos    := oTree:GetCursel()
   cParent := oLink:ParentLink:TreeItem:cPrompt
   nPos2   := AScan(aMatVar,{|x| x[3] = cParent+cPrompt })

   If nPos2 > 0
      cVar := aMatVar[nPos2,2]

      Do While CORES->(! RLock()); EndDo

      &cVar. := ! &cVar.

      CORES->( DbUnlock())

      If &cVar.
         oTree:Modify( nPos, cPrompt, , 12 )
      Else
         oTree:Modify( nPos, cPrompt, , 13 )
      EndIf

   EndIf

EndIf

Return(Nil)
*********************************************************************************
Static Function MenuPrincipal()
local oMenu

Menu oMenu
  MenuItem "&Sair do Sistema" ;
   Action  oWnd:End()
EndMenu

return oMenu
********************************************************************************
Function _VAMenu2(nVar,Modo,cTexto)
Local Ret,cArea:=Alias()
Local lCores:=Select("CORES")==0,nPos

Modo := If(Modo=Nil,1,Modo)

nPos := AScan(aMatVar,{|x| x[1] = nVar })

If Modo = 1
   Ret := 13
Else
   Ret := .F.
Endif

If nPos <= 0
Else

   If Empty(aMatVar[nPos,3])
      aMatVar[nPos,3]:=cTexto
   EndIf

   cVar := aMatVar[nPos,2]

   If &cVar.

      If Modo = 1
         Ret := 12
      Else
         Ret := .T.
      Endif

   Endif

EndIf

If ! empty(cArea)
   Select (cArea)
Endif

Return(Ret)
****************************************************************************
Function cript(mvar,modo)
local tam:=len(mvar)
local i
local var1,var2:=""

if     modo = 1  //  criptografa

       for i = 1 to tam
           var1 = substr(mvar,i,1)
           var2+= (chr(asc(var1)+81+(i*2)))
       next

elseif modo = 2

       for i = 1 to tam
           var1 = substr(mvar,i,1)
           var2+= (chr(asc(var1)-81-(i*2)))
       next

endif

return(var2)
 

Link to comment
Share on other sites

Léo, o xCommand @ TREE, está definido em Tree.CH, que por sua vez chama a função TreeBegin que está em trees.prg, em .\source\classes

 

Digo isso para você analisar em sua versão, pois não possuo essa sua versão do FW.....

 

mas mesmo assim, olhando a classe, após a cláusula BITMAP, deve ser passado um parâmetro CARACTER, e você está passando um parametro ARRAY

 

veja

 

 

#xcommand TREE [<oTree>] ;
             [ BITMAPS <cBmpOpen>, <cBmpClose> ] ;
       => ;
          [<oTree>:=] TreeBegin( <cBmpOpen>, <cBmpClose> )
 
Pelo menos na versão 8.1 do FW é assim.
 
Qualquer coisa poste o Tree.CH para eu ver, mas não creio que tenha mudado dessa forma (de caracter para array)
 
Espero ter ajudado.
Link to comment
Share on other sites

Ercilei, boa tarde.


Segue abaixo a Tree.CH;

 

// Trees for FiveWin

#ifndef _TREE_CH
#define _TREE_CH

#xcommand TREE [<oTree>] ;
             [ BITMAPS <cBmpOpen>, <cBmpClose> ] ;
       => ;
          [<oTree>:=] TreeBegin( <cBmpOpen>, <cBmpClose> )

#xcommand TREEITEM [<oItem> PROMPT ] <cLabel> ;
             [ RESOURCE <cResName1> [, <cResName2> ] ] ;
             [ FILENAME <cBmpOpen> [, <cBmpClose> ] ] ;
             [ <lOpened: OPENED, OPEN> ] ;
             [ ACTION <uAction> ] ;
             [ CARGO <uCargo> ] ;
       => ;
          [<oItem> :=] _TreeItem( <cLabel>, <cResName1>, <cResName2>,;
                                  <cBmpOpen>, <cBmpClose>, <.lOpened.>, ;
                                  <{uAction}>, <uCargo> )

#xcommand ENDTREE => TreeEnd()

#endif
 

Link to comment
Share on other sites

Ercilei, novamente abaixo a TREEVIEW.CH

 

// TreeView for FiveWin for Clipper / FiveWin for Harbour / FiveWin++

#ifndef _TREEVIEW_CH
#define _TREEVIEW_CH

#define WM_SETREDRAW    11

#define TVS_HASBUTTONS           1
#define TVS_HASLINES           2
#define TVS_LINESATROOT        4
#define TVS_EDITLABELS           8
#define TVS_SHOWSELALWAYS      32

#define TIS_NORMAL    0
#define TIS_FIRST     1
#define TIS_LAST      2
#define TIS_PARENT    4
#define TIS_OPEN      8

// insert styles
#define IS_FIRST      1
#define IS_LAST       2
#define IS_AFTER      3
#define IS_FIRSTCHILD      4
#define IS_LASTCHILD      5

// get styles
#define TVGN_ROOT      0
#define TVGN_NEXT      1
#define TVGN_PREVIOUS      2
#define TVGN_PARENT      3
#define TVGN_CHILD      4
#define TVGN_CARET      5

// expand styles
#define TVE_COLLAPSE      0
#define TVE_EXPAND      1
#define TVE_TOGGLE      2

#xcommand @ <nRow>, <nCol> TREE <oTree> ;
         [ SIZE <nWidth>, <nHeight> ] ;
         [ ON CHANGE <uChange> ] ;
             [ ON [ LEFT ] DBLCLICK <uLDblClick> ] ;
         [ <of: OF, WINDOW, DIALOG > <oWnd> ] ;
             [ VALID <uValid> ] ;
         [ <color: COLOR,COLORS> <nClrFore> [,<nClrBack>] ] ;
         [ FONT <oFont> ] ;
         [ BITMAPS <aBitmaps> ] ;
         [ MASKS <aMasks> ] ;
         [ <help:HELP, HELPID, HELP ID> <nHelpId> ] ;
             [ MESSAGE <cMsg> ] ;
             [ WHEN <uWhen> ] ;
         [ <pixel: PIXEL> ] ;
         [ TREE STYLE <nTreeStyle> ] ;
             [ <lNoBorder: NO BORDER, NOBORDER> ] ;
             [ <lNoVScroll: NO VSCROLL, NOVSCROLL> ] ;
             [ <lNoHScroll: NO HSCROLL, NOHSCROLL> ] ;
    => ;
           <oTree> := TTreeView():New( <nRow>, <nCol>, <nWidth>, <nHeight>, <oWnd>, ;
              <aBitmaps>, <aMasks>, <{uChange}>, <{uLDblClick}>, <{uValid}>, <nHelpId>, ;
                      <nClrFore>, <nClrBack>, <oFont>, <cMsg>, <{uWhen}>, <.pixel.>, <nTreeStyle>,;
                      [<.lNoBorder.>], [<.lNoVScroll.>], [<.lNoHScroll.>] )
                       

#xcommand REDEFINE TREE <oTree> ID <nId> ;
         [ ON CHANGE <uChange> ] ;
             [ ON [ LEFT ] DBLCLICK <uLDblClick> ] ;
         [ <of: OF, WINDOW, DIALOG > <oWnd> ] ;
             [ VALID <uValid> ] ;
         [ <color: COLOR,COLORS> <nClrFore> [,<nClrBack>] ] ;
         [ FONT <oFont> ] ;
         [ BITMAPS <aBitmaps> ] ;
         [ MASKS <aMasks> ] ;
         [ <help:HELP, HELPID, HELP ID> <nHelpId> ] ;
             [ MESSAGE <cMsg> ] ;
             [ WHEN <uWhen> ] ;
         [ TREE STYLE <nTreeStyle> ] ;
    => ;
           <oTree> := TTreeView():Redefine( <nId>, <oWnd>, <aBitmaps>, <aMasks>, ;
              [\{|oLink|<uChange>\}], <{uLDblClick}>, <{uValid}>, <nHelpId>, ;
              <nClrFore>, <nClrBack>, <oFont>, <cMsg>, <{uWhen}>, <nTreeStyle> )

#endif

#ifdef __XPP__
   #xtranslate TTreeView():New( <params,...> ) => ;
               TTreeView():New():_New( <params> )

   #xtranslate TTreeView():Redefine( <params,...> ) => ;
               TTreeView():New():Redefine( <params> )

   #xtranslate TVItem():New( <params,...> ) => ;
               TVItem():New():_New( <params> )

   #xtranslate TVItem():Redefine( <params,...> ) => ;
               TVItem():New():Redefine( <params> )

   #xtranslate TTreeLink():New( <params,...> ) => ;
               TTreeLink():New():_New( <params> )

   #xtranslate TTreeLink():Redefine( <params,...> ) => ;
               TTreeLink():New():Redefine( <params> )

   #xtranslate TTreeItem():New( <params,...> ) => ;
               TTreeItem():New():_New( <params> )

   #xtranslate TTreeItem():Redefine( <params,...> ) => ;
               TTreeItem():New():Redefine( <params> )

#endif
 

Link to comment
Share on other sites

Boa tarde Léo....

 

Já entendi (eu acho), Gilmer me corrija se eu estiver errado, ou você mesmo.... ^^

 

Mas me parece uma salada, o xCommand @ TREE está passando parâmetro diferentes em relação ao que o método New da Classe TTreeVie.PRG recebe.

 

Ou seja, o certo seria você utilizar o método direto, sem xCommand, como abaixo:

objeto:=TTreeView():New(nTop, nLeft, oWnd, nClrFore,nClrBack, lPixel, lDesign, nWidth, nHeight, cMsg)

 

ou talvez nem seja a TreeView que devesse ser usada, isso não sei, mas há uma confussão aí, esse treeview.CH está incorreto, pelo que parece.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...