 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
jugado1820 Ens

Registrado: 16 Jun 2010Mensajes: 37
|
Publicado: Dom 15 Abr, 2012 6:19 pm Asunto: escribir directamente en un listview |
|
|
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 |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Mar 17 Abr, 2012 7:31 pm Asunto: |
|
|
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):
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|