Pirambu! Postado Abril 3, 2007 Denunciar Share Postado Abril 3, 2007 Estou com uma dúvida sobre a propriedade " tag " do form, como funciona e como eu poderia usar esta propriedade? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 3, 2007 Denunciar Share Postado Abril 3, 2007 Estou com uma dúvida sobre a propriedade " tag " do form, como funciona e como eu poderia usar esta propriedade?Esta propriedade existe em todos (ou quase) os componentes.É uma propriedade do tipo LongInt, assim, você pode armazenar qualquer coisa que caiba neste campo (que não ultrapasse os 4 bytes). Pode ser um endereço de memória, caracter, byte, ... (basta fazer um type-cast).Utiliza-se para muitas coisas, vai do "gosto do freguês" :). Já vi casos em que é utilizada para indicar nível de acesso em controle deste tipo nas aplicações. Eu costumo utilizá-lo em botões Novo, Alterar e Excluir (0, 1 e 2 respectivamente) para utilizar o mesmo evento OnClick e tratar cada função dentro do procedimento do evento - se interessar veja neste tutorial em Procedure TCadTesteDBEdit.BtnNovoClick(Sender: TObject);.Minha contribuição seria essa.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Abril 4, 2007 Autor Denunciar Share Postado Abril 4, 2007 micheus, valeu pela explicação mas, você disse que poderia ser usado em controle de acesso como eu poderia identificar a tag pelo cadastro de usuario , seria assim?eu teria os menu "Cadastro" e "Movimento" sendo que determinaria um valor na Tag para Cada menu exemplo: Cadastro = Tag: 1Movimento = Tag: 2e teria um tabela de controle de usuario, onde eu teria os campos:Usuario= ASenha= ATag= I : (identificação da Tag: "1" ou "2" )Acesso=I : ( sim ou Não)e na telinha do "Login" como eu faria para utilizar as informações da tabela para desabilitar o menu do form? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 4, 2007 Denunciar Share Postado Abril 4, 2007 ...e na telinha do "Login" como eu faria para utilizar as informações da tabela para desabilitar o menu do form?Bom, a situação que citei seria no sentido de definição de níveis de segurança. Uma ilustração hipotérica, seria assim:Nivel 1 - acesso mínimoNivel 2 - acesso intermediário (equivale ao Nivel 1 + alguns itens)Nivel 3 - acesso total (equivale ao Nivel 1, Nivel 2 e todo o resto)daí, na tag dos itens do menu, form, botões (o que quer que seja controlado) você define qual o nível que acessa aquela opção. Na informação do usuário você teria a indicação sobre qual nível de acesso esse usuário tem. Por exemplo, um usuário tipo administrador teria Nivel 3 de acesso. Já um mais restrito poderia ter Nivel 1.Em termos de programação da interface, poderia ser implementado de várias maneiras. Por exemplo, ao ser clicado em um item de menu, antes da execução do código principal no procedimento, poderia ser verificado o nível de acesso do usuário comparado com o definido na tag de modo a permitir a continuidade ou não. Vou tentar exemplificar:procedure TForm1.MnuCadastroClick(Sender :TObject); begin if Nivel_Usuario < (Sender as TMenuItem).Tag then begin ShowMessage('Você não possui autorização para acessar esta função!'); Exit; // Encerra execução do procedimento end // segue com o código normalmente ... end;Mas também, você poderia, após validar o usuário, varrer seus itens de menu e ocultá-los caso o nível de acesso do usuário fosse inferior ao valor da tag dos mesmos e, neste caso, não seria necessário fazer as validações como no exemplo anterior.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Abril 6, 2007 Autor Denunciar Share Postado Abril 6, 2007 Micheus, e no caso se eu queira desabilitar os menus que o usuario não tive permisão para acessar, eu teria que usar a "Tag" ou seria de outra forma? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 6, 2007 Denunciar Share Postado Abril 6, 2007 Micheus, e no caso se eu queira desabilitar os menus que o usuario não tive permisão para acessar, eu teria que usar a "Tag" ou seria de outra forma?Pirambu!, baseado no que coloquei no post anterior, segue uma função para implementar o recurso sobre os itens do menu (ela pode ser colocada em um unit de utilidades - não está vinculada a um form):// Procedimento recursivo para "mapear" todos os itens do menu procedure SetMenuAccess(Menu :TMenuItem; AccessLevel :Integer); var Idx :Integer; begin for Idx := 0 to Menu.Count -1 do begin // habilita ou não item conforme nível de acesso configurado Menu.Items[Idx].Enabled := Menu.Items[Idx].Tag <= AccessLevel; // apenas se habilitado é que processa os sub-menus if Menu.Items[Idx].Enabled then SetMenuAccess(Menu.Items[Idx], AccessLevel); end; end;Como você vê, é um sistema bastante simples. Para facilitar os testes, um exemplo para download. Nele utilizei os níveis de 0 a 2, bem como utilizo a propriedade Enabled - o usuário vê a opção, mas não o acessa. Se trocar por Visible, então não estará visível a opção conforme nível selecionado.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pirambu!
Estou com uma dúvida sobre a propriedade " tag " do form, como funciona e como eu poderia usar esta propriedade?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.