Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida Sobre A Propriedade Do Form


Pirambu!

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0

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: 1

Movimento = Tag: 2

e teria um tabela de controle de usuario, onde eu teria os campos:

Usuario= A

Senha= A

Tag= 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?

Link para o comentário
Compartilhar em outros sites

  • 0
...

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ínimo

Nivel 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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...