FoxPro/Visual FoxPro - permitir decimales en un grid

 
Vista:
sin imagen de perfil

permitir decimales en un grid

Publicado por wenceslao (137 intervenciones) el 18/11/2013 22:47:16
Buenas tardes a todos, nuevamente por aca solicitando su ayuda..
se trata de que tengo un formulario el cual tiene un grid, este grid mjuestra datos insertados en un cursor, hasta ahi toda marcha bien, pero cuando intento cargar un dato con decimales, el grid redondea y aproxima al numero mayor o menor segun sea el caso, ejemplo digito 2.3 y el cursor recibe 2 y si es 2.6 entonces redondea a 3.

La verdad necesito que registre los datos que le digito, no importa si son enteros o decimales.

De antemano les doy mis mas sinceros agradecimientos.

Saludes desde Colombia.
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

permitir decimales en un grid

Publicado por Fidel José (558 intervenciones) el 19/11/2013 00:06:52
Supongamos que se trata de la columna 5 del grid.

1
2
3
4
5
6
with Thisform.grid1.Columns[5].TEx1
       .ControlSource="Tucursor.Importe"
       .Format="Z"     && impide que se vean los ceros.
       .INputMask="999,999,999.99"        && dos decimales y separador de miles
       .width=80
endwith

Lo pones en las columnas que necesites.
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

permitir decimales en un grid

Publicado por wenceslao (137 intervenciones) el 19/11/2013 14:39:48
buenos dias fidel, hice la prueba con el codigo que me recomendo, pero no me deja hacer nada, me muestra un error..

el objeto primario no permitira esta configuracion de propiedad para form1.grid1.column3.text1.Controlsource..

que debo hacer para que esto no suceda??

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

permitir decimales en un grid

Publicado por Fidel José (558 intervenciones) el 19/11/2013 16:04:08
El ControlSource para un objeto de un control grid está conformado por el nombre de la tabla o cursor del recordSource y el nombre del campo que debe mostrar ese control, encomillado.
Si tu cursor se llama: "curVentas"
Y el campo que quieres mostrar, se llama "Importe"
Thisform.grid1.REcordsource="curVentas"
Thisform.Grid1.Column3.TExt1.ControlSource= "CurVentas.Importe"
&& Debes colocarlo entre comillas (dobles o simples).

pd: Nunca escribas Form1.Grid1 ó Form2.Text1 dentro de un formulario.
Para eso se utiliza Thisform. Esta es la referencia al objeto formulario y te independiza totalmente del nombre del objeto en tiempo de ejecución. El nombre que toma un formulario en tiempo de ejecución puede ser distinto del que se consigna en la propiedad Name, dependiendo de cómo se instancia.
Thisform.Grid1.Column1.Header1.Caption="Fecha"
En métodos y eventos del formulario (solamente del formulario), Thisform = This
Para un objeto agregado al formulario, la referencia al formulario puede ser:
Thisform
ó
This.Parent
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

permitir decimales en un grid

Publicado por wenceslao (137 intervenciones) el 19/11/2013 16:33:31
hola fidel, te muestro el codigo que coloque en el formulario en el evento init

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
CREATE CURSOR prueba(cantidad c(10),nombre c(50))
 
 
 
 
STORE 0 TO fnit
STORE SPACE(10) TO fnombre
 
Thisform.grid1.recordsource = ""
THISFORM.grid1.ColumnCount=2
 
 
 
      THISFORM.grid1.COLUMN1.width=90
      THISFORM.grid1.COLUMN2.width=240
 
      THISFORM.grid1.COLUMN1.enabled=.f.
      THISFORM.grid1.COLUMN2.enabled=.f.
 
      THISFORM.grid1.COLUMN1.HEADER1.CAPTION="Codigo"
      THISFORM.grid1.COLUMN1.HEADER1.alignment=2
      THISFORM.grid1.COLUMN1.ALIGNMENT= 3
      THISFORM.grid1.COLUMN2.HEADER1.CAPTION="Articulo"
      THISFORM.grid1.COLUMN2.HEADER1.alignment=2
      THISFORM.grid1.COLUMN2.ALIGNMENT=3
      thisform.grid1.column2.text1.inputmask="999.99"
 
 
 
 
 
      Thisform.grid1.recordsource = "prueba"
      thisform.Grid1.Column2.TExt1.ControlSource= "prueba.cantidad"
      thisform.Refresh


pero me sigue mostrando el error que te comentaba anteriormente..."el objeto primario no admite esta configuracion de propiedad para form1.grid1.column2.text1.controsource."

en ningun momento le descrimino a que formulario debe hacer la referencia y si ves el mensaje que envia??,

que mas le puedo hacer??

Gracias por tu ayuda
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

permitir decimales en un grid

Publicado por Fidel José (558 intervenciones) el 19/11/2013 23:58:43
Lo primero que debes hacer es ponerte de acuerdo. Si esperas que un valor se comporte como numérico, debes definirlo como numérico. Tu pones Cantidad c(10), o sea defines cantidad como un campo Character y luego esperas que sea un número.
Te pongo un 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
61
62
63
64
65
66
67
68
69
70
71
72
*CREATE CURSOR prueba (cantidad c(10),nombre c(50))
 
CREATE CURSOR PRUEBA ("CANTIDAD" N(10,2),"NOMBRE" C(50) )
FOR i=1 TO 10
	INSERT INTO prueba (nombre,cantidad) VALUES ("Nombre Artículo "+TRANSFORM(i) , 20.65 * i)
NEXT
SELECT prueba
GO top
 
SELECT 0    && prevenir contaminación con tablas o cursores abiertos
 
* Si no existe el objeto en el form, agrego un Control GRid.
IF !PEMSTATUS(thisform,"Grid1",5)
	thisform.NewObject("Grid1","Grid")
ENDIF
 
* Eliminar contaminación
WITH thisform.grid1
	.Columncount=-1
	.Recordsource=""
	.refresh
ENDWITH
 
* Configuración del control GRid
WITH thisform.grid1
        && configuración general
	.ColumnCount=2
	.RecordSource = "prueba"
 
         && aspecto
	.Setall("Readonly",.t.,"Column")
	.Setall("Fontsize",8,"Column")
	.Setall("Fontsize",8,"Header")
	.Setall("FontBold",.t.,"Header")
	.Setall("BackColor",Rgb(73,136,160),"Header")
	.Setall("ForeColor",Rgb(255,255,255),"Header")
	.SetAll("DynamicBackColor","IIF(MOD(RECNO( ), 2)=0, RGB(233,232,228),RGB(217,220,212))", "Column")
	.ScrollBars=2
	.GridLineColor=RGB(184,201,197)
	.DeleteMark=.F.
        .RecordMark=.T.
 
        && configuración especial de columnas (objeto Columns() )
	.Columns[1].ControlSource='Prueba.Nombre'
	.cOLUMNS[1].Header1.Caption="Nombre"
	.Columns[1].Header1.Alignment=2
	.Columns[1].Width=240
 
	.Columns[2].ControlSource='Prueba.Cantidad'
	.columns[2].Header1.Caption="Cantidad"
	.Columns[2].Header1.Alignment=2
	.columns[2].Width=90
	.Columns[2].Text1.Format="Z"
	.Columns[2].TExt1.InputMask="999,999.99"
 
 
	* Posicionamiento y tamaño
	.top=3
	.left=3
        * Decido mostrar 10 filas
	.Height=.HeaderHeight + .RowHeight * 10
 
        * Cálculo del ancho
	nWid=IIF(.RecordMark,10,0) + IIF(.ScrollBars>1,20,0) + .ColumnCount
	FOR i=1 TO .columncount
		nWid=nWid+.Columns[i].Width
	NEXT
	.Width=nWid
 
	.visible=.t.
	.refresh
ENDWITH
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: 96
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

permitir decimales en un grid

Publicado por roberto (55 intervenciones) el 18/02/2020 15:44:11
Después de tanto tiempo puede que ya no te acuerdes de este post pero e sirvió mucho, pero no se porque razón el cambio de la propiedad inputmask y el format del column no hace nada en mi grilla.

Lo curioso es que solo funciona el caption de header con el cambio de los nombres en tiempo de ejecución.

Espero que si por esas casualidades de la vida vez este comentario puedas echar un vistazo.

Yo seguiré intentando que funcione el format y el inputmask.

Agradecido por tu aporte.
codigo
interface
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

permitir decimales en un grid

Publicado por Fidel José (657 intervenciones) el 18/02/2020 23:03:29
Bueno, por lo que veo se me ha deslizado un error:
El Inputmask, en el caso del control grid, corresponde al objeto column y no al objeto contenido (text1, por ejemplo)

De modo que deberías cambiar por lo siguiente, por ejemplo:
1
2
3
.Columns(2).ControlSource = lcCursor + ".Campo_Numeric"
.Columns(2).InputMask = "9,999.99"
.Columns(2).Format = "Z"

Solicitando las disculpas del caso:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 96
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

permitir decimales en un grid

Publicado por roberto (55 intervenciones) el 19/02/2020 02:16:04
Bieeeeennnnn gracias amigo eso era... mi grilla quedo perfect

Image3
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

permitir decimales en un grid

Publicado por Javier Dillon (3 intervenciones) el 04/04/2021 02:20:33
Ante este error:
"el objeto primario no admite esta configuración de propiedad para form1.grid1.column2.text1.controsource."

hice:
Thisform.grid1.column2.BOND = .F.
Thisform.grid1.column2.SPARSE = .F.

porque las demás columnas lo tenían igual.
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