Tbrowse com ADO: identificação do campo
Moderador: Moderadores
Tbrowse com ADO: identificação do campo
Pessoal, alguém poderia me ajudar com uma coisa que imagino que seja simples no Tbrowse, mas estou apenas iniciando em Tbrowse:
Só preciso identificar o campo sobre o qual o usuário vai dar Enter num tbrowse. No dbedit(), eu faço isso usando modo/coluna.
Como fazer isso no tbrowse?
Só preciso identificar o campo sobre o qual o usuário vai dar Enter num tbrowse. No dbedit(), eu faço isso usando modo/coluna.
Como fazer isso no tbrowse?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Tbrowse com ADO: identificação do campo
O tbrowse está sempre posicionado.cjp escreveu:Como fazer isso no tbrowse?
Em DBF, é só pegar o campo, exemplo cliente->nome
Em Array, idem, através de um contador, exemplo elemento[ nIndex ]
Em ADO, não é diferente, exemplo rs:Fields( "NOME" ):Value
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Tbrowse com ADO: identificação do campo
Acho que não fui claro na pergunta, ou não entendi tua resposta.
Veja o seguinte: estou editando no tbrowse uma tabela com apenas um registro, mas com vários campos: A, B, C, D etc.
Então, o usuário irá se movimentar apenas com as setas pra direita e pra esquerda, e teclar Enter sobre algum campo.
Eu preciso saber sobre qual campo ele teclou Enter, entende?
A questão não é sobre qual registro, mas sim sobre qual campo.
Veja o seguinte: estou editando no tbrowse uma tabela com apenas um registro, mas com vários campos: A, B, C, D etc.
Então, o usuário irá se movimentar apenas com as setas pra direita e pra esquerda, e teclar Enter sobre algum campo.
Eu preciso saber sobre qual campo ele teclou Enter, entende?
A questão não é sobre qual registro, mas sim sobre qual campo.
Inacio de Carvalho Neto
-
Fernando queiroz
- Usuário Nível 4

- Mensagens: 779
- Registrado em: 13 Nov 2014 00:41
- Localização: Porto Alegre/RS
Tbrowse com ADO: identificação do campo
oBrowse1:aArray[oBrowse1:nCurrent,15]
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Tbrowse com ADO: identificação do campo
Olá!
Segue um exemplo Harbour:
A respeito do método rowPos(), mostrado no exemplo, vale destacar que este método retorna a posição da linha corrente em relação ao início da janela e não da fonte de dados.
Isto é HwGUI.Fernando queiroz escreveu:oBrowse1:aArray[oBrowse1:nCurrent,15]
É a resposta correta para este caso.Claudio Soto escreveu:oBrowse:colPos
Segue um exemplo Harbour:
Código: Selecionar todos
// The example demonstrates the steps required for creating a
// browse view for a two dimensional array. Note that the data
// source and row pointer of the data source are stored in
// oTBrowse:cargo. The pseudo instance variables :data and :recno
// are translated by the preprocessor.
// Exemplo extraido e adaptado de "xHarbour Language Reference Guide" - Alexandre Santos
#include "box.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "tbrowse.ch"
#define DEF_CSEP " "+CHR(179)+" " // define o caracter da coluna
#define FOOT_SEP CHR(196)+CHR(193)+CHR(196) // define o caracter do horizontal
#define HEAD_SEP CHR(196)+CHR(194)+CHR(196) // define o caracter do horizontal
#xtrans :data => :cargo\[1]
#xtrans :recno => :cargo\[2]
REQUEST HB_CODEPAGE_PTISO
REQUEST HB_LANG_PT
PROCEDURE Main
LOCAL i, nKey, bBlock, oTBrowse, oTBColumn
LOCAL aHeading := { "File Name", ;
"File Size", ;
"File Date", ;
"File Time", ;
"File Attr" }
LOCAL aWidth := { 20, 10, 9, 9, 9 }, cSep := Chr(10), nCursor := SetCursor( SC_NONE )
HB_CDPSELECT( 'PTISO' )
HB_LANGSELECT( 'PT' )
// Create TBrowse object
oTBrowse := TBrowse():new( 3, 2, MaxRow()-2, MaxCol()-2 )
// data source is the Directory() array
oTBrowse:cargo := { Directory( "*.*" ), 1 }
oTBrowse:border := B_SINGLE
oTBrowse:headSep := HEAD_SEP
oTBrowse:colSep := DEF_CSEP
oTBrowse:footSep := FOOT_SEP
oTBrowse:colorSpec := "N/W,W+/N"
// Navigation code blocks for array
oTBrowse:goTopBlock := {|| oTBrowse:recno := 1 }
oTBrowse:goBottomBlock := {|| oTBrowse:recno := Len( oTBrowse:data ) }
oTBrowse:skipBlock := {|nSkip| ArraySkipper( nSkip, oTBrowse ) }
// create TBColumn objects and add them to TBrowse object
FOR i:=1 TO Len( aHeading )
// code block for individual columns of the array
bBlock := ArrayBlock( oTBrowse, i )
oTBColumn := TBColumn():new( aHeading[i], bBlock )
oTBColumn:width := aWidth[i]
oTBrowse:addColumn( oTBColumn )
NEXT
CLS
DispOutAt( 1, 1, PadR( " PATH " + hb_CurDrive() + ":\" + Curdir() + "\", MaxCol()-2 ), "N/W" )
DispOutAt( MaxRow(), 1, PadC( " Pressione [ENTER] para informações ou [ESC] para finalizar", MaxCol()-2 ), "N/W" )
// display browser and process user input
DO WHILE .T.
oTBrowse:forceStable()
nKey := Inkey(0)
IF oTBrowse:applyKey( nKey ) == TBR_EXIT
If hb_Alert( "Fechar?", { " Sim ", " Não " }, "W+/N" ) == 1
EXIT
Endif
ENDIF
DO CASE
CASE nKey == K_ENTER
hb_Alert( "Linha atual na janela : " + Transform( oTBrowse:rowPos(), "@ 99999" ) + cSep + ;
"Coluna atual na janela : " + Transform( oTBrowse:colPos(), "@ 99999" ) + cSep + ;
"Valor atual : " + Transform( Eval( oTBrowse:getColumn( oTBrowse:colPos() ):block ), "@X" ) + cSep + ;
"Linha atual no ARRAY : " + Transform( oTBrowse:recno, "@ 99999" ),, "W+/B" ;
)
ENDCASE
ENDDO
SetCursor( nCursor )
RETURN
// This code block uses detached LOCAL variables to
// access single elements of a two-dimensional array.
FUNCTION ArrayBlock( oTBrowse, nSubScript )
RETURN {|| oTBrowse:data[ oTBrowse:recno, nSubScript ] }
// This function navigates the row pointer of the
// the data source (array)
FUNCTION ArraySkipper( nSkipRequest, oTBrowse )
LOCAL nSkipped
LOCAL nLastRec := Len( oTBrowse:data ) // Length of array
IF oTBrowse:recno + nSkipRequest < 1
// skip requested that navigates past first array element
nSkipped := 1 - oTBrowse:recno
ELSEIF oTBrowse:recno + nSkipRequest > nLastRec
// skip requested that navigates past last array element
nSkipped := nLastRec - oTBrowse:recno
ELSE
// skip requested that navigates within array
nSkipped := nSkipRequest
ENDIF
// adjust row pointer
oTBrowse:recno += nSkipped
// tell TBrowse how many rows are actually skipped.
RETURN nSkipped[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Tbrowse com ADO: identificação do campo
No, es hb.alxsts escreveu:Isto é HwGUI.
Claudio Soto escreveu:
oBrowse:colPos
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Tbrowse com ADO: identificação do campo
Olá!
A disposição do texto, em meio aos quotes, realmente ficou confusa. Mas o que escrevi está correto:
A disposição do texto, em meio aos quotes, realmente ficou confusa. Mas o que escrevi está correto:
Fernando queiroz escreveu:oBrowse1:aArray[oBrowse1:nCurrent,15] ===> Isto é HwGUI
Creio que agora está claro. Gracias Claudio.Claudio Soto escreveu:oBrowse:colPos ===> É a resposta correta para este caso.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
