Colaboraciones en el Guille

Convertidor de medidas

 

Fecha: 03/Nov/2005 (31/10/05)
Autor: El Maestro del Desastre - ([email protected])

 


Presentación:

Hola me llamo Marcos (alias: El Maestro del Desastre) y ésta es mi primera colaboración. Bueno basta de presentaciones y paso a explicarte de que se trata este programilla: 

¿De qué se trata?

Bien, esta aplicación te permite convertir medidas. Por ejemplo: de kilómetros a millas, etc. No soy un experto, así que no te quejes de que el código es largo (supongo que habrá una forma más corta de hacerlo pero todavía no poseo los conocimientos necesarios como para lograrlo :< ). Para compensar esto puse todo bien explicado; tanto, que hasta un mono lo entendería (si, yo también). Podría haber usado menos variables pero me resultó más fácil poner una variable por cada medida. Si no te gusta, lo lamento; y si querés matarme por usar tantas variables vas a tener que venir hasta Argentina, jajaja. ^_^

El código:

Convertidor de medidas (qué diseño!!!)

'------------------------------'
'Convertidor de medidas v1.00  '
'(2005) El Maestro del Desastre'
'------------------------------'
Option Explicit
Dim LON(0 To 7) As Double   'Variable de longitud
Dim VOL(0 To 5) As Double   'Variable de volúmen
Dim AREA(0 To 5) As Double  'Variable de área
Dim MASA(0 To 3) As Double  'Variable de masa
Dim TEMP(0 To 1) As Double  'Variable de temperatura
Dim LONGITUD(0 To 7) As Boolean 'Bandera de longitud
Dim VOLUMEN(0 To 5) As Boolean  'Bandera de volúmen
Dim AR(0 To 5) As Boolean       'Bandera de área
Dim MAS(0 To 3) As Boolean      'Bandera de masa
Dim TEM(0 To 1) As Boolean      'Bandera de temperatura
Const CEL = -17.777777 'Constante de celsius
Const FAH = 32         'Constante de fahrenheit

Private Sub cmdAcerca_Click()
frmAcDeConvMed.Show
End Sub

Private Sub cmdBorrar_Click()
Dim tLong As Integer
Dim tArea As Integer
Dim tVol As Integer
Dim tMasa As Integer
Dim tTemp As Integer

'Bucles para borrar el contenido de todos los TextBox
For tLong = 0 To 7
    txtLong(tLong) = "" 'Contenido Longitud
Next

For tVol = 0 To 5
    txtVol(tVol) = ""   'Contenido Volúmen
Next

For tArea = 0 To 5
    txtArea(tArea) = "" 'Contenido Área
Next

For tMasa = 0 To 3
    txtMasa(tMasa) = "" 'Contenido Masa
Next

For tTemp = 0 To 1
    txtTemp(tTemp) = "" 'Contenido Temperatura
Next

End Sub

Private Sub cmdSalir_Click()
End 'Finalizar la aplicación
End Sub

Private Sub txtArea_Change(Index As Integer)
On Local Error Resume Next
Error = 0

Select Case Index
    
    Case 0 'centímetros C.
    If AR(0) = True Then
        AREA(0) = CDbl(txtArea(0))
        txtArea(1) = AREA(0) * 0.0001     'metros C.
        txtArea(2) = AREA(0) * 0.1550003  'pulgadas C.
        txtArea(3) = AREA(0) * 0.00107639 'pies C.
        txtArea(4) = AREA(0) * 0.00000002 'acres
        txtArea(5) = AREA(0) * 0.00000001 'hectáreas
    End If

    Case 1 'metros C.
    If AR(1) = True Then
        AREA(1) = CDbl(txtArea(1))
        txtArea(0) = AREA(1) * 10000      'centímetros C.
        txtArea(2) = AREA(1) * 1550.00304 'pulgadas C.
        txtArea(3) = AREA(1) * 10.76391   'pies C.
        txtArea(4) = AREA(1) * 0.00024711 'acres
        txtArea(5) = AREA(1) * 0.0001     'hectáreas
    End If

    Case 2 'pulgadas C.
    If AR(2) = True Then
        AREA(2) = CDbl(txtArea(2))
        txtArea(0) = AREA(2) * 6.4516     'centímetros C.
        txtArea(1) = AREA(2) * 0.00064516 'metros C.
        txtArea(3) = AREA(2) * 0.00694444 'pies C.
        txtArea(4) = AREA(2) * 0.00000016 'acres
        txtArea(5) = AREA(2) * 0.00000006 'hectáreas
    End If

    Case 3 'pies C.
    If AR(3) = True Then
        AREA(3) = CDbl(txtArea(3))
        txtArea(0) = AREA(3) * 929.0304   'centímetros C.
        txtArea(1) = AREA(3) * 0.09290304 'metros C.
        txtArea(2) = AREA(3) * 144        'pulgadas C.
        txtArea(4) = AREA(3) * 0.00002296 'acres
        txtArea(5) = AREA(3) * 0.00000929 'hectáreas
    End If

    Case 4 'acres
    If AR(4) = True Then
        AREA(4) = CDbl(txtArea(4))
        txtArea(0) = AREA(4) * 40468564   'centímetros C.
        txtArea(1) = AREA(4) * 4046.8564  'metros C.
        txtArea(2) = AREA(4) * 6272640    'pulgadas C.
        txtArea(3) = AREA(4) * 43560      'pies C.
        txtArea(5) = AREA(4) * 0.40468564 'hectáreas
    End If

    Case 5 'hectáreas
    If AR(5) = True Then
        AREA(5) = CDbl(txtArea(5))
        txtArea(0) = AREA(5) * 100000000  'centímetros C.
        txtArea(1) = AREA(5) * 10000      'metros C.
        txtArea(2) = AREA(5) * 15500032.1 'pulgadas C.
        txtArea(3) = AREA(5) * 107639.112 'pies C.
        txtArea(4) = AREA(5) * 2.471054   'acres
    End If

End Select
End Sub

Private Sub txtArea_GotFocus(Index As Integer)
Select Case Index

    Case 0
    AR(0) = True 'Conecta la bandera de centímetros C.
    
    Case 1
    AR(1) = True 'Conecta la bandera de metros C.
    
    Case 2
    AR(2) = True 'Conecta la bandera de pulgadas C.
    
    Case 3
    AR(3) = True 'Conecta la bandera de pies C.
    
    Case 4
    AR(4) = True 'Conecta la bandera de acres
    
    Case 5
    AR(5) = True 'Conecta la bandera de hectáreas
    
End Select
End Sub

Private Sub txtArea_LostFocus(Index As Integer)
Select Case Index

    Case 0
    AR(0) = False 'Desconecta la bandera de centímetros C.
    
    Case 1
    AR(1) = False 'Desconecta la bandera de metros C.
    
    Case 2
    AR(2) = False 'Desconecta la bandera de pulgadas C.
    
    Case 3
    AR(3) = False 'Desconecta la bandera de pies C.
    
    Case 4
    AR(4) = False 'Desconecta la bandera de acres
    
    Case 5
    AR(5) = False 'Desconecta la bandera de hectáreas
    
End Select
End Sub

Private Sub txtMasa_Change(Index As Integer)
On Local Error Resume Next
Error = 0

Select Case Index

    Case 0 'gramos
    If MAS(0) = True Then
        MASA(0) = CDbl(txtMasa(0))
        txtMasa(1) = MASA(0) * 0.001      'kilogramos
        txtMasa(2) = MASA(0) * 0.03527396 'onzas
        txtMasa(3) = MASA(0) * 0.00220462 'libras
    End If

    Case 1 'kilogramos
    If MAS(1) = True Then
        MASA(1) = CDbl(txtMasa(1))
        txtMasa(0) = MASA(1) * 1000       'gramos
        txtMasa(2) = MASA(1) * 35.2739616 'onzas
        txtMasa(3) = MASA(1) * 2.2046226  'libras
    End If

    Case 2 'onzas
    If MAS(2) = True Then
        MASA(2) = CDbl(txtMasa(2))
        txtMasa(0) = MASA(2) * 28.349523  'gramos
        txtMasa(1) = MASA(2) * 0.02834952 'kilogramos
        txtMasa(3) = MASA(2) * 0.0625     'libras
    End If

    Case 3 'libras
    If MAS(3) = True Then
        MASA(3) = CDbl(txtMasa(3))
        txtMasa(0) = MASA(3) * 453.59237  'gramos
        txtMasa(1) = MASA(3) * 0.45359237 'kilogramos
        txtMasa(2) = MASA(3) * 16         'onzas
    End If

End Select
End Sub

Private Sub txtMasa_GotFocus(Index As Integer)
Select Case Index

    Case 0
    MAS(0) = True 'Conecta la bandera de gramos
    
    Case 1
    MAS(1) = True 'Conecta la bandera de kilogramos
    
    Case 2
    MAS(2) = True 'Conecta la bandera de onzas
    
    Case 3
    MAS(3) = True 'Conecta la bandera de libras
    
End Select
End Sub

Private Sub txtMasa_LostFocus(Index As Integer)
Select Case Index

    Case 0
    MAS(0) = False 'Desconecta la bandera de gramos
    
    Case 1
    MAS(1) = False 'Desconecta la bandera de kilogramos
    
    Case 2
    MAS(2) = False 'Desconecta la bandera de onzas
    
    Case 3
    MAS(3) = False 'Desconecta la bandera de libras
    
End Select
End Sub

Private Sub txtTemp_Change(Index As Integer)
On Local Error Resume Next
Error = 0

Select Case Index
    
    Case 0 'celsius
    If TEM(0) = True Then
        TEMP(0) = CDbl(txtTemp(0))
        txtTemp(1) = FAH + (TEMP(0) * 1.8) 'fahrenheit
    End If
    
    Case 1 'fahrenheit
    If TEM(1) = True Then
        TEMP(1) = CDbl(txtTemp(1))
        txtTemp(0) = CEL + (TEMP(1) * 0.555555) 'celsius
    End If
    
End Select
End Sub

Private Sub txtTemp_GotFocus(Index As Integer)
Select Case Index

    Case 0
    TEM(0) = True 'Conecta la bandera de celsius
    
    Case 1
    TEM(1) = True 'Conecta la bandera de fahrenheit
    
End Select
End Sub

Private Sub txtTemp_LostFocus(Index As Integer)
Select Case Index

    Case 0
    TEM(0) = False 'Desconecta la bandera de celsius
    
    Case 1
    TEM(1) = False 'Desconecta la bandera de fahrenheit
    
End Select
End Sub

Private Sub txtVol_Change(Index As Integer)
On Local Error Resume Next
Error = 0

Select Case Index

    Case 0 'mililitros
    If VOLUMEN(0) = True Then
        VOL(0) = CDbl(txtVol(0))
        txtVol(1) = VOL(0) * 0.001      'litros
        txtVol(2) = VOL(0) * 0.0675675  'cucharadas
        txtVol(3) = VOL(0) * 0.00211148 'pintas
        txtVol(4) = VOL(0) * 0.00105574 'cuartos galón
        txtVol(5) = VOL(0) * 0.00026394 'galón
    End If

    Case 1 'litros
    If VOLUMEN(1) = True Then
        VOL(1) = CDbl(txtVol(1))
        txtVol(0) = VOL(1) * 1000       'mililitros
        txtVol(2) = VOL(1) * 33.8140224 'cucharadas
        txtVol(3) = VOL(1) * 2.1133764  'pintas
        txtVol(4) = VOL(1) * 1.0566882  'cuartos galón
        txtVol(5) = VOL(1) * 0.26417205 'galón
    End If

    Case 2 'cucharadas
    If VOLUMEN(2) = True Then
        VOL(2) = CDbl(txtVol(2))
        txtVol(0) = VOL(2) * 14.79      'mililitros
        txtVol(1) = VOL(2) * 0.01479    'litros
        txtVol(3) = VOL(2) * 0.03125    'pintas
        txtVol(4) = VOL(2) * 0.015625   'cuartos galón
        txtVol(5) = VOL(2) * 0.00390625 'galón
    End If

    Case 3 'pintas
    If VOLUMEN(3) = True Then
        VOL(3) = CDbl(txtVol(3))
        txtVol(0) = VOL(3) * 473.1765  'mililitros
        txtVol(1) = VOL(3) * 0.4731765 'litros
        txtVol(2) = VOL(3) * 32        'cucharadas
        txtVol(4) = VOL(3) * 0.5       'cuartos galón
        txtVol(5) = VOL(3) * 0.125     'galón
    End If

    Case 4 'cuartos galón
    If VOLUMEN(4) = True Then
        VOL(4) = CDbl(txtVol(4))
        txtVol(0) = VOL(4) * 946.353  'mililitros
        txtVol(1) = VOL(4) * 0.946353 'litros
        txtVol(2) = VOL(4) * 64       'cucharadas
        txtVol(3) = VOL(4) * 2        'pintas
        txtVol(5) = VOL(4) * 0.25     'galón
    End If

    Case 5 'galón
    If VOLUMEN(5) = True Then
        VOL(5) = CDbl(txtVol(5))
        txtVol(0) = VOL(5) * 3785.412 'mililitros
        txtVol(1) = VOL(5) * 3.785412 'litros
        txtVol(2) = VOL(5) * 256      'cucharadas
        txtVol(3) = VOL(5) * 8        'pintas
        txtVol(4) = VOL(5) * 4        'cuartos galón
    End If

End Select
End Sub

Private Sub txtVol_GotFocus(Index As Integer)
Select Case Index
    
    Case 0
    VOLUMEN(0) = True 'Conecta la bandera de mililitros

    Case 1
    VOLUMEN(1) = True 'Conecta la bandera de litros
    
    Case 2
    VOLUMEN(2) = True 'Conecta la bandera de cucharadas

    Case 3
    VOLUMEN(3) = True 'Conecta la bandera de pintas

    Case 4
    VOLUMEN(4) = True 'Conecta la bandera de cuartos galón

    Case 5
    VOLUMEN(5) = True 'Conecta la bandera de galón

End Select
End Sub

Private Sub txtVol_LostFocus(Index As Integer)
Select Case Index
    
    Case 0
    VOLUMEN(0) = False 'Desconecta la bandera de mililitros

    Case 1
    VOLUMEN(1) = False 'Desconecta la bandera de litros
    
    Case 2
    VOLUMEN(2) = False 'Desconecta la bandera de cucharadas

    Case 3
    VOLUMEN(3) = False 'Desconecta la bandera de pintas

    Case 4
    VOLUMEN(4) = False 'Desconecta la bandera de cuartos galón

    Case 5
    VOLUMEN(5) = False 'Desconecta la bandera de galón

End Select
End Sub

Private Sub txtLong_Change(Index As Integer)
On Local Error Resume Next
Error = 0

Select Case Index

    Case 0 'milímetros
    If LONGITUD(0) = True Then
        LON(0) = CDbl(txtLong(0))
        txtLong(1) = LON(0) * 0.1       'centímetros
        txtLong(2) = LON(0) * 0.001     'metros
        txtLong(3) = LON(0) * 0.000001  'kilómetros
        txtLong(4) = LON(0) * 0.0393701 'pulgadas
        txtLong(5) = LON(0) * 0.0032808 'pies
        txtLong(6) = LON(0) * 0.0010936 'yardas
        txtLong(7) = LON(0) * 0.0000006 'millas
    End If
    
    Case 1 'centímetros
    If LONGITUD(1) = True Then
        LON(1) = CDbl(txtLong(1))
        txtLong(0) = LON(1) * 10        'milímetros
        txtLong(2) = LON(1) * 0.01      'metros
        txtLong(3) = LON(1) * 0.00001   'kilómetros
        txtLong(4) = LON(1) * 0.3937008 'pulgadas
        txtLong(5) = LON(1) * 0.0328084 'pies
        txtLong(6) = LON(1) * 0.0109361 'yardas
        txtLong(7) = LON(1) * 0.0000062 'millas
    End If
    
    Case 2 'metros
    If LONGITUD(2) = True Then
        LON(2) = CDbl(txtLong(2))
        txtLong(0) = LON(2) * 1000       'milímetros
        txtLong(1) = LON(2) * 100        'centímetros
        txtLong(3) = LON(2) * 0.001      'kilómetros
        txtLong(4) = LON(2) * 39.3700788 'pulgadas
        txtLong(5) = LON(2) * 3.2808399  'pies
        txtLong(6) = LON(2) * 1.0936133  'yardas
        txtLong(7) = LON(2) * 0.0006214  'millas
    End If
    
    Case 3 'kilómetros
    If LONGITUD(3) = True Then
        LON(3) = CDbl(txtLong(3))
        txtLong(0) = LON(3) * 1000000    'milímetros
        txtLong(1) = LON(3) * 100000     'centímetros
        txtLong(2) = LON(3) * 1000       'metros
        txtLong(4) = LON(3) * 39370.0792 'pulgadas
        txtLong(5) = LON(3) * 3280.83993 'pies
        txtLong(6) = LON(3) * 1093.61331 'yardas
        txtLong(7) = LON(3) * 0.6213712  'millas
    End If

    Case 4 'pulgadas
    If LONGITUD(4) = True Then
        LON(4) = CDbl(txtLong(4))
        txtLong(0) = LON(4) * 25.4       'milímetros
        txtLong(1) = LON(4) * 2.54 '     'centímetros
        txtLong(2) = LON(4) * 0.0254     'metros
        txtLong(3) = LON(4) * 0.0000254  'kilómetros
        txtLong(5) = LON(4) * 0.08333333 'pies
        txtLong(6) = LON(4) * 0.02777778 'yardas
        txtLong(7) = LON(4) * 0.00001578 'millas
    End If

    Case 5 'pies
    If LONGITUD(5) = True Then
        LON(5) = CDbl(txtLong(5))
        txtLong(0) = LON(5) * 304.8      'milímetros
        txtLong(1) = LON(5) * 30.48      'centímetros
        txtLong(2) = LON(5) * 0.3048     'metros
        txtLong(3) = LON(5) * 0.0003048  'kilómetros
        txtLong(4) = LON(5) * 12         'pulgadas
        txtLong(6) = LON(5) * 0.33333333 'yardas
        txtLong(7) = LON(5) * 0.00018939 'millas
    End If
    
    Case 6 'yardas
    If LONGITUD(6) = True Then
        LON(6) = CDbl(txtLong(6))
        txtLong(0) = LON(6) * 914.4      'milímetros
        txtLong(1) = LON(6) * 91.44      'centímetros
        txtLong(2) = LON(6) * 0.9144     'metros
        txtLong(3) = LON(6) * 0.0009144  'kilómetros
        txtLong(4) = LON(6) * 36         'pulgadas
        txtLong(5) = LON(6) * 3          'pies
        txtLong(7) = LON(6) * 0.00056818 'millas
    End If

    Case 7 'millas
    If LONGITUD(7) = True Then
        LON(7) = CDbl(txtLong(7))
        txtLong(0) = LON(7) * 1609344  'milímetros
        txtLong(1) = LON(7) * 160934.4 'centímetros
        txtLong(2) = LON(7) * 1609.344 'metros
        txtLong(3) = LON(7) * 1.609344 'kilómetros
        txtLong(4) = LON(7) * 63360    'pulgadas
        txtLong(5) = LON(7) * 5280     'pies
        txtLong(6) = LON(7) * 1760     'yardas
    End If

End Select
End Sub

Private Sub txtLong_GotFocus(Index As Integer)
Select Case Index

    Case 0
    LONGITUD(0) = True 'Conecta la bandera de milímetros
        
    Case 1
    LONGITUD(1) = True 'Conecta la bandera de centímetros

    Case 2
    LONGITUD(2) = True 'Conecta la bandera de metros

    Case 3
    LONGITUD(3) = True 'Conecta la bandera de kilómetros
    
    Case 4
    LONGITUD(4) = True 'Conecta la bandera de pulgadas

    Case 5
    LONGITUD(5) = True 'Conecta la bandera de pies
    
    Case 6
    LONGITUD(6) = True 'Conecta la bandera de yardas

    Case 7
    LONGITUD(7) = True 'Conecta la bandera de millas
    
End Select
End Sub

Private Sub txtLong_LostFocus(Index As Integer)
Select Case Index

    Case 0
    LONGITUD(0) = False 'Desconecta la bandera de milímetros
    
    Case 1
    LONGITUD(1) = False 'Desconecta la bandera de centimetros
    
    Case 2
    LONGITUD(2) = False 'Desconecta la bandera de metros
    
    Case 3
    LONGITUD(3) = False 'Desconecta la bandera de kilómetros
    
    Case 4
    LONGITUD(4) = False 'Desconecta la bandera de pulgadas
    
    Case 5
    LONGITUD(5) = False 'Desconecta la bandera de pies

    Case 6
    LONGITUD(6) = False 'Desconecta la bandera de yardas

    Case 7
    LONGITUD(7) = False 'Desconecta la bandera de millas

End Select
End Sub

 


Como ves, el código es una repetición de pasos (comprobar si está conectada la bandera, multiplicar por la equivalencia, desconectar la bandera) para cada medida, ya que cada una tiene distintas equivalencias. Si tenés alguna pregunta, comentario o sugerencia, no dudes en escribirme: [email protected]

Hasta la prómixa (no andes haciendo líos, para eso estoy yo "El Maestro del Desastre").


Fichero con el código de ejemplo: ElMaestroDelDesastre_ConvertidorDeMedidas.zip - Tamaño 8,45 KB


ir al índice principal de el Guille