Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: rokchlafen en Noviembre 17, 2014, 02:18:53 pm
-
Hola a todos. Soy nuevo en el foro,se que quizá halla quedado un poco obsoleto pero tengo que hacer una aplicación en visual basic 6.0
Pensé que seria sencillo pero me esta costando mas de lo que me pensaba.Por ello recurro a ustedes para ver si me pueden ayudar.
Lo que tengo que hacer es una aplicación para obtener el orden y velocidad de una determinada reacción química.esto es lo que llevo hecho:
Se introducen "N"parejas de valores de "X" e "Y".Una vez introducido "N"(por ejemplo n=10 seria lo habitual),voy ingresando los valores de "X" e "Y" desde txtX y txtY y luego los agrego con el cmdAgrgar a las listboxX y listboxY hasta que meta las "N" parejas de datos.
Hasta allí solventado con muchas dificultades .Ahora lo que quiero es poder graficar esos datos introducidos "X" frente a "Y" y que se vean cada uno de los puntos.Aqui es donde me atascado,como puedo recorrerlos con el picture1.pset(X,Y)......he intentado con dos ArrayX y ArrayY para coger las variables de las listbox. pero no consigo hacer que funcione.
He estado mirando tutoriales y leí libros, hasta también indague con bases de datos y probar con macros. Quizá sea algo mas sencillo pero lo cierto es que ando un poco trabado.
Muchisimas gracias de antemano un cordial saudo¡¡¡
PD1: Estos datos introducidos son la base de los demás cálculos que necesito así que no se como declarar "N" parejas de datos que se van ha ir introduciendo como GLOBALES para poder utilizarlos en los diferentes formularios, ya que esos datos hay que pasarlos por logaritmos e inversas para nuevas graficas.
PD2: Si hay alguna otra manera de hacerlo estaría muy agradecido de leer vuestras sugerencias.Gracias de nuevo.
-
hola rokchlafen, no se bien cuando dices que picture1.pset(X,Y) no te funciona por que, es porque no hace como tu quieres o no pinta nada por asi decirlo.
cualquier cosa pone una imagen de lo que quieres hacer, es mas facil para hacer un ejemplo o explicarte.
-
Gracias por la contestación, al final pude dar con el fallo. Antes de dar el tema por cerrado, me preguntaba si hay alguna forma de declarar variables que me valgan para varios formularios dentro del mismo proyecto. Tengo que meter "N" parejas de puntos (X,Y); en el formulario "ingresarForm" puedo meter estos datos incluso modificarlos.Una vez que los datos son correctos quiero que se almacenen en variables para luego utilizarlos en diversos formularios y trabajar con ellos.....poder hacer log(X), 1/(x)......sacar graficos en funcion de Y, y obtener una recta de ajuste por minimos cuadrados, tratamientos estadisticos como varianza y media aritmetica...etc Muchas gracias de nuevo y perdon por las molestias ocasionadas.Un saludo¡¡
-
Hola rokchlafen:
Las variable que necesites utilizar en todos los formularios las puedes declarar como PUBLIC en un módulo BAS
Public lngX as Long
Public lngY as Long
...
Así cuando obtengas los Valores finales los pasas a esas Variables y quedaran disponibles en todo el proyecto.
Saludos Cordiales!
-
Gracias AxioUK¡¡
Lo he intentado pero no lo consigo.Las variables que meto son (X,Y)....donde podemos tener desde 0 datos hasta N...... por ejemplo ingreso en txtX y txtY (2,3)-(6,9)-(-18.35,16.29)......hasta (Xn,Yn)
Esas serian mis variables,obviamente antes de introducir los datos se le pide al usuario cuantas parejas de datos se van a ingresar en txtNumero.Estos datos se van metiendo en sus respectivos listbox (listaX y listaY).
Asi es como he conseguido graficar los puntos (X,Y)
Dim i As Integer
For i = 0 To listaX.ListCount - 1
X = listaX.List(i)
Y = listaY.List(i)
Picture1.PSet (X, Y), vbRed
Picture1.DrawWidth = 5
Next i
Ahora en otro formulario necesito los mismos datos para hacer una representación de (X,Logaritmo(Y))
He intentado hacerlo como he puesto arriba pero no me grafica nada...No se si puedo declarar todas estas variables con un array que recoja todas estas variables recorriendo del primero hasta "N"
Perdonadme si he dicho alguna burrada pero realmente estoy atascado :'(
Gracias de nuevo por su respuesta.Un saludo¡¡¡
-
rokchlafen:
A ver si entiendo, debes tener tu Array disponible para todos los Form...
Si es así en un módulo BAS declara:
'Estas serán tu Array de Variables X,Y
Public nX() as Long
Public nY() as Long
... desde el Form de los ListBox X,Y asigna...
Dim i As Integer
For i = 0 To listaX.ListCount - 1
ReDim Preserve nX(i) as Long
ReDim Preserve nY(i) as Long
nX(i) = listaX.List(i)
nY(i) = listaY.List(i)
Next i
..Ahora podras usar tu Array desde los otros Formularios
Dim i As Integer
For i = LBound(nX) To UBound(nX)
Picture1.PSet (nX(i), nY(i)), vbRed
Picture1.DrawWidth = 5
Next i
Espero haber ayudado...
PD: Este Proyecto te puede aclarar un poco más... Para ir ingresando los datos en (X,Y) solo vé digitando y presionando <ENTER> pasaras automáticamente de un TextBox a otro e ingresandolos a los ListBox al tener el par...
https://mega.co.nz/#!mBoXBJxa!p9WEedtfna7OQC-2LkMDNUj7vAjybVDHrEnDedxwG7g (https://mega.co.nz/#!mBoXBJxa!p9WEedtfna7OQC-2LkMDNUj7vAjybVDHrEnDedxwG7g)
Saludos Cordiales!
-
Muchas gracias AxioUK¡¡¡ Me ha sigo útil todo lo que me has dicho,ya al fin puedo avanzar en mi proyecto.Muchas gracias de nuevo ;) y un saludo muy grande¡¡¡
-
De nada...!
Estamos para Ayudar
Saludos Cordiales
-
Hola de nuevo, cual es la forma correcta de que el array no tenga datos, asi a la hora de restablecer que me deje todo a cero.Del mismo modo quiero que en otros formularios a la hora de calcular me responda de que no hay datos guardados y asi evitar el error que se produce al no haberlos guardado.Seria correcto decir :
nX(i)=0
nY(i)=0
de esta manera con if nX(i)=0 or nY(i)= then msgbox"No hay datos guardados,rellene primero los datos para poder calcular"
del mismo modo al reestablecer dar valores nulos al array (no hay valores). Gracias de antemano y un saludo¡¡
-
hola hay dos formas yo optaria la primera
ReDim nX(0)
ReDim nY(0)
en el caso que quieras mantener las dimenciones del array en vez de 0 por la dimencion que quieras ejmplo redim nX(10)
la otra forma es hacer un for recorriendo el array y poner todo en 0
-
Muchas gracias¡¡¡¡ con lo que me indicas conseguí solucionar el problema a la hora de restablecer utilizando redim nX(0)y redim nY(0).
Comencé programando dando por hecho que se seguirían los mismos pasos que sigo yo a la hora de interactuar con la aplicacion (grave error).
Yo intruducia los datos X e Y y los guardaba en arrays nX() y nY( mediante cmdGuardar).
Luego con un for recorría los arrays y trabajaba con ellos.El problema me surge en los formularios que hacen los cálculos. Me esta dando este error "sub indice fuera de intervalo"
(creo que es porque pido que recorra este For i = LBound(nX) To UBound(nX)) y al no haber datos no hay nada que recorrer ).
El caso es como hago o que condición impongo para que en casos como este no me salte dicho error.Pensaba en algo como :
If nX()= algo then
msgbox"no hay valores guardados"
else
que haga los cálculos que tengo programados ya que si habría un array de valores guardado.Esta parte funciona.
end if
Muchas gracias desde ya y un saludo.
-
Hola de nuevo, sigo sin poder arreglar el error de subindice fura de intervalo.Gracias y felices fiestas.
-
Estimado:
En el aplicativo de ejemplo que publiqué está subsanado ese tema:
On Error GoTo ErrSub '<--- Esta linea indica donde saltar en caso de error
Dim i As Integer
For i = LBound(nX) To UBound(nX)
p1.PSet (nX(i), nY(i)), vbGreen
p1.DrawWidth = 5
Next i
Exit Sub
ErrSub: '<--- Si Hay Error se ejecuta desde aquí...
MsgBox "No hay variables definidas!", vbOKOnly, "X,Y"
Checalo y comentas...
Saludos Cordiales
-
Perfecto¡¡¡¡¡¡ :D es justo lo que me hacia falta muchisimas gracias de nuevo¡¡¡¡¡ Un saludo y feliz 2015¡¡¡