Imagem no ultimo nivel do treeview
Galera, consegui colocar uma imagem no ultimo nível do meu treeview, mas quando clico no nivel acima onde a imagem não deveria aparecer, a imagem aparece assim como mostra a figura acima.
Estou usando um imagelist ligado ao treeview e no evento show do pagecontrol que o treeview é preenchido de acordo com o código abaixo:
procedure TFormDlgEFD.tbResultadoShow(Sender: TObject);
var
i,x, ind : Integer;
stLinha, nota, titulo : String;
begin
// 1º Nó -> Contém os números da nota
// Nós filhos -> Testes referentes áquela nota
trvResultado.Images := Situacao01;
ClearTree;
for i := 0 to AnaliseEFD1.Cruzamentos.Count-1 do
begin
if i mod 3 = 0 then
Inc(x);
AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento := FormatFloat('000', x);
end;
stLinha := 'Análise de Sped Fiscal 2011 - Teste Executado em '+ DateToStr(Date);
trvResultado.Items.Add(nil,stLinha);
i := 0;
nota := '';
while i < AnaliseEFD1.Cruzamentos.Count do
begin
if (nota = '') or ( AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento <> nota ) then
begin
nota := AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento;
trvResultado.Items.AddChild(trvResultado.Items[0],nota);
ind := trvResultado.Items[0].Count - 1;
trvResultado.Items.Item[0].SelectedIndex := ind;
trvResultado.Items[0].Item[ind].ImageIndex := 2;
end;
AnaliseEFD1.Regras.ItemSelecionado := AnaliseEFD1.Cruzamentos.ItemCruzamento[i].NrRegra;
titulo := AnaliseEFD1.Regras.RegraAtual.ID + ') ' + AnaliseEFD1.Regras.RegraAtual.Regra;
trvResultado.Items.AddChild(trvResultado.Items[0].Item[ind],titulo);
trvResultado.Items[0].ImageIndex := 2;
trvResultado.Items[0].Item[ind].ImageIndex := 2;
trvResultado.Items.Item[0].SelectedIndex := ind;
Inc(i);
end;
end;
A questão é qua a imagem não deveria aparecer no nivel 001. Espero uma ajuda.
Jordelino Santos
Curtidas 0
Respostas
Wilson Junior
04/03/2011
No evento GetImageIndex da sua TreeView, coloque:
Isto é só para vc ter uma idéia...
Espero ter colaborado.
var
idxImagem: integer;
begin
idxImagem := -1;
if not Node.HasChildren then
idxImagem := 0 { Coloque aqui o indice da sua imagem }
;
Node.ImageIndex := idxImagem;
Node.SelectedIndex := idxImagem;
Node.StateIndex := idxImagem;
end;
Isto é só para vc ter uma idéia...
Espero ter colaborado.
GOSTEI 0
Emerson Nascimento
04/03/2011
não entendi muito bem a situação, mas creio que deva estar aparecendo a imagem por conta da instrução das linhas:
trvResultado.Items[0].Item[ind].ImageIndex := 2;
veja da forma abaixo o resultado é o esperado:
procedure TFormDlgEFD.tbResultadoShow(Sender: TObject);
var
i, x, ind : Integer;
stLinha, nota, titulo: string;
tvItem1, tvItem2: TTreenode;
begin
// 1º Nó -> Contém os números da nota
// Nós filhos -> Testes referentes áquela nota
trvResultado.Images := Situacao01;
trvResultado.Items.BeginUpdate; // prepara a treeview para atualizações
trvResultado.Items.Clear; // limpa os itens da treeview
for i := 0 to AnaliseEFD1.Cruzamentos.Count-1 do
begin
if i mod 3 = 0 then
Inc(x);
AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento := FormatFloat('000', x);
end;
stLinha := 'Análise de Sped Fiscal 2011 - Teste Executado em '+ DateToStr(Date);
trvResultado.Items.Add(nil,stLinha); // item 0
i := 0;
nota := '';
while i < AnaliseEFD1.Cruzamentos.Count do
begin
if (nota = '') or (AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento <> nota) then
begin
nota := AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento;
tvItem1 := trvResultado.Items.AddChild(trvResultado.Items[0],nota);
end;
AnaliseEFD1.Regras.ItemSelecionado := AnaliseEFD1.Cruzamentos.ItemCruzamento[i].NrRegra;
titulo := AnaliseEFD1.Regras.RegraAtual.ID + ') ' + AnaliseEFD1.Regras.RegraAtual.Regra;
tvItem2 := trvResultado.Items.AddChild(tvItem, titulo);
tvItem2.ImageIndex := 2;
tvItem2.SelectedIndex := 2;
Inc(i);
end;
trvResultado.Items.EndUpdate; // aplica as atualizações efetuadas na treeview
end;
trvResultado.Items[0].Item[ind].ImageIndex := 2;
veja da forma abaixo o resultado é o esperado:
procedure TFormDlgEFD.tbResultadoShow(Sender: TObject);
var
i, x, ind : Integer;
stLinha, nota, titulo: string;
tvItem1, tvItem2: TTreenode;
begin
// 1º Nó -> Contém os números da nota
// Nós filhos -> Testes referentes áquela nota
trvResultado.Images := Situacao01;
trvResultado.Items.BeginUpdate; // prepara a treeview para atualizações
trvResultado.Items.Clear; // limpa os itens da treeview
for i := 0 to AnaliseEFD1.Cruzamentos.Count-1 do
begin
if i mod 3 = 0 then
Inc(x);
AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento := FormatFloat('000', x);
end;
stLinha := 'Análise de Sped Fiscal 2011 - Teste Executado em '+ DateToStr(Date);
trvResultado.Items.Add(nil,stLinha); // item 0
i := 0;
nota := '';
while i < AnaliseEFD1.Cruzamentos.Count do
begin
if (nota = '') or (AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento <> nota) then
begin
nota := AnaliseEFD1.Cruzamentos.ItemCruzamento[i].Documento.NumeroDocumento;
tvItem1 := trvResultado.Items.AddChild(trvResultado.Items[0],nota);
end;
AnaliseEFD1.Regras.ItemSelecionado := AnaliseEFD1.Cruzamentos.ItemCruzamento[i].NrRegra;
titulo := AnaliseEFD1.Regras.RegraAtual.ID + ') ' + AnaliseEFD1.Regras.RegraAtual.Regra;
tvItem2 := trvResultado.Items.AddChild(tvItem, titulo);
tvItem2.ImageIndex := 2;
tvItem2.SelectedIndex := 2;
Inc(i);
end;
trvResultado.Items.EndUpdate; // aplica as atualizações efetuadas na treeview
end;
GOSTEI 0
Jordelino Santos
04/03/2011
Quero agradecer ao Emerson e ao Lehapan. Funcionou.
GOSTEI 0