Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Posicion de un elemento en un TreeView (https://www.clubdelphi.com/foros/showthread.php?t=89903)

jocaro 26-02-2016 08:25:59

Posicion de un elemento en un TreeView
 
Hola.

A ver si alguien me puede echar una mano.

Busco la manera de crear un elemento en un TreeView y que quede posicionado a continuación del elemento actual.

He probado con el método Add que lo posiciona al final del grupo de elementos y con el método Insert que lo posiciona delante del elemento actual.

¿Existe algun método que haga lo que busco?

Gracias por vuestra atención. Un saludo

ecfisa 26-02-2016 15:18:06

Hola.
Cita:

Empezado por jocaro (Mensaje 502703)
...
Busco la manera de crear un elemento en un TreeView y que quede posicionado a continuación del elemento actual.

Ejemplo:
Código Delphi [-]
procedure TForm1.btnNuevoClick(Sender: TObject);
var
  node: TTreeNode;
begin
  // Agregar a continuación del Item actualmente seleccionado
  node := TreeView1.Items.Add(TreeView1.Selected, 'Nuevo'); 

 // Hacer a node el nuevo Item seleccionado
  TreeView1.Selected := node; 

  TreeView1.SetFocus;
end;

Saludos :)

roman 26-02-2016 18:46:41

Cita:

Empezado por ecfisa (Mensaje 502720)
Código Delphi [-]
  // Agregar a continuación del Item actualmente seleccionado
  node := TreeView1.Items.Add(TreeView1.Selected, 'Nuevo');

Add agregará un nuevo nodo como último hermano del nodo, es decir, al final de la lista de hermanos. Por ello, el método sólo funcionará si el elemento seleccionado es el útimo hermano.

Cita:

Empezado por jocaro
Busco la manera de crear un elemento en un TreeView y que quede posicionado a continuación del elemento actual.

Prueba así:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  NextNode, NewNode: TTreeNode;

begin
  NextNode := TreeView1.Selected.getNextSibling();

  if Assigned(NextNode)
    then NewNode := TreeView1.Items.Insert(NextNode, 'Nuevo') // El nodo seleccionado no es el último
    else NewNode := TreeView1.Items.Add(TreeView1.Selected, 'Nuevo'); // El nodo seleccionado es el último

  TreeView1.Selected := NewNode;
  TreeView1.SetFocus;
end;

LineComment Saludos

jocaro 27-02-2016 12:08:50

Hola.

Gracias por vuestra ayuda.

Me ha funcionado perfectamente la solucion de usar add o insert dependiendo de si estoy situado en el último elemento del grupo o no, además me ha gustado la idea, me ha parecido ingeniosa.

Un saludo


La franja horaria es GMT +2. Ahora son las 16:15:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi