ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Montar um Menu com Treeview(Resolvido)
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Dom Ago 19, 2012 10:38 pm    Assunto: Montar um Menu com Treeview(Resolvido) Responder com Citação

Ola.

Preciso fazer um menu usando um treeview para que fique mais facil do usuário encontrar as telas do sistema mas não nunca usei esse controle.

Estou usando um BD access. Numa tabela chamada MENUS criei os campos:

Modulo: informarei de que módulo é o menu. Ex: Estoque, Contas a Pagar.
MenuPai: Informarei as partes do Menu. Ex: Cadastro, Consultas, Relatórios
MenuFilho: Informarei os itens do Menu. Ex: Cadastro de Clientes, Consultas Cliente, Relatórios de Clientes.

Gostaria que essa informação fosse apresentada no formulário principal num treeview.

Se alguém tiver um exemplo de como buscar essa informação da tabela MENU e mostrar no treeviel ficarei muito agradecido.



Obrigado.


Editado pela última vez por vilmar.souza em Ter Ago 28, 2012 7:02 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 19, 2012 10:52 pm    Assunto: Responder com Citação

Já pensou de em vez de utilizar o Treeview utilizar JvXPBar do jedi jvcl, pode colocar items e é bem mais organizado, de uma olhada.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger 
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Seg Ago 20, 2012 8:01 am    Assunto: Responder com Citação

johnny-walker escreveu:
Já pensou de em vez de utilizar o Treeview utilizar JvXPBar do jedi jvcl, pode colocar items e é bem mais organizado, de uma olhada.


bye



Não conheço esse componente. Dei uma pesquisada mais encontrei menos informação que o treeview.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Ago 20, 2012 12:57 pm    Assunto: Responder com Citação

Se uso é muito simples amigo, se quiser e vc tiver o jedi jvcl instalado eu lhe mando um demo, ou vc pode pegar no demo pack que já vem com o jedi jvcl.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger 
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Seg Ago 20, 2012 2:25 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Se uso é muito simples amigo, se quiser e vc tiver o jedi jvcl instalado eu lhe mando um demo, ou vc pode pegar no demo pack que já vem com o jedi jvcl.


bye



Eu uso o delphi 7 e windows 7. Só pra instalar o delphi no windows 7 foi um trabalho. Baixei os arquivos do Jedi e tentei instalar mas nada.
Da falha na instalação.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Ter Ago 21, 2012 12:08 am    Assunto: Responder com Citação

Vilmar, você tem que instalar a versão correta do Jedi para Delphi 7. Qual versão você baixou?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário  
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Ter Ago 21, 2012 7:43 am    Assunto: Responder com Citação

Baixei JVCL345CompleteJCL231-Build4197.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Ter Ago 21, 2012 12:14 pm    Assunto: Responder com Citação

E você fez a instalação utilizando o install.bat?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário  
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Ter Ago 21, 2012 5:00 pm    Assunto: Responder com Citação

O jedi eu desisti. Não consegui instalar.

Mas continuando a jornada treeview, já consegui inserir todos itens da tabela e gerar o Menu treeview.

Agora estou precisando manipular a propriedade StateIndex do treeview.

Na minha tabela eu tenho um campo chave chamado TVR_CODIGO.
Eu queria usar o valor desse campo para definir o valor da propriedade StateIndex do treeview para cada nó.

Tentei fazer assim:

Código:

while not dm.QFilhos.Eof do
 begin
    AddChild(MyTreeNode1,dm.QFilhos.FieldByName('TRV_DESCRI').AsString);
TreeView1.Selected.StateIndex := dm.QFilhos.FieldByName('TRV_CODIGO').AsInteger;
  dm.QFilhos.Next;
  end;


a cada nó inserido já acrescentaria também o valor da propriedade, mas da erro de violação acesso endereço.


Se puderem me ajudar agradeço.


Obrigado.

[/code]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Qua Ago 22, 2012 10:26 am    Assunto: Responder com Citação

Opa!

Consegui resolver.

Código:
while not dm.QFilhos.Eof do
 begin
    TreeFilho:= AddChild(TreePai,dm.QFilhos.FieldByName('TRV_DESCRI').AsString);
    TreeFilho.StateIndex:= dm.QFilhos.FieldByName('TRV_CODIGO').AsInteger;
    TreeFilho.ImageIndex:= 49;
    TreeFilho.SelectedIndex:= 49;
    dm.QFilhos.Next;
  end;
  dm.QPai.next;


Agora é só incrementar o restante do processo.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Qua Ago 22, 2012 3:28 pm    Assunto: Responder com Citação

Montei o meu treeview e agora estou montando a rotina para abrir os forms.

Criei duas variaveis:
var
Nome_Form: TForm;
meuform : String;

Pra pegar o form que esta informado na tabela estou atribuindo o valor na variavel MEUFORM conforme abaixo:

Código:

meuform:=dm.QFormulario.FieldByName('TRV_FORMULARIO').Text;


Conforme o nodes que eu dou duplo click no treeview ela vai na consulta e atribui o nome do form na variavel.

Coloquei o a linha abaixo pra saber se ele atribui o nome correto:
Código:

showmessage (meuForm);


Até aqui está OK.

Então eu pensei e atribuir o valor da variavel MEUFORM para a variavel NOME_FORM assim:

Código:

  Nome_Form.Name:= meuform;

mas é na linha acima que não estou conseguindo atribuir o nome do form que no teste que estou fazendo seria FORM2.


E então abriria o form.
Código:
 
Nome_Form.ShowModal;



O que eu preciso é pegar a descrição do form que esta na variavel MEUFORM e abrir o form correspondente.



Desde já agradeço.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Qui Ago 23, 2012 9:27 am    Assunto: Responder com Citação

Bom dia!

Já Consegui resolver.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
Jonatan500
Colaborador
Colaborador


Registrado: Sábado, 8 de Janeiro de 2011
Mensagens: 1064
Localização: Palmas/TO

MensagemEnviada: Qui Ago 23, 2012 9:43 am    Assunto: Responder com Citação

1º. Insira no Form que possui o treeview um menu suspenso (PopMenu)
2º. Configure a propriedade *PopupMenu* do treeview = (ao nome do popmenu)
3º. Insira um novo item (opção) no menu suspenso e no seu evento OnClick
faça o seguinte:

Código:
procedure TForm1.Opcao1Click(Sender: TObject);
begin
     if TreeView.Selected = nil then
        Exit;

      if TreeView.Selected.Text = 'Descriçao Desejada' then
     begin
            Form2.show;
    end;
end;


tente assim ve no que da
_________________
"NESCIS QUIA EGO SUM PROGRAMMATOR"
#DelphiPower
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger 
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Qui Ago 23, 2012 11:51 am    Assunto: Responder com Citação

Jonatan500 escreveu:
1º. Insira no Form que possui o treeview um menu suspenso (PopMenu)
2º. Configure a propriedade *PopupMenu* do treeview = (ao nome do popmenu)
3º. Insira um novo item (opção) no menu suspenso e no seu evento OnClick
faça o seguinte:

Código:
procedure TForm1.Opcao1Click(Sender: TObject);
begin
     if TreeView.Selected = nil then
        Exit;

      if TreeView.Selected.Text = 'Descriçao Desejada' then
     begin
            Form2.show;
    end;
end;


tente assim ve no que da




Esse problema já esta resolvido. A dificuldade era transformar uma string que estava armazenada no banco num TFORM.

Agora já consegui. Veja como ficou;

Código:

procedure TForm1.TreeView1DblClick(Sender: TObject);
var
Meuform:String;
Nome_form:TObject;
begin

dm.QFormulario.SQL.Clear;
dm.QFormulario.SQL.Add('Select * from menus');
dm.QFormulario.SQL.Add('WHERE TRV_CODIGO =:Cod_Form');
dm.QFormulario.Parameters.ParamByName('Cod_Form').Value:=inttostr(treeview1.Selected.StateIndex);
dm.QFormulario.Open;

Meuform:= dm.QFormulario.FieldByName('TRV_FORMULARIO').Text;
Nome_form:=Application.FindComponent(Meuform);

     if (Nome_form <> NIl ) then begin
     (Nome_form as TForm).ShowModal;
     end;
  end;



Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Sex Ago 24, 2012 2:43 pm    Assunto: Responder com Citação

Boa tarde a todos!

Eu criei o código abaixo para abrir formulários cujo nome está gravado na tabela do banco de dados.
Acontece que eu estava fazendo tudo uma base teste mas na hora de jogar pro meu sistema principal não funcionou pois o sistema é MDI e esse código está funcionando apenas em form NORMAL.

Código:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var
Meuform:String;
Nome_form:TObject;
begin

dm.QFormulario.SQL.Clear;
dm.QFormulario.SQL.Add('Select * from menus');
dm.QFormulario.SQL.Add('WHERE TRV_CODIGO =:Cod_Form');
dm.QFormulario.Parameters.ParamByName('Cod_Form').Value:=inttostr(treeview1.Selected.StateIndex);
dm.QFormulario.Open;

Meuform:= dm.QFormulario.FieldByName('TRV_FORMULARIO').Text;
Nome_form:=Application.FindComponent(Meuform);

     if (Nome_form <> NIl ) then begin
     (Nome_form as TForm).ShowModal;
     end;
  end;


Preciso que o código use a VARIAVEL Nome_Form para abrir os forms MDI.

Se alguém puder dar uma força agradeço.


Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB