Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-01-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
TListView:mostrar datos desde un bucle

Hola, estoy probando sacar unos datos desde un bucle mediante el TListView, pero sólo he conseguido que se muestre la primera fila de datos, con esto:

Código:
TListItem * Itema;
Itema =  ListView1->Items->Add();
 //for(int i = 0; i<5; i++){
 Itema->Caption = "tema1";
 Itema->SubItems->Add("tema2");
//}
tal como está el código me muestra:

colum1 colum2 (esto es la cabecera)
tema1 tema2

pero, aun dejando el for sin comentar y suponiendo que asi debería sacarme cinco filas de datos tal como:

colum1 colum2 (esto es la cabecera)
tema1 tema2
... ...
tema1 tema2

NO lo hace, que estoy haciendo mal?

gracias

Última edición por dec fecha: 18-01-2008 a las 14:06:36.
Responder Con Cita
  #2  
Antiguo 18-01-2008
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,

Es curioso, porque, creo que el problema está en usar la misma variable. Creo que esta instrucción:

Código:
Itema =  ListView1->Items->Add();
... debería estar dentro del bucle. En Delphi podría usarse la magia del "width", que creo que no existe en C++ Builder:

Código Delphi [-]
for i := 0 to 5 do begin
  with ListView.Items.Add do begin
    Caption := 'Tema 1';
    SubItems.Add('Subtema 1');
  end;
end;

Aunque lo hago de memoria y puede que esté equivocándome, creo que por ahí van los tiros.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 18-01-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
Tienes razón, eso funciona, gracias!

y... entonces si quisiera sacar los datos en un TListView como antes pero los datos los genera un bucle for o while como se haría?
Responder Con Cita
  #4  
Antiguo 18-01-2008
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,

Para "sacar" los datos del "TListView" (si entiendo bien) debes recorrer sus elementos o "items". Fíjate que la propiedad "Items" tiene a su vez una propiedad "Count". Se trata de recorrer los elementos, sabiendo que la cuenta empieza desde 0 hasta "Count -1".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 18-01-2008
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Ejemplo de insertar datos en un TListView:

Código:
 
while (!DataModule->DataSource->DataSet->Eof)
{
      TListItem* lista= lvSalas->Items->Add();
      lista->Caption=DataModule->DataSource->DataSet->FieldByName("CLIENTE_CODIGO")->AsString;
      lista->SubItems->Add(DataModule->DataSource->DataSet->FieldByName("CLIENTE_NOMBRE")->AsString);
      DataModule->DataSource->DataSet->Next();
}

Ejemplo de recorrer un TListView:

Código:
 
for (int i=0; i < ListView1->Items->Count; i++)
{
    ...=ListView1->Items->Item[i]->Caption;
    ...=ListView1->Items->Item[i]->SubItems [0][0];
}
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.

Última edición por Gabo fecha: 18-01-2008 a las 18:26:16.
Responder Con Cita
  #6  
Antiguo 22-01-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
Hola otra vez, he estado mirando los códigos y en:

Código:
while (!DataModule->DataSource->DataSet->Eof)
{
      TListItem* lista= lvSalas->Items->Add();
      lista->Caption=DataModule->DataSource->DataSet->FieldByName("CLIENTE_CODIGO")->AsString;
      lista->SubItems->Add(DataModule->DataSource->DataSet->FieldByName("CLIENTE_NOMBRE")->AsString);
      DataModule->DataSource->DataSet->Next();
}
creo que

!DataModule->DataSource->DataSet

será como un archivo donde contiene los datos y mediante TListView los vas mostrando en pantalla.

Pero yo querría cómo mostrar datos en un TListView de un bucle for que va generando unos datos, pongo un ejemplo:
tengo en un Unit2.h

Código:
class Recorrer
{
 private:
          String cadena;
 public:
          void FuncionRec();
          String DevCadena(void){return cadena;}
}
tengo un un Unit2.cpp

Código:
void Recorrer::FuncionRec()
{
    int i;
    for(i=0; i<5; i++)
    {
      cadena = "hola mundo";
      cadena2="adios mundo";
    }
}
Y ahora en el Form1 del Unit1 agrego el componente TListView y en Unit.cpp:

Código:
Recorrer *re = new Recorrer();
re->FuncionRec();  //llamo a la funcion que contiene el for

TListItem *Itema;
Itema = ListView1->Items->Add();
Itema->Caption = re->DevCadena();
Itema->SubItems->Add(re->DevCadena2());

delete re;
Pero con lo anterior sólo me muestra el contenido del for una vez, ¿cómo se podría hacer que se mostrase las veces indicadas en la variable i? Porque la propiedad Count de Items es para cuando recorres un TListView, pero si inicialmente no tengo nada
Responder Con Cita
  #7  
Antiguo 23-01-2008
Ziara Ziara is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
Ziara Va por buen camino
El fallo está en que:

Código:
class Recorrer
{
 private:
          String cadena;
 public:
          void FuncionRec();
          String DevCadena(void){return cadena;}
}
se va machacando las variables cadena y cadena 2 por lo cual cuando en el Unit1 se llama a:

Código:
Recorrer *re = new Recorrer();
re->FuncionRec();  //llamo a la funcion que contiene el for

TListItem *Itema;
Itema = ListView1->Items->Add();
Itema->Caption = re->DevCadena();
Itema->SubItems->Add(re->DevCadena2());

delete re;
únicamente muestra la última iteración en el ListView.

Hay alguna forma en un for de preservar los mismas variables sin que se machaquen y así poder mostrarla en el ListView, o si no... alguna alternativa?
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
Mostrar Imagen remota ( desde internet ) MRSAM Internet 4 30-11-2006 22:28:57
Mostrar archivo de texto desde una ubicación determinada. creus Varios 1 13-11-2006 15:30:15
Mostrar archivos y directorios en TListView Drake C++ Builder 1 12-01-2006 15:48:54
bucle dentro de un bucle Cosgaya Varios 2 06-06-2005 07:05:16
como hago para mostrar un elemento especifico de TListView? carlos007 Varios 3 17-08-2003 21:54:36


La franja horaria es GMT +2. Ahora son las 09:44:01.


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