[Lazarus-es] Consulta sobre TTreeView

ELMO CALATAYUD e_calatayud en hotmail.com
Sab Jul 4 15:16:49 CEST 2009


Buen Dia Amigos.

 

Gracias por mantener esta lista que dia a dia nos entretien con casos y conocimiento directamente en nuestro coreo electrónico. Debo comentar que tengo un tiempo programando con Lazarus y me ha ido bién. Sin embargo, siempre hay complicaciones que se van corrigiendo poco a poco. Uno de estos casos  es el componente TTreeView. 

 

Tal como esta definido en los fuentes de lazarus, el componente  TTreeView permite mostrar el Arbol de TreeNodes pero estos TreeNodes permiten mostrar solo una columna de datos. algo asi como

 

>-- Raiz Arbol |

                     |-- Nodo 1 

                     |-- Nodo 2 

                     |-- Nodo 3 

                     |-- Nodo 4 --| 

                                        |-- Sub Nodo 4-1 

                                        |-- Sub Nodo 4-2

                                        |-- Sub Nodo 4-3

 

 

En mi caso necesito portar un codigo de Kylix donde los TreeNode pueden tener columnas adicionales que denomina subItems. la figura es algo parecida a esto

 

>-- Raiz Arbol |

                     |-- Nodo 1    | Dato 1 

                     |-- Nodo 2    | Dato 2

                     |-- Nodo 3    | Dato 3

                     |-- Nodo 4 --| Dato 4 

                                        |-- Sub Nodo 4-1 | Dato 4-1

                                        |-- Sub Nodo 4-2 | Dato 4-2

                                        |-- Sub Nodo 4-3 | Dato 4-3

 

Como ven hay una segunda columna de Datos aparte del Texto de Nodo, esto da la facilidad de poder presentar datos adicionales respecto del texto principal del Nodo y los alinea convenientemente, lo que le da una forma elegante en presetación. Claro esta, podria reemplazar el TTreeView por un TLIstView pero este componente no se aprecia tam bien con el impacto que da el TTreeView y si concateno ambos datos en una sola cadena para mostrarlo en la unica columna de dato que permite el  TTreeView, entonces los datos no quedan alineados como deben, perdiendo estetica en la presentación.

 

He pensado en utilizar el componente VirtuelTreeView que parece ideal para esto, pero aún no es del todo  estable sobre Linux. Disculpen me olvidaba mencionar que estoy trabajando en Multiplataforma y el Sistema Operativo principal de desarrollo es Linux Debian.

 

El codigo Kylix  es el siguiente:

 

// Para la Raiz

TreeNode1:=Tree1.Items.add(nil, dbBusca.Fields[0].AsString+' '+dbBusca.Fields[1].AsString);

// Dato Adicional de la Raiz

Tree1.Items[Conta].SubItems.add(FormatFloat('0.00',Saldo)); 

 

// Para los Nodos 

Tree1.Items.AddChild(TreeNode1,dbBusca.Fields[0].AsString+' '+dbBusca.Fields[1].AsString );

// Dato Adicional del Nodo

Tree1.Items[Conta].SubItems.add(FormatFloat('0.00',Saldo)); 

 

Mi Solución con Lazarus, hasta ahora va por: 

// Primero Junto todos los datos en una sola cadena y lo asigno a la variable SaldoStr

SaldoStr := dbBusca.Fields[0].AsString+' '+PadRight(dbBusca.Fields[1].AsString),120) + ' ' + PadLeft(FormatFloat('#,##0.00;(#,##0.00)',Saldo), 14);

 

// Para la Raiz

TreeNode1:=Tree1.Items.add(nil, SaldoStr);

 

// Para los Nodos 

Tree1.Items.AddChild(TreeNode1, SaldoStr);

 

Esta Solucion no me es satisfactoria del todo ya que me desalinea mucho los datos, aun usando caracteres monoespace.

 

¿Sabe alguien de alguna variante del componente TTreeView o de alga funcionalidad escondida que permita mostrar dos Columnas de Datos en los String de los TreeNodes?.

 

O de Plano, sera necesario derivar el compoente para agregarle la funcionalidad deseada, si tienen ejemplos de esto ultimo tambien les agradezco me comenten.

 

Disculpen la molestia, sus sugerencias son bienvenidas.

 

Saludos   

 

_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20090704/4966e903/attachment-0002.html>


More information about the Lazarus-es mailing list