FoxPro/Visual FoxPro - Bloquear un chechbox

   
Vista:

Bloquear un chechbox

Publicado por Zamora (67 intervenciones) el 28/09/2017 20:19:19
Buen día a Todos, de antemano agradezco las atenciones

Estoy haciendo una aplicación con un Grid y en una columna hay un Checkbox que puede estar o no lleno de acuerdo al historial de los datos que contiene con un valor 2, los que se pretende es que si este tiene el valor 2 aun cuando se le de clic no cambie el valor de 2.

Espero hacerme entender y quedo a sus ordenes.
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

Bloquear un chechbox

Publicado por Fidel José (552 intervenciones) el 28/09/2017 21:37:34
Me parece que lo más efectivo sería lo siguiente:
1) agregar otro checkbox a la columna que ya tiene el checkbox, pero en este caso que sea enabled=.f.
2) Después de configurar el grid, utilizar el DynamicCurrentControl de la columna

Mira este ejemplo:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
CREATE CURSOR curver ("descrip" c(40) , "estado" i )
 
FOR i = 1 TO 10
	INSERT INTO curver (descrip) VALUES ("descripción"+TRANSFORM(i))
NEXT
SELECT curver
lnPas = 0
SCAN
	lnPas = lnPas + 1
	IF lnPas = 2
		replace estado WITH 1
	ENDIF
	IF lnPas = 4
		replace estado WITH 2
		lnPas = 0
	ENDIF
ENDSCAN
GO top
 
thisform.NewObject("myGrid","Grid")
WITH thisform.myGrid
	.top = 3
	.left = 3
	.Height = 300
	.Width = 400
 
	.ColumnCount = 2
	.RecordSource = "curver"
	.Columns(2).Sparse = .f.
	.Visible = .t.
ENDWITH
 
IF !PEMSTATUS(thisform.MyGrid.columns(2),"Check1",5)
	thisform.MyGrid.columns(2).NewObject("Check1","Checkbox")
	WITH thisform.MyGrid.Columns(2).Check1
		.BackStyle = 0
		.Caption = ""
		.autosize = .t.
		.centered = .t.
		.Visible = .t.
		.themes = .f.
		.specialeffect = 1
	ENDWITH
ENDIF
IF !PEMSTATUS(thisform.MyGrid.columns(2),"Check2",5)
	thisform.MyGrid.columns(2).NewObject("Check2","Checkbox")
	WITH thisform.MyGrid.Columns(2).Check2
		.BackStyle = 0
		.Caption = ""
		.autosize = .t.
		.centered = .t.
		.Visible = .t.
		.enabled = .f.
		.themes = .f.
		.specialeffect = 1
	ENDWITH
ENDIF
 
thisform.MyGrid.Refresh
thisform.MyGrid.Columns(2).DynamicCurrentControl=[IIF(curver.estado=2,"check2","check1")]
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

Bloquear un chechbox

Publicado por zamora (67 intervenciones) el 28/09/2017 23:41:21
Muchas gracias implemente esto y funciono.


Puedes crear una propiedad en el Formulario
1
Thisform.Addproperty("ValChek",0)

En el Evento GotFocus del Check1 de la cuadrícula:
1
Thisform.ValChek=this.Value

En el Evento Click del Check1 de la cuadrícula;
1
2
3
IF THISFORM.VALCHEK=2
THIS.Value=2
ENDIF
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
Imágen de perfil de Abel

Bloquear un chechbox

Publicado por Abel (100 intervenciones) el 29/09/2017 15:13:02
Prueba solo poner la condición en la propiedad When de tu CheckBox y eso debería resolverlo.
Por ej.: Esto sería lo que escribirías en la propiedad When..

Return iif(<<NombreDelCampo>>=2,.f.,.t.)

Y eso debería resolver tu 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
Revisar política de publicidad