FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Usar TListView fuera de un form
Hola amigos, tengo un problema, quiero usar un TListview que trabaje en un .h diferente del Unit.cpp de la aplicacion, o sea, que lo guardo por ejemplo en lista.h y lista.cpp y pueda usarlo con cualquier proyecto sin tener que modificarlo.
El problema es que tengo esto: Código:
#include <ComCtrls.hpp> BOOL SearchBPOnList(DWORD address, unsigned char original) { TListView *listaBPs; char original = 'c'; int valor = 1000; //Creo el listview listaBPs = new TListView(Application->MainForm); //le indico cual es su parent listaBPs->Parent = Application->MainForm; //Añadimos una columna por cada subitem listaBPs->Columns->Add(); listaBPs->Columns->Add(); //Añado un item y le añado dos subitems listaBPs->Items->Add(); listaBPs->Items->Item[listaBPs->Items->Count]->SubItems->Add(valor); listaBPs->Items->Item[listaBPs->Items->Count]->SubItems->Add(original); //Añado un item y le añado dos subitems listaBPs->Items->Add(); listaBPs->Items->Item[listaBPs->Items->Count]->SubItems->Add(valor + 1); listaBPs->Items->Item[listaBPs->Items->Count]->SubItems->Add(original); //borro el listview delete listaBPs; } ¿como tendria que hacerlo para que trabaje bien? |
#2
|
||||
|
||||
Código:
TListView *listaBPs; original = 'c'; int valor = 1000; //Creo el listview listaBPs = new TListView(Application->MainForm); listaBPs->ViewStyle = vsReport; // Para visualizar con columnas //le indico cual es su parent listaBPs->Parent = Application->MainForm; //Añadimos una columna por cada subitem SON TRES COLUMNAS listaBPs->Columns->Add(); // Para Caption listaBPs->Columns->Add(); // Para Subitem1 listaBPs->Columns->Add(); // Para Subitem2 //Añado un item y le añado dos subitems TListItem *ListItem = listaBPs->Items->Add(); // El array listaBPs->Items->Item comienza en CERO !!!! listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(valor); listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(original); //Añado un item y le añado dos subitems ListItem = listaBPs->Items->Add(); listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(valor+1); listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(original); listaBPs->Update(); // Para visualizar los cambios Sleep(1000); // Para ver que ha pasado //borro el listview delete listaBPs; Saludos. |
#3
|
||||
|
||||
Me sigue dando el mismo problema ya que el problema me lo daba en esta linea:
Código:
TListItem *ListItem = listaBPs->Items->Add(); Gracias por el interes. |
#4
|
||||
|
||||
Pues algo haces en tu código pues lo que te he expuesto funciona perfectamente (BCB5 y BCB6), siempre que exista un formulario principal (Application->MainForm)
Revisa los errores que he puesto comentados. Te expongo lo que usé para probar: Código:
#include <ComCtrls.hpp> BOOL SearchBPOnList(DWORD address, unsigned char original) { TListView *listaBPs; original = 'c'; int valor = 1000; //Creo el listview listaBPs = new TListView(Application->MainForm); listaBPs->ViewStyle = vsReport; // Para visualizar con columnas //le indico cual es su parent listaBPs->Parent = Application->MainForm; //Añadimos una columna por cada subitem SON TRES COLUMNAS listaBPs->Columns->Add(); // Para Caption listaBPs->Columns->Add(); // Para Subitem1 listaBPs->Columns->Add(); // Para Subitem2 //Añado un item y le añado dos subitems listaBPs->Items->Add(); // El array listaBPs->Items->Item comienza en CERO !!!! listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(valor); listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(original); //Añado un item y le añado dos subitems listaBPs->Items->Add(); listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(valor+1); listaBPs->Items->Item[listaBPs->Items->Count-1]->SubItems->Add(original); listaBPs->Update(); // Para visualizar los cambios Sleep(1000); // Para ver que ha pasado //borro el listview delete listaBPs; } |
#5
|
||||
|
||||
Pues es raro ya que es un proyecto normal de c++builder 6 con su form llamado Form1 el cual tiene que hacer uso de esa funcion que estará en un archivo llamado busqueda.cpp y que debe ser portable hacia otros proyectos asi que no puedo poner como nombre Form1 ni nada por el estilo al crear el listview para no tener que estar pendiente de ese cambio al cambiar de proyecto.
Ya me dices lo de que no hay un MainForm y la verdad es que yo creia que el MainForm seria Form1 en este caso pero me haces dudar. Igual el fallo viene por ahi pero no se. La idea es que coja al formulario principal del proyecto. Ya he corregido los errores que me indicas pero tengo dudas. 1-No quiero visualizarlo por pantalla ¿tengo que hacer lo del estilo y el update entonces? 2-Solo quiero guardar dos datos por fila ¿se necesitan 3 columnas o podria usar el primer valor como caption y el segundo como subitem y solo crear dos columnas? Gracias por la ayuda. |
#6
|
||||
|
||||
Añadirte que si creas un componente con dueño, este se encargará de su destrucción, por lo que no debes destruirlo.
Si quieres destruirlo tú mismo, entonces créalo así: Código:
listaBPs = new TListView((TComponent*)0); No entiendo porqué no quieres que se vea, si es un simple "almacén", es mejor que guardes los datos de otra forma, como en un TStringList, por ejemplo. Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
usar varios form a la vez | exequielmatias1 | OOP | 1 | 09-09-2013 04:11:36 |
Mensaje fuera de form | rabata2001 | Varios | 1 | 22-11-2010 13:54:26 |
Saber si el cursor esta fuera del form | LuisAlf:: | Varios | 10 | 22-04-2010 18:42:49 |
Hacer una pausa fuera del evento OnTimer y sin usar Sleep | DarkByte | Varios | 9 | 28-06-2007 04:08:00 |
ToolBar fuera del form. | afxe | Gráficos | 2 | 15-06-2006 18:48:59 |
|