TBROWSE
Moderador: Moderadores
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
TBROWSE
Alguem tem aquel texto (DISERCANDO O TBROWSE)
Ou algo nesse sentido que me ajude.
To precisando editar os dados dentro de uma tabela, como o dbedit
e pelo que vi so vou conseguir isto com o tbrowse, to certo ?
Outra coisa tenho que linkar meu sistema com que LIb ?
pois quando uso o tbcolummnew da UM ERRO DE TBCOLUMMNE (E COMO SE O CLIPPER SO LESE ATE A LETRA E OU SEJA 10 CARACTERES, e fica dando erro unresolved externals TBCOLUMMNE
Uso o exospace com clipper 5.3
QUal a BIBLIOTECA QUE TENHO DE USAR PARA USUFLUIR DO TBROWSE
alexandre pessoa
81-9615.2319
alexandre@managercorp.com.br
MSN -> solucoeshotel@hotmail.com
Ou algo nesse sentido que me ajude.
To precisando editar os dados dentro de uma tabela, como o dbedit
e pelo que vi so vou conseguir isto com o tbrowse, to certo ?
Outra coisa tenho que linkar meu sistema com que LIb ?
pois quando uso o tbcolummnew da UM ERRO DE TBCOLUMMNE (E COMO SE O CLIPPER SO LESE ATE A LETRA E OU SEJA 10 CARACTERES, e fica dando erro unresolved externals TBCOLUMMNE
Uso o exospace com clipper 5.3
QUal a BIBLIOTECA QUE TENHO DE USAR PARA USUFLUIR DO TBROWSE
alexandre pessoa
81-9615.2319
alexandre@managercorp.com.br
MSN -> solucoeshotel@hotmail.com
mandei p/seu email
Nota de Moderação:
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: (de acordo a sua ultima citação)
Enviar por email, resolver através de meios privados são práticas não aceitas aqui no fórum. Desestimulamos este tipo de procedimento, já que o objetivo do fórum é para servir como fonte centralizadora de informações, onde os usuários possam compartilhar de forma pública e não exclusiva. Favor ler a Regra Geral do Fórum (itens 10,11,12 e 13).
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: (de acordo a sua ultima citação)
Enviar por email, resolver através de meios privados são práticas não aceitas aqui no fórum. Desestimulamos este tipo de procedimento, já que o objetivo do fórum é para servir como fonte centralizadora de informações, onde os usuários possam compartilhar de forma pública e não exclusiva. Favor ler a Regra Geral do Fórum (itens 10,11,12 e 13).
Amigo Grings,
Se não for pedir muito, gostaria de receber o texto ou se possivel que publicasse ele aqui
ou disponibilizasse um link para que todos pudessem baixa-lo.
Grato,
Se não for pedir muito, gostaria de receber o texto ou se possivel que publicasse ele aqui
ou disponibilizasse um link para que todos pudessem baixa-lo.
Grato,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Olá companheiros,
o meu primeiro contato com clipper, por incrível que pareça, foi com o tbrowse.
Uma rabeira só!
Consegui comprar num sebo de BH um livro sobre clipper (nem era o 5.2) do Antônio Ramalho.
Relativamente ao tbrowse, os ensinamentos do professor foram demais, sem falar na linguagem fácil e didática, inclusive piadinhas.
Mas o que mais me marcou foi um dica que o livro linha em relação ao tbrowse.
Segundo o livro, você deveria comerça pequeno e ir crescendo, crescendo, etc.
Nas pastas do clipper existem vários exemplos com tbrowse, inclusive de arrays, com edição, etc.
Dê uma olhada neles, são interessantes e te dão uma noção grande da pontencialidade da classe.
Veja também o NG da classe.
Agora, o "dissecando o tbrowse", que eu conheço, somente no site do Anderson Cardoso (caclipperwebsite) e mediante uma contribuição monetária.
Embora o trabalho seja bom, prá quem ta começando é meio complicado, pois o Anderson carregou em recursos de programação, com arrays, etc.
Assim, embora o texto, que é uma explicação da função em si, seja muito bom, sem a base de programação fica difícil entender.
Todavia, dos source, do clipper, tem o seguinte:
Ps: precisa do arquivo test.dbf (vai na pasta do clipper /sources... e pega).
Espero ter ajudado.
MarceloG
o meu primeiro contato com clipper, por incrível que pareça, foi com o tbrowse.
Uma rabeira só!
Consegui comprar num sebo de BH um livro sobre clipper (nem era o 5.2) do Antônio Ramalho.
Relativamente ao tbrowse, os ensinamentos do professor foram demais, sem falar na linguagem fácil e didática, inclusive piadinhas.
Mas o que mais me marcou foi um dica que o livro linha em relação ao tbrowse.
Segundo o livro, você deveria comerça pequeno e ir crescendo, crescendo, etc.
Nas pastas do clipper existem vários exemplos com tbrowse, inclusive de arrays, com edição, etc.
Dê uma olhada neles, são interessantes e te dão uma noção grande da pontencialidade da classe.
Veja também o NG da classe.
Agora, o "dissecando o tbrowse", que eu conheço, somente no site do Anderson Cardoso (caclipperwebsite) e mediante uma contribuição monetária.
Embora o trabalho seja bom, prá quem ta começando é meio complicado, pois o Anderson carregou em recursos de programação, com arrays, etc.
Assim, embora o texto, que é uma explicação da função em si, seja muito bom, sem a base de programação fica difícil entender.
Todavia, dos source, do clipper, tem o seguinte:
Código: Selecionar todos
* TBR10.PRG
*
* Clipper tbr10
* RTLINK FILE tbr10
*
*/
#include "inkey.ch"
#include "setcurs.ch"
#define COLSEP CHR(32) + CHR(179) + CHR(32)
#define HEADSEP CHR(205) + CHR(209) + CHR(205)
#define FOOTSEP CHR(205) + CHR(207) + CHR(205)
#define MYCOLORS "W+/BG,N/W,W/N,N," +;
"GR+/W,N/BG,B+/BG,GR+/BG"
FUNCTION Main()
LOCAL b, column, nKey, cScreen
cScreen := savescreen()
SET SCOREBOARD OFF
SET CONFIRM ON
USE test INDEX test3 NEW
SETCURSOR(SC_NONE)
SETCOLOR("N/W")
SCROLL()
SETCOLOR("W+/BG")
SCROLL( 2, 6, 22, 72 )
@ 2, 6 TO 22,72
@ MAXROW(), 0 SAY ;
PADC("ENTER - Edit ESC - Quit",;
MAXCOL() + 1) COLOR "W+/RB"
b := TBrowseDB( 3, 7, 21, 71 )
b:colorSpec := MYCOLORS
b:colSep := COLSEP
b:headSep := HEADSEP
// Columns
column := TBColumnNew( "Field 3", FIELDBLOCK("fld3") )
b:addColumn( column )
column := TBColumnNew( "Field 7", FIELDBLOCK("fld7") )
b:addColumn( column )
column := TBColumnNew( "Field 4", FIELDBLOCK("fld1") )
b:addColumn( column )
column := TBColumnNew( "Field 5", FIELDBLOCK("fld5") )
b:addColumn( column )
WHILE .T.
ForceStable( b )
IF ( b:hitTop .OR. b:hitBottom )
TONE(87.3,1)
TONE(40,3.5)
ENDIF
nKey := INKEY(0)
IF !TBMoveCursor( b, nKey )
IF ( nKey == K_ESC )
SCROLL()
EXIT
ELSEIF ( nKey == K_ENTER )
DoGet( b )
ENDIF
ENDIF
END
restscreen(,,,,cScreen)
RETURN (NIL)
/*****
*
* Forces stabilization
*
*/
STATIC FUNCTION ForceStable( obj )
DISPBEGIN()
WHILE !obj:stabilize()
END
DISPEND()
RETURN (NIL)
/*****
*
* Cursor Movement Methods
*
*/
STATIC FUNCTION TBMoveCursor( o, nKey )
LOCAL nFound
STATIC aKeys := ;
{ K_DOWN , {|obj| obj:down()},;
K_UP , {|obj| obj:up()},;
K_PGDN , {|obj| obj:pageDown()},;
K_PGUP , {|obj| obj:pageUp()},;
K_CTRL_PGUP , {|obj| obj:goTop()},;
K_CTRL_PGDN , {|obj| obj:goBottom()},;
K_RIGHT , {|obj| obj:right()},;
K_LEFT , {|obj| obj:left()},;
K_HOME , {|obj| obj:home()},;
K_END , {|obj| obj:end()},;
K_CTRL_LEFT , {|obj| obj:panLeft()},;
K_CTRL_RIGHT, {|obj| obj:panRight()},;
K_CTRL_HOME , {|obj| obj:panHome()},;
K_CTRL_END , {|obj| obj:panEnd()} }
nFound := ASCAN( aKeys, nKey )
IF (nFound != 0)
EVAL( aKeys[++nFound], o )
ENDIF
RETURN (nFound != 0)
/*****
*
* @...GET
*
*/
STATIC FUNCTION DoGet( obj )
LOCAL nCursSave, xOldKey, xNewKey
LOCAL column, get, nKey
// Cursors are for GETs, so:
nCursSave := SETCURSOR(SC_NORMAL)
// make sure browse is stable
WHILE ( !obj:stabilize() )
END
column := obj:getColumn( obj:colPos )
// create a corresponding GET and READ it
get := GetNew(ROW(), COL(), column:block,;
column:heading,, "W+/BG,W+/B")
// Get old key value or NIL
xOldKey := IF( EMPTY(INDEXKEY()), NIL, &(INDEXKEY()) )
READMODAL( {get} )
SETCURSOR(nCursSave)
// When a TBrowse object stabilizes, it always
// tries to leave the same "cell" highlighted
// as was previously.
// That is, it always tries to keep the highlight at
// the same position within the browse window unless
// it is explicitly moved via an up() or down()
// message. The TBrowse positions the data source in a
// corresponding fashion. If there are not enough rows
// left in a data source (i.e. EOF encontered while
// trying to adjust the database to match the window),
// the TBrowse willrelent and move the cursor upward,
// leaving it on the correct record but with part of
// the window unfilled.
// That works OK for logical EOF, but a problem can
// occur when a GET on a key field causes the current
// record to move so close to logical BOF that it is
// impossible to highlight the current record while
// leaving the highlight in the same position within
// the window. In this case, TBrowse opts to leave the
// highlight in the same position within the window,
// even though that position no longer corresponds with
// the same record as before. That is, it repositions
// the database as far it will go, then leaves the
// highlight where it was. The result is that you end up
// with the highlight on a different record than the one
// just edited. This will fix the behavior.
// Get records key value or NIL
xNewKey := IF( EMPTY(INDEXKEY()), NIL, &(INDEXKEY()) )
// If key was changed
IF xOldKey != xNewKey
// Refresh
obj:refreshAll()
ForceStable( obj )
// Make sure we are still in the right record
// after stabilizing
WHILE &(INDEXKEY()) > xNewKey .AND. !obj:hitTop()
obj:up()
ForceStable( obj )
END
ELSE
obj:refreshCurrent()
ForceStable( obj )
ENDIF
// check exit key
nKey := LASTKEY()
IF ( nKey == K_UP .OR. nKey == K_DOWN .OR. ;
nKey == K_PGUP .OR. nKey == K_PGDN )
KEYBOARD CHR( nKey )
ENDIF
RETURN (.T.)
// EOF - TBR10.PRG //Espero ter ajudado.
MarceloG
Editado pela última vez por Pablo César em 10 Mai 2012 17:55, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
ok.
Obrigado Marcelo.
Obrigado Marcelo.
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
TO QUASE LA, ME AJUDEM
Oi pessoal fiz um demo usando o tbrowse e coloquei um referencial no fim da tela mostrando em qual coluna,linha e campo o cursor esta no momento.
So que nao consigo colocar o campo em que o cursor esta.
Pleeeeaaassse, me ajudem comecei agora com o tbrowse.
A minha ideia e editar os dados direto no grid, so que para isto preciso saber a linha, a coluna e qual o campo que dei enter para poder abrir o get, o problema e que exatamente o campo nao consigo identificar.
So que nao consigo colocar o campo em que o cursor esta.
Pleeeeaaassse, me ajudem comecei agora com o tbrowse.
A minha ideia e editar os dados direto no grid, so que para isto preciso saber a linha, a coluna e qual o campo que dei enter para poder abrir o get, o problema e que exatamente o campo nao consigo identificar.
Código: Selecionar todos
SET DATE BRIT
ANNOUNCE RDDSYS
REQUEST DBFCDX
RDDSETDEFAUT("DBFCDX")
XUSUARIO=SPACE(10)
#include "inkey.ch"
clear
***********************
PRIV aCampos:={{"V_SOLTE","@r 99,999.99","SOLTEIRO"},;
{"V_DUPLO","@r 99,999.99","DUPLO"},;
{"V_TRIPL","@r 99,999.99","TRIPLO"},;
{"V_QUADR","@r 99,999.99","QUADRUPLO"},;
{"V_EXTRA","@r 99,999.99","EXTRA"},;
{"V_CRIAN","@r 99,999.99","CRIANCA"}}
SELE 1
USE vtarifa
SET INDEX TO vtarifa1
SET COLOR TO W/B
EXPLODE(2,3,20,76)
BRW_ARQ(2,3,20,76,aCampos)
retu
*********************
PROC BRW_ARQ
PARAMETERS brw_ls,brw_cs,brw_li,brw_ci,brw_campos
brw:=TBrowseNew(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
brw:colorspec := "B/BG,R/BG,G/BG,W+/W,N/BG"
brw:headsep:=chr(205)+chr(209)+chr(205)
brw:colsep:=" "+chr(179)+" "
brw:gotopblock({|| dbGoTop()})
brw:gobottomblock({|| dbGoBottom()})
brw:skipblock({|_1| MOV_PTR(_1)})
FOR i_=1 TO LEN(brw_campos)
cp_titu:=brw_campos[i_,3]
cp_masc:=brw_campos[i_,2]
cp_:=brw_campos[i_,1]
brw:addcolumn(tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}")))
brw:getcolumn(i_):width := LEN(TRAN(&cp_.,cp_masc))
brw:getcolumn(i_):colorblock=&("{||IF(cor='A',{1,4},IF(cor='B',{2,4},"+;
"IF(cor='C',{3,4},{5,4})))}")
NEXT
volta_db=.t.
DO WHILE volta_db
SETCOLOR("W+/B")
SET CURSO OFF
DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
ENDD
READINSERT(.f.)
x_ = COL() ; y_ = ROW()
@ 21,01 SAY 'LINHA -> '
@ 22,01 SAY 'COLUNA -> '
@ 23,01 SAY 'CAMPO -> '
@ 21,12 SAY Y_ PICT '99'
@ 22,12 SAY X_ PICT '99'
@ 23,12 SAY '[color=red]**** AQUI E QUE NAO SEI QUAL VARIAVEL SE REFERE AO CAMPO QUE ESTOU ***'[/color] tecl_p=INKEY(0)
carac_ = UPPER(CHR(tecl_p))
SET CURSO ON
brw:dehilite()
DO CASE
CASE TECL_P = K_ENTER
*ALTERA()
CASE tecl_p = K_ESC
volta_db=.f.
CASE tecl_p = K_UP
brw:up()
CASE tecl_p = K_DOWN
brw:down()
CASE tecl_p = K_RIGHT
brw:right()
CASE tecl_p = K_LEFT
brw:left()
CASE tecl_p = K_HOME
brw:home()
CASE tecl_p = K_END
brw:end()
CASE tecl_p = K_PGUP
brw:pageup()
CASE tecl_p = K_PGDN
brw:pagedown()
CASE tecl_p = K_CTRL_PGDN
brw:gobottom()
CASE tecl_p = K_CTRL_PGUP
brw:gotop()
CASE tecl_p = K_CTRL_END
brw:panend()
CASE tecl_p = K_CTRL_HOME
brw:panhome()
CASE tecl_p = K_CTRL_LEFT
brw:panleft()
CASE tecl_p = K_CTRL_RIGHT
brw:panright()
ENDC
ENDD
SET CURSO ON
RETU
****************************
FUNC MOV_PTR(a_pular)
LOCAL ja_pulado := 0, chv_
IF a_pular = 0
SKIP 0
ELSE
DO WHILE !EOF() .AND. !BOF() .AND.;
a_pular != ja_pulado
IF a_pular > 0
SKIP
ja_pulado++
ELSE
SKIP -1
ja_pulado--
ENDI
ENDD
IF EOF() .OR. BOF()
IF a_pular > 0
GO BOTTOM
ja_pulado--
ELSE
GO TOP
ja_pulado++
ENDI
ENDI
ENDI
RETU ja_pulado
************************
Static Function Altera(xLin,xColuna)
MCAMPO=V_SOLTE
@ xLin,xColuna Get mCampo pict '@r 99,999.99'
Read
if reglock(5)
replace v_solte with mcampo
endif
dbunlock()
dbcommit()
Return(0)
Editado pela última vez por Pablo César em 10 Mai 2012 17:54, em um total de 1 vez.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
-
Alessandro
- Usuário Nível 3

- Mensagens: 141
- Registrado em: 07 Jul 2004 09:39
- Localização: Santo Antonio da Platina-PR
Vou colocar aqui um exemplo de código que uso num módulo de um sistema meu:
Como pode ver usando o método :ColPos do TBrowse você consegue saber em qual coluna está, daí usando o :GetColumn vc joga o conteúdo da coluna pra uma variável e edita ela como quiser.
Edit: Achei outro exemplo aqui nos meus fonte e creio que seja o que vc está querendo fazer, nesse módulo eu edito diretamente os bancos de dados que carreguei previamente para um objeto TBrowse
Código: Selecionar todos
Coluna := oItemBr:GetColumn(oItemBr:ColPos)
If oItemBr:ColPos = 2
Loop
ElseIf oItemBr:ColPos = 3
MCORRIDA := VetItens[E,10]
JanCorr := AbreJanela(11,28,13,52)
@ 12,30 Say "Corrida:"
@ 12,39 Get MCORRIDA Picture Coluna:Cargo[2]
Read
If LastKey() = 27
FechaJanela(JanCorr)
__Keyboard(Chr(1))
Inkey(.01)
Loop
EndIf
VetItens[E,10] := MCORRIDA
FechaJanela(JanCorr)
ElseIf oItemBr:ColPos = 4
MMAT_PART := VetItens[E,9]
JanPart := AbreJanela(11,25,13,56)
@ 12,27 Say "Mat.Partida:"
@ 12,40 Get MMAT_PART Picture Coluna:Cargo[2]
Read
If LastKey() = 27
FechaJanela(JanPart)
__Keyboard(Chr(1))
Inkey(.01)
Loop
EndIf
VetItens[E,9] := MMAT_PART
FechaJanela(JanPart)
ElseIf oItemBr:ColPos = 5
MPADRAO := VetItens[E,11]
JanPad := AbreJanela(11,22,13,58)
@ 12,24 Say "Padr„o:"
@ 12,32 Get MPADRAO Picture Coluna:Cargo[2]
Read
If LastKey() = 27
FechaJanela(JanPad)
__Keyboard(Chr(1))
Inkey(.01)
Loop
EndIf
VetItens[E,11] := MPADRAO
FechaJanela(JanPad)
ElseIf oItemBr:ColPos = 6
Edit: Achei outro exemplo aqui nos meus fonte e creio que seja o que vc está querendo fazer, nesse módulo eu edito diretamente os bancos de dados que carreguei previamente para um objeto TBrowse
Código: Selecionar todos
ElseIf xTecla = 13 .and. Rp_Senha(ADM_NIV,"_BROW",2)
While !Rlock(); EndDo
cValor := FieldGet(oBrowSub:ColPos)
lSaiu := .T.
SetKey(05,{|| __KeyBoard(Chr(13)+Chr(05)) , (lSaiu := .F.) })
SetKey(24,{|| __KeyBoard(Chr(13)+Chr(24)) , (lSaiu := .F.) })
@ Row(), Col() Get cValor
Read
If LastKey() # 27
FieldPut(oBrowSub:ColPos,cValor)
If nCpoUsr > 0 .and. FieldGet(nCpoUsr) != ADM_COD
FieldPut(nCpoUsr,ADM_COD)
EndIf
If nCpoDta > 0 .and. FieldGet(nCpoDta) != Date()
FieldPut(nCpoDta,Date())
EndIf
If FieldName(oBrowSub:ColPos) $ IndexKey()
DbStabilize(oBrowSub)
EndIf
If lSaiu .and. oBrowSub:ColPos != oBrowSub:ColCount
__KeyBoard(Chr(04)+Chr(13))
EndIf
EndIf
SetKey(05,NIL)
SetKey(24,NIL)
DbUnlock()
DbCommit()
ElseIf xTecla = 07 .and. Rp_Senha(ADM_NIV,"_BROW",3)
If TemAcesso .or. ChecaAcesso()
If Firma(,,"Confirma "+If(Deleted(),"recuperação","exclusão?")) = 1
While !Rlock(); EndDo
If !Deleted()
DbDelete()
Else
DbRecall()
EndIf
DbCommitAll()
DbUnlockAll()
If Eof() // .or. Deleted()
DbSkip(-1)
EndIf
DbStabilize(oBrowSub)
EndIf
TemAcesso := .T.
EndIf
ElseIf xTecla = 22 .and. Rp_Senha(ADM_NIV,"_BROW",1)
nRecno1 := Recno()
DbGoBottom()
DbSkip()
lAppend := .T.
oBrowSub:RefreshAll()
oBrowSub:ForceStable()
oCol := oBrowSub:getColumn(oBrowSub:colPos)
mGetVar := Eval(oCol:block)
oGet := GetNew(Row(), Col(), ;
{|x| if(PCount() == 0, mGetVar, mGetVar := x)}, ;
"mGetVar")
If oGet:type == "C" .AND. LEN( oGet:varGet() ) > 78
oGet:picture := "@S78"
Endif
ReadModal( {oGet} )
If LastKey() # 27
DbAppend()
While !RLock(); EndDo
FieldPut(oBrowSub:colPos,mGetVar)
DbCommit()
DbUnlock()
If oBrowSub:ColPos != oBrowSub:ColCount
__KeyBoard(Chr(04)+Chr(13))
EndIf
Else
DbGoTo(nRecno1)
EndIf
lAppend := .F.
DbStabilize(oBrowSub)
Editado pela última vez por Lopes em 05 Abr 2006 18:16, em um total de 1 vez.
-
managercorp
- Usuário Nível 3

- Mensagens: 138
- Registrado em: 16 Nov 2004 11:03
- Localização: recife
- Contato:
O Amigo nao entendeu
A linha eu ja tenho, a coluna tambem
o que nao tenho e o campo que estou
ex: estou navegando com a seta pelo grid
desci uma linha, andei duas colunas, entao o cursor esta em cima do
campo triplo, entao quando eu der enter nesse local, a minha
variavel mcampo da funcao altera tem de ser v_tripl que e o nome do campo do meu arquivo que estou no momento com o cursor em cima.
E N T E N D E U A G O R A
?????
o que nao tenho e o campo que estou
ex: estou navegando com a seta pelo grid
desci uma linha, andei duas colunas, entao o cursor esta em cima do
campo triplo, entao quando eu der enter nesse local, a minha
variavel mcampo da funcao altera tem de ser v_tripl que e o nome do campo do meu arquivo que estou no momento com o cursor em cima.
E N T E N D E U A G O R A
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Caro Amigo,
pegue o nome do campo com FieldName().
Lembre-se, apesar de estar vendo um tbrowse, você está "folheando" o arquivo de dados ou array.
Se a Tbrowse estiver destacando o campo1, este será o nome retornado e assim sucessivamente.
Você pode, na criação do objeto tbcolumnew, utilizar o objeto cargo para guardar este nome e, usá-lo posteriormente com ajuda do método getcolumn.
oCol:=tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}"))
oCol:cargo:=<nome do campo>
brw:addcolumn(oCol)
...
? brw:GetColumn(brw:Colpos()):cargo
Espero ter ajudado.
MarceloG
pegue o nome do campo com FieldName().
Lembre-se, apesar de estar vendo um tbrowse, você está "folheando" o arquivo de dados ou array.
Se a Tbrowse estiver destacando o campo1, este será o nome retornado e assim sucessivamente.
Você pode, na criação do objeto tbcolumnew, utilizar o objeto cargo para guardar este nome e, usá-lo posteriormente com ajuda do método getcolumn.
oCol:=tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}"))
oCol:cargo:=<nome do campo>
brw:addcolumn(oCol)
...
? brw:GetColumn(brw:Colpos()):cargo
Espero ter ajudado.
MarceloG
