home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 February / PCWK0297.iso / envelop / envelop.5 / Tools / Arsenal / apps / windchil / WINDCHIL.ETO < prev    next >
Text File  |  1996-07-08  |  12KB  |  429 lines

  1. Type WindChill From Application
  2. End Type
  3.  
  4. Type WindChillForm From SampleMasterForm
  5.   Dim Frame1 As New Frame
  6.   Dim optMilesPerHour As New OptionButton
  7.   Dim optKilometersPerHour As New OptionButton
  8.   Dim sbrWindSpeed As New ScrollBar
  9.   Dim lblWindSpeed As New Label
  10.   Dim Frame2 As New Frame
  11.   Dim optCelsius As New OptionButton
  12.   Dim optFahrenheit As New OptionButton
  13.   Dim sbrTemperature As New ScrollBar
  14.   Dim lblTemperature As New Label
  15.   Dim btnHelp As New Button
  16.   Dim btnClose As New Button
  17.   Dim Label3 As New Label
  18.   Dim gauTemp As New Gauge
  19.   Dim gauWindChill As New Gauge
  20.   Dim Label4 As New Label
  21.   Dim lblMaxTemp As New Label
  22.   Dim Label6 As New Label
  23.   Dim lblMinTemp As New Label
  24.   Dim lblWindChill As New Label
  25.  
  26.   ' METHODS for object: WindChillForm
  27.   Sub btnClose_Click()
  28.     UnloadForm
  29.   End Sub
  30.  
  31.   Sub btnHelp_Click()
  32.     Dim message As String
  33.     Dim newline As String
  34.   
  35.     newline = Chr$(13) & Chr$(10)
  36.   
  37.     message = "Use the scrollbars to adjust the wind speed and temperature." & newline
  38.     message = message & "Click the options buttons to set wind speed and temperature units." & newline
  39.     message = message & "Wind chill factor is displayed below scrollbars and in gauge." & newline & newline
  40.     message = message & "Clicking the option buttons will convert temperature and wind speed."
  41.   
  42.   
  43.     InfoBox.Msg(message)
  44.   End Sub
  45.  
  46.   Function Celsius2Fahrenheit (C As Integer) As Single
  47.     ' Convert Celsius to Fahrenheit
  48.     Celsius2Fahrenheit = (C + 40) * 9 / 5 - 40
  49.   End Function
  50.  
  51.   Sub ComputeWindChill
  52.     Dim wind, temp As Single
  53.     Dim chill As Integer
  54.   
  55.     ' Get the values from the scroll bars
  56.     wind = sbrWindSpeed.Value
  57.     temp = sbrTemperature.Value
  58.   
  59.     ' Update the temperature gauge
  60.     gauTemp.Value = sbrTemperature.Value
  61.   
  62.     ' Update the temperature caption
  63.     If optFahrenheit.Value = True Then 
  64.       lblTemperature.Caption = sbrTemperature.Value & " F"
  65.     Else 
  66.       lblTemperature.Caption = sbrTemperature.Value & " C"
  67.   
  68.     End If
  69.   
  70.     ' Convert to MPH if KPH selected
  71.     If optKilometersPerHour.Value = True Then 
  72.       wind = Kph2Mph(sbrWindSpeed.Value)
  73.     End If
  74.   
  75.     ' Convert to Fahrenheit if Celsius selected
  76.     If optCelsius.Value = True Then 
  77.       temp = Celsius2Fahrenheit(sbrTemperature.Value)
  78.     End If
  79.   
  80.     ' Compute wind chill factor
  81.     chill = int(91.9 - (91.4 - temp) * ((0.30344 * sqr(wind) - 0.02029 * wind) + 0.47427))
  82.   
  83.     ' Convert back to Celsius if necessary
  84.   
  85.     If optCelsius.Value = True Then 
  86.       chill = Fahrenheit2Celsius(chill)
  87.     End If
  88.   
  89.     ' Update the windchill gauge
  90.     gauWindChill.Value = chill
  91.   
  92.     ' Update the windchill label
  93.     If optFahrenheit.Value = True Then 
  94.       lblWindChill.Caption = "Windchill factor is " & Str$(chill) & " F"
  95.     Else 
  96.       lblWindChill.Caption = "Windchill factor is " & Str$(chill) & " C"
  97.     End If
  98.   End Sub
  99.  
  100.   Sub ExitApplication_Click()
  101.     helpfile.Quit
  102.     UnloadForm
  103.   End Sub
  104.  
  105.   Function Fahrenheit2Celsius (F As Integer) As Single
  106.     ' Convert Fahrenheit to Celsius
  107.     Fahrenheit2Celsius = (F + 40) * 5 / 9 - 40
  108.   End Function
  109.  
  110.   Function Kph2Mph (KPH As Integer) As Single
  111.     ' Convert KPH to MPH
  112.     Kph2Mph = KPH / 1.609344
  113.   End Function
  114.  
  115.   Sub Load
  116.     ' Initialize which option buttons default to True
  117.     optFahrenheit.Value = True
  118.     optMilesPerHour.Value = True
  119.   
  120.     ' Initialize the scrollbars
  121.     sbrWindSpeed_Change
  122.     sbrTemperature_Change
  123.   
  124.   End Sub
  125.  
  126.   Function Mph2Kph (MPH As Integer) As Single
  127.     ' Convert MPH to KPH
  128.     Mph2Kph = MPH * 1.609344
  129.   
  130.   End Function
  131.  
  132.   Sub optCelsius_Click()
  133.   
  134.     Dim temperature As Single
  135.   
  136.     ' Convert current temperature to Celsius
  137.     temperature = Fahrenheit2Celsius(sbrTemperature.Value)
  138.   
  139.     If temperature < -45.0 Then 
  140.       temperature = -45.0
  141.     End If
  142.   
  143.     ' Reset the scrollbar for MPH
  144.     sbrTemperature.Min = -45
  145.     sbrTemperature.Max = 32
  146.     sbrTemperature.Value = temperature
  147.   
  148.     ' Update the temperature bar
  149.     lblMaxTemp.Caption = "100 C"
  150.     lblMinTemp.Caption = "-100 C"
  151.     gauTemp.Max = 100
  152.     gauTemp.Min = -100
  153.     gauWindChill.Max = 100
  154.     gauWindChill.Min = -100
  155.   
  156.   
  157.     ' Computing the windchill will update the temperature bar
  158.     ' values and associated captions.
  159.     ComputeWindChill
  160.   
  161.   
  162.   End Sub
  163.  
  164.   Sub optFahrenheit_Click()
  165.   
  166.     Dim temperature As Single
  167.   
  168.     ' Convert current temperature to Fahrenheit
  169.     temperature = Celsius2Fahrenheit(sbrTemperature.Value)
  170.   
  171.     ' Check for a minimum condition
  172.     If temperature < -50.0 Then 
  173.       temperature = -50.0
  174.     End If
  175.   
  176.     ' Reset the scrollbar for MPH
  177.     sbrTemperature.Min = -50
  178.     sbrTemperature.Max = 90
  179.     sbrTemperature.Value = temperature
  180.   
  181.     ' Update the temperature/windchill gauges
  182.     lblMaxTemp.Caption = "150 F"
  183.     lblMinTemp.Caption = "-150 F"
  184.     gauTemp.Max = 150
  185.   
  186.     gauTemp.Min = -150
  187.     gauWindChill.Max = 150
  188.     gauWindChill.Min = -150
  189.   
  190.     ' Computing the windchill will update the temperature bar
  191.     ' values and associated captions.
  192.     ComputeWindChill
  193.   
  194.   End Sub
  195.  
  196.   Sub optKilometersPerHour_Click()
  197.   
  198.     Dim wind_speed As Single
  199.   
  200.     ' Convert current wind speed to KPH
  201.     wind_speed = Mph2Kph(sbrWindSpeed.Value)
  202.   
  203.     ' Round wind_speed to nearest integer
  204.     wind_speed = int(wind_speed + 0.5)
  205.   
  206.     ' Reset the scrollbar for MPH
  207.     sbrWindSpeed.Min = 8
  208.     sbrWindSpeed.Max = 80
  209.     sbrWindSpeed.Value = wind_speed
  210.   
  211.     ' Update the windspeed label caption
  212.     lblWindSpeed.Caption = wind_speed & " KPH"
  213.   
  214.   End Sub
  215.  
  216.   Sub optMilesPerHour_Click()
  217.   
  218.     Dim wind_speed As Single
  219.   
  220.   
  221.     ' Convert current wind speed to MPH
  222.     wind_speed = Kph2Mph(sbrWindSpeed.Value)
  223.   
  224.     ' Round wind_speed to nearest integer
  225.     wind_speed = int(wind_speed + 0.5)
  226.   
  227.     ' Reset the scrollbar for MPH
  228.     sbrWindSpeed.Min = 5
  229.     sbrWindSpeed.Max = 50
  230.     sbrWindSpeed.Value = wind_speed
  231.   
  232.     ' Update the windspeed label caption
  233.     lblWindSpeed.Caption = wind_speed & " MPH"
  234.   
  235.   End Sub
  236.  
  237.   Sub sbrTemperature_Change()
  238.     ' Compute the wind chill
  239.     ComputeWindChill
  240.   End Sub
  241.  
  242.   Sub sbrTemperature_Scroll()
  243.     ' Update the temperature when the scrollbar is moved
  244.     sbrTemperature_Change
  245.   End Sub
  246.  
  247.   Sub sbrWindSpeed_Change()
  248.     Dim ws As String
  249.   
  250.     ' Get Wind Speed
  251.     ws = sbrWindSpeed.Value
  252.   
  253.     If optMilesPerHour.Value = True Then 
  254.       lblWindSpeed.Caption = ws & " MPH"
  255.     Else 
  256.       lblWindSpeed.Caption = ws & " KPH"
  257.     End If
  258.   
  259.     ' Compute the wind chill
  260.     ComputeWindChill
  261.   End Sub
  262.  
  263.   Sub sbrWindSpeed_Scroll()
  264.     ' Update the wind speed when the scrollbar is moved
  265.     sbrWindSpeed_Change
  266.   End Sub
  267.  
  268.   Function TrimString (input_string As String) As String
  269.     TrimString = LTrim(RTrim(input_string))
  270.   
  271.   End Function
  272.  
  273. End Type
  274.  
  275. Begin Code
  276. ' Reconstruction commands for object: WindChill
  277. '
  278.   With WindChill
  279.     .ModulePath := "base.ebo;win32.ebo;dialogs.ebo;tools.ebo;envelop.ebo;windchil.ebo"
  280.     .MainForm := WindChillForm
  281.     .Path := "w:\arsenal\apps\windchil\"
  282.     .EXEName := "windchil"
  283.     .SplashFileName := "C:\envelop\arsenal\apps\windchil\WINDCHIL.BMP"
  284.   End With  'WindChill
  285. ' Reconstruction commands for object: WindChillForm
  286. '
  287.   With WindChillForm
  288.     .Caption := "Wind-Chill Application"
  289.     .Move(4335, 1800, 7560, 4290)
  290.     .SampleDir := "C:\ENVELOP\arsenal\apps\windchil\"
  291.     .SampleName := "WINDCHIL"
  292.     With .Frame1
  293.       .Caption := "Wind Speed"
  294.       .ZOrder := 16
  295.       .Move(300, 300, 2250, 2100)
  296.     End With  'WindChillForm.Frame1
  297.     With .optMilesPerHour
  298.       .Caption := "Miles/Hour"
  299.       .ZOrder := 14
  300.       .Move(450, 750, 1950, 300)
  301.       .TabStop := True
  302.       .Value := True
  303.     End With  'WindChillForm.optMilesPerHour
  304.     With .optKilometersPerHour
  305.       .Caption := "Kilometers/Hour"
  306.       .ZOrder := 13
  307.       .Move(450, 1050, 1950, 300)
  308.     End With  'WindChillForm.optKilometersPerHour
  309.     With .sbrWindSpeed
  310.       .Caption := "sbrWindSpeed"
  311.       .ZOrder := 15
  312.       .Move(450, 1500, 1950, 300)
  313.       .SmallChange := 1
  314.       .LargeChange := 10
  315.       .Min := 5
  316.       .Max := 50
  317.       .Value := 5
  318.       .Orientation := "Horizontal"
  319.       .Move(450, 1500, 1950, 300)
  320.     End With  'WindChillForm.sbrWindSpeed
  321.     With .lblWindSpeed
  322.       .Caption := "5 MPH"
  323.       .ZOrder := 12
  324.       .Move(750, 1950, 1350, 300)
  325.       .Alignment := "Center"
  326.     End With  'WindChillForm.lblWindSpeed
  327.     With .Frame2
  328.       .Caption := "Temperature"
  329.       .ZOrder := 17
  330.       .Move(2700, 300, 2250, 2100)
  331.     End With  'WindChillForm.Frame2
  332.     With .optCelsius
  333.       .Caption := "Celsius"
  334.       .ZOrder := 10
  335.       .Move(2850, 750, 1950, 300)
  336.     End With  'WindChillForm.optCelsius
  337.     With .optFahrenheit
  338.       .Caption := "Fahrenheit"
  339.       .ZOrder := 9
  340.       .Move(2850, 1050, 1950, 300)
  341.       .TabStop := True
  342.       .Value := True
  343.     End With  'WindChillForm.optFahrenheit
  344.     With .sbrTemperature
  345.       .Caption := "sbrTemperature"
  346.       .ZOrder := 11
  347.       .Move(2850, 1500, 1950, 300)
  348.       .SmallChange := 1
  349.       .LargeChange := 10
  350.       .Min := -50
  351.       .Max := 90
  352.       .Value := 32
  353.       .Orientation := "Horizontal"
  354.       .Move(2850, 1500, 1950, 300)
  355.     End With  'WindChillForm.sbrTemperature
  356.     With .lblTemperature
  357.       .Caption := "32 F"
  358.       .ZOrder := 8
  359.       .Move(3150, 1950, 1350, 300)
  360.       .Alignment := "Center"
  361.     End With  'WindChillForm.lblTemperature
  362.     With .btnHelp
  363.       .Caption := "Help"
  364.       .ZOrder := 7
  365.       .Move(300, 3000, 1500, 450)
  366.     End With  'WindChillForm.btnHelp
  367.     With .btnClose
  368.       .Caption := "Close"
  369.       .ZOrder := 6
  370.       .Move(2400, 3000, 1500, 450)
  371.     End With  'WindChillForm.btnClose
  372.     With .Label3
  373.       .Caption := "Temp"
  374.       .ZOrder := 5
  375.       .Move(5850, 150, 600, 300)
  376.     End With  'WindChillForm.Label3
  377.     With .gauTemp
  378.       .ZOrder := 18
  379.       .Move(6000, 450, 300, 3000)
  380.       .Min := -150
  381.       .Max := 150
  382.       .Value := 32
  383.       .Orientation := "Vertical"
  384.       .Move(6000, 450, 300, 3000)
  385.     End With  'WindChillForm.gauTemp
  386.     With .gauWindChill
  387.       .ZOrder := 4
  388.       .Move(6750, 450, 300, 3000)
  389.       .Min := -150
  390.       .Max := 150
  391.       .Value := 29
  392.       .Orientation := "Vertical"
  393.       .Move(6750, 450, 300, 3000)
  394.     End With  'WindChillForm.gauWindChill
  395.     With .Label4
  396.       .Caption := "Chill"
  397.       .ZOrder := 3
  398.       .Move(6600, 150, 450, 300)
  399.     End With  'WindChillForm.Label4
  400.     With .lblMaxTemp
  401.       .Caption := "150 F"
  402.       .ZOrder := 19
  403.       .Move(5100, 450, 750, 300)
  404.       .Alignment := "Right"
  405.     End With  'WindChillForm.lblMaxTemp
  406.     With .Label6
  407.       .Caption := "0"
  408.       .ZOrder := 2
  409.       .Move(5100, 1800, 750, 300)
  410.       .Alignment := "Right"
  411.     End With  'WindChillForm.Label6
  412.     With .lblMinTemp
  413.       .Caption := "-150 F"
  414.       .ZOrder := 20
  415.       .Move(5100, 3000, 750, 300)
  416.       .Alignment := "Right"
  417.     End With  'WindChillForm.lblMinTemp
  418.     With .lblWindChill
  419.       .Caption := "Windchill factor is 29 F"
  420.       .ZOrder := 1
  421.       .Move(300, 2550, 4650, 300)
  422.       .Alignment := "Center"
  423.     End With  'WindChillForm.lblWindChill
  424.     With .helpfile
  425.       .FileName := "C:\ENVELOP\arsenal\apps\windchil\WINDCHIL.hlp"
  426.     End With  'WindChillForm.helpfile
  427.   End With  'WindChillForm
  428. End Code
  429.