Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

escribir directamente en un listview

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: escribir directamente en un listview Responder citando

Buenas tardes:
Quiero hacerles una consulta. Yo, tengo un listview al cual, quiero insertarle datos, pero no de la manera que todos conocemos:
fila=inventario->Items->Add();
fila->Caption=lo_que_sea;
fila->SubItems->Add(lo_que_sea);
fila->SubItems->Add(lo_que_sea);
Me refiero a lo siguiente:
Tenemos nuestro listview, con nuestras columnas, hacemos click en la columna, y, mediante teclado insertamos los datos, tras finalizar, que se agregen a lo que sea (struct,base de datos...) mediante la pulsacion de un botón. Mi pregunta es:
¿Se puede escribir de alguna manera sobre un listview capturando datos desde teclado directamente haciendo clic en el listview? Muchisimas gracias
de antemano
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Para ese problema el componente ListView no tiene una solución directa.

Yo uso un truco que consiste en colocar un Edit justo encima de la celda que quiero editar (excepto el Caption). Ajusto el Edit al tamaño de la celda y lo muestro. Sa impresión es que la celda es editable. Al salir (OnExit) vuelco el contenido del Edit al Item->SubItems->Strings correspondiente.

Un ejemplo:
Crea tu ListView y un Edit no visible.
Para colocar el Edit sobre una cleda:

Código:

//---------------------------------------------------------------------------
// n es el subitem que queremos editar
void __fastcall TForm1::EditSubItem(int n)
{
  TListItem* Item = ListView->Selected;
  if(!Item)
     return;
     
  E_SubItem->Parent = ListView;
  int ComentLeft = 0;
  for(int i=0; i<n+1; i++)
     ComentLeft += ListView->Column[i]->Width;

  E_SubItem->Top    = Item->Top;
  E_SubItem->Left   = ComentLeft + 6;
  E_SubItem->Width  = ListView->Column[n+1]->Width-16;
  E_SubItem->Height = ListView->Canvas->TextHeight("H");
  E_SubItem->Text   = Item->SubItems->Strings[n];
  E_SubItem->Visible = true;
  E_SubItem->SetFocus();
}


Para editar el subitem 4 (Sin contar el Caption que de por sí es editable):
Código:
EditSubItem(4);


En el evento OnExit del Edit:
Código:

void __fastcall TForm1::E_SubItemExit(TObject *Sender)
{
  TListItem* Item = ListView->Selected;
  if(Item) Item->SubItems->Strings[4] = E_SubItem->Text;
  SaveComentByName(Item->SubItems->Strings[0], E_SubItem->Text);
  E_SubItem->Visible = false;
}



Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.