Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Perdido con el TListView (https://www.clubdelphi.com/foros/showthread.php?t=24701)

bustio 30-08-2005 23:52:56

Perdido con el TListView
 
Hola:
Mi pregunta es bien sencilla, pero no se por que el resultado no me sale. Resulta ser que yo tengo un TListView y un TImageList enlazado al TlistView. Tambien tengo un TSrtingList con elementos varios, que pueden ser SERVIDORES o no(P. Ej: 172.17.42.235 IsServer.... 172.17.42.236 ). A medida que recorro la lista pues en dependencia del tipo que tenga asigno un icono u otro del ImageList y como caption annado el Ip que contiene la lista.
Esta es mi idea... el problema viene dado a que no se como lograrlo!!!

Veane ste codigo y diganme donde esta el error:

Código Delphi [-]
procedure Llenar ListView;
var
  Cant : Integer;
  i       : Integer;
  Elem  : TListItem;
begin
  For i := 0 to ListaComputadoras.Count - 1 do
  begin
    If DeterminaTipo(ListaComputadoras[i]) = Server then
    begin
       Elem := TListItem.Create(ListView.Items);
       Elem.ImageIndex := 2;
       Elem.caption := listaComputadoras[i].Text;
      ListView.Items.Add(Elem);
   end;
end;

{NOTA: Este codigo lo escribo aqui de memoria... no es exacto al que tengo implementado pero si es muy semejante}
Y elresultado es que me inserta la imagen, pero no el texto.

La pregunta en concreto es como puedo annadir un nuevo item en RunTime a un LIstView cambiando su Image y su Caption en dependencia de lo que lea de mi lista???

Fran^^ 31-08-2005 03:17:36

El problema que planteas, se puede resolver de una forma muy sencilla. Basta con declarar una variable de tipo TListItem y seguidamente, añadirlo al ListView.

Puede que este código de ejemplo te sirva:

var
servidor: TListItem;
begin
with ListView do
begin
servidor:=items.add; // Añade el item a la lista
// Aqui puedes asignar las propiedades del elemento
servidor.caption:='prueba';
end;
end;

Si quieres añadir elementos en la misma fila donde has insertado el elemento, solo bastará con emplear la propiedad "subitems.add'.
Espero que te sirva de ayuda.
Saludos!! :)

Ohcan 31-08-2005 11:30:45

Hola Bustio,

Te paso un código que uso para insertar en los ListViews.
Espero que te ayude.
Código Delphi [-]
 procedure TwPrincipal.InsertaMsg(ListView:TListView; const Mensaje: String);
 begin
   //Para insertar mensajes en ListViews
   ListView.SmallImages := ListaIconosLv;
   ListView.Items.Add;
   ListView.Items[ListView.Items.Count-1].Caption := 'ElCaption';
   ListView.Items[ListView.Items.Count-1].ImageIndex := 2;
     ListView.Items[ListView.Items.Count-1].SubItems.Add('UnSubitem');
   ListView.Items[ListView.Items.Count-1].SubItems.Add(Mensaje);
 end;
Saludos.

bustio 01-09-2005 21:19:01

Respondiendo...
 
Muchisismas gracias!!!

Con este ultimo mensjae pude resolver mi problema!

delphi.com.ar 01-09-2005 21:40:43

Cita:

Empezado por Ohcan
Te paso un código que uso para insertar en los ListViews.
Espero que te ayude.
Código Delphi [-]
 procedure TwPrincipal.InsertaMsg(ListView:TListView; const Mensaje: String);
 begin
   //Para insertar mensajes en ListViews
   ListView.SmallImages := ListaIconosLv;
   ListView.Items.Add;
   ListView.Items[ListView.Items.Count-1].Caption := 'ElCaption';
   ListView.Items[ListView.Items.Count-1].ImageIndex := 2;
     ListView.Items[ListView.Items.Count-1].SubItems.Add('UnSubitem');
   ListView.Items[ListView.Items.Count-1].SubItems.Add(Mensaje);
 end;

Lo mismo pero un poquito mas veloz:
Código Delphi [-]
 procedure TwPrincipal.InsertaMsg(ListView:TListView; const Mensaje: String);
 begin
   with ListView.Items.Add do
   begin
     Caption := 'ElCaption';
     ImageIndex := 2;
     SubItems.Add('UnSubitem');
     SubItems.Add(Mensaje);
   end;
 end;
[/quote]

dec 01-09-2005 22:03:35

1 Archivos Adjunto(s)
Hola,

Lo que propone Federico no solamente es más veloz (si así es) sino que tiene pleno sentido. Porque cuando se añaden elementos en un "TListView" se hace precisamente eso, se añaden, es decir, no es preciso indicar que el elemento añadido ocupe el último lugar, ya que es así "por defecto".

En caso de quererse insertar elementos en la lista en una posición determinada se cuenta con el método "Insert" de la propiedad "Items" de los "TListView". Puede verse claramente lo que digo en el ejemplo que he preparado mientras Federico escribía el anterior mensaje adelantándose así al mismo ;)

delphi.com.ar 01-09-2005 22:06:28

Cita:

Empezado por dec
...Federico escribía el anterior mensaje adelantándose así al mismo...

Tenemos un problemita nosotros con eso!!... vamos a tener que implementar alguna "aviso de respuesta"!
:D :D :D


La franja horaria es GMT +2. Ahora son las 05:55:09.

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