grid con columna de opcion radio

151 views
Skip to first unread message

carlosmupe

unread,
Aug 16, 2021, 12:00:34 PM8/16/21
to Comunidad de Visual Foxpro en Español
Hola a todos, quisiera consultar como agregar en modo de ejecución una columna de tipo radio (Si o no) en una grilla, actualmente en mi tabla tengo 3 columnas nombre, direccion y cambiar, por defecto la columna cambiar la tercera esta en 0 es de tipo numeric y necesito reemplazar esta columna por un objeto radio con el valor No por defecto seleccionado en el objeto radio, y que el usuario pueda poner Si en el objeto y cambiar a 1 en mi tabla cambiar.

aquí esta mi código fuente, si alguien me puede ayudar a agregar este objeto en mi tercera columna, lo otro el usuario no puede modificar las columnas nombre o direccion si manipular el radio de la tercera columna, existe alguna instruccion readonly solo por columna?

WITH thisform.pgf.p6.grd
   .columncount=3
   .deletemark=.f.
   .recordmark=.f.
   .readonly=.t.
   .scrollbars=2
   .recordsource="mitabla"
   .column1.ControlSource="mitabla.nombres"
   .column1.width=150
   .column1.header1.caption="Nombre"
      
   .column2.ControlSource="mitabla.direccion"
   .column2.width=150
   .column2.header1.caption="direccion"

   .column3.ControlSource="mitabla.opcion"
   .column3.width=50
   .column3.header1.caption="¿Cambiar?"

ENDWITH

saludos y gracias

Ricardo Soldini

unread,
Aug 17, 2021, 12:34:54 PM8/17/21
to Comunidad de Visual Foxpro en Español
Puede ser algo como esto

 .column3.ControlSource="mitabla.opcion"
   .column3.width=50
   .column3.header1.caption="¿Cambiar?"
   .column3.CurrenControl = Optiongroup1
 .column3.OptionGroup1.controlSource='mitabla.opcion'

carlosmupe

unread,
Aug 17, 2021, 1:12:11 PM8/17/21
to Comunidad de Visual Foxpro en Español
Gracias estimado, logre realizarlo, pero no pude lograr poner el option group de forma horizontal por medio de codigo, por tanto cambie a la opcion del checkbox y solucione el problema, ahora solo me queda poder controlar cuando pueda o no puede pinchar ese check.

HernanCano

unread,
Aug 17, 2021, 2:18:26 PM8/17/21
to Comunidad de Visual Foxpro en Español
El grid debe tener la prop .Enabled en verdadero.
A todas las columnas les pones el .ReadOnly en .t., pero a la del CheckBox en .f.
Probablemente requieras el Sparse (verificas si es .t. o si es .f.).

Y nos cuentas para continuar....

Zarlu

unread,
Aug 17, 2021, 2:49:08 PM8/17/21
to Comunidad de Visual Foxpro en Español
Buenas tardes carlosmupe !

Adjunto un form ejemplo

Suerte
zarlu
Chetumal, Quintana Roo, México
formradio.SCT2
formradio.scx2

carlosmupe

unread,
Aug 17, 2021, 3:51:00 PM8/17/21
to Comunidad de Visual Foxpro en Español
Hola a todos gracias por sus respuestas, el problema que tengo es que necesito que el check este condicionado para ser chequeado, aqui esta mi codigo

   .column4.ControlSource="tabla.cambiar"
   .column4.Sparse = .F.
   IF !PEMSTATUS(.Column4,"Check1",5)
       .Column4.AddObject("Check1",'CheckBox')
   endif
   .column4.CurrentControl = "Check1"
   .column4.Check1.Visible = .T.
   .column4.Check1.enabled = .t.
   .column4.Check1.readonly = .f.
   .column4.Check1.caption = ""
   .column4.Check1.backstyle = 0
   .column4.alignment= 2   
   .column4.width=100
   .column4.header1.caption="¿Cambiar?"

   BINDEVENT(.column4.Check1, 'Click', THISFORM, 'marcar_cambio')

el procedimiento de marcar_cambio
**************************************
IF !EMPTY(tabla.nombre)
   REPLACE tabla.cambiar WITH IIF(tabla.cambiar=0,1,0)
ELSE
   REPLACE tabla.cambiar WITH 0
  * aqui igual se marca la opcion del check y debo desmarcarlo   
   
ENDIF
   

Hendell Mora

unread,
Aug 17, 2021, 5:09:48 PM8/17/21
to publice...@googlegroups.com
Después del Replace
. Column4.check1.readonly =.T.



--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/a0b7adfd-ec96-49e5-956b-675ed8684eadn%40googlegroups.com.

Víctor Hugo Espínola Domínguez

unread,
Aug 17, 2021, 5:19:21 PM8/17/21
to publice...@googlegroups.com
Solo debes asignar el controlsource y no necesitará bindevent

 .column4.ControlSource = "tabla.Cambiar"

Saludos,
Víctor.
Lambaré - Paraguay.



--

HernanCano

unread,
Aug 17, 2021, 5:36:29 PM8/17/21
to Comunidad de Visual Foxpro en Español
Bacano, Zarlu.
Gracias por compartir.

carlosmupe

unread,
Aug 17, 2021, 5:40:12 PM8/17/21
to Comunidad de Visual Foxpro en Español
Gracias por sus respuestas, el tema es que no puedo dejarlo readonly, ya que si el usuario llena el campo nombre desde la grilla, si deberia dejarme chequear el check, en otro caso cuado esta vacio el nombre y pincho el check entra en la funcion y efectivamente en la tabla no realiza el replace pero en el objeto check lo deja marcado, no veo como poder desmarcarlo despues, se les ocurre algo??

carlosmupe

unread,
Aug 17, 2021, 6:21:58 PM8/17/21
to Comunidad de Visual Foxpro en Español
solucionado con 
. Column4.check1.value=0

muchas gracias a todos

Ivan Martinez

unread,
Aug 17, 2021, 6:43:36 PM8/17/21
to publicesvfoxpro
Existe un método refresh casi para todos los controles que puedes invocar desde donde se activa el disparador. En este método refresh tu chequeado en que estado debes dejar ese control. También puedes directamente desde el sitio donde se dispara por ejemplo decir thisform.grid.control.enabled=.t. o lo que sea. Hay demasiados caminos en vfp para lograr lo mismo. Lo más importante es entender el ciclo de eventos de vfp. Definir bien que es lo que quieres y como.
En tu caso podrías o no bloquear el control. Cualquier forma es correcta siempre y cuando se cumpla el objetivo que quieras, aunque lo más elegante parece es bloquearlo si no se ha cumplido la condición para desbloquearlo.
Iván Martínez von halle

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages