Jump to content
Fórum Script Brasil
  • 0

Duvidas com Treeview


aprediz12

Question

Pessoal como faço pra adicionar itens e subitens em um Treeview, sendo dados de duas tabelas da seguinte forma:

é um cadastro de produtos, que tem as tabelas de Grupo e Subgrupo

então o ITEM do treeview seria o Grupo e o SUBITEM seria o Subgrupo

estrutura das tabelas:

GRUPO

cdgrupo | degrupo
    1   | Cama Box
    2   | Estofados
    3   | Colchão
SUBGRUPO
cdgrupo | cdsubgupo| desubgrupo
    1   |     1    | Cama Box 1.38
    1   |     2    | Cama Box 1.58
    1   |     3    | Cama Box 1.98
    2   |     4    | Sofá 2 e 3 lugares
    2   |     5    | Sofá 5 lugares
    3   |     6    | Colchão casal D23
    3   |     7    | Colchão casal D33
    3   |     8    | Colchão solteiro D23
ae o treeview ficaria assim:
»1-Cama Box
   »1-Cama Box 1.38
   »2-Cama Box 1.58
   »3-Cama Box 1.98
»2-Estofados
   »4-Sofá 2 e 3 lugares
   »5-Sofá 5 lugares
»3-Colchão
   »6-Colchão casal D23
   »7-Colchão casal D33
   »8-Colchão solteiro D23
seria tipo o programa do imposto de rende. que tem algo desse tipo. no caso teria os selects: SELECT * FROM GRUPO na qryGrupo e SELECT * FROM SUBGRUPO NA qrySubgrupo o DataSource do qrysubgrupo estaria ligado ao DataSource da qryGrupo no caso seria algo assim:
begin
   qryGrupo.Close;
   qryGrupo.Open;
   while not qryGrupo.Eof do begin
        //aqui adicionada os items
       qrySubgrupo.Close;
       qrySubgrupo.Open;
       while not qrySubgrupo.Eof do begin
          //aqui adicionada os sub-items dentro de cada item
          qrySubgrupo.Next;
       end;
       qryGrupo.Next;
   end;
end;

bom.... a minha ideia era essa mas não consegui nada, num sei se to viajando na forma de fazer

valeu!

Edited by aprediz12
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

var

NodeGrupo, NodeFilho : TTreeNode;

begin

// exemplo de como adicionar um nó simples

NodeGrupo := TreeView.Items.Add(nil, 'Item do tipo Grupo');

// aqui, éh como adicionar um nó filho do nó anterior

NodeFilho := TreeView.Items.Add(NodeGrupo, 'Item do tipo SubGrupo');

end;

desta forma ficaria

>Item do tipo grupo

>Item do tipo Subgrupo

espero que tenha ajudado

Link to comment
Share on other sites

  • 0

valeu Samara,

deu certo so que da seguinte forma: o AddChild em vez de Add.

NodeGrupo := TreeView.Items.AddChild(nil, 'Item do tipo Grupo');

NodeFilho := TreeView.Items.AddChild(NodeGrupo, 'Item do tipo SubGrupo');

agora me diz uma coisa,

como eu faço pra jogar no label1 e label2, o grupo e o subgrupo que ta selecionado.

por exemplo, se eu clicar somente no grupo, não faz nada, e se eu clicar no subgrupo, ae joga no label1 o valor do grupo e label =2 o valor do subgrupo,

é possível isso?

valeu...

Edited by aprediz12
Link to comment
Share on other sites

  • 0

Para você mostrar em um EDIT os valores que esta selecionando no TreeView, você pode fazer assim:

no evento OnClique do TreeView, insira o seguinte código:

1) Tree é o nome dado ao meu Componente TREEVIEW

2) No meu caso tenho vários níveis para um plano de contas

Somente um exemplo OK

(1.00) = 01 - ENTRADAS (RECEBER)

(1.10) = 01.001 - OPERACIONAIS (RECEBER)

(1.01) = 01.001.01 - RECEBIMENTO EM DINHEIRO (RECEBER)

(1.02) = 01.001.02 - RECEBIMENTO EM CHEQUE (RECEBER)

(1.03) = 01.001.03 - RECEBIMENTO EM CARTÃO (RECEBER)

(1.20) = 01.002 - NÃO OPERACIONAIS (RECEBER)

(1.30) = 01.003 - DIVERSAS (RECEBER)

(2.00) = 02 - SAÍDAS (PAGAR)

(2.10) = 02.001 - OPERACIONAIS (PAGAR)

(2.01) = 02.001.01 - PAGAMENTO EM DINHEIRO (PAGAR)

(2.02) = 02.001.02 - PAGAMENTO EM CHEQUE (PAGAR)

(2.20) = 02.002 - NÃO OPERACIONAIS (PAGAR)

procedure TForm1.MostraNome(Sender: TObject)

Var

Geral, sRed, sCod1, sCod2, sCod3, N1, N2, N3: String;

begin

//Quando estiver no primeiro nível

If (Tree.Selected.Level = 0) Then

Begin

// Nome completo do ítem selecionado por exemplo = (1.00) = 01 - ENTRADAS (RECEBER)

Geral:= Tree.Selected.Text;

// Somente o código exemplo = 1.00

sRed:= Trim(Copy(Tree.Selected.Text,2,Pos(')', Geral)-2));

// Somente o código e seu número exemplo = 1.00 = 01

Cod1:= Trim(Copy(Tree.Selected.Text,1,Pos('-', Geral)-1));

// Somente seu número exemplo = 01

N1 := Trim(Copy(Tree.Selected.Text,10,Pos('-', Geral)-10));

End;

//Quando estiver no segundo nível

If (Tree.Selected.Level = 1) Then

Begin

// Nome completo do ítem selecionado por exemplo = (1.10) = 01.001 - OPERACIONAIS (RECEBER)

Geral:= Tree.Selected.Text;

// Copia o número = 1.10

sRed:= Trim(Copy(Tree.Selected.Text,2,Pos(')', Geral)-2));

// Copia o número = 01

Cod1:= Trim(Copy(Tree.Selected.Text,10,Pos('.', Geral)-1));

// Copia o número = 001

Cod2:= Trim(Copy(Tree.Selected.Text,13,Pos('.', Geral)));

// Copia o número = 01.001

N2:= Trim(Copy(Tree.Selected.Text,10,Pos('-', Geral)-10));

End;

//Quando estiver no terceiro nível

If (Tree.Selected.Level = 2) Then

Begin

// Nome completo do ítem selecionado por exemplo = (1.01) = 01.001.01 - RECEBIMENTO EM DINHEIRO (RECEBER)

Geral:= Tree.Selected.Text;

// Copia o número = 1.01

sRed:= Trim(Copy(Tree.Selected.Text,2,Pos(')', Geral)-2));

// Copia o número = 01

Cod1:= Trim(Copy(Tree.Selected.Text,10,Pos('.', Geral)-1));

// Copia o número = 001

Cod2:= Trim(Copy(Tree.Selected.Text,13,Pos('.', Geral)));

// Copia o número = 01

Cod3:= Trim(Copy(Tree.Selected.Text,17,Pos('-', Geral)-17));

// Copia o número = 01.001.01

N3:= Trim(Copy(Tree.Selected.Text,10,Pos('-', Geral)-10));

End;

end;

A questão toda é você verificar como vai implementar seu TreeView e depois fazer como no exemplo que estou passando ... para mostrar no edit fica fácil né é só atribuir o valor da variável no edit e pronto...

Espero que tenha resolvido seu problema ...

Abraços

Eduardo

Analista de Sistemas

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...