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 

SubNodes não estão sendo preenchidos treeview?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Jul 19, 2017 10:58 am    Assunto: SubNodes não estão sendo preenchidos treeview? Responder com Citação

Tenho este treeview que esta sendo preenchido quanto tem dados no banco


Mais seus subnodes dentro do nó não esta sendo populando mesmo tendo valor.

Creio que falta algo neste procedimento aqui
Código:
procedure TfrmCadastroUsuarios.PreencheArvorePermissoes;
var
  permissoes: Array of String;
  i, j, k, qtdPermissoes: Integer;
begin
  qtdPermissoes := uFuncoesGlobais.ContaString(',',
    Trim(oUsuario.ArrayPermissao));
  SetLength(permissoes, qtdPermissoes);
  Explode(permissoes, ',', oUsuario.ArrayPermissao);
  // Percorro todos os componentes treeview
  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        for k := 0 to Pred(qtdPermissoes) do
          // Verifico se o id da permissão do For é igual ao SelectedIndex (que é o número do id da permissão) da check
          if TJvCheckTreeView(Components[i]).Items.Item[j]
            .SelectedIndex = StrToInt(permissoes[k]) then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
    end;
  end;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Jul 20, 2017 1:36 pm    Assunto: Responder com Citação

Page Up ....

Alguém conhece a técnica?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qui Jul 20, 2017 1:55 pm    Assunto: Responder com Citação

Estou sem os componentes do Jedi aqui para testar, mas tenta debugar o if que verifica o ID da permissão com o SelectedIndex, verifique durante o for, quais os valores em cada um dos lados

TJvCheckTreeView(Components[i]).Items.Item[j]
.SelectedIndex << Verificar valor que está chegando aqui

StrToInt(permissoes[k] << Verificar valor que está chegando aqui

Verifique também se os subnodes estão entrando nesse for
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 21, 2017 10:44 am    Assunto: Responder com Citação

leo_cj escreveu:
Estou sem os componentes do Jedi aqui para testar, mas tenta debugar o if que verifica o ID da permissão com o SelectedIndex, verifique durante o for, quais os valores em cada um dos lados

TJvCheckTreeView(Components[i]).Items.Item[j]
.SelectedIndex << Verificar valor que está chegando aqui

StrToInt(permissoes[k] << Verificar valor que está chegando aqui

Verifique também se os subnodes estão entrando nesse for


Então fiz os testes aqui
Código:
f TJvCheckTreeView(Components[i]).Items.Item[j]
            .SelectedIndex = StrToInt(permissoes[k]) then
          begin
            ShowMessage(IntToStr(TJvCheckTreeView(Components[i]).Items.Item[j]
            .SelectedIndex));

            ShowMessage(permissoes[k]);

            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;


            Break;
          end;


A comparação esta correta nos dois showmessage, mais não marca os subnodes dentro dos nodes
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Sex Jul 21, 2017 10:50 am    Assunto: Responder com Citação

Vejamos amigos então:
Tudo que sabemos é que os nós e os subnós possui valores e que não há qualquer problema com a exibição dos nós entretanto já vimos subnós este sim não estão sendo exibido de acordo com os referidos valores armazenado nos mesmo.


Se a colocação acima este ver correta então tente chamar o refresh ou o repaint do referido treeview logo após a sua população.

E tudo ficará ok.
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 21, 2017 11:13 am    Assunto: Responder com Citação

strak2012 escreveu:
Vejamos amigos então:
Tudo que sabemos é que os nós e os subnós possui valores e que não há qualquer problema com a exibição dos nós entretanto já vimos subnós este sim não estão sendo exibido de acordo com os referidos valores armazenado nos mesmo.


Se a colocação acima este ver correta então tente chamar o refresh ou o repaint do referido treeview logo após a sua população.

E tudo ficará ok.


Olá eu coloquei aqui no método
Código:
procedure TfrmCadastroUsuarios.PreencheArvorePermissoes;
var
  permissoes: Array of String;
  i, j, k, qtdPermissoes: Integer;
begin
  qtdPermissoes := uFuncoesGlobais.ContaString(',',
    Trim(oUsuario.ArrayPermissao));
  SetLength(permissoes, qtdPermissoes);
  Explode(permissoes, ',', oUsuario.ArrayPermissao);
  // Percorro todos os componentes treeview
  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin

      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        for k := 0 to Pred(qtdPermissoes) do
          // Verifico se o id da permissão do For é igual ao SelectedIndex (que é o número do id da permissão) da check
          if TJvCheckTreeView(Components[i]).Items.Item[j]
            .SelectedIndex = StrToInt(permissoes[k]) then
          begin
//            ShowMessage(IntToStr(TJvCheckTreeView(Components[i]).Items.Item[j]
//            .SelectedIndex));
//
//            ShowMessage(permissoes[k]);

            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;

            TJvCheckTreeView(Components[i]).Repaint;

            Break;
          end;
      end;
    end;
  end;
end;



marco os campos


Mais ao voltar nele não aparece nos quadrados de dentro, igual a primeira imagem do post acima.

O banco esta gravado os campos

19-Frente de caixa
66-Autorização Desconto Geral
67-Autorização desconto Por Item
68-Sangria do Caixa
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Sex Jul 21, 2017 11:27 am    Assunto: Responder com Citação

Adriano, dá uma olhada nesse link:
[url]
http://www.planetadelphi.com.br/dica/7337/-marcando-o-filho-e-o-pai-(-tjvchecktreeview-)-[/url]

aqui ele utiliza TJvTreeNode pra utilizar a propriedade Checked, talvez o problema esteja na forma como você está tentado marcar os subnodes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 21, 2017 2:41 pm    Assunto: Responder com Citação

Então meu problema não é com o click para marcar o checkbox e sim com o checkbox preencher o que vem do banco de dados.

Tem o valor é o mesmo index e não marca os subnodes.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Sex Jul 21, 2017 2:47 pm    Assunto: Responder com Citação

Sim, mas postei aqui para mostrar que o jeito que ele utiliza para marcar um node/subnode é diferente da maneira que você está utilizando, e que pode ser esse o problema.

Como nunca utilizei o componente e não tenho ele aqui, não consigo verificar se o problema está ou não na forma como você está tentando fazer a marcação do checkbox
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 21, 2017 3:52 pm    Assunto: Responder com Citação

leo_cj escreveu:
Sim, mas postei aqui para mostrar que o jeito que ele utiliza para marcar um node/subnode é diferente da maneira que você está utilizando, e que pode ser esse o problema.

Como nunca utilizei o componente e não tenho ele aqui, não consigo verificar se o problema está ou não na forma como você está tentando fazer a marcação do checkbox


Então eu fiz o codigo baseado neste port aqui
http://www.activedelphi.com.br/forum/viewtopic.php?p=481129&sid=4336a74b4df7d8e09259c2280770c5a4
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Sex Jul 21, 2017 4:38 pm    Assunto: Responder com Citação

Chegou a verificar se não pode ser o Cascadelevels que está atrapalhando novamente?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Sex Jul 21, 2017 4:47 pm    Assunto: Responder com Citação

Instalei o Jedi novamente e fiz um teste com seu código e funcionou.

Veja o código:

Código:
var
  permissoes: Array [0 .. 3] of String;
  i, j, k, qtdPermissoes: Integer;
begin
  qtdPermissoes := 4;

  permissoes[0] := '19';
  permissoes[1] := '66';
  permissoes[2] := '67';
  permissoes[3] := '68';

  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        for k := 0 to Pred(qtdPermissoes) do
          if TJvCheckTreeView(Components[i]).Items.Item[j].SelectedIndex = StrToInt(permissoes[k])
          then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
    end;
  end;
end;


Salvei o projeto exemplo neste link para download:
https://www.4shared.com/zip/aqGhacfsca/jvCheckTreeview.html
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 28, 2017 11:24 am    Assunto: Responder com Citação

natanbh1 escreveu:
Instalei o Jedi novamente e fiz um teste com seu código e funcionou.

Veja o código:

Código:
var
  permissoes: Array [0 .. 3] of String;
  i, j, k, qtdPermissoes: Integer;
begin
  qtdPermissoes := 4;

  permissoes[0] := '19';
  permissoes[1] := '66';
  permissoes[2] := '67';
  permissoes[3] := '68';

  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        for k := 0 to Pred(qtdPermissoes) do
          if TJvCheckTreeView(Components[i]).Items.Item[j].SelectedIndex = StrToInt(permissoes[k])
          then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
    end;
  end;
end;


Salvei o projeto exemplo neste link para download:
https://www.4shared.com/zip/aqGhacfsca/jvCheckTreeview.html


Então Natan BH1 Primeiramente...Obrigado pela ajuda....Seguinte

Vi seu app e achei o problema

No oncreate o meu tem isso aqui para expandir
Código:
procedure TForm2.FormCreate(Sender: TObject);
var
 i: integer;
begin

   for i := 0 to Pred(ComponentCount) do
    if (Components[i] is TJvCheckTreeView) then
    begin
      // deixo todos expandidos na tela
      TJvCheckTreeView(Components[i]).FullExpand;
      // deixo todos com borda no checkbox
      //TJvCheckTreeView(Components[i]).StateImages := ilFlatChecks;
      // para marcar todos checkbox do treeview deixar as duas opções abaixo
      //TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := -1;
      TJvCheckTreeView(Components[i]).CheckBoxOptions.Style := cbsJVCL;
    end;


Ai descobri o problema.
Esta linha de código
Código:
TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := -1;


Se eu comentar mostra todos checks marcados
Mais ai o primeiro checkbox MARCAR TODOS não funciona.

Ha mudei aqui os índices do seu projeto 19 tem que ficar no campo 1 que é o nó pai 66,67,68 fica nos nós filhos deste nó 1
Código:
object JvCheckTreeView1: TJvCheckTreeView
  Left = 18
  Top = 13
  Width = 234
  Height = 320
  Indent = 19
  TabOrder = 0
  Items.NodeData = {
    030100000036000000000000000000000001000000FFFFFFFF00000000000000
    0004000000010C4D0061007200630061007200200054006F0064006F00730020
    000000000000001300000001000000FFFFFFFF00000000000000000600000001
    01310024000000000000004200000001000000FFFFFFFF010000000000000000
    000000010331002E00310024000000000000004300000001000000FFFFFFFF01
    0000000000000000000000010331002E00320024000000000000004400000001
    000000FFFFFFFF010000000000000000000000010331002E0033002400000000
    0000004500000001000000FFFFFFFF010000000000000000000000010331002E
    00340024000000000000004600000001000000FFFFFFFF010000000000000000
    000000010331002E00350024000000000000004700000001000000FFFFFFFF01
    0000000000000000000000010331002E00360020000000000000000000000001
    000000FFFFFFFF00000000000000000300000001013200240000000000000000
    00000001000000FFFFFFFF000000000000000000000000010332002E00310024
    000000000000000000000001000000FFFFFFFF00000000000000000000000001
    0332002E00320024000000000000000000000001000000FFFFFFFF0000000000
    00000000000000010332002E00330020000000000000000000000001000000FF
    FFFFFF0000000000000000000000000101330020000000000000000000000001
    000000FFFFFFFF00000000000000000000000001013400}
  Checkboxes = True
  CheckBoxOptions.Style = cbsJVCL
end
object Button1: TButton
  Left = 88
  Top = 339
  Width = 75
  Height = 25
  Caption = 'Cique aqui'
  TabOrder = 1
  OnClick = Button1Click
end
object ilFlatChecks: TImageList
  Left = 117
  Top = 128
  Bitmap = {
    494C010103000900D00010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
    0000000000003600000028000000400000001000000001002000000000000010
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF000000000000000000FFFFFF00000000000000000000000000FFFFFF00FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF0000000000FFFFFF00FFFFFF00FFFFFF00000000000000000000000000FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF0000000000000000000000000000000000000000000000000000000000FFFF
    FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    FF00000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    0000000000000000000000000000000000000000000000000000000000000000
    000000000000000000000000000000000000424D3E000000000000003E000000
    2800000040000000100000000100010000000000800000000000000000000000
    000000000000000000000000FFFFFF00FFFFFFFFFFFF0000FFFF800380030000
    FFFF800380030000FFFF800380030000FFFF800380030000FFFF800380030000
    FFFF800380030000FFFF800380030000FFFF800380030000FFFF800380030000
    FFFF800380030000FFFF800380030000FFFF800380030000FFFF800380030000
    FFFFFFFFFFFF0000FFFFFFFFFFFF000000000000000000000000000000000000
    000000000000}
end


pas
Código:
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, JvExComCtrls, JvComCtrls,
  JvCheckTreeView, Vcl.ImgList;

type
  TForm2 = class(TForm)
    JvCheckTreeView1: TJvCheckTreeView;
    Button1: TButton;
    ilFlatChecks: TImageList;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure PreencheArvorePermissoes;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
  permissoes: Array [0 .. 3] of String;
  i, j, k, qtdPermissoes: Integer;
begin
  qtdPermissoes := 4;

  permissoes[0] := '19';
  permissoes[1] := '66';
  permissoes[2] := '67';
  permissoes[3] := '68';

  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        for k := 0 to Pred(qtdPermissoes) do
          if TJvCheckTreeView(Components[i]).Items.Item[j].SelectedIndex = StrToInt(permissoes[k])
          then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
    end;
  end;
end;

procedure TForm2.FormCreate(Sender: TObject);
var
 i: integer;
begin

   for i := 0 to Pred(ComponentCount) do
    if (Components[i] is TJvCheckTreeView) then
    begin
      // deixo todos expandidos na tela
      TJvCheckTreeView(Components[i]).FullExpand;
      // deixo todos com borda no checkbox
      TJvCheckTreeView(Components[i]).StateImages := ilFlatChecks;
      // para marcar todos checkbox do treeview deixar as duas opções abaixo
      //TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := -1;
      TJvCheckTreeView(Components[i]).CheckBoxOptions.Style := cbsJVCL;
    end;

  PreencheArvorePermissoes;
end;

procedure TForm2.PreencheArvorePermissoes;
var
  permissoes: Array [0 .. 3] of String;
  i, j, k, qtdPermissoes: Integer;
begin
  qtdPermissoes := 4;

  permissoes[0] := '19';
  permissoes[1] := '66';
  permissoes[2] := '67';
  permissoes[3] := '68';

  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        for k := 0 to Pred(qtdPermissoes) do
          if TJvCheckTreeView(Components[i]).Items.Item[j].SelectedIndex = StrToInt(permissoes[k])
          then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
    end;
  end;

end;

end.

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Sex Jul 28, 2017 12:35 pm    Assunto: Responder com Citação

Faça um teste com a mesma solução do post anterior sobre o assunto:
http://www.activedelphi.com.br/forum/viewtopic.php?p=481129&sid=4336a74b4df7d8e09259c2280770c5a4

No procedimento PreencheArvorePermissoes, antes do For altere o CascadeLevels para 0 e após o For volte para -1 para funcionar o checar todos.

Código:
procedure TForm2.PreencheArvorePermissoes;
var
  permissoes: Array [0 .. 3] of String;
  i, j, k, qtdPermissoes: integer;
begin
  qtdPermissoes := 4;

  permissoes[0] := '19';
  permissoes[1] := '66';
  permissoes[2] := '67';
  permissoes[3] := '68';

  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := 0; // Incluí esta linha
        for k := 0 to Pred(qtdPermissoes) do
          if TJvCheckTreeView(Components[i]).Items.Item[j].SelectedIndex = StrToInt(permissoes[k])
          then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
      TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := -1; // Incluí esta linha também
    end;
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Jul 28, 2017 1:43 pm    Assunto: Responder com Citação

natanbh1 escreveu:
Faça um teste com a mesma solução do post anterior sobre o assunto:
http://www.activedelphi.com.br/forum/viewtopic.php?p=481129&sid=4336a74b4df7d8e09259c2280770c5a4

No procedimento PreencheArvorePermissoes, antes do For altere o CascadeLevels para 0 e após o For volte para -1 para funcionar o checar todos.

Código:
procedure TForm2.PreencheArvorePermissoes;
var
  permissoes: Array [0 .. 3] of String;
  i, j, k, qtdPermissoes: integer;
begin
  qtdPermissoes := 4;

  permissoes[0] := '19';
  permissoes[1] := '66';
  permissoes[2] := '67';
  permissoes[3] := '68';

  for i := 0 to Pred(ComponentCount) do
  begin
    if (Components[i] is TJvCheckTreeView) then
    begin
      for j := 1 to Pred(TJvCheckTreeView(Components[i]).Items.Count) do
      begin
        TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := 0; // Incluí esta linha
        for k := 0 to Pred(qtdPermissoes) do
          if TJvCheckTreeView(Components[i]).Items.Item[j].SelectedIndex = StrToInt(permissoes[k])
          then
          begin
            TJvCheckTreeView(Components[i]).Checked
              [TJvCheckTreeView(Components[i]).Items[j]] := True;
            Break;
          end;
      end;
      TJvCheckTreeView(Components[i]).CheckBoxOptions.CascadeLevels := -1; // Incluí esta linha também
    end;
  end;
end;


Sim assim deu certo Natan BH1

Muito obrigado amigo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
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
Página 1 de 1

 
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