Criação do menu no TreeView em tempo de execução.

Delphi

14/03/2008

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.


Uelinton_reis

Uelinton_reis

Curtidas 0
POSTAR