Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Acceder al data de un treeview (https://www.clubdelphi.com/foros/showthread.php?t=79282)

lbidi 08-08-2012 23:14:29

Hola foristas.
Lamento molestar otra vez pero tengo un pequeño problema que no he podido resolver.

Segun el siguiente codigo
Código Delphi [-]
procedure TForm1.btnAddNodeClick(Sender: TObject);
var
  nodo: TTreeNode;
begin
  Clase:= TClase.Create;
  ObjLst.Add(Clase);
  Clase.Nivel:= 'Nuevo nivel';
  Clase.Texto:= 'Nuevo texto';
  with tvCatalogo do
  begin
    Clase.Level:= TClase(Selected.Data).Level +
    StringOfChar('0', 2-Length(IntToStr(Selected.Level+1))) + IntToStr(Selected.Count + 1);  
    nodo:= Items.AddChildObject(Selected,Clase.Texto,Clase)
  end;
end;

me agrega perfectamente el nodo al arbol , pero si se borra un item del nodo, la propiedad count me estaria informando cuantos hay, pero no necesariamente el nivel que me toma es el ultimo.

ej. Si dentro de una rama tengo 9 items, el proximo seria el 10 y asi deberia crear el nuevo nodo para seguir la correlacion, pero si me borran el 5 y agrego otro mas , el count + 1, me sigue dando 9, el cual ya existe.

Como hago para obtener cual es el ultimo nivel de una rama , independientemente de que me borren n hijos en el medio ??

Espero haberme explicado.

Graciasssss

Saludoss

ecfisa 09-08-2012 03:52:31

Hola Ibidi.

Si te has explicado perfectamente. ;)

Código Delphi [-]
function ProxLevelCodigo(TV: TTreeView): string;
var
  v: Integer;
begin
  Result:= '';
  if TV.Selected.Count > 0 then
  begin
    Result := TClase(TV.Selected.Item[TV.Selected.Count-1].Data).Level;
    v:= StrToInt(Copy(Result, 3, MaxInt));
    Inc(v);
    Result:= Copy(Result,1,3)+IntToStr(v)
  end
end;

Ejemplo de llamada:
Código Delphi [-]
...
  Caption:= ProxLevelCodigo(tvCatalogo);
...
La función devuelve la cadena conformada por [level]+[ultimo_código_anterior+1] si el nodo actualmente seleccionado tiene algún hijo, o cadena vacía de lo contrario.

Saludos. :)

lbidi 09-08-2012 16:45:22

Mil gracias ecfisa.

Anduvo de maravillas...

Saludosssss


La franja horaria es GMT +2. Ahora son las 20:07:04.

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