Fecha actual Lun Jun 17, 2024 12:49 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 4 mensajes ] 
Autor Mensaje
NotaPublicado: Mié Mar 02, 2011 7:30 pm 

Registrado: Lun Ene 08, 2007 5:56 pm
Mensajes: 91
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

_________________
Saludos.
German


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mié Mar 02, 2011 8:42 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
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

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mié Mar 02, 2011 11:01 pm 

Registrado: Lun Ene 08, 2007 5:56 pm
Mensajes: 91
:lol:

_________________
Saludos.
German


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Jue Mar 03, 2011 2:49 am 
Avatar de Usuario

Registrado: Mar Dic 27, 2005 2:58 pm
Mensajes: 77
Más simple todavía:

Código:
/*
 * Evento OnEnterEditor.
 */
METHOD GridOnEnterEditor( oSender, oEditor ) CLASS TForm1

   oEditor:AutoSelect := .F.
   oEditor:SelStart := Len( oEditor:Caption )
   oEditor:SelLength := 0

return


saludos


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 4 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron