FoxPro/Visual FoxPro - problemas con un check dentro de un grid

 
Vista:

problemas con un check dentro de un grid

Publicado por jorge (5 intervenciones) el 23/09/2013 20:57:40
Buenas tardes,

ante todo gracias por su colaboracion, mi pequeño problema es que al momento de llenar un grid de una consulta por base de datos, una de esas columnas lo tengo identificado con un check, en la consulta por bd hay un campo que me indica un 1 o 0, lo que quiero es que cuando ese campo sea uno en la columna del check me marque uno y si trae 0 me muestre el check pero desmarcado, no se si me explico. trato de hacerlo pero en vez de marcar el check lo que hace es colocar el 1 o 0 en dicha columna.

agradezco su ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

problemas con un check dentro de un grid

Publicado por Fidel (558 intervenciones) el 23/09/2013 23:17:18
Para agregar un control Check a una columna de un control grid:

1
2
3
4
5
6
7
8
9
10
11
12
13
* wi= número de columna
* xpfile= Cursor (RecordSource)
* cCol= Nombre del campo que se asigna a la columna
with thisform.Grid1
	.Columns[wi].ControlSource='&xpfile..&ccol'
	.Columns[wi].sPARse=.F.
 
	IF !PEMSTATUS(.Columns[wi],"Check1",5)
		.Columns[wi].AddObject("Check1",'CheckBox')
	endif
	.Columns[wi].CurrentControl="Check1"
	.Columns[wi].Check1.Caption=""
	.Columns[wi].Check1.Visible=.t.
Al asignar el ControlSource de la columna ("Cursor.Campo") le das la inicialización que necesita el Check para saber si trabajará con .F./.V. ó 0,1,2.
Para que se vea en todas las filas como Check y no como TextBox, la columna debe ser Sparse=.F.
El control Checkbox estará sin tilde, para el caso .F./.T. cuando su valor sea .F.
Para el caso 0,1,2
0: desmarcado
1: con marca de activo
2: con marca de activo pero con color de deshabilitado.

Ahora si tu quieres que cuando sea 1 se vea un 1 y cuando sea cero se vea un checkbox, se puede hacer, pero la técnica es más complicada. Debes agregar un container a la columna y manejar los objetos según el valor apuntado. Lo que parece más fácil es crear en una biblioteca una clase container con un textbox y un checkbox, y el método de control. Agregas el container a una columna del Grid y lo pones como Currentcontrol. Desde el AfterRowColChange envías el valor parámetro al método del container. El método debe conseguir que se muestre uno u obro objeto, dependiendo del valor del parámetro. Es para renegar bastante antes de conseguir algo interesante.
Antes de hacer algo así, conviene reflexionar sobre el resultado, desde el punto de vista de un usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con un check dentro de un grid

Publicado por jorge (5 intervenciones) el 24/09/2013 15:24:52
Buen dia,

Basicamente es, cuando el resultado de la consulta por bd sea 1 me marque el check y si es cero el check me aparezca desmarcado.

Gracias ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

problemas con un check dentro de un grid

Publicado por Fidel (558 intervenciones) el 24/09/2013 15:28:30
Bien, y cuál es tu problema?
a) no te aparece el CheckBox en el grid
b) aparece pero no responde como quieres
c) no te aparece en todas las filas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con un check dentro de un grid

Publicado por jorge (5 intervenciones) el 24/09/2013 15:37:49
1._ El grid se carga por una consulta que realizo por medio de un boton en la bd. la informacion obtenida la almaceno en un cursor y luego con el controlSource de cada columna le asigno el campo que traigo del cursor.
2._ En la columna donde tengo definida el Check hay un campo del cursor que indica 1 o 0

3._ el problema es que quiero validar si ese campo del cursor es 1 en la columna del check lo marque de lo contrario no lo marca. OJO con la propiedad sparce = .F. ya muestro el check. No se si me explique.

Gracias por la ayuda, pero es lo unico que me hace falta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas con un check dentro de un grid

Publicado por jorge (5 intervenciones) el 24/09/2013 15:55:42
Gracias por la ayuda, aplique lo que me indicaste en el primer mensaje y me funciono a la perfeccion..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

problemas con un check dentro de un grid

Publicado por Fidel (558 intervenciones) el 24/09/2013 15:59:40
Me alegro. Se me armó un bodrio con la interfase y no ví que habías solucionado el problema!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No se muestra el Check en todas las filas del Grid y no me deja editarlo.

Publicado por Franklin Gutiérrez (13 intervenciones) el 28/06/2018 23:43:06
Saludos Fidel,

Sabes que buscando solución al problema que tengo con un CheckBox en un Grid de un formulario:

No se muestra el Check en todas las filas del Grid, solo aparece deshabilitado al hacer click en la columna; y no me deja editarlo en ningún caso, entonces no sé si me puedes indicar como puedo solucionarlo.

Este es el código que tengo para crear el cursor que llenará el Grid:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sql = "select co_art, "
sql = sql + "art_des, "
sql = sql + "prec_vta1, "
sql = sql + "0 as seleccion "
sql = sql + "from art "
sql = sql + "order by co_art"
tresult = SQLEXEC(tconnect, sql, 'cTemporalArts')
 
SELECT	co_art, ;
		art_des, ;
		NTOM(prec_vta1) as prec_vta1, ;
		seleccion ;
	FROM cTemporalArts ;
	INTO CURSOR cArts READWRITE
 
thisform.grid1.RecordSourceType = 1
thisform.grid1.RecordSource = 'cArts'
thisform.grid1.Refresh
 
thisform.FormatGrid

Y este es el código del Método que creé para dar formato al Grid:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
WITH thisform.grid1
 
	.ColumnCount = 4
 
	.RecordSource = 'cArts'
	.Refresh
 
	.Column1.ControlSource = cArts.co_art
	.Column1.Header1.Caption = "Código"
	.Column1.Header1.FontBold = .T.
	.Column1.Width = 100
 
	.Column2.ControlSource = cArts.art_des
	.Column2.Header1.Caption = "Descripción"
	.Column2.Header1.FontBold = .T.
	.Column2.Width = 350
 
	.Column3.ControlSource = cArts.prec_vta1
	.Column3.Header1.Caption = "Precio"
	.Column3.Header1.FontBold = .T.
	.Column3.Width = 150
 
	.Column4.RemoveObject("TextBox1")
	.Column4.AddObject("chkSeleccion", "CheckBox")
	.Column4.CurrentControl = "chkSeleccion"
	.Column4.ChkSeleccion.Sparse = .F.
	.Column4.chkSeleccion.Visible = .T.
 
	.Column4.chkSeleccion.Caption = ""
 
	.Column4.ControlSource = cArts.seleccion
	.Column4.Header.Caption = "Selección"
	.Column4.Header1.FontBold = .T.
	.Column4.Width = 100
 
	.Column4.chkSeleccion.ReadOnly = .F.
 
ENDWITH

Aparte del problema con el CheckBox la tercera columna correspondiente al Precio de Venta me aparece vacía en todas las filas sin ningún valor y no se puede modificar, por el contrario la dos primeras columnas si me permite hacerlo. Eso creo es porque no he establecido la propiedad de Solo Lectura en las dos primeras columnas pero debería mostrar valor de Precio y el Check en todas las filas y permitirme editar el valor del CheckBox.

Gracias adelantadas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar