Controles de Dados

A aba Controles de Dados fornece 8 controles sensíveis a dados que se vinculam diretamente a campos de banco de dados e conjuntos de resultados. Esses controles exibem, navegam e editam dados de banco de dados automaticamente sem código de sincronização manual.

TBrowse CT_BROWSE = 79

Grade de dados de alto desempenho para navegar e editar dados tabulares. Suporta modos vinculado a banco de dados e virtual (blocos de código). O controle de exibição de dados mais poderoso do HarbourBuilder.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados (TDBFTable, TSQLite, etc.)
aColsArray{}Array de objetos TBrowseColumn
nRowCountNumeric0Número de linhas visíveis (somente leitura)
nColCountNumeric0Número de colunas (somente leitura)
nRowPosNumeric1Posição atual da linha na área visível
nColPosNumeric1Posição atual da coluna
lEditableLogical.F.Permitir edição de célula no local
lVirtualLogical.F.Usar modo virtual (dados fornecidos via blocos de código)
nVirtualRowsNumeric0Contagem total de linhas no modo virtual
lShowHeadersLogical.T.Exibir linha de cabeçalho das colunas
lShowGridLogical.T.Exibir linhas da grade
lAlternateColorsLogical.F.Alternar cores de fundo das linhas
nClrRowOddColorherdadaCor de fundo de linhas ímpares
nClrRowEvenColorherdadaCor de fundo de linhas pares
nClrSelectedColorsistemaCor de destaque da linha selecionada

Propriedades de TBrowseColumn

PropriedadeTipoPadrãoDescrição
cHeadingString""Texto do cabeçalho da coluna
cFieldString""Nome do campo de banco de dados para vincular
bBlockBlockNILBloco de código que retorna o valor da célula (modo virtual)
nWidthNumeric100Largura da coluna em pixels
nAlignNumeric0Alinhamento (0=esquerda, 1=centro, 2=direita)
cPictureString""Cláusula de formato de exibição (picture)
lEditableLogical.T.Permitir edição nesta coluna

Eventos do TBrowse

EventoCategoriaDescrição
OnClickAçãoUsuário clicou em uma célula. Params: nRow, nCol
OnDblClickAçãoUsuário deu clique duplo em uma célula. Params: nRow, nCol
OnRowChangeNavegaçãoLinha atual alterada. Params: nOldRow, nNewRow
OnColChangeNavegaçãoColuna atual alterada. Params: nOldCol, nNewCol
OnHeaderClickAçãoCabeçalho da coluna clicado (para ordenação). Params: nCol
OnBeforeEditEdiçãoAntes do início da edição da célula. Retorne .F. para cancelar. Params: nRow, nCol
OnAfterEditEdiçãoApós confirmação da edição da célula. Params: nRow, nCol, xOldValue, xNewValue
OnKeyDownTecladoTecla pressionada enquanto o browse tem foco. Params: nKey
OnPaintExibiçãoPintura personalizada da célula. Params: nRow, nCol, oCanvas
OnVirtualDataDadosSolicitação de dados para uma linha virtual. Params: nRow, nCol. Deve retornar o valor da célula
PlataformaWidget Nativo
WindowsListView owner-drawn personalizado (WC_LISTVIEW)
macOSNSScrollView + NSTableView
LinuxGtkScrolledWindow + GtkTreeView

TDBGrid CT_DBGRID = 80

Grade de dados simplificada que gera colunas automaticamente a partir dos campos da fonte de dados. Mais fácil de usar que TBrowse quando personalização completa não é necessária.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados para vincular
lAutoColumnsLogical.T.Criar colunas automaticamente a partir dos campos
lEditableLogical.F.Permitir edição no local
lSortableLogical.T.Permitir ordenação clicando nos cabeçalhos
EventoCategoriaDescrição
OnClickAçãoCélula clicada
OnDblClickAçãoCélula com clique duplo
OnRowChangeNavegaçãoLinha atual alterada
OnAfterEditEdiçãoEdição da célula confirmada

TDBNavigator CT_DBNAVIGATOR = 81

Barra de navegação com botões para primeiro, anterior, próximo, último, inserir, excluir, editar, salvar e cancelar operações em uma fonte de dados.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados para navegar
lShowInsertLogical.T.Exibir botão Inserir
lShowDeleteLogical.T.Exibir botão Excluir
lShowEditLogical.T.Exibir botão Editar
lConfirmDeleteLogical.T.Solicitar confirmação antes de excluir um registro
EventoCategoriaDescrição
OnBeforeActionAçãoAntes de uma ação do navegador. Retorne .F. para cancelar. Params: nAction
OnAfterActionAçãoApós conclusão de uma ação do navegador. Params: nAction

TDBText CT_DBTEXT = 82

Rótulo sensível a dados. Exibe automaticamente o valor de um campo vinculado de banco de dados como texto somente leitura.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados
cFieldString""Nome do campo a exibir
cPictureString""Cláusula de formato de exibição (picture)

TDBEdit CT_DBEDIT = 83

Campo de entrada de texto sensível a dados. Vincula um controle TEdit a um campo de banco de dados para visualização e edição.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados
cFieldString""Nome do campo para vincular
cPictureString""Cláusula de formato de entrada/exibição (picture)
lReadOnlyLogical.F.Impedir edição
EventoCategoriaDescrição
OnChangeAçãoValor do campo alterado pelo usuário
OnValidateValidaçãoValidar antes de salvar. Retorne .F. para rejeitar. Params: xValue

TDBComboBox CT_DBCOMBOBOX = 84

Caixa de combinação sensível a dados. Exibe uma lista suspensa vinculada a um campo de banco de dados. Útil para campos de pesquisa.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados
cFieldString""Nome do campo para vincular
aItemsArray{}Lista de itens selecionáveis
oLookupSourceObjectNILFonte de dados de pesquisa opcional para itens
cLookupFieldString""Campo da fonte de pesquisa para exibir
cLookupKeyString""Campo chave da fonte de pesquisa
EventoCategoriaDescrição
OnChangeAçãoSeleção alterada

TDBCheckBox CT_DBCHECKBOX = 85

Caixa de seleção sensível a dados. Vincula um campo lógico (booleano) de banco de dados a um controle de caixa de seleção.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados
cFieldString""Nome do campo lógico para vincular
cTextString""Texto do rótulo ao lado da caixa de seleção
xValueOnAny.T.Valor representando o estado selecionado
xValueOffAny.F.Valor representando o estado não selecionado
EventoCategoriaDescrição
OnChangeAçãoEstado da caixa de seleção alterado

TDBImage CT_DBIMAGE = 86

Exibição de imagem sensível a dados. Mostra uma imagem armazenada em um campo BLOB de banco de dados ou referenciada por um caminho de arquivo.

PropriedadeTipoPadrãoDescrição
oDataSourceObjectNILComponente de Acesso a Dados
cFieldString""Nome do campo BLOB ou caminho de arquivo
lStretchLogical.F.Esticar a imagem para preencher o controle
lProportionalLogical.T.Manter a proporção ao esticar
lIsPathLogical.F.Campo contém um caminho de arquivo (não dados binários)

Exemplo de Código: TBrowse com Banco de Dados

// Um formulário de navegação de dados com TBrowse, navegador e controles sensíveis a dados

FUNCTION Main()

   LOCAL oForm, oDB, oBrw, oNav

   // Criar formulário
   oForm := TForm():New()
   oForm:cTitle := "Navegador de Clientes"
   oForm:nWidth := 800
   oForm:nHeight := 500

   // Conectar ao banco de dados
   oDB := TSQLite():New()
   oDB:cFile := "customers.db"
   oDB:lAutoConnect := .T.

   // Criar o controle de navegação
   oBrw := TBrowse():New( oForm )
   oBrw:nLeft   := 10
   oBrw:nTop    := 10
   oBrw:nWidth  := 780
   oBrw:nHeight := 350
   oBrw:oDataSource := oDB
   oBrw:lAlternateColors := .T.

   // Definir colunas
   oBrw:AddColumn( "Id",    "id",    60,  2 )  // alinhado à direita
   oBrw:AddColumn( "Name",  "name",  200, 0 )  // alinhado à esquerda
   oBrw:AddColumn( "Email", "email", 250, 0 )
   oBrw:AddColumn( "City",  "city",  150, 0 )

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

   // Adicionar barra de navegação
   oNav := TDBNavigator():New( oForm )
   oNav:nLeft := 10
   oNav:nTop  := 370
   oNav:oDataSource := oDB
   oNav:lConfirmDelete := .T.

   // Carregar dados e ativar
   oDB:Query( "SELECT * FROM customers ORDER BY name" )
   oForm:Activate()

RETURN NIL
8 Controles de Dados

Os controles de dados sincronizam automaticamente com sua fonte de dados. Quando o usuário navega para um registro diferente, todos os controles vinculados são atualizados instantaneamente. As alterações são gravadas de volta no banco de dados ao salvar.

Nesta 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 Exemplo de Código: TBrowse com Banco de Dados