Organização de itens no Treeview - CustomSort
Pessoal, alguém poderia me dar uma ajuda no uso do método CustomSort?
Acredito que este método possa me resolver o problema que estou tendo e que não foi possível resolver nem com SortType nem com AlfaSort.
Valeu!
wbb
Acredito que este método possa me resolver o problema que estou tendo e que não foi possível resolver nem com SortType nem com AlfaSort.
Valeu!
wbb
Wbb
Curtidas 0
Respostas
Marcelo Saviski
07/03/2005
Esse CustomSort é um evento do TreeView? eu não tenho o Delphi aqui para poder ver
GOSTEI 0
Wbb
07/03/2005
Não. É um método.
GOSTEI 0
Marcelo Saviski
07/03/2005
mas não tem um evento, tipo OnCustomSort, ou algo parecido que aconteça quando chama o TreeView.CustomSort?
se tiver coloque o cabeçalho dele aqui...
se tiver coloque o cabeçalho dele aqui...
GOSTEI 0
Wbb
07/03/2005
O Treeview, na versão nativa do Delphi 5 Enterprise (que estou usando), não possui o evento OnCustomSort, nem nada relacionado a organização dos itens.
wbb
wbb
GOSTEI 0
Marcelo Saviski
07/03/2005
O Evento é OnCompare
Chame
no primeiro parametro vc passaria uma função para comparar um item com outro, se vc passar nil ele usa o evento OnCompare
o 2º parametro e um valor qualquer, ele vai ser repassado no parametro Data no evento.
no 3º, se indicar True, vai fazer as comparações com os primeiros itens itens, depoios com os subitens, os subitens dos subitens e assim vai
se indicar false compara apenas os primeiros nodes
vc pode chamala para um Node especifico também, não apenas para o TreeView inteiro
quando executar o método CustomSort, o evento OnCompare vai ser acionado, vc deve comparar o Node1 com o Node2
se o Node1 deve ficar acima do Node2 então altere o parametro Compare para um valor menor que zero, caso deva ficar abaixo, altere para um valor maior que zero.
Ou talvez seja o contrário, menor que zero para uma coisa e maior para outra, tem que testar.
para testar, vc poderia fazer isso: no OnCompare
e chame o CustomSort
Nessa caso ele ordenaria alfabéticamente apenas os Nodes que estiverem dentro do primeiro item do TreeView, sem ordenar os subitens deles nem os outros itens
Espero que ajude
procedure TreeViewCompare(Sender: TObject; Node1, Node2: TTreeNode; Data: Integer; var Compare: Integer)
Chame
TreeView.CustomSort(nil, 0 True|False);
no primeiro parametro vc passaria uma função para comparar um item com outro, se vc passar nil ele usa o evento OnCompare
o 2º parametro e um valor qualquer, ele vai ser repassado no parametro Data no evento.
no 3º, se indicar True, vai fazer as comparações com os primeiros itens itens, depoios com os subitens, os subitens dos subitens e assim vai
se indicar false compara apenas os primeiros nodes
vc pode chamala para um Node especifico também, não apenas para o TreeView inteiro
TreeView.Items[0].CustomSort(nil, 0, True|False);
quando executar o método CustomSort, o evento OnCompare vai ser acionado, vc deve comparar o Node1 com o Node2
se o Node1 deve ficar acima do Node2 então altere o parametro Compare para um valor menor que zero, caso deva ficar abaixo, altere para um valor maior que zero.
Ou talvez seja o contrário, menor que zero para uma coisa e maior para outra, tem que testar.
para testar, vc poderia fazer isso: no OnCompare
Compare := CompareText(Node1.Text, Node2.Text);
e chame o CustomSort
TreeView.Items[0].CustomSort(nil, 0, False);
Nessa caso ele ordenaria alfabéticamente apenas os Nodes que estiverem dentro do primeiro item do TreeView, sem ordenar os subitens deles nem os outros itens
Espero que ajude
GOSTEI 0