Fórum Criação do menu no TreeView em tempo de execução. #355381
14/03/2008
0
Bom dia a todos.
Estou tentando criar um menu no TreeView em tempo de execução, mas estou com duvidas.
Vou tentar explicar para todos o que quero.
Todo usuario tem seu perfil, quando o usuario digita seu login correto, automaticamente é colocado em um ComboBox os departamentos que este usuário tem acesso.
Exemplo:
Financeiro
Orçamento
Compras
Quando o usuario der um clique na opção Financeiro vai se criar o menu do Financeiro, qdo usuario der um clique na Opção Orçamento vai se apagar o menu Financeiro e criar o menu Orçamento e assim por diante.
Aqui esta o codigo fonte do menu.
[color=red:ecffd3b8d5]Duvida[/color:ecffd3b8d5] Ainda não sei como fazer para limpar o menu, para poder criar o outro. Alguém pode me ajudar?
//---------------------------------------------------------------------
procedure TmenuPrin.dptoClick(Sender: TObject);
var mytreenode1: TTreeNode;
begin
if (menuprin.dpto.Text = ´Orcamento´) then
begin
mytreenode1:= menuprin.TreeView1.Items.Add(treeview1.Selected,´Cadastros´);
mytreenode1.ImageIndex:= 0;
mytreenode1.SelectedIndex:= 0;
mytreenode1.StateIndex:= -1;
treeview1.Items.AddChild(mytreenode1,´Cadastro de Clientes´);
treeview1.Items.Item[1].ImageIndex:= 0;
treeview1.Items.Item[1].SelectedIndex:= 0;
treeview1.Items.Item[1].StateIndex:= 11;
treeview1.Items.AddChild(mytreenode1,´Cadastro de Orçamentos´);
treeview1.Items.Item[2].ImageIndex:= 0;
treeview1.Items.Item[2].SelectedIndex:= 0;
treeview1.Items.Item[2].StateIndex:= 12;
mytreenode1:= menuprin.TreeView1.Items.Add(treeview1.Selected,´Relatórios´);
mytreenode1.ImageIndex:= 0;
mytreenode1.SelectedIndex:= 0;
mytreenode1.StateIndex:= -1;
treeview1.Items.AddChild(mytreenode1,´Relatório de Clientes´);
treeview1.Items.Item[4].ImageIndex:= 0;
treeview1.Items.Item[4].SelectedIndex:= 0;
treeview1.Items.Item[4].StateIndex:= 13;
end
else if (menuprin.dpto.Text = ´Financeiro´) then
begin
mytreenode1:= menuprin.TreeView1.Items.Add(treeview1.Selected,´Cadastro´);
mytreenode1.ImageIndex:= 0;
mytreenode1.SelectedIndex:= 0;
mytreenode1.StateIndex:= -1;
treeview1.Items.AddChild(mytreenode1,´Cadastro de Credor´);
treeview1.Items.Item[1].ImageIndex:= 0;
treeview1.Items.Item[1].SelectedIndex:= 0;
treeview1.Items.Item[1].StateIndex:= 21;
end;
end;
//----------------------------------------------------------------------------
Depois de Criado o menu. Ele precisa executar alguma tarefa.
Foi criado a seguinte procedure para isso.
//----------------------------------------------------------------------
procedure pesquisamenu;
begin
if (menuprin.TreeView1.Selected.StateIndex <> -1) then
begin
if (menuprin.TreeView1.Selected.StateIndex = 11) then
begin
cadClientes.ShowModal;
end;
if (menuprin.TreeView1.Selected.StateIndex = 12) then
begin
cad_Orc.ShowModal;
end;
if (menuprin.TreeView1.Selected.StateIndex = 13) then
begin
rel_Orc.ShowModal;
end;
if (menuprin.TreeView1.Selected.StateIndex = 21) then
begin
cad_Credor.ShowModal;
end;
end;
end;
//----------------------------------------------------------------------
[color=red:ecffd3b8d5]Duvida. [/color:ecffd3b8d5]O que estou fazendo de errado na procedure acima, que quando dou clique na última opção do menu, toda a área vazia do treeview passa a executar a mesma tarefa que o ultimo menu?
Se alguem puder me ajudar.
Obrigado.
Estou tentando criar um menu no TreeView em tempo de execução, mas estou com duvidas.
Vou tentar explicar para todos o que quero.
Todo usuario tem seu perfil, quando o usuario digita seu login correto, automaticamente é colocado em um ComboBox os departamentos que este usuário tem acesso.
Exemplo:
Financeiro
Orçamento
Compras
Quando o usuario der um clique na opção Financeiro vai se criar o menu do Financeiro, qdo usuario der um clique na Opção Orçamento vai se apagar o menu Financeiro e criar o menu Orçamento e assim por diante.
Aqui esta o codigo fonte do menu.
[color=red:ecffd3b8d5]Duvida[/color:ecffd3b8d5] Ainda não sei como fazer para limpar o menu, para poder criar o outro. Alguém pode me ajudar?
//---------------------------------------------------------------------
procedure TmenuPrin.dptoClick(Sender: TObject);
var mytreenode1: TTreeNode;
begin
if (menuprin.dpto.Text = ´Orcamento´) then
begin
mytreenode1:= menuprin.TreeView1.Items.Add(treeview1.Selected,´Cadastros´);
mytreenode1.ImageIndex:= 0;
mytreenode1.SelectedIndex:= 0;
mytreenode1.StateIndex:= -1;
treeview1.Items.AddChild(mytreenode1,´Cadastro de Clientes´);
treeview1.Items.Item[1].ImageIndex:= 0;
treeview1.Items.Item[1].SelectedIndex:= 0;
treeview1.Items.Item[1].StateIndex:= 11;
treeview1.Items.AddChild(mytreenode1,´Cadastro de Orçamentos´);
treeview1.Items.Item[2].ImageIndex:= 0;
treeview1.Items.Item[2].SelectedIndex:= 0;
treeview1.Items.Item[2].StateIndex:= 12;
mytreenode1:= menuprin.TreeView1.Items.Add(treeview1.Selected,´Relatórios´);
mytreenode1.ImageIndex:= 0;
mytreenode1.SelectedIndex:= 0;
mytreenode1.StateIndex:= -1;
treeview1.Items.AddChild(mytreenode1,´Relatório de Clientes´);
treeview1.Items.Item[4].ImageIndex:= 0;
treeview1.Items.Item[4].SelectedIndex:= 0;
treeview1.Items.Item[4].StateIndex:= 13;
end
else if (menuprin.dpto.Text = ´Financeiro´) then
begin
mytreenode1:= menuprin.TreeView1.Items.Add(treeview1.Selected,´Cadastro´);
mytreenode1.ImageIndex:= 0;
mytreenode1.SelectedIndex:= 0;
mytreenode1.StateIndex:= -1;
treeview1.Items.AddChild(mytreenode1,´Cadastro de Credor´);
treeview1.Items.Item[1].ImageIndex:= 0;
treeview1.Items.Item[1].SelectedIndex:= 0;
treeview1.Items.Item[1].StateIndex:= 21;
end;
end;
//----------------------------------------------------------------------------
Depois de Criado o menu. Ele precisa executar alguma tarefa.
Foi criado a seguinte procedure para isso.
//----------------------------------------------------------------------
procedure pesquisamenu;
begin
if (menuprin.TreeView1.Selected.StateIndex <> -1) then
begin
if (menuprin.TreeView1.Selected.StateIndex = 11) then
begin
cadClientes.ShowModal;
end;
if (menuprin.TreeView1.Selected.StateIndex = 12) then
begin
cad_Orc.ShowModal;
end;
if (menuprin.TreeView1.Selected.StateIndex = 13) then
begin
rel_Orc.ShowModal;
end;
if (menuprin.TreeView1.Selected.StateIndex = 21) then
begin
cad_Credor.ShowModal;
end;
end;
end;
//----------------------------------------------------------------------
[color=red:ecffd3b8d5]Duvida. [/color:ecffd3b8d5]O que estou fazendo de errado na procedure acima, que quando dou clique na última opção do menu, toda a área vazia do treeview passa a executar a mesma tarefa que o ultimo menu?
Se alguem puder me ajudar.
Obrigado.
Uelinton_reis
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)