Comunidad de diseño web y desarrollo en internet online

Optimizar Codigo De VB

Citar            
MensajeEscrito el 30 Oct 2006 02:12 pm
Que tal? Como estan?
Les paso a comentar mi problema
Tengo que presentar un programa hecho en vb para promocionar en la facultad... Ya lo he hecho. Funciona de mil maravillas... Pero cuando paso el código a Word para imprimirlo (es lo que tengo que presentar) el archivo se extiende en 24 páginas!!! XD...
Me fije que parte podría achicar, y creo que podría ser esta:

Código :

Private Sub Option1_Click()
List1.Visible = True
List2.Visible = False
List3.Visible = False
List4.Visible = False
List5.Visible = False
List6.Visible = False
List7.Visible = False
List8.Visible = False
List9.Visible = False
List10.Visible = False
List11.Visible = False
List12.Visible = False
List13.Visible = False
List14.Visible = False
List15.Visible = False
List16.Visible = False
List17.Visible = False
List18.Visible = True
Label1.Visible = True
calibre.Visible = True
End Sub

Esta estructura la repito 9 veces, segun el OptionButton seleccionado se hacen visibles 2 listas y se ocultan las demas....
Tal vez con un for... next, o con matrices lo solucionaria, pero no se como...
Otra de las partes que tambien podria optimizar es:

Código :

Private Sub Command2_Click()
If Option1.Value = True Then
    List1.AddItem InputBox("Elija nueva unidad inicial:", "Agregar Unidades:")
    List18.AddItem InputBox("Elija nueva unidad final:", "Agregar Unidades:")
End If

Tambien se repite 9 veces, el mensaje es siempre el mismo, lo que cambia es el nombre de las listas...
Alguien puede ayudarme?
Desde ya muchas gracias

Por N.N.SinNombre

14 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Oct 2006 02:50 pm
Hola.
Tal vez podrías hacer esto:

cuando creas la primer lista se llamará list1.list. luego selecciones el list1, lo copias y lo pegas donde lo necesitas. Visual te preguntará si deseas crear un arreglo de list1. Debes decir que sí. esto creará un vector de list1 con cierta cantidad de índices que irá del 0 al 18.

list1(0).list, ... , list1(18).list.

si necesitas visible el primero y el último entonces puedes hacer esto:

list1(0).visible = true
list1(17).visible = true
for i=1 to 16
list1(i).visible = false
next

El otro problema lo puedes solucionar de igual forma. es como si estuvieras trabajando arreglos. Espero que te sirva, y me comentes. Exitos. (y)

Por Tristán

55 de clabLevel



Genero:Masculino  

Villavicencio

opera
Citar            
MensajeEscrito el 30 Oct 2006 04:16 pm
Muchas Gracias eicarranza!!!! Hice una pequeña prueba con lo que me mandaste y funciona como necesito... Sólo que le hice una pequeña modificación... El "For... Next" es siempre "i=0 To 17", y luego del next coloco la condicion para que se vea el que quiero que se vea. Así evito poner varios for next para un mismo option...

Código :

Private Sub Option1_Click()
For i = 0 To 17
List1(i).Visible = False
Next
List1(0).Visible = True
List1(17).Visible = True
End Sub
Private Sub Option2_Click()
For i = 0 To 17
List1(i).Visible = False
Next
List1(1).Visible = True
List1(16).Visible = True
End Sub

MUCHAS GRACIAS NUEVAMENTE!!!

Por N.N.SinNombre

14 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Oct 2006 04:54 pm
Tengo un nuevo problema :crap:
intento adaptar el código que tenía a la nueva estructura que me aconsejaste, pero hay algun error...
Para orientarte mejor te explico el funcionamiento del programa...
La idea es que uno elije entre 9 opciones de magnitudes (OptionButtons), según la magnitud elegida aparecen dos listas idénticas de unidades (las 18 Lists), y presionando un boton se convierte una unidad en la otra (hay dos textbox para entrada y salida respectivamente)...
Ahora bien...
Mi viejo codigo era asi:

Código :

Private Sub List18_Click()
    If List1.ListIndex = 1 Then
        If List18.ListIndex = 1 Then
        calibre.Text = "1"
        ElseIf List18.ListIndex = 2 Then
            calibre.Text = "3.827679296e-20"
            ElseIf List18.ListIndex = 3 Then
                calibre.Text = "3.827679296e-23"
                ElseIf List18.ListIndex = 4 Or List18.ListIndex = 6 Then
                    calibre.Text = "1.60219e-19"
                    ElseIf List18.ListIndex = 5 Then
                        calibre.Text = "1.60219e-22"
                        ElseIf List18.ListIndex = 7 Then
                            calibre.Text = "4.450527778e-23"
                            ElseIf List18.ListIndex = 8 Then
                                calibre.Text = "4.450527778e-26"
                            End If
[...]
end sub

Es decir que según el ListIndex seleccionado en uno y otro, el valor de calibre.text cambia (es la relacion entre cada unidad)...
Pero una vez que intento adaptar el codigo a la nueva forma de llamar a las listas, me dice que falta un identificador

Código :

Private Sub List1(17)_Click() {Cuando intento modificar esta parte me aparece el error de compilacion}
    If List1(0).ListIndex = 1 Then
        If List1(17).ListIndex = 1 Then
        Calibre.Text = "1"
        ElseIf List1(17).ListIndex = 2 Then
            Calibre.Text = "3.827679296e-20"
            ElseIf List1(17).ListIndex = 3 Then
                Calibre.Text = "3.827679296e-23"
                ElseIf List1(17).ListIndex = 4 Or List18.ListIndex = 6 Then
                    Calibre.Text = "1.60219e-19"
                    ElseIf List1(17).ListIndex = 5 Then
                        Calibre.Text = "1.60219e-22"
                        ElseIf List1(17).ListIndex = 7 Then
                            Calibre.Text = "4.450527778e-23"
                            ElseIf List1(17).ListIndex = 8 Then
                                Calibre.Text = "4.450527778e-26"
                            End If
End Sub

Que puede estar pasando?

Por N.N.SinNombre

14 de clabLevel



 

msie
Citar            
MensajeEscrito el 30 Oct 2006 06:15 pm
'Private Sub List1(17)_Click() {

El error está en que la función no se trabaja así. Cuando estás en tiempo de Diseño, si das dobleclick encima del objeto te aparecerá algo como esto:

Private Sub list1_Click(Index As Integer)

End Sub

Como tienes un arreglo de listas, el index significará la lista a la que estás dando click.
con eso no necesitarás hacer una función por cada lista a la que das click sino que el index te dirá la lista que estás seleccionando. osea que ahora no necesitarás hacer una función por cada lista a la que das click... no se si me hago entender. Sino entonces me cuentas.
(y)

Por Tristán

55 de clabLevel



Genero:Masculino  

Villavicencio

opera
Citar            
MensajeEscrito el 02 Nov 2006 05:14 pm
Muchas Gracias!!! Todo lo que me has dicho me ha sido de gran ayuda... Gracias a tus consejos ya puedo promocionar la materia :lol: MUCHISIMAS GRACIAS!!!!

Por N.N.SinNombre

14 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.