Deixar item do Treeview destacado mesmo sem foco

Delphi

13/04/2005

olá pessoal

tenho um Treeview no meu form que recebe varios itens (ñ tem child) e ja mechi em algumas propriedades mas ñ stou conseguindo que o item selecionado fique destacado (poderia ficar em negrito e azul).
o item até recebe um destque qdo o foco esta no treeview.. mas após sair dele perde o destaque.
como faço pra deixar o item selecionado destacado mesmo sem o foco estar dentro?

abraço
Diogo


Diogoalles

Diogoalles

Curtidas 0

Respostas

Edilcimar

Edilcimar

13/04/2005

mas qualquer componente quando perde o foco perde também o destaque! o que você poderia tentar fazer é trocar a cor do item selecionado


GOSTEI 0
Massuda

Massuda

13/04/2005

como faço pra deixar o item selecionado destacado mesmo sem o foco estar dentro?
Altere o valor da propriedade [b:c7fefd996b]HideSelection[/b:c7fefd996b] do seu TreeView para False.


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

HideSelection = False, já estava setada..
Será que não teria como trabalhar com o Node e mudar a fonte dele?

valeu
Diogo


GOSTEI 0
Massuda

Massuda

13/04/2005

HideSelection = False, já estava setada..
Será que você está fazendo TreeView.Selected = nil em algum ponto de seu código que esteja sendo executado no OnExit do TreeView?


GOSTEI 0
Kapak

Kapak

13/04/2005

O Treeview está com a cor clBtnFace ?


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

a cor é uma específica.. ñ é clbtnface

quanto ao Node ñ tem como formatar?


valeu


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

complementando ,
Também não existe nil

qualquer dica mandem ai

valeu

Diogo


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

e aí galera
ainda ñ consegui resolver...
alguem poderia ajudar ?

abraço
Diogo


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

Alguém sabe como formatar a fonte de um Node? no caso do Node que estaria selecionado? pq ai estaria resolvendo o problema!

abraço
Diogo


GOSTEI 0
Beppe

Beppe

13/04/2005

Alguém sabe como formatar a fonte de um Node? no caso do Node que estaria selecionado? pq ai estaria resolvendo o problema! abraço Diogo

O Delphi não deixa fazer nada na fonte. O Windows permite botar um nó como negrito. Outro tipo de formatação acho que só pintado o nó por si mesmo(não sei se é possível).


GOSTEI 0
Kapak

Kapak

13/04/2005

Outro tipo de formatação acho que só pintado o nó por si mesmo(não sei se é possível).
É possível utilizando o Canvas do Treeview no evento onCustomDrawItem.


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

Poderia me dar uma ideia da rotina ?

valeu


GOSTEI 0
Kapak

Kapak

13/04/2005

  if Node.Selected then
  begin
    Sender.Canvas.Brush.Color := clBlack;
    Sender.Canvas.Font.Color  := clYellow;
  end
  else
  begin
    Sender.Canvas.Brush.Color := TTreeView(Sender).Color;
    Sender.Canvas.Font.Color  := TTreeView(Sender).Font.Color;
  end;



GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

olá galera.. ainda ñ resolvi tudo..ehhehehe
coloquei o código do Kapak no evento OnCustomDrawItem e funciona perfeitamente quando existe item no treeview e clico no item.. ele fica destacado.
só que falta o seguinte:
- quando eu estou no Frm2 eu adiciono itens ao treeview do Frm1.
- ai qdo fecho Frm2 e volto ao Frm1 ñ existe nenhum item com o foco marcado conforme a rotina do kapak.
- eu tentei pelo Frm2 adicionar o item no tree e executar o codigo que esta no OnCustomDrawItem mas ñ funciona.

como posso fazer com que o item seja adicionado por outro form e fique marcado logo que ativar o Frm1 ?

abraço
Diogo


GOSTEI 0
Macario

Macario

13/04/2005

Olá,
É so voce guardar o Index do Node quando for para o form2.


GOSTEI 0
Diogoalles

Diogoalles

13/04/2005

ihhhhh,
testei aqui mas ñ sei se entendi...
guardar como?
e como executar o ondrawitem mesmo ñ clicando?

abraço
valeu
Diogo


GOSTEI 0
Kapak

Kapak

13/04/2005

Vc quer que o ítem adicionado pelo Form2 fique selecionado ?
Bom, se for isso, a função que adiciona retorna um TTreeNode.
É só colocar:
Form1.Treeview1.Items.Add(nil, ´Item do Form2´).Selected := true;


GOSTEI 0
POSTAR