Xbrowse con edicion automatica
Posted: Thu Jan 12, 2017 11:05 pm
Como hago para que cuando finalizo la edición de una celda de un xbrowse al cambiar a la siguiente se active el edición automática de la celda sin tener que puslar ninguna tecla.
Gracias
Pongo un pequeño ejemplo de lo que estoy intentando
Gracias
Pongo un pequeño ejemplo de lo que estoy intentando
- Code: Select all Expand view
#include "FiveWin.ch"
#include "InKey.ch"
#include "xbrowse.ch"
#DEFINE COL1 1
#DEFINE COL2 2
#DEFINE COL3 3
#DEFINE COL4 4
#DEFINE COL5 5
#define DCONSU 0
#define DALTAS 1
#define DMODIF 2
#DEFINE DREGISTRO { SPACE(10) , SPACE(40), 0, CTOD(""), CTOD("") }
STATIC nAccion
function Prueba2()
local aArray := {}
local oWnd, ;
oBrw, oCol
local nI
AADD(aArray, DREGISTRO)
define window oWnd FROM 0,0 TO 24, 120 title "test" //menu oMenu
oBrw:= txbrowse():new( oWnd )
oBrw:nRowHeight := 25
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oCol := oBrw:AddCol()
oCol:cHeader := "Código"
oCol:nWidth := 80
oCol:bStrData := {|| IIF( LEN( aArray ) == 0, SPACE(10), aArray[oBrw:nArrayAt, COL1] ) }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_LEFT
oCol:nArrayCol := COL1
oCol:nEditType := EDIT_GET
oCol:bClrEdit := { || {CLR_BLACK, CLR_YELLOW} }
oCol:bEditValid := { |oGet, oCol| ValidaCol(oGet, oCol, COL1) }
oCol:bOnPostEdit := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL1) }
oCol := oBrw:AddCol()
oCol:cHeader := "Comentario"
oCol:nWidth := 320
oCol:bStrData := {|| IIF( LEN( aArray ) == 0, SPACE(40), aArray[oBrw:nArrayAt, COL2] ) }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_LEFT
oCol:nArrayCol := COL2
oCol:nEditType := EDIT_GET
oCol:bClrEdit := { || {CLR_BLACK, CLR_YELLOW } }
oCol:bEditValid := { |oGet, oCol| ValidaCol(oGet, oCol, COL2) }
oCol:bOnPostEdit := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL2) }
oCol := oBrw:AddCol()
oCol:cHeader := "Importe"
oCol:nWidth := 80
oCol:bStrData := {|| IIF( LEN( aArray ) == 0, 0, aArray[oBrw:nArrayAt, COL3] ) }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_RIGHT
oCol:nArrayCol := COL3
oCol:nEditType := EDIT_GET
oCol:bClrEdit := { || {CLR_BLACK, CLR_YELLOW } }
oCol:bEditValid := { |oGet, oCol| ValidaCol(oGet, oCol, COL3) }
oCol:bOnPostEdit := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL3) }
oCol := oBrw:AddCol()
oCol:cHeader := "Fecha 1"
oCol:nWidth := 80
oCol:bStrData := {|| IIF( LEN( aArray ) == 0, CTOD(""), aArray[oBrw:nArrayAt, COL4] ) }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:nArrayCol := COL4
oCol:nEditType := EDIT_GET
oCol:bClrEdit := { || {CLR_BLACK, CLR_YELLOW } }
oCol:bEditValid := { |oGet, oCol| ValidaCol(oGet, oCol, COL4) }
oCol:bOnPostEdit := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL4) }
oCol := oBrw:AddCol()
oCol:cHeader := "Fecha 2"
oCol:nWidth := 80
oCol:bStrData := {|| IIF( LEN( aArray ) == 0, CTOD(""), aArray[oBrw:nArrayAt, COL5] ) }
oCol:nHeadStrAlign := AL_CENTER
oCol:nDataStrAlign := AL_CENTER
oCol:nArrayCol := COL5
oCol:nEditType := EDIT_GET
oCol:bClrEdit := { || {CLR_BLACK, CLR_YELLOW } }
oCol:bEditValid := { |oGet, oCol| ValidaCol(oGet, oCol, COL5) }
oCol:bOnPostEdit := { |oCol, xValue, nKey| PostEdit( oCol, xValue, nKey, COL5) }
oBrw:bPastEof := { || AddRow( oBrw) }
oBrw:bKeyDown := {| nKey | If( nKey == VK_DELETE, DelRow( oBrw ), NIL ) }
oBrw:SetArray( aArray )
oBrw:CreateFromCode()
oWnd:oClient := oBrw
nAccion := DCONSU
ACTIVATE window oWnd ON INIT oWnd:Center()
return nil
STATIC FUNCTION PostEdit(oCol, xValue, nKey, nCol)
If nKey == VK_ESCAPE .or. nKey == 0
If nAccion == DALTAS
DelRow(oCol:oBrw)
RETURN .T.
EndIf
EndIf
oCol:Value := xValue
If nAccion == DALTAS .and. nCol == COL5
msginfo("guardar alta")
nAccion := DCONSU
RETURN .T.
EndIf
If nAccion != DALTAS
MSGINFO("GUARDAR MODIFICACION")
eNDIF
If nKey == VK_RETURN
oCol:oBrw:GoRight()
PostMessage( oCol, WM_CHAR, VK_RETURN)
EndIf
RETURN .T.
STATIC FUNCTION ValidaCol(oGet, oCol, nCol)
dEPURA(OgET:CtEXT)
return .t.
static function AddRow( oBrw )
If nAccion == DALTAS
RETURN NIL
EndIf
AAdd( oBrw:aArrayData, DREGISTRO )
oBrw:GoBottom()
oBrw:GoLeftMost()
oBrw:Refresh()
oBrw:SetFocus()
nAccion := DALTAS
PostMessage( oBrw:hWnd, WM_CHAR, VK_RETURN)
return nil
static function DelRow( oBrw, aDialogo )
If oBrw:nLen > 0
ADel( oBrw:aArrayData, oBrw:nArrayAt )
ASize( oBrw:aArrayData, oBrw:nLen - 1 )
oBrw:Refresh()
endif
oBrw:SetFocus()
nAccion := DCONSU
return nil