FoxPro/Visual FoxPro - Cuadro de Lista (LIST)

   
Vista:

Cuadro de Lista (LIST)

Publicado por Victor vaguilarpau@yahoo.com.mx (54 intervenciones) el 20/05/2013 18:22:46
Hola Compañeros. Ahora voy con el LIST...

En FoxPro for Windows declaraba mi arreglo y le asignaba valores o información ej.

1
2
3
4
5
6
7
8
9
10
11
dime datos(10,2)
contador=1
use inf (tiene 10 registros)
 
do while not eof()
      datos(contador,1) = campox
      datos(contador,2) = recno()
      contador = contador +1
      skip
enddo
close all


Ahora en visual fox 9 como lo podría hacer...

Gracias por todos estos aportes y orientación que me ofrecen... pronto estare listo para apoyar a los que vengan de abajo.

Saludos.
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
Imágen de perfil de Edgar Zambrano

Cuadro de Lista (LIST)

Publicado por Edgar Zambrano (72 intervenciones) el 20/05/2013 22:24:16
si lo que quieres es rellenar un arreglo de la forma en que lo implementas te sirve
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

Cuadro de Lista (LIST)

Publicado por Fidel (558 intervenciones) el 20/05/2013 23:47:13
Las formas más usadas para rellenar un Control List son las siguientes:
5-Array , 0 - AddListItem, 2 - Alias, 3- SElect Sql
Tomé una tabla que utilizo yo para comprobar que el código sea correcto.
Para ahorrarme trabajo con los nombres de campos, selecciono los primeros 4
Como verás, el modo RowSourceType=0 (.AddListItem ó AddItem) es el más trabajoso porque resulta necesario transformar los valores a Character.
ColumnCount dirá cuántos campos se muestran en el control List
Podemos mejorar la presentación estableciendo un ColumnWidths="100,50,75,80" && los valores de ancho que correspondan.
Podemos quitar las rayas verticales: .list1.Columnlines=.F.
Podemos asociar una propiedad del formulario a la lista por ControlSource, ajustando el valor de BoundColumn. Esto permite reflejar cómodamente el valor que se espera de List en cualquier parte del formulario. Pero no es obligatorio. Se puede trabajar con .Value

Desde Click, DblClick ó InteractiveChange con:
nItem=this.ListitemId
if nitem#0
cValor1=this.Listitem(nitem,1)
cValor2=this.Listitem(nitem,2)
etc...
endif

El comienzo con .Clear y .RowSource="" permite desafectar al control List de otro seteo anterior.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
* fill List1 From Array
************************
* Para no crear un PUBLIC ARRAY, prefiero generar una propiedad de matriz en el formulario.
nc=0
nObten=6
IF PEMSTATUS(thisform,"marray",5)
	REMOVEPROPERTY(thisform,"mArray")
endif
addproperty(thisform,"mArray[1]","")
IF !PEMSTATUS(thisform,"PropList",5)
	ADDPROPERTY(thisform,"PropList","")
ENDIF
 
SELECT agenda
GO top
thisform.Proplist=EVALUATE(FIELD(4))
SCAN
	nc=nc+1
	DIMENSION thisform.mArray(nc,nObten)
	FOR i=1 TO nObten
		cCampo=FIELD(i)
		thisform.mArray[nc,i]=EVALUATE(cCampo)
	NEXT
ENDSCAN
 
WITH thisform.list1
	.Clear
        .RowSource=""
	.ColumnCount=ALEN(thisform.mArray,2)
	.RowSourceType=5
	.RowSource="thisform.mArray"
	.boundcolumn=4
	.ControlSource='Thisform.PropList'
	.requery
	.refresh
ENDWITH
* ----------------------------------------------------
 
* Fill .AddListItem()
***********************
nc=0
nObten=6
IF !PEMSTATUS(thisform,"PropList",5)
	ADDPROPERTY(thisform,"PropList","")
ENDIF
SELECT agenda
GO top
thisform.Proplist=EVALUATE(FIELD(4))
WITH thisform.list1
	.Clear
        .RowSource=""
	.RowSourceType=0
	.ColumnCount=nObten
	.boundcolumn=4
	.controlSource='thisform.proplist'
	SCAN
		nc=nc+1
 
		FOR i=1 TO nObten
			xValCampo=EVALUATE( FIELD(i) )
			DO case
				CASE VARTYPE(xValCampo)="C"
					xValCampo=ALLTRIM(xVAlCampo)
				CASE VARTYPE(xValCampo)="N"
					xValCampo=TRANSFORM(xValCampo,"999,999.99")
				CASE VARTYPE(xValCampo)="I"
					xValCampo=Transform(xValCampo,"999999")
				CASE VARTYPE(xValCampo)="D"
					xValCampo=DTOC(xValcampo)
				CASE VARTYPE(xVAlCampo)="T"
					xValCampo=TTOC(xValCAmpo)
				CASE VARTYPE(xValCampo)="L"
					xValCampo=IIF(xValCampo,"Si","No")
			endcase
			.AddListItem(xValCampo,nc,i)
		NEXT
 
	ENDSCAN
	.requery
	.refresh
endwith
* ----------------------------------------------------------------------
 
* Fill from Table / Cursor
****************************
nc=0
nObten=6
IF !PEMSTATUS(thisform,"PropList",5)
	ADDPROPERTY(thisform,"PropList","")
ENDIF
SELECT agenda
GO top
thisform.Proplist=EVALUATE(FIELD(4))
WITH thisform.list1
	.Clear
        .RowSource=""
	.RowSourceType=2
	.RowSource="agenda"
	.ColumnCount=nObten
	.boundcolumn=4
	.controlSource='thisform.proplist'
 
	.requery
	.refresh
endwith
 
* ------------------------------------------------
 
* Fill from SQL SELECT
****************************
nc=0
nObten=6
IF !PEMSTATUS(thisform,"PropList",5)
	ADDPROPERTY(thisform,"PropList","")
ENDIF
SELECT agenda
GO top
thisform.Proplist=EVALUATE(FIELD(4))
lcSelect=[Select *,RECNO() from Agenda into cursor papa where !EMPTY(fecha)]
WITH thisform.list1
	.Clear
        .RowSource=""
	.RowSourceType=3
	.RowSource=[&lcSelect]
	.ColumnCount=nObten
	.boundcolumn=4
	.Controlsource='Thisform.PropList'
	.requery
	.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