Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Dom Ago 19, 2012 10:38 pm Assunto: Montar um Menu com Treeview(Resolvido) |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Ago 19, 2012 10:52 pm Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Seg Ago 20, 2012 8:01 am Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Ago 20, 2012 12:57 pm Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Seg Ago 20, 2012 2:25 pm Assunto: |
|
|
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 |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Ter Ago 21, 2012 12:08 am Assunto: |
|
|
Vilmar, você tem que instalar a versão correta do Jedi para Delphi 7. Qual versão você baixou? |
|
Voltar ao Topo |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Ter Ago 21, 2012 7:43 am Assunto: |
|
|
Baixei JVCL345CompleteJCL231-Build4197. |
|
Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Ter Ago 21, 2012 12:14 pm Assunto: |
|
|
E você fez a instalação utilizando o install.bat? |
|
Voltar ao Topo |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Ter Ago 21, 2012 5:00 pm Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Qua Ago 22, 2012 10:26 am Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Qua Ago 22, 2012 3:28 pm Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Qui Ago 23, 2012 9:27 am Assunto: |
|
|
Bom dia!
Já Consegui resolver. |
|
Voltar ao Topo |
|
 |
Jonatan500 Colaborador

Registrado: Sábado, 8 de Janeiro de 2011 Mensagens: 1064 Localização: Palmas/TO
|
Enviada: Qui Ago 23, 2012 9:43 am Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Qui Ago 23, 2012 11:51 am Assunto: |
|
|
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Sex Ago 24, 2012 2:43 pm Assunto: |
|
|
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 |
|
 |
|