Em 16 bits a rotina de acessos a usuários era assim...
usava assim...
LOCAL oDatabase
LOCAL nStep
LOCAL oTree
LOCAL oLink
@ 9, 7 TREE oTree OF oWndMag ;
SIZE 309, 356 PIXEL ;
BITMAPS { "Traffic","Ok", "No", "MB1","MB2","MB3","MB4","MB5","MB6","MB12","MB7","MB9","MB118","MB8","MB11",;
"MB110","MB117","MB112","MB119","MB114","MB115","MB116","PRINTER","GRAPH","MB5","MANUTENCAO","REORG","OPSIST","CALCU","MB122","MB123"} ;
TREE STYLE nOr( TVS_HASLINES, TVS_HASBUTTONS ) ;
ON DBLCLICK ClickTree(oTree)
oTree:Set3dlook()
ArmarTree( oTree )
IF( oPAll, ( oTree:OpenAll(), SysRefresh() ), ( oTree:CloseAll(), oTree:Expand(), SysRefresh() ))
LisB:SETFOCUS()
RETURN oTree
Function ArmarTree( oTree )
LOCAL oDatabase
LOCAL nStep
LOCAL oLink
oTree:bRClicked = {|nRow,nCol| MenuTree(oTree,nRow,nCol)}
oDatabase := oTree:GetRoot()
oDatabase := oDatabase:AddLastChild( "Acessos", 1, 1 )
oLink := oDatabase:AddLastChild( "Produtos/Serviços", 04, 04 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu002,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu003,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu004,2,3) )
oLink := oDatabase:AddLastChild( "Clientes", 05, 05 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu006,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu007,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu008,2,3) )
oLink := oDatabase:AddLastChild( "Fornecedores", 06, 06 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu010,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu011,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu012,2,3) )
oLink := oDatabase:AddLastChild( "Transportadores", 07, 07 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu014,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu015,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu016,2,3) )
oLink := oDatabase:AddLastChild( IIF(LEFT(LSEmpresa,3)= "YES","Consultores","Funcionários"), 08, 08 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu018,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu019,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu020,2,3) )
oLink := oDatabase:AddLastChild( "Bancos/Contas/Históricos", 09, 09 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu022,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu023,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu024,2,3) )
oLink := oDatabase:AddLastChild( "Cartões de Crédito", 10, 10 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu026,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu027,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu028,2,3) )
oLink := oDatabase:AddLastChild( "Condição de Pagamento", 11, 11 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu030,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu031,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu032,2,3) )
oLink := oDatabase:AddLastChild( "Tipos de Operações/Motivos de Cancelamento de Notas", 12, 12 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu034,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu035,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu036,2,3) )
oLink := oDatabase:AddLastChild( "C.F.O.s", 13, 13 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu038,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu039,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu040,2,3) )
oLink := oDatabase:AddLastChild( "Plano de Contas", 14, 14 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu042,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu043,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu044,2,3) )
oLink := oDatabase:AddLastChild( "Centro de Custos", 15, 15 )
oLink:AddLastChild( "Incluir" , 0, IF(Usuarios->usu046,2,3) )
oLink:AddLastChild( "Alterar" , 0, IF(Usuarios->usu047,2,3) )
oLink:AddLastChild( "Excluir" , 0, IF(Usuarios->usu048,2,3) )
oLink := oDatabase:AddLastChild( "SaÃdas", 16, 16 )
oLink:AddLastChild( "Efetuar um orçamento" , 0, IF(Usuarios->usu050,2,3))
oLink:AddLastChild( "Efetuar um venda" , 0, IF(Usuarios->usu051,2,3))
oLink:AddLastChild( "Editar produtos de uma vendas" , 0, IF(Usuarios->usu052,2,3) )
oLink:AddLastChild( "Cancelar produto de uma venda" , 0, IF(Usuarios->usu053,2,3) )
oLink:AddLastChild( "Não vender apenas a vista" , 0, IF(Usuarios->usu054,2,3) )
oLink:AddLastChild( "Venda em Checkout" , 0, IF(Usuarios->usu055,2,3) )
oLink:AddLastChild( "Procurar/consultar/adicionar vendas" , 0, IF(Usuarios->usu056,2,3) )
oLink:AddLastChild( "Dar descontos e altera preços de produtos", 0, IF(Usuarios->usu057,2,3) )
oLink:AddLastChild( "Excluir uma venda" , 0, IF(Usuarios->usu058,2,3) )
oLink:AddLastChild( 'Executar a "sangria" do caixa' , 0, IF(Usuarios->usu059,2,3) )
oLink:AddLastChild( "Executar a leitura do caixa" , 0, IF(Usuarios->usu060,2,3) )
oLink:AddLastChild( "Executar o fechamento do caixa" , 0, IF(Usuarios->usu061,2,3) )
oLink:AddLastChild( "Configurar vendas" , 0, IF(Usuarios->usu062,2,3) )
oLink := oDatabase:AddLastChild( "Pedidos", 17, 17 )
oLink:AddLastChild( "Excluir produto de um pedido" , 0, IF(Usuarios->usu064,2,3))
oLink:AddLastChild( "Excluir um pedido" , 0, IF(Usuarios->usu065,2,3))
oLink:AddLastChild( "Imprimir um pedido" , 0, IF(Usuarios->usu066,2,3))
oLink := oDatabase:AddLastChild( "Entradas", 18, 18 )
oLink:AddLastChild( "Incluir produto de uma compra" , 0, IF(Usuarios->usu068,2,3))
oLink:AddLastChild( "Excluir produto de uma compra" , 0, IF(Usuarios->usu069,2,3) )
oLink:AddLastChild( "Excluir nota de compra" , 0, IF(Usuarios->usu070,2,3) )
oLink:AddLastChild( "Consultar uma nota de compra" , 0, IF(Usuarios->usu071,2,3) )
oLink:AddLastChild( "Lançar transportadores de compra" , 0, IF(Usuarios->usu072,2,3) )
oLink:AddLastChild( "Lançar tÃtulos de uma compra" , 0, IF(Usuarios->usu073,2,3) )
oLink:AddLastChild( "Configurar compras" , 0, IF(Usuarios->usu074,2,3) )
oLink := oDatabase:AddLastChild( "Requisições", 19, 19 )
oLink:AddLastChild( "Excluir produto em uma requisição" , 0, IF(Usuarios->usu076,2,3))
oLink:AddLastChild( "Excluir uma requisição" , 0, IF(Usuarios->usu077,2,3))
oLink:AddLastChild( "Imprimir uma requisição" , 0, IF(Usuarios->usu078,2,3))
oLink := oDatabase:AddLastChild( "Caixa", 20, 20 )
oLink:AddLastChild( "Incluir lançamento no caixa" , 0, IF(Usuarios->usu080,2,3))
oLink:AddLastChild( "Alterar lançamento do caixa" , 0, IF(Usuarios->usu081,2,3))
oLink:AddLastChild( "Excluir lançamento do caixa" , 0, IF(Usuarios->usu082,2,3))
oLink:AddLastChild( "Imprimir lançamentos do caixa" , 0, IF(Usuarios->usu083,2,3))
oLink := oDatabase:AddLastChild( "Contas a Receber", 21, 21 )
oLink:AddLastChild( "Incluir lançamento no contas a receber" , 0, IF(Usuarios->usu085,2,3))
oLink:AddLastChild( "Alterar lançamento no contas a receber" , 0, IF(Usuarios->usu086,2,3))
oLink:AddLastChild( "Excluir lançamento do contas a receber" , 0, IF(Usuarios->usu087,2,3))
oLink:AddLastChild( "Imprimir lançamentos do contas a receber" , 0, IF(Usuarios->usu088,2,3))
oLink:AddLastChild( "Acessar contas recebidas" , 0, IF(Usuarios->usu089,2,3))
oLink := oDatabase:AddLastChild( "Contas a Pagar", 22, 22 )
oLink:AddLastChild( "Incluir lançamento no contas a pagar" , 0, IF(Usuarios->usu091,2,3))
oLink:AddLastChild( "Alterar lançamento no contas a pagar" , 0, IF(Usuarios->usu092,2,3))
oLink:AddLastChild( "Excluir lançamento do contas a pagar" , 0, IF(Usuarios->usu093,2,3))
oLink:AddLastChild( "Imprimir lançamentos do contas a pagar" , 0, IF(Usuarios->usu094,2,3))
oLink:AddLastChild( "Acessar contas pagas" , 0, IF(Usuarios->usu095,2,3))
oLink := oDatabase:AddLastChild( "Cheques Recebidos", 30, 30 )
oLink:AddLastChild( "Incluir lançamento de cheques" , 0, IF(Usuarios->usu097,2,3))
oLink:AddLastChild( "Alterar lançamento de cheques" , 0, IF(Usuarios->usu098,2,3))
oLink:AddLastChild( "Excluir lançamento de cheques" , 0, IF(Usuarios->usu099,2,3))
oLink:AddLastChild( "Imprimir lançamentos de cheques" , 0, IF(Usuarios->usu100,2,3))
oLink:AddLastChild( "Baixar cheques" , 0, IF(Usuarios->usu101,2,3))
oLink := oDatabase:AddLastChild( "Cheques Emitidos", 31, 31 )
oLink:AddLastChild( "Incluir lançamento de cheques" , 0, IF(Usuarios->usu103,2,3))
oLink:AddLastChild( "Alterar lançamento de cheques" , 0, IF(Usuarios->usu104,2,3))
oLink:AddLastChild( "Excluir lançamento de cheques" , 0, IF(Usuarios->usu105,2,3))
oLink:AddLastChild( "Imprimir lançamentos de cheques" , 0, IF(Usuarios->usu106,2,3))
oLink:AddLastChild( "Baixar cheques" , 0, IF(Usuarios->usu107,2,3))
oLink := oDatabase:AddLastChild( "Movimento Bancário", 09, 09 )
oLink:AddLastChild( "Incluir lançamento bancários" , 0, IF(Usuarios->usu109,2,3))
oLink:AddLastChild( "Alterar lançamento bancário" , 0, IF(Usuarios->usu110,2,3))
oLink:AddLastChild( "Excluir lançamento bancário" , 0, IF(Usuarios->usu111,2,3))
oLink:AddLastChild( "Imprimir lançamento bancário" , 0, IF(Usuarios->usu112,2,3))
oLink:AddLastChild( "Baixar lançamento bancário" , 0, IF(Usuarios->usu113,2,3))
oLink := oDatabase:AddLastChild( "Imprimir SaÃdas", 23, 23 )
oLink:AddLastChild( "Relatórios das saÃdas" , 0, IF(Usuarios->usu115,2,3) )
oLink := oDatabase:AddLastChild( "Imprimir Entradas", 23, 23 )
oLink:AddLastChild( "Relatórios das entradas" , 0, IF(Usuarios->usu117,2,3) )
oLink := oDatabase:AddLastChild( "Imprimir Estoque", 23, 23 )
oLink:AddLastChild( "Relatórios do estoque" , 0, IF(Usuarios->usu119,2,3) )
oLink := oDatabase:AddLastChild( "Imprimir Clientes", 23, 23 )
oLink:AddLastChild( "Relatórios dos clientes" , 0, IF(Usuarios->usu121,2,3) )
oLink := oDatabase:AddLastChild( "Imprimir Fornecedores", 23, 23 )
oLink:AddLastChild( "Relatórios dos fornecedores" , 0, IF(Usuarios->usu123,2,3) )
oLink := oDatabase:AddLastChild( "Imprimir Funcionários", 23, 23 )
oLink:AddLastChild( "Relatórios dos funcionários" , 0, IF(Usuarios->usu125,2,3) )
oLink := oDatabase:AddLastChild( "Gráficos", 24, 24 )
oLink:AddLastChild( "Relatórios de gráficos" , 0, IF(Usuarios->usu127,2,3) )
oLink := oDatabase:AddLastChild( "Manutenção dos Arquivos", 26, 26 )
oLink:AddLastChild( "Manutenção dos arquivos do programa" , 0, IF(Usuarios->usu129,2,3) )
oLink := oDatabase:AddLastChild( "Usuários", 25, 25 )
oLink:AddLastChild( "Cadastro e acessos de usuários e auditoria" , 0, IF(Usuarios->usu131,2,3) )
oLink:AddLastChild( "Acessar empresas do programa" , 0, IF(Usuarios->usu132,2,3) )
oLink := oDatabase:AddLastChild( "Utilitários de Arquivos", 27, 27 )
oLink:AddLastChild( "Reorganizar Ãndices e verifica a integridade dos arquivos" , 0, IF(Usuarios->usu134,2,3) )
oLink:AddLastChild( "Cópia de segurança e restauração dos arquivos" , 0, IF(Usuarios->usu135,2,3) )
oLink := oDatabase:AddLastChild( "Utilitários do Programa", 28, 28 )
oLink:AddLastChild( "Configurações de impressoras e do programa " , 0, IF(Usuarios->usu137,2,3) )
oLink:AddLastChild( "Informações de rede" , 0, IF(Usuarios->usu138,2,3) )
oTree:UpdateTV()
RETURN oTree id=code>id=code>notem que uso o "TREE" e em 32 bits ainda consegui fazer este efeito, ou seja, com bitmaps e checkbox, se alguém tiver um exemplo de pelo menos com o checkbox, ficaria muito agradecido pois ainda não atualizei a versão por causa deste problema.
Obrigado