MENUS - VB.NET

NICKOSOFT 17/09/2015 05:38:26
#451483
Citação:

:
Nicksoft, diferente isso que vc fez..
tem alguma melhoria em desempenho ao metodo tradicional?
joaobenevides, o metodo do meste também funciona, o que vc precisa realmente fazer é checar um campo com if depois de buscar ele com um datareader


então não sei se em desempenho, ou qq outra coisa, mas considero não tradicional, a velha separação por grupos de usuários, tal grupo isso aquilo, nesse método cada usuário pode ser único....mas veja a postagem do JCM0867, mais flexível ainda, quem sabe uma misturada nas duas técnicas...
JOAOBENEVIDES 17/09/2015 07:53:25
#451487
JCM0867

voce poderia me dizer se voce bsuca os menus , cadastra os menus na mao como voce faz
F001E 17/09/2015 08:35:06
#451488
eu faço assim....

private void HabilitaMenus(string Nome,string Permissao)
{
if (Permissao == [Ô]S[Ô]) menuStrip1.Items.Find(Nome, true)[0].Visible = true;
if (Permissao == [Ô]N[Ô]) menuStrip1.Items.Find(Nome, true)[0].Visible = false;
}


....onde a variável [Ô]Nome[Ô] é o nome do seu menu onde é buscado no controle menuStrip1. Se Permissao = [Ô]S[Ô], true, caso contrário false.

....e também eu cadastro os menus em uma tabela chamada Menus, mas não cadastro na mão, faço um FOR no controle menuStrip toda vez que muda a versão do sistema e salvo nessa tabela, claro sempre verificando se o menu já existe. Daí tenho outra tabela chamada MenuPermissão onde é relacionada com a tabela Menu e Usuários.

....também faço dinamicamente e não adicionando checkbox como vi as imagens acima. Já que salvo os menus em uma tabela, carrego eles em um GRID e dou permissão por ali mesmo.


JOAOBENEVIDES 17/09/2015 09:04:36
#451489
o que eu queria saber de meus amigos é voce cadastra os menus no banco de dados, eu faz alguma coisa no sistema para pegar os nomes do menus
F001E 17/09/2015 10:36:09
#451496
eu gravo os menus no banco de dados. Tenho uma tabela chamada Menu onde gravo dos os menus do controle menuStrip. Tenho também uma tabela chamada Menu_Permissao onde é relacionado com a tabela Menu e Usuários assim eu sei o usuário tem permissão para tal menu ou não.
JOAOBENEVIDES 17/09/2015 10:56:55
#451498
se nao for pedir muinto como voce faz (codigo) para ver os nomes do menu ?
F001E 17/09/2015 11:36:32
#451502
primeiro pego os menus do menuStrip assim:

[txt-color=#0000f0]List[/txt-color]<ToolStripMenuItem> allItems = [txt-color=#0000f0]new List[/txt-color]<ToolStripMenuItem>();

[txt-color=#0000f0]foreach[/txt-color] (ToolStripMenuItem toolItem in menuStrip.Items)
{
allItems.Add(toolItem);
//add sub items
allItems.AddRange(GetItems(toolItem));
}
private IEnumerable<ToolStripMenuItem> GetItems(ToolStripMenuItem item)
{
foreach (ToolStripMenuItem dropDownItem in item.DropDownItems)
{
if (dropDownItem.HasDropDownItems)
{
foreach (ToolStripMenuItem subItem in GetItems(dropDownItem))
yield return subItem;
}
yield return dropDownItem;
}
}


depois faço o foreach em allItems para gravar no banco de dados

foreach (Itens in allItems) 
{
//...código para gravar no banco de dados
}

JOAOBENEVIDES 17/09/2015 11:42:19
#451503
ok vou tentar obrigado
JCM0867 17/09/2015 14:32:21
#451509
Citação:

:
JCM0867

voce poderia me dizer se voce bsuca os menus , cadastra os menus na mao como voce faz


Fiz na unha, fui lendo o menu e colocando no form, caso alterar o menu futurande só precisa colacar aquele item altando.

A rotina de cores funciona assim:

Private Sub lblCadastroLivros_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblCadastroLivros.Click
If lblCadastroLivros.ForeColor = Color.Navy Then
lblCadastroLivros.ForeColor = Color.Maroon
ElseIf lblCadastroLivros.ForeColor = Color.Maroon Then
lblCadastroLivros.ForeColor = Color.Gray
Else
lblCadastroLivros.ForeColor = Color.Navy
End If
End Sub
JOAOBENEVIDES 17/09/2015 17:21:52
#451517
F001E no seu exemplo voce colocar
foreach (Itens in allItems)
{
//...código para gravar no banco de dados
}
quando mando para o vb ele me diz
Erro 1 Um tipo e um identificador são necessários em uma instrução foreach
logo quando coloco o mouse em cima ele me diz

O nome de namespace ou o tipo [ô]itens[ô] não pôde ser encontrado. Precisa de uma diretiva using ou de uma referência de assembly ?

Página 2 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas