COMO PUEDO SIMULAR EL KEYBOARD DE CLIPPER
ALGO ASI COMO KEYBOARD K_ENTER+KEY
LO QUE NECESITO ES PODER EDITAR UNA COLUMNA DE LISTBOX UTILIZANDO LA FUNCION EDITCOL
DE TAL FORMA QUE AL ESCRIBIR SOBRE LA COLUMNA EL NUMERO 85
APAREZCA DIRECTAMENTE
SIN TENER QUE DAR "ENTER" PRIMERO, DESPUES "85" Y "ENTER" AL FINAL
ALGO ASI
oBrw:bkeydown={| nkey |iif(nkey>47 .and. nkey<58,modifica(nkey),nil)}
function modifica(nkey)
xvalor:=cantidad
if oBrw:editcol(3,@xvalor,'99,999',,,,,)
cantidad:=valor
endif
return nil
No se como hacer para que al escribir 8, aparezca el 8 en la columna y el cursor se quede despues del 8, y posteriormente solo escriba el 5 y asi quede grabado el 85
Saludos
EDICION POR COLUMNA
-
- Posts: 122
- Joined: Wed Oct 12, 2005 1:03 pm
- Location: Cuernacava, Morelos Mexico
EDICION POR COLUMNA
Marco Augusto Rodriguez Manzo
fwh 2020 Xharbour 1.2.3
MySQL 5.0.19 Fastreport
PERZO SOFT
Sistemas Personalizados
fwh 2020 Xharbour 1.2.3
MySQL 5.0.19 Fastreport
PERZO SOFT
Sistemas Personalizados
-
- Posts: 1033
- Joined: Fri Oct 07, 2005 3:33 pm
- Location: Cochabamba - Bolivia
Hola,
aumente
una data
DATA nkey
luego en el metodo
METHOD KeyChar( nKey, nFlags ) CLASS TWBrowse
:
CASE ::LAutoedit
::edit( :::nColAct,, nKey )
otherwise
:
Luego el metodo queda asi
METHOD Edit( nCol, lModal, nkey ) CLASS TWBrowse
:
::nKey := nKey
:
y por ultimo en el metodo
STATIC Function __Edit(Self, nCol, lModal )
:
:
despues de la linea
oGet:bValid:= {|| ValidlEditCol( Self, oGet, oDlg, bOldValid, bValid, bAction, @lOk ) }
añadi
oGet:bGotFocus := {|| IF( ::nKey != NIL .AND. ::nKey != 13, __keyboard(CHR(::nKey)), ) }
Por ahora no podria publicar la clase ya que hay algunas cosas mas que la hacen dependiente, espero darme tiempo para poder hacerla
Tienes que hacer lo mismo de siempre para asignar los datos a la columna, como lo muestras en tu ejemplo
Espero te sirva
saludos
Marcelo
aumente
una data
DATA nkey
luego en el metodo
METHOD KeyChar( nKey, nFlags ) CLASS TWBrowse
:
CASE ::LAutoedit
::edit( :::nColAct,, nKey )
otherwise
:
Luego el metodo queda asi
METHOD Edit( nCol, lModal, nkey ) CLASS TWBrowse
:
::nKey := nKey
:
y por ultimo en el metodo
STATIC Function __Edit(Self, nCol, lModal )
:
:
despues de la linea
oGet:bValid:= {|| ValidlEditCol( Self, oGet, oDlg, bOldValid, bValid, bAction, @lOk ) }
añadi
oGet:bGotFocus := {|| IF( ::nKey != NIL .AND. ::nKey != 13, __keyboard(CHR(::nKey)), ) }
Por ahora no podria publicar la clase ya que hay algunas cosas mas que la hacen dependiente, espero darme tiempo para poder hacerla
Tienes que hacer lo mismo de siempre para asignar los datos a la columna, como lo muestras en tu ejemplo
Espero te sirva
saludos
Marcelo
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Code: Select all
How can mimic CA-Clipper's Keyboard command?
Use this function:
Function fwKeyboard(oWnd,nKey)
oWnd:SetFocus()
oWnd:PostMsg( WM_KEYDOWN, nKey, 0)
Return NIL
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
-
- Posts: 122
- Joined: Wed Oct 12, 2005 1:03 pm
- Location: Cuernacava, Morelos Mexico
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
-
- Posts: 122
- Joined: Wed Oct 12, 2005 1:03 pm
- Location: Cuernacava, Morelos Mexico
FRANCISCO, TE ENVIO EL EJEMPLO, OJALA TE SIRVA
EL PROCEDIMIENTO ES UN POCO ARCAICO, PERO ME FUNCIONO PARA
RESOLVER ESTA NECESIDAD DE EDICION DE UN CAMPO NUMERICO
( SEGURAMENTE SE PUEDE MEJORAR )
1. MODIFIQUE EL METODO LEDITCOL DE LA CLASE WBROWSE.PRG
AÑADIENDO EL ULTIMO RENGLON
@ 0, 0 GET oGet VAR uVar ; // we have to use here uVar to use VALID !!!
SIZE aDim[ 4 ] - aDim[ 2 ] - If( bAction != nil, 12, 0 ),;
aDim[ 3 ] - aDim[ 1 ] OF oDlg ;
FONT aFONT[1] COLOR nClrFore, nClrBack
oGet:oGet:Picture = cPicture
OJO=> oGet:bGotFocus = { || oGet:SetSel( 0, 0 ),__Keyboard( STR(uVar,1) ) }
2. EN MI PROGRAMA LO LLAMO DE LA SIGUIENTE MANERA
REDEFINE LISTBOX oBRW .....
.......ETC
oBRW:bKeyDOWN={ | NKEY | IIF(NKEY>47.AND.NKEY<58,MODRESURM(oBRW,NKEY),NIL) }
FUNCTION MODRESUR(oOBJ,NKEY)
XVALOR1=NKEY-48
IF oOBJ:LEDITCOL(5,@XVALOR1,'99,999',,RGB(0,0,0),RGB(0,250,0),,)
CANTIDADE:=XVALOR1
ENDIF
oOBJ:REFRESH()
RETURN NIL
EL PROCEDIMIENTO ES UN POCO ARCAICO, PERO ME FUNCIONO PARA
RESOLVER ESTA NECESIDAD DE EDICION DE UN CAMPO NUMERICO
( SEGURAMENTE SE PUEDE MEJORAR )
1. MODIFIQUE EL METODO LEDITCOL DE LA CLASE WBROWSE.PRG
AÑADIENDO EL ULTIMO RENGLON
@ 0, 0 GET oGet VAR uVar ; // we have to use here uVar to use VALID !!!
SIZE aDim[ 4 ] - aDim[ 2 ] - If( bAction != nil, 12, 0 ),;
aDim[ 3 ] - aDim[ 1 ] OF oDlg ;
FONT aFONT[1] COLOR nClrFore, nClrBack
oGet:oGet:Picture = cPicture
OJO=> oGet:bGotFocus = { || oGet:SetSel( 0, 0 ),__Keyboard( STR(uVar,1) ) }
2. EN MI PROGRAMA LO LLAMO DE LA SIGUIENTE MANERA
REDEFINE LISTBOX oBRW .....
.......ETC
oBRW:bKeyDOWN={ | NKEY | IIF(NKEY>47.AND.NKEY<58,MODRESURM(oBRW,NKEY),NIL) }
FUNCTION MODRESUR(oOBJ,NKEY)
XVALOR1=NKEY-48
IF oOBJ:LEDITCOL(5,@XVALOR1,'99,999',,RGB(0,0,0),RGB(0,250,0),,)
CANTIDADE:=XVALOR1
ENDIF
oOBJ:REFRESH()
RETURN NIL
Marco Augusto Rodriguez Manzo
fwh 2020 Xharbour 1.2.3
MySQL 5.0.19 Fastreport
PERZO SOFT
Sistemas Personalizados
fwh 2020 Xharbour 1.2.3
MySQL 5.0.19 Fastreport
PERZO SOFT
Sistemas Personalizados
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.