FoxPro/Visual FoxPro - valores numericos en list justificados a la izquierda

 
Vista:

valores numericos en list justificados a la izquierda

Publicado por jose camilo (805 intervenciones) el 25/12/2018 16:30:29
buenos dias

necesito que los valores numericos de list queden justificado a la izquierda
alguna idea como hacerlo
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

valores numericos en list justificados a la izquierda

Publicado por Fidel José (657 intervenciones) el 26/12/2018 11:38:17
La única forma que se me ocurre para un list es cargarlo a través del método AddListItem(lcValor,lnFila,lnColumna ), donde para un valor numérico usas, por ejemplo, LTRIM(STR(lnValor,20,2)). Si es un entero, puedes utilizar directamente Transform(lnValor).

Debes configurar la cantidad de columnas que serán visibles con la propiedaad ColumnCount del list.
Si la información proviene de un cursor del cual necesitas seleccionar, mediante el list, un registro determinado, la estrategia pasa por agreagar al array como última columna transform(recno(cCursor)) para recuperar con VAL(this.listitem(this.listitemId,nCol)) en el evento Click o DblCick del Listbox y enviar al registro del cursor con GOTO.
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

valores numericos en list justificados a la izquierda

Publicado por jose camilo (805 intervenciones) el 27/12/2018 05:29:26
1
2
3
4
5
6
7
8
9
10
SCAN
   Thisform.Container1.ListDatos.AddListItem(Articulo,Iif(Thisform.Container1.ListDatos.ListCount=0,1,Thisform.Container1.ListDatos.ListCount+1),1)
   Thisform.Container1.ListDatos.AddListItem(Detalle,Thisform.Container1.ListDatos.ListCount,2)
   Thisform.Container1.ListDatos.AddListItem(STR(Existencia),Thisform.Container1.ListDatos.ListCount,3)
   Thisform.Container1.ListDatos.AddListItem(Transform(Pcosto,"999,999.99"),Thisform.Container1.ListDatos.ListCount,4)
   Thisform.Container1.ListDatos.AddListItem(STR(Preciouno),Thisform.Container1.ListDatos.ListCount,5)
   Thisform.Container1.ListDatos.AddListItem(STR(PrecioDos),Thisform.Container1.ListDatos.ListCount,6)
   Thisform.Container1.ListDatos.AddListItem(STR(PrecioTres),Thisform.Container1.ListDatos.ListCount,7)
   Thisform.Container1.ListDatos.AddListItem(STR(Existencia*Pcosto),Thisform.Container1.ListDatos.ListCount,8)
ENDSCAN


esta es la funcion que uso, pero aun pongo el transform los valores salen centralizado, y necesito justificado a la derecha los numeros y los string a la izquierda
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

valores numericos en list justificados a la izquierda

Publicado por Fidel José (657 intervenciones) el 27/12/2018 12:54:12
Ya veo que ahora cambiaste los números a la derecha (ja, ja).
De todos modos, para lograr eso en un control list, tendrás que usar una fuente no proporcional. Creo que quedan 3: Courier, Courier New y Lucida Console. O sea, en realidad serían 2: Courier New y Lucida Console. Porque el problema es que las fuentes proporcionales calculan un valor mínimo para los espacios, con lo cual, los espacios a la izquierda ocupan un espacio menor. Pero también cada número ocupa un espacio diferente. El problema para Courier New y Lucida Console es que resultan un ancho mayor, porque conceden a cada caracter la misma cantidad de pixeles, dependiendo del FontSize.

Dicho sea de paso, esto se puede hacer del modo siguiente (gastando menos papel y menos ojos)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
LOCAL lnCount
lnCount = 0
WITH thisform.Container1.ListDatos
	.Clear
	.BoundColumn = 1
	.ColumnCount = 8
	.FontName = "Courier New"
	.FontSize = 8
	SCAN
		lnCount = lnCount + 1
		.AddListItem(Articulo,m.lnCount,1)
		.AddListItem(Detalle,m.lnCount,2)
		.AddListItem(STR(Existencia),m.lnCount,3)
		.AddListItem(Transform(Pcosto,"999,999.99"),m.lnCount,4)
		.AddListItem(STR(Preciouno),m.lnCount,5)
		.AddListItem(STR(PrecioDos),m.lnCount,6)
		.AddListItem(STR(PrecioTres),m.lnCount,7)
		.AddListItem(STR(Existencia*Pcosto),m.lnCount,8)
 
	ENDSCAN
	.requery
	.refresh
ENDWITH

También es posible que necesites ajustar la función STR() colocando la cantidad de dígitos y la cantidad de decimales, por ejemplo:
STR(Existencia * pCosto , 10,2).
Eso te puede evitar la desaparición de algunos dígitos en el alfanumérico generado. Tené en cuenta que el segundo parámetro (nLength) por defecto es 10 y la cantidad de decimales, por defecto es Cero.
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

valores numericos en list justificados a la izquierda

Publicado por jose camilo (805 intervenciones) el 05/01/2019 03:10:16
gracias

hare la prueba a ver que pasa
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