FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour C贸mo editar celdas en un TxBrowse
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 12:27 PM
Tengo un TxBrowse con cuatro columnas. Quiero editar las celdas correspondientes a las columnas 2, 3 y 4. Hasta ahora lo hago definiendo
bPostEdit2  := {|o,v,nKey| ::GrabarUnDato(nKey, Val(v) , "CAMPO2")}
bPostEdit3  := {|o,v,nKey| ::GrabarUnDato(nKey, Val(v) , "CAMPO3")}
bPostEdit4  := {|o,v,nKey| ::GrabarUnDato(nKey, Val(v) , "CAMPO4")}

Hasta aqu铆, todo bien. Un doble click en cualquier celda me permite editarla y grabar su contenido. Ahora bien: Me gustar铆a que una vez editado el campo 2, al pulsar Intro, entrase autom谩ticamente en modo de edici贸n de la celda siguiente (la 3), sin necesidad de hacer doble click en ella. Alguien me podr铆a dar una soluci贸n? Gracias

Rafael
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 01:34 PM
Rafael Clemente wrote:Tengo un TxBrowse con cuatro columnas. Quiero editar las celdas correspondientes a las columnas 2, 3 y 4. Hasta ahora lo hago definiendo
bPostEdit2  := {|o,v,nKey| ::GrabarUnDato(nKey, Val(v) , "CAMPO2")}
bPostEdit3  := {|o,v,nKey| ::GrabarUnDato(nKey, Val(v) , "CAMPO3")}
bPostEdit4  := {|o,v,nKey| ::GrabarUnDato(nKey, Val(v) , "CAMPO4")}

Hasta aqu铆, todo bien. Un doble click en cualquier celda me permite editarla y grabar su contenido. Ahora bien: Me gustar铆a que una vez editado el campo 2, al pulsar Intro, entrase autom谩ticamente en modo de edici贸n de la celda siguiente (la 3), sin necesidad de hacer doble click en ella. Alguien me podr铆a dar una soluci贸n? Gracias

Rafael

Rafa, solo una idea asi al vuelo, en la misma rutina de GrabarUndato() tendrias que ver la posibilidad de pasarle el foco al proximo campo.
Yo no uso la TxBrowse, pero quizas con un :SelectCol( nCol ) podrias hacerlo.
No se solo una idea, habria que ver la rutina GrabarUndato()
Un abrazo. El Loco =>))
FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 01:45 PM

S铆; el problema es que no basta con pasar el foco. Para entrar en modo de edici贸n de una celda, el TXBrowse exige un doble click en la celda en cuesti贸n. Yo supongo que habr铆a que hacer un PostMessage() o algo as铆, pero no s茅 como. Esa era mi pregunta
Rafael

Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 01:50 PM
S贸lo como referencia, mi funci贸n GrabarUnDato() es muy simple:
METHOD GrabarUnDato(nKey, v, cFld)
Local cAlias := Alias()
If nKey = VK_RETURN
   (cAlias)->(RLock())
         (cAlias)->(FieldPut((cAlias)->(Fieldpos(cFld)), v))
    (cAlias)->(DbUnLock())
EndIf
Return Nil

Rafael
Posts: 31
Joined: Fri Mar 17, 2006 02:04 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 02:02 PM
Rafa, yo lo hago utilizando arrays de esta forma:

WITH OBJECT :aCols[ BB_NOMANA ]
:cHeader := "Nombre de Titular "
:nEditType := 1
:bStrData := { |a| a := ::aDetChq[:][BB_NOMANA] , IF( Empty( a ), "", Upper(a) ) }
:bOnPostedit := { |o| ::aDetChq[:][BB_NOMANA] := Upper( o:cText ) }
:bEditValue := { || ::aDetChq[:][BB_NOMANA] }
:nWidth := 140
END

WITH OBJECT :aCols[ BB_GLOMOV ]
:cHeader := "Glosa"
:neditType := 1
:bStrData := { |a| a := ::aDetChq[:][BB_GLOMOV] , IF( Empty( a ), "", a ) }
:bOnPostedit := { |o| ::aDetChq[:][BB_GLOMOV] := ( o:cText ),;
IF(::nArrayAt == Len( ::aDetChq ), AAdd( ::aDetChq, ::AddReg() ), NIL ),;
::GoDown(), ::GoLeftMost() }
:bEditValue := { || ::aDetChq[:][BB_GLOMOV] }
:nWidth := 140
END

Presiono INTRO y el primer objeto pasa a modo edici贸n, luego con INTRO pasa el segundo, luego INTRO y paso a la siguiente linea del browse con modo edici贸n. (::GoDown, ::GoLeftMost() )

espero te sirva

salu2
Mauro
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 02:27 PM

Mauro:
S铆, tu sistema funciona bien en edici贸n de arrays y en edici贸n de DBFs, si trabajas con MARQSTYLE_CELL; el problema es que yo utilizo MARQSTYLE_HIGHLROW, o sea, ilumino en azul toda la l铆nea, no s贸lo la celda que tiene el foco. Por eso hay que hacer doble click en el dato que quieres editar. Mi pregunta es si al salir de editar una calda (pulsando Intro) hay forma de simular autom谩ticamente un doble click en la celda siguiente.

De todas formas, muchas gracias. Si no consigo resolverlo de otra forma, tu sistema me da una posible alternativa.
Rafael

Posts: 31
Joined: Fri Mar 17, 2006 02:04 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 02:39 PM

Rafa,
En el ejmplo que te adjunte MARQSTYLE_HIGHLROW igual funciona al presionar INTRO y pasar a modo edici贸n, el problema es que no sabes la posici贸n del curso, te recomomiendo utilizar:
::oBrw:nMarqueeStyle := 002 // MARQSTYLE_HIGHLROW

salu2

mauro

Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo editar celdas en un TxBrowse
Posted: Fri Oct 19, 2007 02:52 PM

Mauro:
S铆 se帽or, tienes raz贸n: Con MARQSTYLE_HIGHLROW tambi茅n funciona. Lo que pasa es que, como t煤 dices, no ves f谩cilmente en qu茅 celda est谩s. Pulsando Intro, confirmo que entras en modo edici贸n. Se trata, pues, de cambiar el foco de la celda a la siguiente y enviar un Intro. Voy a hacer unas pruebas a ver si con este enfoque lo soluciono. Muchas gracias y un saludo,
Rafael

Continue the discussion