C/Visual C - Copy/paste de varias líneas de un ListCtrl

 
Vista:

Copy/paste de varias líneas de un ListCtrl

Publicado por Alberto (1 intervención) el 21/03/2001 17:49:48
Hola a todos.
Necesito copiar varias líneas de un ListControl y llevármelas a otro control, bien una caja de texto o bien otro ListCtrl.
Si alguien sabe cómo hacerlo o dónde puedo encontrarlo, se lo agradecería enormemente. Si no, también.
Gracias a todos, y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Copiar líneas seleccionadas de un ListControl a otro control en MFC

Publicado por Alejandro (913 intervenciones) el 10/09/2024 23:29:19
Hola, Alberto.

Para copiar varias líneas de un ListControl y llevarlas a otro control, ya sea una caja de texto o otro ListCtrl, puedes seguir estos pasos:

1. Obtén el número de elementos seleccionados en el ListControl de origen utilizando la función GetSelectedCount().

2. Crea un bucle para recorrer cada elemento seleccionado utilizando la función GetNextItem() con el parámetro LVNI_SELECTED. Dentro del bucle, obtén el texto de cada elemento seleccionado utilizando la función GetItemText().

3. Agrega el texto de cada elemento seleccionado al control de destino, ya sea una caja de texto o otro ListCtrl, utilizando las funciones adecuadas para agregar elementos, como SetWindowText() para una caja de texto o InsertItem() y SetItemText() para otro ListCtrl.

Aquí tienes un ejemplo de código en C++ utilizando MFC (Microsoft Foundation Classes) para copiar las líneas seleccionadas de un ListCtrl a una caja de texto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Supongamos que tienes un ListCtrl de origen con ID IDC_LIST1 y una caja de texto de destino con ID IDC_EDIT1
CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
 
int nSelectedCount = pListCtrl->GetSelectedCount();
if (nSelectedCount > 0)
{
    CString strText;
    int nItem = -1;
 
    while ((nItem = pListCtrl->GetNextItem(nItem, LVNI_SELECTED)) != -1)
    {
        strText = pListCtrl->GetItemText(nItem, 0); // Obtén el texto de la primera columna del elemento seleccionado
        pEdit->SetWindowText(strText); // Agrega el texto a la caja de texto
    }
}

Recuerda reemplazar IDC_LIST1 con el ID del ListCtrl de origen y IDC_EDIT1 con el ID de la caja de texto de destino.

Si deseas copiar las líneas seleccionadas a otro ListCtrl en lugar de una caja de texto, puedes utilizar las funciones InsertItem() y SetItemText() para agregar los elementos al ListCtrl de destino.

Espero que esto te ayude a copiar las líneas seleccionadas de un ListControl a otro control. ¡Buena suerte!

Saludos cordiales,
Ale.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar