Hola aguml.
Cita:
Empezado por aguml
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
¿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
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