Ver Mensaje Individual
  #14  
Antiguo 13-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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
Hola aguml.
Cita:
Empezado por aguml Ver Mensaje
prefiero el listview porque ahora solo estoy probando con dos columnas pero seran 5 o 6.
Es que aquí, en el mensaje #7:
Cita:
Empezado por aguml Ver Mensaje
¿en un TStringList se puede tener dos columnas? si es asi me vale igual.
mencionaste que un TStringList igualmente te servía...
Cita:
Empezado por aguml Ver Mensaje
la opcion que mas me gusta seria crear una estructura y un tlist que administre las estructuras. El tlist tendria que poder hacer Add, delete, clear, y poder leer cualquiera de los miembros de cada estructura. ¿Como seria eso? No tengo ni idea de usar tlist.
Te hice un ejemplo que usa un TList para almacenar estructuras que a su vez contienen un TStringList, espero te sirva:
Código:
...
TList *List;

typedef struct TNodo{
  int nro;
  String cad;
  TStrings *SL;
} *PNodo;

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  List = new TList;
  for(int i=0; i<50 ;i++) {
     PNodo nd = new TNodo;
     nd->nro = i;
     nd->cad = "Nodo ";
     nd->SL = new TStringList;
     for (int j=0; j<10; j++)
      nd->SL->Add("SL"+IntToStr(i+j));
     List->Add((void*)nd);
  }
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  PNodo nd = new TNodo;
  String str;

  Memo1->Clear();
  List->Pack();
  for(int i=0; i<List->Count; i++) {
    nd = ((TNodo*)List->Items[i]);
    Memo1->Lines->Add(nd->cad+IntToStr(nd->nro));
    Memo1->Lines->Add("------------------------");
    str="";
    for(int j=0; j<nd->SL->Count;j++)
      str += nd->SL->Strings[j]+ ", ";
    str.SetLength(str.Length()-2);
    Memo1->Lines->Add(str);
    Memo1->Lines->Add("");
  }
  delete nd;
}
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  List->Clear();
  for(int i=0;i<List->Count;i++) {
    PNodo nd = new TNodo;
    nd = ((TNodo*)List->Items[i]);
    delete nd->SL;
    delete nd;
  }
}
Veras que recorro List para ir liberando manualmente los nodos, ya que una instancia de TList no es propietaria de los objetos que contiene. En el caso de SL no es necesario ya que no almacena objeto alguno.

Saludos
__________________
Daniel Didriksen

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