Ir para conteúdo
Fórum Script Brasil
  • 0

Marcando Item e SubItem (TJvCheckTreeView - JEDI)


robinhocne

Pergunta

Olá Pessoal,

Estou com 3 problemas aqui;

Tenho um TJvCheckTreeView chamado (TreModulos) neles eu tenho Itens/SubItens/SubItens (Pai/Filho/Neto) ai vem o problema;

1º - Quando eu clicar e selecionar tipo o Pai quero que automaticamente daquele Pai seleciona os Filhos e Netos e quando selecionado se clicar para desmarcar tem que desmarcar todos que foram selecionados.

2º - Quando eu clicar e selecionar o Filho quero que automaticamente seleciona o Pai e os Netos daquele Filho e quando selecionado se clicar para desmarcar tem que desmarcar todos que foram selecionados.

3º - Quando eu clicar e selecionar o Neto quero que automaticamente seleciona o Filho e Pai daquele Neto e quando selecionado se clicar para desmarcar tem que desmarcar todos que foram selecionados.

Pesquisando na Internet eu achei esse código abaixo;

procedure TFAdmPro002.TreModulosClick(Sender: TObject);
var
  Node : TJvTreeNode;
begin
  if TJvTreeNode(TreModulos.Selected).Checked then
    begin
      Node := TJvTreeNode(TreModulos.Selected.Parent);
      Node.Checked := True;
    end;
end;

Mas quando eu clico tipo no Neto só seleciona o Filho e não Seleciona o Pai, se Clico no Filho seleciona somente o Pai e não seleciona os netos e quando eu clico no Pai ele dá erro no executavel.

Obrigado desde já pela atenção,

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

exemplo:

Utilizando o evento OnToggled

procedure TForm1.JvCheckTreeView1Toggled(Sender: TObject; Node: TTreeNode);
var
   nFilho, nAnt, nPai: TTreeNode;
begin
   if TJvCheckTreeView(sender).Checked[node] then
      begin
         nFilho := Node;
         nPai := nFilho.GetPrev;
         nAnt := nPai;

         if (nPai <> nil) and (nFilho.HasAsParent(nPai)) then
         begin
            TJvCheckTreeView(sender).Checked[nPai] := True;
         end
      else
         begin
            while ((not nFilho.HasAsParent(nPai)) or (not nAnt.HasAsParent(nPai))) and (nPai <> nil) do
               begin
                  nAnt := nPai;
                  nPai := nAnt.GetPrev;
               end;
      end;

      if (nPai <> nil) and (nFilho.HasAsParent(nPai)) then
         TJvCheckTreeView(sender).Checked[nPai] := True;

end;

OBS: Para o Neto é só estudar a lógica para o Pai e Filho

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...