Visual C++ .NET - Incorporar controles tipo Grid

 
Vista:

Incorporar controles tipo Grid

Publicado por Antonio (1 intervención) el 12/05/2010 04:38:54
Buenas:
Me estoy iniciando en Visual c++ con la versión 2006; estoy haciendo pruebas con un programa que maneja bases de datos pero no sé como incorporar un control DBGrid o DataGrid donde poder editar los registros de una tabla. Esos controles creo que están en librerías compiladas aparte en el sistema, y necesito saber como incluirlas en el programa y conocer sus propiedades y métodos.
Gracias por sus respuestas.
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

Incorporar control DataGrid para bases de datos

Publicado por Alejandro (265 intervenciones) el 08/02/2024 23:49:04
Antonio, en Visual C++ 2006, la creación de aplicaciones de bases de datos a menudo se realiza utilizando el conjunto de herramientas de MFC (Microsoft Foundation Classes). Aunque no existe un control DataGrid nativo en MFC, puedes lograr funcionalidad similar utilizando el control `CListCtrl`.

Aquí hay una guía básica sobre cómo incorporar un control `CListCtrl` para mostrar y editar registros de una tabla en tu aplicación:

1. Incluir encabezados necesarios:
Asegúrate de incluir los encabezados necesarios en tu archivo de código fuente para trabajar con MFC y la manipulación de bases de datos.

1
2
// Incluye las bibliotecas necesarias
#include <afxdb.h>

2. Agregar un miembro de tipo CListCtrl:
En el diseñador de formularios, agrega un control `CListCtrl` a tu diálogo. Asigna un ID de control único (puedes hacerlo a través de las propiedades del control).

En tu archivo de encabezado (.h), agrega un miembro de tipo `CListCtrl` para acceder al control desde tu código:

1
CListCtrl m_listCtrl;

3. Inicializar y configurar el CListCtrl:
En el método `OnInitDialog` de tu diálogo, inicializa y configura el `CListCtrl`. También establece el estilo `LVS_EDITLABELS` para permitir la edición de etiquetas:

1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL CMyDialog::OnInitDialog() {
    CDialog::OnInitDialog();
 
    // Configura el CListCtrl
    m_listCtrl.SubclassDlgItem(IDC_TU_LIST_CTRL_ID, this);
    m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    m_listCtrl.InsertColumn(0, _T("Columna 1"), LVCFMT_LEFT, 100);
    m_listCtrl.InsertColumn(1, _T("Columna 2"), LVCFMT_LEFT, 100);
 
    // Otros ajustes según sea necesario
 
    return TRUE;
}

4. Conectar a la base de datos:
Utiliza las clases de MFC como `CDatabase` y `CRecordset` para conectarte y manipular la base de datos. Implementa el código necesario para recuperar y actualizar los registros de la tabla.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CDatabase db;
db.OpenEx(_T("ODBC;DSN=TU_DSN;"), CDatabase::noOdbcDialog);
 
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM TU_TABLA"), CRecordset::readOnly);
 
// Recorre los registros y agrega a CListCtrl
while (!rs.IsEOF()) {
    int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), rs.m_strField1);
    m_listCtrl.SetItemText(index, 1, rs.m_strField2);
 
    rs.MoveNext();
}
 
rs.Close();
db.Close();

Ajusta las consultas y nombres de campos según tu base de datos.

5. Manejar la edición:
Para permitir la edición, puedes manejar el mensaje `LVN_ENDLABELEDIT` del `CListCtrl`. Esto te permitirá actualizar los datos en la base de datos después de que el usuario edite una celda.

1
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_TU_LIST_CTRL_ID, OnEndLabelEdit)

Implementa el manejador del mensaje en tu archivo de código fuente:

1
2
3
4
5
6
7
void CMyDialog::OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult) {
    LV_DISPINFO* pDispInfo = reinterpret_cast<LV_DISPINFO*>(pNMHDR);
    *pResult = 0;
 
    // Actualiza la base de datos con el nuevo valor
    // pDispInfo->item.iItem y pDispInfo->item.iSubItem te darán la posición editada
}

Ajusta este código según tus necesidades específicas.

Recuerda ajustar las consultas SQL y otros detalles según tu entorno de base de datos y necesidades específicas. Este es un punto de partida básico para incorporar funcionalidad de visualización y edición similar a un control DataGrid en un diálogo de Visual C++ 2006 utilizando MFC.
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