Controles de Datos

La pestania Controles de Datos proporciona 8 controles conscientes de datos que se vinculan directamente a campos y conjuntos de resultados de base de datos. Estos controles muestran, navegan y editan datos de base de datos automaticamente sin codigo de sincronizacion manual.

TBrowse CT_BROWSE = 79

Cuadricula de datos de alto rendimiento para navegar y editar datos tabulares. Soporta modos vinculado a base de datos y virtual (bloques de codigo). El control de visualizacion de datos mas potente de HarbourBuilder.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos (TDBFTable, TSQLite, etc.)
aColsArray{}Matriz de objetos TBrowseColumn
nRowCountNumerico0Numero de filas visibles (solo lectura)
nColCountNumerico0Numero de columnas (solo lectura)
nRowPosNumerico1Posicion de fila actual en el area visible
nColPosNumerico1Posicion de columna actual
lEditableLogico.F.Permitir edicion en el lugar de celdas
lVirtualLogico.F.Usar modo virtual (datos suministrados via bloques de codigo)
nVirtualRowsNumerico0Total de filas en modo virtual
lShowHeadersLogico.T.Mostrar fila de encabezados de columna
lShowGridLogico.T.Mostrar lineas de cuadricula
lAlternateColorsLogico.F.Alternar colores de fondo de filas
nClrRowOddColorheredadoColor de fondo de filas impares
nClrRowEvenColorheredadoColor de fondo de filas pares
nClrSelectedColorsistemaColor de resaltado de fila seleccionada

Propiedades de TBrowseColumn

PropiedadTipoValor predet.Descripcion
cHeadingString""Texto del encabezado de columna
cFieldString""Nombre del campo de base de datos a vincular
bBlockBlockNILBloque de codigo que devuelve el valor de celda (modo virtual)
nWidthNumerico100Ancho de columna en pixeles
nAlignNumerico0Alineacion (0=izquierda, 1=centro, 2=derecha)
cPictureString""Clausula de formato de imagen
lEditableLogico.T.Permitir edicion en esta columna

Eventos de TBrowse

EventoCategoriaDescripcion
OnClickAccionUsuario hizo clic en una celda. Parametros: nRow, nCol
OnDblClickAccionUsuario hizo doble clic en una celda. Parametros: nRow, nCol
OnRowChangeNavegacionFila actual cambiada. Parametros: nOldRow, nNewRow
OnColChangeNavegacionColumna actual cambiada. Parametros: nOldCol, nNewCol
OnHeaderClickAccionEncabezado de columna pulsado (para ordenar). Parametros: nCol
OnBeforeEditEdicionAntes de comenzar la edicion de celda. Devuelva .F. para cancelar. Parametros: nRow, nCol
OnAfterEditEdicionDespues de confirmar la edicion. Parametros: nRow, nCol, xOldValue, xNewValue
OnKeyDownTecladoTecla presionada mientras el browse tiene el foco. Parametros: nKey
OnPaintVisualizacionPintado personalizado de celdas. Parametros: nRow, nCol, oCanvas
OnVirtualDataDatosSolicitud de datos para una fila virtual. Parametros: nRow, nCol. Debe devolver el valor de celda
PlataformaWidget Nativo
WindowsListView personalizada dibujada por el propietario (WC_LISTVIEW)
macOSNSScrollView + NSTableView
LinuxGtkScrolledWindow + GtkTreeView

TDBGrid CT_DBGRID = 80

Cuadricula de datos simplificada que genera columnas automaticamente a partir de los campos de la fuente de datos. Mas facil de usar que TBrowse cuando no se necesita personalizacion completa.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos a vincular
lAutoColumnsLogico.T.Crear columnas automaticamente desde campos
lEditableLogico.F.Permitir edicion en el lugar
lSortableLogico.T.Permitir ordenar haciendo clic en encabezados
EventoCategoriaDescripcion
OnClickAccionCelda pulsada
OnDblClickAccionDoble clic en celda
OnRowChangeNavegacionFila actual cambiada
OnAfterEditEdicionEdicion de celda confirmada

TDBNavigator CT_DBNAVIGATOR = 81

Barra de navegacion con botones para primero, anterior, siguiente, ultimo, insertar, eliminar, editar, guardar y cancelar operaciones en una fuente de datos.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos a navegar
lShowInsertLogico.T.Mostrar boton Insertar
lShowDeleteLogico.T.Mostrar boton Eliminar
lShowEditLogico.T.Mostrar boton Editar
lConfirmDeleteLogico.T.Solicitar confirmacion antes de eliminar un registro
EventoCategoriaDescripcion
OnBeforeActionAccionAntes de una accion del navegador. Devuelva .F. para cancelar. Parametros: nAction
OnAfterActionAccionDespues de completar una accion del navegador. Parametros: nAction

TDBText CT_DBTEXT = 82

Etiqueta consciente de datos. Muestra automaticamente el valor de un campo de base de datos vinculado como texto de solo lectura.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos
cFieldString""Nombre del campo a mostrar
cPictureString""Clausula de formato de visualizacion

TDBEdit CT_DBEDIT = 83

Entrada de texto consciente de datos. Vincula un control TEdit a un campo de base de datos para ver y editar.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos
cFieldString""Nombre del campo a vincular
cPictureString""Clausula de formato de entrada/visualizacion
lReadOnlyLogico.F.Impedir edicion
EventoCategoriaDescripcion
OnChangeAccionValor del campo cambiado por el usuario
OnValidateValidacionValidar antes de guardar. Devuelva .F. para rechazar. Parametros: xValue

TDBComboBox CT_DBCOMBOBOX = 84

Combo box consciente de datos. Muestra una lista desplegable vinculada a un campo de base de datos. Util para campos de busqueda.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos
cFieldString""Nombre del campo a vincular
aItemsArray{}Lista de elementos seleccionables
oLookupSourceObjectNILFuente de datos de busqueda opcional para elementos
cLookupFieldString""Campo de la fuente de busqueda a mostrar
cLookupKeyString""Campo clave de la fuente de busqueda
EventoCategoriaDescripcion
OnChangeAccionSeleccion cambiada

TDBCheckBox CT_DBCHECKBOX = 85

Casilla de verificacion consciente de datos. Vincula un campo logico (booleano) de base de datos a un control de casilla de verificacion.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos
cFieldString""Nombre del campo logico a vincular
cTextString""Texto de etiqueta junto a la casilla
xValueOnAny.T.Valor que representa el estado marcado
xValueOffAny.F.Valor que representa el estado desmarcado
EventoCategoriaDescripcion
OnChangeAccionEstado de verificacion cambiado

TDBImage CT_DBIMAGE = 86

Visualizacion de imagen consciente de datos. Muestra una imagen almacenada en un campo BLOB de base de datos o referenciada por un campo de ruta de archivo.

PropiedadTipoValor predet.Descripcion
oDataSourceObjectNILComponente de acceso a datos
cFieldString""Nombre del campo BLOB o ruta de archivo
lStretchLogico.F.Estirar imagen para llenar el control
lProportionalLogico.T.Mantener relacion de aspecto al estirar
lIsPathLogico.F.El campo contiene una ruta de archivo (no datos binarios)

Ejemplo de Codigo: TBrowse con Base de Datos

// Un formulario de navegacion de datos con TBrowse, navegador y controles conscientes de datos

FUNCTION Main()

   LOCAL oForm, oDB, oBrw, oNav

   // Crear formulario
   oForm := TForm():New()
   oForm:cTitle := "Navegador de Clientes"
   oForm:nWidth := 800
   oForm:nHeight := 500

   // Conectar a la base de datos
   oDB := TSQLite():New()
   oDB:cFile := "clientes.db"
   oDB:lAutoConnect := .T.

   // Crear el control de navegacion
   oBrw := TBrowse():New( oForm )
   oBrw:nLeft   := 10
   oBrw:nTop    := 10
   oBrw:nWidth  := 780
   oBrw:nHeight := 350
   oBrw:oDataSource := oDB
   oBrw:lAlternateColors := .T.

   // Definir columnas
   oBrw:AddColumn( "Id",    "id",    60,  2 )  // alineado a la derecha
   oBrw:AddColumn( "Nombre",  "name",  200, 0 )  // alineado a la izquierda
   oBrw:AddColumn( "Correo", "email", 250, 0 )
   oBrw:AddColumn( "Ciudad",  "city",  150, 0 )

   // Eventos
   oBrw:OnDblClick    := { |r,c| EditRecord( oDB, r ) }
   oBrw:OnHeaderClick := { |c| SortByColumn( oDB, oBrw, c ) }
   oBrw:OnRowChange   := { |o,n| UpdateStatus( n ) }

   // Agregar barra de navegacion
   oNav := TDBNavigator():New( oForm )
   oNav:nLeft := 10
   oNav:nTop  := 370
   oNav:oDataSource := oDB
   oNav:lConfirmDelete := .T.

   // Cargar datos y activar
   oDB:Query( "SELECT * FROM clientes ORDER BY name" )
   oForm:Activate()

RETURN NIL
8 Controles de Datos

Los controles de datos se sincronizan automaticamente con su fuente de datos. Cuando el usuario navega a un registro diferente, todos los controles vinculados se actualizan instantaneamente. Los cambios se escriben en la base de datos al guardar.

En Esta Página

TBrowse CT_BROWSE = 79 TDBGrid CT_DBGRID = 80 TDBNavigator CT_DBNAVIGATOR = 81 TDBText CT_DBTEXT = 82 TDBEdit CT_DBEDIT = 83 TDBComboBox CT_DBCOMBOBOX = 84 TDBCheckBox CT_DBCHECKBOX = 85 TDBImage CT_DBIMAGE = 86 Ejemplo de Codigo: TBrowse con Base de Datos