Text en grid cambia a readonly

671 views
Skip to first unread message

Daniel Sánchez

unread,
Feb 28, 2013, 9:37:45 AM2/28/13
to Comunidad de Visual Foxpro en Español, Mundo Visual FoxPro
Como se encuentran, hace un buen rato estoy que doy vuelta en el tema de estos text dentro de una columna del grid que se coloca en modo readonly a pesar que en modo diseño esta en readonly=.f., y que ademas luego de enlazarlo con el cursor luego de la consulta lo vuelvo a poner en readonly=.f. se cambia a .t., entro al debug cuando estoy corriendo el formulario y lo cambio a .f. pero cuando me coloca en la celda se vuelve nuevamente a .t.
El formulario en cuestión tengo las primeras 5 columnas en enabled=.f., pero no el readonly esos estan en .f., porque no deseo modificar esos campos si no las columnas del 6 al 10 pero no quiere ya le di varias vueltas y no consigo solucionar ese problema.
Unos pantallas para que vean como va la cosa, aqui el trace la columna no tiene activo el readonly
Imágenes integradas 1
El fomulario ejecutandose
Imágenes integradas 2

Aquí la parte donde cargo los datos del grid y lo pongo en readonly .f.

Imágenes integradas 3

Como comente, ni cuando lo ejecuto y entro en el trace al cambiarlo no se queda ya que al colocarme en la columna lo vuelve a poner en .t. el readonly.
Espero que alguien me pueda ayudar con esto.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú
image.png
image.png
image.png

Ricardo Pina

unread,
Feb 28, 2013, 9:53:10 AM2/28/13
to Grupo VFP
Hola Daniel
 
como alternativa al readonly lo podes manejar con el método when del textbox que lo podes manejar con mayores alternativas.
 
Saludos
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

image.png
image.png
image.png

Alfonso Arce Silvestre

unread,
Feb 28, 2013, 10:02:00 AM2/28/13
to Comunidad de Visual Foxpro en Español
Hola quizas esto te pueda ayudar: en el evento Keypress del Text1 de cada columna que quieras evitar que se modifiqu, agrega esta linea  THIS.ReadOnly= .T.



Saludos
image.png
image.png
image.png

FidelJ

unread,
Feb 28, 2013, 10:05:53 AM2/28/13
to publice...@googlegroups.com, Mundo Visual FoxPro
Verifica si el cursor es READWRITE

Daniel Sánchez

unread,
Feb 28, 2013, 5:22:24 PM2/28/13
to Comunidad de Visual Foxpro en Español, Mundo Visual FoxPro
El punto es que ese grid cuando lo diseño las columnas tiene el campo readonly=.f. el valor que deseo, hasta ahí bien, cuando cargo el cursor (que es un cursor actualizable a una fuente de datos en sqlserver) se cambia a readonly=.t., si, aun cuando entro al watch a revisar el valor de las columnas del grid estas están en readonly=.f. que es correcto, pero el objeto text1 que esta dentro de la columna se coloca automáticamente en readonly=.t., lo que no me permite realizar cambios en la columna deseada, aun cambiando el valor después de cargar la consulta ni cambiando en el watch el valor del text1 de la columna esta se vuelve a poner en readonly=.t., el cursor es un cursor actualizable así que no es de solo lectura.
Que estará pasando o que cosa estaré haciendo mal.

Saludos
image.png
image.png
image.png

Ricardo Pina

unread,
Feb 28, 2013, 6:10:15 PM2/28/13
to Grupo VFP
Hola Daniel
 
Qué controlsourcetype tiene la Grilla ?
Alguna vez leí la conveniencia de asignar el controlsource de la columnas con el nombre de la tabla incluida cuando se arma en tiempo de ejecución
 
Thisform.grilla.columnx.recordsource="nombretabla.campo"
 
Espero te sirva.
 
Saludos
 
image.png
image.png
image.png

Alfonso Arce Silvestre

unread,
Feb 28, 2013, 7:07:19 PM2/28/13
to Comunidad de Visual Foxpro en Español
Daniel ya checastes lo que te propuse

image.png
image.png
image.png

Ricardo Pina

unread,
Feb 28, 2013, 7:17:32 PM2/28/13
to Grupo VFP
Alfonso
 
Creo que lo que esta buscando Daniel es encontrar el motivo de ese comportamiento, además de buscar la solución.
 
Saludos
image.png
image.png
image.png

Víctor Hugo Espínola Domínguez

unread,
Feb 28, 2013, 8:56:57 PM2/28/13
to publicesvfoxpro
Hola Daniel

Para tener más elementos de análisis, haz un BROWSE del cursor antes de activar el grid, verifica que puedas modificar los datos y que se actualice en el servidor.

Saludos,
Víctor.

image.png
image.png
image.png

Daniel Sánchez

unread,
Feb 28, 2013, 9:03:54 PM2/28/13
to Comunidad de Visual Foxpro en Español
Así es Víctor también probé si se podía modificar con el browse y no hubo problemas se modifico los campos deseados tanto en el cursor como en el origen de los datos que es una bd en sqlserver.
Ahora voy a probar poniendo el nombre completo tabla.campo.
Alfonso Arce es lo contrario a lo que me comentas si deseo que se modifiquen esos campo de la columna 6 a la columna 10, recuerda que dije que estoy trabajando con una grid para digitar datos, y no un simple textbox en un formulario.

Saludos
image.png
image.png
image.png

Alfonso Arce Silvestre

unread,
Feb 28, 2013, 9:19:58 PM2/28/13
to Comunidad de Visual Foxpro en Español
correcto y qwue pasa si pones la linea que te envie solo en las columnas que no quieres que se modifiquen
eso hago yo en los grid
image.png
image.png
image.png

Daniel Sánchez

unread,
Mar 1, 2013, 9:15:47 AM3/1/13
to Comunidad de Visual Foxpro en Español
Alfonso a las columnas que deseo que no se modifiquen solo las coloque en enabled=.f.

Saludos
image.png
image.png
image.png

Víctor Hugo Espínola Domínguez

unread,
Mar 1, 2013, 9:22:38 AM3/1/13
to publicesvfoxpro
Hola Daniel

Se deduce entonces que el problema está en la configuración del grid, podrías enviarnos tu formulario para que lo analicemos.

Saludos,
Víctor.

image.png
image.png
image.png

Daniel Sánchez

unread,
Mar 1, 2013, 9:38:26 AM3/1/13
to Comunidad de Visual Foxpro en Español
Es un poco complicado enviar el formulario ya que muchas cosas están en clases y tendría que enviar un montón de clases e iconos. Ahora estoy revisando otras cosas por eso todavía no pruebo la recomendación del compañero Ricardo Pina.

Saludos
image.png
image.png
image.png

leonardo trujillo

unread,
Mar 1, 2013, 9:58:31 AM3/1/13
to grupo google vfp
no entiendo ¿columna con enabled = .f.?
¿no es eso lo que te cambia la propiedad del textbox?
yo probaría forzar en el click de la celda a modificar la propiedad del textbox
espero haberte entendido
salú
image.png
image.png
image.png

Daniel Sánchez

unread,
Mar 1, 2013, 10:13:59 AM3/1/13
to Comunidad de Visual Foxpro en Español
Asi es Leonardo, las columnas que e puesto enabled=.f. son de la 1 a la columna 5 de la columna 6 a la 10 estan enabled=.t. y son las que me interesan que me permita digitar datos en ellas las primera no.

Saludos
image.png
image.png
image.png

FidelJ

unread,
Mar 1, 2013, 10:16:56 AM3/1/13
to publice...@googlegroups.com
Puedes enviarlo sin íconos y clases. Lo veremos como tabla. Solamente los archivos scx y sct

miltonvas

unread,
Mar 1, 2013, 1:57:44 PM3/1/13
to publice...@googlegroups.com, Mundo Visual FoxPro
yo normalmente los que no quiero editar pongo en WHEN  return .f. y no me complico

Daniel Sánchez

unread,
Mar 1, 2013, 8:08:23 PM3/1/13
to Comunidad de Visual Foxpro en Español
Realice la recomendación de Ricardo Pina y quedo como debía  con solo indicar en la controlsource de la columna tabla.campo y funciono como debía permitiendo hacer la modificación de los campos deseados.
Agradezco sus aportes a todos, problema solucionado.

Saludos
image.png
image.png
image.png

gmail

unread,
Mar 5, 2013, 6:31:33 AM3/5/13
to publice...@googlegroups.com
usa este man ami me ayuda no necesita tocar la propiedades de tu grid en diseño con codigo maneja donde la columna 7 esta desabilitado y toda la grilla
 

**Movimiento

xv=

SQLExec(v_conexion,"Select * From producto,grupo,familia WHERE producto.grucodigo=grupo.grucodigo and producto.famcodigo=familia.famcodigo","cur_prod")

IF

xv < 1

=

Aerror(elError)

 

Messagebox("Error de conexión"+Chr(13)+;

"Descripcion:"+elError[2])

ENDIF

SELECT

cur_prod

*brow

**Fin

p =

Alltrim(This.panel.hoja1.text1.Value)

*cur_mie_gas.v_gastos

Select

* From cur_prod Where Like('*'+Alltrim(Lower(p))+'*',Alltrim(Lower(str(procodigo)))) Or Like('*'+Alltrim(Lower(p))+'*',Alltrim(Lower(prodescrip))) Order By prodescrip ASC Into Cursor cur_prod Readwrite

 

 

*fitlro por tipo

*IF v_documento > 0

* Select * From cur_mie_gas Where doccodigo=v_documento Into Cursor cur_mie_gas Readwrite

*ENDIF

*fin

With Thisform

.panel.hoja1.grid1

 

***-------------------------------Para modificar ...................................

 

.RecordSource ="cur_prod" && Tabla

 

.ColumnCount = 7 && Cantidad de columna

***------------------no tocar---------------------------------------------------****

 

.AllowCellSelection = .F. && Para seleccionar todo

 

.GridLines = 3 && Linea deshabilitada

 

.DeleteMark = .F. && Marca p/ borrar deshabilitada

 

.FontName = "Tahoma" && Tipo de letra

 

.RowHeight = 20 && Tamaño entre registro

 

.AllowHeaderSizing = .T. && Tamaño de la cabecera

 

.GridLineColor = Rgb(240,240,255) &&Rgb(223,223,255)

 

.FontSize = 8

 

***Detalle de la Columna 1

 

.Column1.Width = 31

.Column1.header1.

Caption = ""

.Column1.

AddObject("im", "image")

.Column1.

CurrentControl = "im"

.Column1.im.

Visible = .T.

.Column1.im.

Picture = "plato2.png"&&"Hacer.bmp"

*.Column1.im.BorderStyle= .T.

 

.Column1.Sparse = .F.

 

***-----------------------------------------------------------------------------****

* RGB(240,240,255)

***----------------PARA LAS COLUMNA DE LA GRILLA................................****

 

.Column2.Width = 50 && Tamaño

 

.Column2.ControlSource ="procodigo" && Campo

 

.Column2.header1.Caption = "Procodigo" && Título

 

.Column2.header1.ForeColor = Rgb(0,0,128) && Color de la letra del título

*.Column2.header1.FontBold = .T. && Título en negrita

 

.Column2.header1.Alignment = 2 && Alineamiento del título

 

.Column2.Alignment = 2

 

 

.Column3.

Width = 250

.Column3.

ControlSource ="prodescrip"

.Column3.header1.

Caption = "Nombre"

.Column3.header1.

ForeColor = Rgb(0,0,128)

 

*.Colum3.header1.FontBold = .T.

 

.Column3.header1.Alignment = 2

.Column3.

Alignment = 0

.Column4.

Width = 80

.Column4.

ControlSource ="famdescrip"

.Column4.header1.

Caption = "Familia"

.Column4.header1.

ForeColor = Rgb(0,0,128)

 

*.Colum4.header1.FontBold = .T.

 

.Column4.header1.Alignment = 2

.Column4.

Alignment = 0

.Column5.

Width = 100

.Column5.

ControlSource ="grudescrip"

.Column5.header1.

Caption = "Grupo"

.Column5.header1.

ForeColor = Rgb(0,0,128)

 

*.Colum5.header1.FontBold = .T.

 

.Column5.header1.Alignment = 2

.Column5.

Alignment = 0

 

.Column6.

Width = 100

.Column6.

ControlSource ="proprecio"

.Column6.header1.

Caption = "Precio sin IVA"

.Column6.header1.

ForeColor = Rgb(0,0,128)

 

*.Colum6.header1.FontBold = .T.

 

.Column6.header1.Alignment = 2

.Column6.

Alignment = 1

.Column6.

InputMask = "9,999,999,999"

 

.Column7.

Width = 100

.Column7.

ControlSource ="proprecioiva"

.Column7.header1.

Caption = "Precio con IVA"

.Column7.header1.

ForeColor = Rgb(0,0,128)

 

*.Colum7.header1.FontBold = .T.

 

.Column7.header1.Alignment = 2

.Column7.

Alignment = 1

.Column7.

InputMask = "9,999,999,999"

.Column7.

ReadOnly = .T.

.

SetAll("DynamicBackColor", ;

"IIF(MOD(RECNO( ), 2)=0, RGB(200,240,255) , RGB(250,250,250))", "Column")

&& Alternate white and green records

 

.RowHeight = 28

 

***-----------------------------------------------------------------------------****

ENDWITH

*Thisform.text2.Value = RECCOUNT()

*Thisform.grid1.AutoFit

*Calculate Sum(cur_mie_gas.gasmonto) To Thisform.text2.Value

 
 
 
 
 
 
 
 
 
Orgware

El 28/02/2013 en 23:19, Alfonso Arce Silvestre <alfonsoarc...@gmail.com> escribió:
correcto y qwue pasa si pones la linea que te envie solo en las columnas que no quieres que se modifiquen
eso hago yo en los grid
El 28 de febrero de 2013 20:03, Daniel Sánchez <resets...@gmail.com> escribió:
Así es Víctor también probé si se podía modificar con el browse y no hubo problemas se modifico los campos deseados tanto en el cursor como en el origen de los datos que es una bd en sqlserver.
Ahora voy a probar poniendo el nombre completo tabla.campo.
Alfonso Arce es lo contrario a lo que me comentas si deseo que se modifiquen esos campo de la columna 6 a la columna 10, recuerda que dije que estoy trabajando con una grid para digitar datos, y no un simple textbox en un formulario.

Saludos


El 28 de febrero de 2013 20:56, Víctor Hugo Espínola Domínguez <vich...@gmail.com> escribió:
Hola Daniel

Para tener más elementos de análisis, haz un BROWSE del cursor antes de activar el grid, verifica que puedas modificar los datos y que se actualice en el servidor.

Saludos,
Víctor.

image.png
image.png
image.png
Reply all
Reply to author
Forward
0 new messages