german escribió:
Saludos
He estado buscando una propiedad que me coloque en modo de insercion la edicion de datos en un DBGRID y aun no la encuentro,
para que cuando entra al campo selecionado este continue a partir de lo que tiene escrito,
pero siempre me borra a menos de que presione la flecha o ubicando con el mouse.
esta operacion es muy lenta e incomoda en cada entrada de datos
los metodos que uso son los siguientes
solo falta quitar el modo de sobreescritura y funciona
Alguno sabe como hacerlo?
activar / desactivar insertar, sobreescribir en dbgrid
/*
* Evento OnEnterEditor.
*/
METHOD DbGridOnEnterEditor( oSender, oEditor ) CLASS TForm1
local nomcpo,anomcpos
anomcpos=::dbgrid:fields
nomcpo=anomcpos[::dbGrid:col]
oEditor:Selstart:=(len(trim(&nomcpo)))+1
oEditor:SelLength:=0
return
/*
* Evento OnKeyDown.
*/
METHOD DbGridOnKeyDown( oSender, nKey ) CLASS TForm1
local Tecla,nomcpo,contcpo,reg,varrpl,anomcpos
Tecla=CHR( nKey )
anomcpos=::dbgrid:fields
nomcpo=anomcpos[::dbGrid:col]
Contcpo=::dbgrid:getdata(::dbGrid:col)
reg=recno()
Do case
case nkey=13
::dbGrid:ShowEditor(Tecla)
case nkey=39
case nKey>=65 .AND. nkey<=90
varrpl=trim(&nomcpo)+Tecla
replace &nomcpo with varrpl
::dbGrid:Refresh()
::dbGrid:ShowEditor()
case (nkey>=48 .AND. nkey<=57) .OR.(nkey>=96 .AND. nkey<=105)
IF EMPTY(CONTCPO)
if VALTYPE(&NOMCPO)="N"
varrpl=trim(str(&nomcpo))+Tecla
varrpl=val(varrpl)
eLSE
varrpl=trim(&nomcpo)+Tecla
endif
ENDIF
replace &nomcpo with varrpl
::dbGrid:Refresh()
::dbGrid:ShowEditor()
endcase
return
Hola.
Prueba esto:
/*
* Evento OnEnter.
*/
METHOD Edit2OnEnter( oSender ) CLASS TForm1
SendKeys( "{RIGHT}" )
return
FUNCTION SendKeys( cKeys )
LOCAL oShell
oShell := TOleContainer():Create("wscript.shell")
oShell:Sendkeys( cKeys )
oShell:Destroy()
RETURN