Arrays en FoxPro

08/05/2006 - 02:42 por Rory | Informe spam
Bueno kisiera saber kual es el kodigo hacer un array con cajas de texto...
El array es para ordenar numeros de forma ascendente y descendente...
GRacias.

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa

Preguntas similare

Leer las respuestas

#1 Luis María Guayán
09/05/2006 - 01:54 | Informe spam
¿Podrías escribir en español para poder entenderte mejor?

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Rory" escribió en el mensaje
news:
Bueno kisiera saber kual es el kodigo hacer un array con cajas de texto...
El array es para ordenar numeros de forma ascendente y descendente...
GRacias.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 Rory
09/05/2006 - 04:23 | Informe spam
Pones los siguientes controles en el formulario:
1 caja de texto
Name:txtNumero
Value=0
1 lista
Name:LstNumero
1 grupo de botones de opción
Option1:Name-OptAscendente
Option2:Name-OpDescendente
3 botones de comando
Command1:cmdAñadir
Command1:cmdOrdenar

Bueno este codigo te ordena los numeros de un ListBox ascendentemente y
descendentemente,pero hay una falla,supongamos que le ponemos 2-3-1-4-5-10
si le pongo ascendente sale haci : 1-10-2-3-4-5 y si lo
pongo descendente sale haci 5-4-3-2-10-1 por favor si pudieran ayudarme.
Gracias.

Este codigo agrega el numero introducido en el txtNumero al LstNumero
Objeto: CmdAñadir Procedimiento: Click

Thisform.LstNumero.AddItem(Thisform.TxtNumero.Value)

Thisform.TxtNumero.Value = ""

Thisform.TxtNumero.SetFocus

Este codigo te lo ordena.
Objeto: CmdOrdenar Procedimiento: Click

nN = Thisform.LstNumero.ListCount

Dimension nA(nN) As Integer

For nI = 1 To nN

nA(nI) = Thisform.LstNumero.List(nI)

Next

If Thisform.OptionGroup1.OptAscendente.Value = 1 Then

For nI = 1 To nN - 1

For nJ = nI + 1 To nN

If nA(nI) > nA(nJ) Then

nT = nA(nI)

nA(nI) = nA(nJ)

nA(nJ) = nT

EndIf

Next

Next

EndIf

If Thisform.OptionGroup1.OptDescendente.Value = 1 Then

For nI = 1 To nN - 1

For nJ = nI + 1 To nN

If nA(nI) < nA(nJ) Then

nT = nA(nI)

nA(nI) = nA(nJ)

nA(nJ) = nT

EndIf

Next

Next

EndIf

Thisform.LstNumero.Clear

For nI = 1 To nN

Thisform.LstNumero.List(nI) = nA(nI)

Next




PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#3 Luis María Guayán
09/05/2006 - 14:28 | Informe spam
El problema que tienes es que estas haciendo de tipo caracter el Value del
TextBox.

Puedes trabajar con un vector y ordenar fácilmente con ASORT(). Mira el
siguiente ejemplo a ver si es lo que tu necesitas:

PUBLIC oMiForm
oMiForm = CREATEOBJECT("MiForm")
oMiForm.SHOW(1)
RETURN

DEFINE CLASS MiForm AS FORM
AUTOCENTER = .T.
CAPTION = "Ejemplo"
NAME = "MiForm"
ADD OBJECT list1 AS LISTBOX WITH ;
HEIGHT = 121, LEFT = 24, TOP = 60, WIDTH = 193, ;
NAME = "List1"
ADD OBJECT text1 AS TEXTBOX WITH ;
HEIGHT = 25, LEFT = 24, TOP = 24, WIDTH = 192, ;
VALUE = 0, NAME = "Text1"
ADD OBJECT command1 AS COMMANDBUTTON WITH ;
TOP = 24, LEFT = 240, HEIGHT = 25, WIDTH = 120, ;
CAPTION = "Añadir", NAME = "Command1"
ADD OBJECT command2 AS COMMANDBUTTON WITH ;
TOP = 60, LEFT = 240, HEIGHT = 25, WIDTH = 120, ;
CAPTION = "Ordenar", NAME = "Command2"
ADD OBJECT optiongroup1 AS OPTIONGROUP WITH ;
HEIGHT = 85, LEFT = 240, TOP = 96, WIDTH = 120, ;
BUTTONCOUNT = 2, VALUE = 0, NAME = "Optiongroup1", ;
Option1.CAPTION = "Ascendente", Option1.NAME = "Option1", ;
Option1.HEIGHT = 17, Option1.LEFT = 5, ;
Option1.TOP = 5, Option1.WIDTH = 103, ;
Option2.CAPTION = "Descendente", Option2.NAME = "Option2", ;
Option2.HEIGHT = 17, Option2.LEFT = 5, ;
Option2.TOP = 24, Option2.WIDTH = 103

PROCEDURE command1.CLICK
IF NOT PEMSTATUS(THISFORM,"aLista",5)
THISFORM.ADDPROPERTY("alista(1)",THISFORM.Text1.VALUE)
THISFORM.List1.ROWSOURCETYPE = 5
THISFORM.List1.ROWSOURCE = "THISFORM.aLista"
ELSE
ln = ALEN(THISFORM.aLista,1) + 1
DIMENSION THISFORM.aLista(ln)
THISFORM.aLista(ln) = THISFORM.Text1.VALUE
ENDIF
THISFORM.List1.REQUERY
THISFORM.Text1.VALUE = 0
THISFORM.Text1.SETFOCUS
ENDPROC

PROCEDURE command2.CLICK
DO CASE
CASE THISFORM.Optiongroup1.VALUE = 1
ASORT(THISFORM.aLista,1,-1,0,1)
CASE THISFORM.Optiongroup1.VALUE = 2
ASORT(THISFORM.aLista,1,-1,1,1)
OTHERWISE
MESSAGEBOX("No especificó el orden",64,"Aviso")
ENDCASE
THISFORM.List1.REQUERY
ENDPROC
ENDDEFINE

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Rory" escribió en el mensaje
news:%23BeoG%
Pones los siguientes controles en el formulario:
1 caja de texto
Name:txtNumero
Value=0
1 lista
Name:LstNumero
1 grupo de botones de opción
Option1:Name-OptAscendente
Option2:Name-OpDescendente
3 botones de comando
Command1:cmdAñadir
Command1:cmdOrdenar

Bueno este codigo te ordena los numeros de un ListBox ascendentemente y
descendentemente,pero hay una falla,supongamos que le ponemos 2-3-1-4-5-10
si le pongo ascendente sale haci : 1-10-2-3-4-5 y si lo
pongo descendente sale haci 5-4-3-2-10-1 por favor si pudieran ayudarme.
Gracias.

Este codigo agrega el numero introducido en el txtNumero al LstNumero
Objeto: CmdAñadir Procedimiento: Click

Thisform.LstNumero.AddItem(Thisform.TxtNumero.Value)

Thisform.TxtNumero.Value = ""

Thisform.TxtNumero.SetFocus

Este codigo te lo ordena.
Objeto: CmdOrdenar Procedimiento: Click

nN = Thisform.LstNumero.ListCount

Dimension nA(nN) As Integer

For nI = 1 To nN

nA(nI) = Thisform.LstNumero.List(nI)

Next

If Thisform.OptionGroup1.OptAscendente.Value = 1 Then

For nI = 1 To nN - 1

For nJ = nI + 1 To nN

If nA(nI) > nA(nJ) Then

nT = nA(nI)

nA(nI) = nA(nJ)

nA(nJ) = nT

EndIf

Next

Next

EndIf

If Thisform.OptionGroup1.OptDescendente.Value = 1 Then

For nI = 1 To nN - 1

For nJ = nI + 1 To nN

If nA(nI) < nA(nJ) Then

nT = nA(nI)

nA(nI) = nA(nJ)

nA(nJ) = nT

EndIf

Next

Next

EndIf

Thisform.LstNumero.Clear

For nI = 1 To nN

Thisform.LstNumero.List(nI) = nA(nI)

Next




PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#4 Rory
11/05/2006 - 04:27 | Informe spam
Ese codigo se me hace muy dificil no lo entiendo . Pero gracias de todas
formas.
Me podrias dar un ejemplo de Metodo de la burbuja ordenando numeros..
Gracias por todo.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#5 Carlos Alloatti
11/05/2006 - 06:17 | Informe spam
En VFP no tienes necesidad de ponerte a hacer un Bubble Sort de un array a
mano, para eso tienes el comando ASORT

Pero si te quieres dar el gusto...

Local lnx, llCambio, lnHecho, lnElementos, lnTemp

lnElementos = 10
llCambio = .T.
lnHecho = 1

Local Array laNumeros(lnElementos)

Clear

For lnx = 1 To lnElementos
laNumeros(m.lnx) = Int((10000) * Rand( ) + 1)
Endfor

Display Memory Like laNumeros

Do While lnHecho <= lnElementos - 1 And llCambio
llCambio = .F.
For lnx = 1 To lnElementos - lnHecho
If laNumeros(lnx + 1) < laNumeros(lnx) Then
lnTemp = laNumeros(lnx)
laNumeros(lnx) = laNumeros(lnx + 1)
laNumeros(lnx + 1) = lnTemp
llCambio = .T.
Endif
Endfor
Enddo

Display Memory Like laNumeros

Carlos Alloatti


"Rory" escribió en el mensaje
news:
Ese codigo se me hace muy dificil no lo entiendo . Pero gracias de todas
formas.
Me podrias dar un ejemplo de Metodo de la burbuja ordenando numeros..
Gracias por todo.


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida