Error Registro fuera de Intervalo

1,015 views
Skip to first unread message

Yvan GMAIL

unread,
Dec 6, 2010, 4:13:53 PM12/6/10
to publice...@googlegroups.com

Buenas tardes compañeros,

 

Tengo un grid en el cual en la última columna contiene un campo editbox (controsource), con sparse = .F

 

Lo que intento hacer es, cuando el editbox recibe el foco, automáticamente el ancho del registro cambie (rowheight) de 25 a 45. Esto porque ha ingresado al campo observaciones, y normalmente se ingresa una gran cantidad de texto.  Luego cuando el foco sale del editbox quiero que retorne a su alto normal.

 

Todo bien, hasta que utilizo el mouse para salir del editbox cuando me salto 2 registros arriba o más . Recibo el error “Registro fuera de intervalo”.

 

Código del Gotfocus del editbox.

Thisform.xrelFIC.RowHeight = 45

 

Código del LostFocus del editbox.

Thisform.xrelFIC.RowHeight = 25.. Si comento ese código ya no tengo el error. Lo cual me parece bien extraño.. debe ser un Bug.

 

Utilizo VFP 9. SP 1

 

La ficha inicial está asi:

 

Con el gotfocus se convierte en:

 

Salgo con el mouse de allí.. y recibo este error. El grid se me limpia.. No tengo código donde me realice un zapeo..

 

Mas info.

El grid esta enlazado a un cursor creado en el load con “CREATE CURSOR”

El valid del editbox tiene esto:

 

SELECT XRELFIC

REPLACE           XRELFIC.OBSERV    WITH  THIS.VALUE

IF ALLTRIM(XRELFIC.OBSERV) <> ALLTRIM(XRELFIC.OLDOBS) THEN

      REPLACE     XRELFIC.ISCHAN    WITH  'S'

ENDIF

REPLACE           XRELFIC.OLDOBS    WITH  XRELFIC.OBSERV

 

Yvan Carranza

Pacific Peru Trading S.A.C.

613-8906

 

image007.jpg
image008.jpg
image009.jpg

Miguel Canchas

unread,
Dec 6, 2010, 4:19:21 PM12/6/10
to publice...@googlegroups.com
prueba ampliando el rowheight de la grilla.
 
MK
image007.jpg
image008.jpg
image009.jpg

Yvan GMAIL

unread,
Dec 6, 2010, 4:25:16 PM12/6/10
to publice...@googlegroups.com

Miguel,

Si amplio el RowHeight en  tiempo de diseño función normal.

 

El problema es cuando lo cambio en tiempo de ejecución.  Osea solo sale error si

Activo el código

Thisform.xrelFIC.RowHeight = 25.. del evento lostfocus del editbox.

image001.jpg
image002.jpg
image003.jpg

Miguel Canchas

unread,
Dec 6, 2010, 4:26:43 PM12/6/10
to publice...@googlegroups.com
de la grilla, no del editbox.
image001.jpg
image002.jpg
image003.jpg

Yvan GMAIL

unread,
Dec 6, 2010, 4:30:29 PM12/6/10
to publice...@googlegroups.com

Estoy cambiando el Rowheight de la grilla, el edit box que yo sepa no tiene esa propiedad.

image001.jpg
image002.jpg
image003.jpg

extremo

unread,
Dec 6, 2010, 4:35:39 PM12/6/10
to Comunidad de Visual Foxpro en Español
Yvan, encuentro complicado tu problema, no has buscado otra opcion
como por ejemplo colocar un edit fuera de la grilla y que actualice
los datos conforme navegas en la grilla?

Bendiciones

Jairo Miranda

unread,
Dec 6, 2010, 4:35:56 PM12/6/10
to publice...@googlegroups.com

Prueba esto

Local m.Savereg 

*guardar el registro activo

m.savereg = recno()

 

al hacer el lostsfocus

goto m.savereg

thisform.refresh

 

Yvan GMAIL

unread,
Dec 6, 2010, 4:52:42 PM12/6/10
to publice...@googlegroups.com
Hola Extremo,
Esa idea ya lo deseche, porque sería más complicado el registro para el
usuario. La única opción que me queda es mantener el alto de la fila en 45..
aunque no ve muy "estético".. por eso la idea de ampliar el alto solo cuando
ingresa al editbox.


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de extremo
Enviado el: Lunes, 06 de Diciembre de 2010 04:36 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Error Registro fuera de Intervalo

Allan Raúl Acuña

unread,
Dec 6, 2010, 4:57:09 PM12/6/10
to publice...@googlegroups.com
Y no te serviría tener el ToolTipText para que vea el contenido?


Lic. Allan R. Acuña
Desarrollador Independiente
msn= allan...@hotmail.com
skype= niceasysoft
+(505) 8 831 8191
www.niceasysoft.com

Yvan GMAIL

unread,
Dec 6, 2010, 5:03:28 PM12/6/10
to publice...@googlegroups.com

Allan,

Esto me serviría para la visualización.. pero para el ingreso quisiera que se activara el edit que soporte varias líneas.

 

Le busqué una solución a medias.

Ponerle código en el gotfocus de las demás columnas..  osea si el foco retorna a una de ella que cambie la altura de la fila.. y ya no recibo error.

Allan Raúl Acuña

unread,
Dec 6, 2010, 5:06:30 PM12/6/10
to publice...@googlegroups.com
Si el punto activar el Edit y que puedan editar lo puedes dejar normal y que el usuario amplie la fila del GRID desde la primera fila como en EXCEL
asi lo hago en una de mis aplicacion sin problemas y el usuario content!!!


Lic. Allan R. Acuña
Desarrollador Independiente
msn= allan...@hotmail.com
skype= niceasysoft
+(505) 8 831 8191
www.niceasysoft.com




From: yvan.c...@gmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Error Registro fuera de Intervalo
Date: Mon, 6 Dec 2010 17:03:28 -0500

Yvan GMAIL

unread,
Dec 6, 2010, 5:13:18 PM12/6/10
to publice...@googlegroups.com

Si al inicio lo tenia asi, pero para no complicarles le quise dar esa funcionalidad. Ya que en el Excel tu puedes cambiar el ancho de cada fila, en cambio en VFP se cambia para todos. Y conociendo de quejones a los usuarios, si no le es “amigable” comienzan a comentar mal del sistema.

marcelobu...@gmail.com

unread,
Dec 7, 2010, 11:47:15 AM12/7/10
to publice...@googlegroups.com
Hola

Lo mejor es agregar un boton en el formulario
que abra un form nuevo SOLO CON EL CAMPO ESE

Asi pueden escribir todo lo que quieran
sin tocar el GRID

Saludos
MarceloBuenosAires
____________

ibania blanco

unread,
Dec 9, 2010, 9:45:09 AM12/9/10
to Comunidad de Visual Foxpro en Español
alguien colo esto y esta interesenta

Ampliar una columna dependiendo su longitud
ShowTips de tu formulario a .T., y al pasar el cursor del mouse sobre
la columna de tu grid se mostrará toda la descripción a estilo
ToolTip.

Otra forma es enviando la información a un TextBox de mayor tamaño,
esto lo
puedes hacer de 2 formas:
Programarlo en el método AfterRowColChange del grid.
ThisForm.txtcDescripcion.Value = tuCursor.tuCampo

En el método AfterRowColChange() de tu grilla escribes:
ThisForm.Label1.Caption = MiDescripcion

Label1 podría estar un poco más abajo de tu grilla y podrías mostrar
allí otros datos, no solamente la Descripción.

AfterRowColChange()
LongCampo = Len(AllTrim(MiDescripcion))
do case
case LongCampo <= 80
This.Width = 80
case LongCampo <= 120
This.Width = 120
case LongCampo <= 150 && o también: otherwise
This.Width = 150
endcase
Reply all
Reply to author
Forward
0 new messages