![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Buenas,
Cita:
Como el ListView lo tengo en Form1 en Unit1 pues traslado el valor que me interesa con snf->Proto() donde snf es un objeto de la clase Snifer, así paso el valor que me interesa (en este caso el protocolo) del Unit3 al Unit1 para usarlo dentro del método de ListViewCustomDrawItem como lo he indicado anteriormente. Según el código: Código:
// Agregas un TListItem nuevo:
with ListView1.Items.Add do
if snf2.Proto = 'TCP' then
Data := Pointer(0)
else
if snf.Proto = 'UDP'
Data := Pointer(1)
else
Data := Pointer(2);
ListViewCustomDrawItem. No lo tengo muy claro. Gracias |
|
#2
|
|||
|
|||
|
Hola...
Ese código lo vas a poner en donde agregas los items en el ListView... Busca en tu código donde haces ListView.Items.Add y ahí lo puedes adaptar o agregar... Por ejemplo si tienes en tu código algo como: Código:
TListItem AItem = ListView->Items->Add;
AItem->Caption = snf2->Proto();
/* Aquí agregas el código */
if (AItem->Caption = '"TCP")
{
AItem->Data = Pointer(0);
}
else
if (AItem->Caption = "UDP")
{
AItem->Data = Pointer(1);
}
else
{
AItem->Data = Pointer(2);
}
Saludos... |
|
#3
|
|||
|
|||
|
Buenas tardes!
Todavía no lo tengo muy claro, te voy a plantear mis dudas. Cita:
Código:
void __fastcall Thread::Mostrarlineas()
{
TListItem* item = Form1->ListView->Items->Add();
item->Caption = cadena1;
item->SubItems->Add(cadena2);
item->SubItems->Add(cadena3);
}
Código:
void __fastcall Thread::Mostrarlineas()
{
TListItem* item = Form1->ListView->Items->Add();
//agrego otro objeto item
TListItem* dataitem = Form1->ListView->Items->Add();
dataitem->Caption = cadena2; //cadena2 indica el protocolo(UDP,TCP..)
if (dataitem->Caption == "TCP")
{
dataitem->Data = Pointer(0);
}
else if (dataitem->Caption == "UDP")
{
dataitem->Data = Pointer(1);
}
else
{
dataitem->Data = Pointer(2);
}
item->Caption = cadena1;
item->SubItems->Add(cadena2);
item->SubItems->Add(cadena3);
}
Gracias. |
|
#4
|
|||
|
|||
|
Hola...
Lo que tienes que hacer es: Código:
void __fastcall Thread::Mostrarlineas()
{
TListItem* item = Form1->ListView->Items->Add();
item->Caption = cadena1;
item->SubItems->Add(cadena2);
item->SubItems->Add(cadena3);
// Aquí el código:
if (item->Caption == "TCP")
{
item-Data = 0;
}
else if (item->Caption == "UDP")
{
item->Data = 1;
}
else
{
item->Data = 2;
}
}
También toma en cuenta que item->Data es una propiedad de tipo Pointer, esto al menos en Delphi, en C++ no se como se trate. También la asignación de los datos a item->Data puede que esté erronea, ya que C++ no es mi fuerte. Una vez que logres esto, el códido en el evento OnCustomDraw del TListView puede ser una estructura switch..case sobre la propiedad item->Data... Espero te sirva... Saludos... |
|
#5
|
|||
|
|||
|
Hola de nuevo,
entonces si mi columna es la tercera me quedaría así: Código:
void __fastcall Thread::Mostrarlineas()
{
TListItem *item = Form1->ListView->Items->Add();
item->Caption = cadena1;
item->Caption = Add(cadena2);
item->Caption = Add(cadena3);
//codigo nuevo
if (item->SubItems->Strings[2] == "TCP")
{
item->Data = 0;
}
else if (item->SubItems->Strings[2] == "UDP")
{
item->Data = 1;
}
else
{
item->Data = 2;
}
}
Cuando compilo me saca, el builder me saca un error: no puede convertir un int en un *void ya que item->data devuelve un *void y estoy asignadole un int. Había pensando crear una variable para recoger el contenido de item->Data algo como: Código:
item->Data = var también había pensado en convertir item->Data en un int: Código:
int var; int (item->Data) = var; No se puede modificar un objeto constante. Hay alguna alternativa? Gracias. |
|
#6
|
|||
|
|||
|
Muy buenas!
Alguien le puede echar un vistazo a este hilo plisss, que se me quedó la duda sin resolver . Y nu se porqué nu me sale...Gracias de antemano! |
|
#7
|
||||
|
||||
|
A ver, según yo, item->Data es un apuntador a void para permitir que apunte a lo que necesitemos y bastaría hacer el moldeo:
Código:
(int *) item->Data = 84; |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Extraño comportamiento de delphi 7 | smessina | Varios | 5 | 18-03-2008 12:50:54 |
| Extraño comportamiento de Firebird 2.0 | TrUnkS | Firebird e Interbase | 4 | 06-01-2007 23:05:57 |
| Comportamiento extraño de DisplayFormat | Thales | Conexión con bases de datos | 0 | 02-12-2005 21:56:32 |
| Comportamiento extraño de Delphi | walrus | Varios | 3 | 05-08-2004 10:04:32 |
| Comportamiento extraño con InnoBD | brandolin | MySQL | 0 | 20-10-2003 14:34:09 |
|