Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2013
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 129
Poder: 18
ZayDun Va por buen camino
Agregar datos a Listview

Hola, tengo un listview con 3 columnas [Usuario] - [Puntos] - [Fecha], el problema es que los datos no los recibo a la misma vez para utilizar este metodo..

Código Delphi [-]
with ListView1.Items.Add do
Begin
SubItems.Add(Usuarios));
SubItems.Add(Puntos));
SubItems.Add(Fechas ));

Primero muestro la lista de usuarios y cuando quiero cargar los puntos no se como indicarle que los cargue en el SubItems "[Puntos]" ¿Alguna idea?
Responder Con Cita
  #2  
Antiguo 12-09-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puedes acceder a los "SubItems" de los elementos en cualquier momento. Tendrías que escribir algo parecido a esto:

Código Delphi [-]
 ListView1.Items[ index ].SubItems[ subIndex ] := 'Nuevo valor';

Donde "index" es el índice del elemento al que quieres acceder, y "subIndex" el del "subitem" al que quieres acceder. Nota que "ListView" tiene algunos método útiles como "HasSubItems" y otros que no recuerdo ahora.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 12-09-2013
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 129
Poder: 18
ZayDun Va por buen camino
Gracias por la ayuda, al ejecutar el siguiente código

Código Delphi [-]
If Pos ('@Puntos',XPuntos)>0 Then
Begin
Delete (XPuntos,1,Pos(' ',XPuntos));
ListView1.Items[1].SubItems[2] := XPuntos;
End;

@Puntos es el inicio de la cadena que contiene los puntos
XPuntos contiene la lista completa de puntos, Ejemplo:

@Puntos 15
@Puntos 42
@Puntos 53
...

Al ejecutar me aparece un Access Violation, aun no se muy bien el motivo, seguiré buscando donde esta el problema.
Responder Con Cita
  #4  
Antiguo 12-09-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No debería haber problema si accedes a elementos y subelementos realmente existentes. Recuerda que los índices comienzan en "cero". Tal vez lo que ocurra es que tu lista tiene dos subelementos, de manera que para acceder al segundo de ellos debes escribir: "SubItems[ 1 ]", y no "SubItems[ 2 ]", que no existiría, y, de ahí el "Access violation".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 12-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ZayDun,

Cita:
Empezado por ZayDun
...tengo un listview con 3 columnas [Usuario] - [Puntos] - [Fecha]...muestro la lista de usuarios y cuando quiero cargar los puntos no se como indicarle que los cargue en el SubItems "[Puntos]"...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

   ListView1.ViewStyle := vsReport;

   ListView1.Columns.add;
   ListView1.Columns[0].caption := '';
   ListView1.Columns[0].Width := 0;

   ListView1.Columns.add;
   ListView1.Columns[1].caption := 'Usuarios';
   ListView1.Columns[1].Width := 200;

   ListView1.Columns.add;
   ListView1.Columns[2].caption := 'Puntos';
   ListView1.Columns[2].Width := 200;

   ListView1.Columns.add;
   ListView1.Columns[3].caption := 'Fechas';
   ListView1.Columns[3].Width := 200;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
begin

   ListView1.Clear;
   for i := 1 to 10 do
      with ListView1.Items.Add do
      begin
         Subitems.Add('Usuario-' + IntToStr(i));
         Subitems.Add('');
         Subitems.Add('');
      end;

end;

procedure TForm1.Button2Click(Sender: TObject);
var
   i : Integer;

begin

   for i := 0 to ListView1.Items.Count - 1 do
      with ListView1.Items[i]do
      begin
         Subitems.Strings[1] := 'Punto-' + IntToStr(i+1);
         Subitems.Strings[2] := 'Fecha-' + IntToStr(i+1) + '  ' + DateToStr(Now);
      end;

end;

end.
El código anterior crea tres columnas en un componente TListView, cargando primero los datos de la columna 1 (Usuarios) y luego los datos de las columnas 2 y 3 (Puntos y Fechas).

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 12-09-2013 a las 21:46:33.
Responder Con Cita
  #6  
Antiguo 12-09-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Recordemos que "tres columnas" no significan aquí "tres subitems". La primera columna se establece con la propiedad "Caption" de los "Items", mientras que las dos siguientes columnas sí son ya "SubItems". Creo que de ahí se deriva el error: en la lista no hay tres "subitems" y como los índices comienzan en cero, no puede accederse al subitem 2 porque este no existe: la columna 3, o sea el subitem 2, tiene el índice 1.

No sé si me explico.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 12-09-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por dec Ver Mensaje
Hola,

Recordemos que "tres columnas" no significan aquí "tres subitems". La primera columna se establece con la propiedad "Caption" de los "Items", mientras que las dos siguientes columnas sí son ya "SubItems". Creo que de ahí se deriva el error: en la lista no hay tres "subitems" y como los índices comienzan en cero, no puede accederse al subitem 2 porque este no existe: la columna 3, o sea el subitem 2, tiene el índice 1.

No sé si me explico.
Hola dec.

Me quitaste las palabras de la boca...

Justamente estaba por decir que la asignación debería ser:
Código Delphi [-]
...
  for i := 1 to n do
    with ListView1.Items.Add do
    begin
       Caption := '';
       Subitems.Add('');
       Subitems.Add('');
    end;
...
De otro modo los valores de "usuario" quedarían en la columan "puntos" .

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 12-09-2013 a las 22:43:04.
Responder Con Cita
  #8  
Antiguo 13-09-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ZayDun,

Continuación del Msg #5:

Cita:
Empezado por nlsgarcia (Msg #5)
El código anterior crea tres columnas en un componente TListView, cargando primero los datos de la columna 1 (Usuarios) y luego los datos de las columnas 2 y 3 (Puntos y Fechas).
Lo cual se puede expresar con más detalle en función de lo comentado en los Msgs #6 y #7:
Cita:
El código anterior crea cuatro columnas en un componente TListView, cargando primero los datos de la Columna-1,Subitems-0 (Usuarios) y luego los datos de la Columna-2,Subitems-1 (Puntos) y Columna-3,Subitems-2 (Fechas), la Columna 0 no se utiliza en este ejemplo.
Nota: La Columna 0 se utiliza en un componente TListView para establecer el nombre de la fila (Propiedad Caption) y/o una imagen de la fila (Propiedades LargeImages, StateImages y SmallImages asociadas a un componente ImageList), como se muestra a continuación:



Revisa estos links:
Cita:
Mostrando información en un ListView (I) : http://delphiallimite.blogspot.com/2...istview-i.html

Mostrando información en un ListView (II) : http://delphiallimite.blogspot.com/2...stview-ii.html

Mostrando información en un ListView (y III) : http://delphiallimite.blogspot.com/2...istview-y.html
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-09-2013 a las 01:18:48.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Zeos agregar datos a listview jonydread Conexión con bases de datos 2 13-04-2013 07:18:03
Delphi for PHP: Agregar itemes a un Listview KeichiMinamoto PHP 3 27-09-2012 20:13:15
como agregar texto a un listview kurono Varios 4 10-11-2009 04:23:23
Introducir datos en un ListView chinchan C++ Builder 4 22-02-2009 22:37:31
Agregar subitems a un ListView nax OOP 3 30-11-2004 20:45:55


La franja horaria es GMT +2. Ahora son las 15:23:44.


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
Copyright 1996-2007 Club Delphi