opis

Transkrypt

opis
Przykład 7 Kąt, długości i współczynniki kierunkowe
(skrócone).
Projekt: (modyfikacja P6)
Obiekty mają zmienione następujące wartości cech:
Położenie i wielkość obiektów (w przybliżeniu) zgodnie z wyglądem w oknie programu
Usuwamy przyciski CZYTAJ_PRZ i ZAPISZ_PRZ i procedury do nich przypisane (i zmienne OTWARTY_PLIK i ZAPISANY_WYNIK)
Cecha NAME: okno ma nazwę P7
Dodane przyciski mają nazwy odpowiednio: DŁUGOŚĆ_PRZ i WSPÓŁCZYNNIKI_PRZ
Dodane przyciski (i KĄT_PRZ) maja cechę ENABLED wyłączoną (=FALSE)
Etykiety mają nazwy odpowiednio DŁUGOŚĆL_ETY, DŁUGOŚĆP_ETY, i dla współczynników AL_ETY, AP_ETY, BL_ETY I BP_ETY, a
pozostałe LABEL ( bez zmiany nazwy)
Dodatkowo:
Obiekt P7 ma zmienioną cechę: ICON – wstawiony plik P7.ICO
Zmiany koloru tła i koloru napisu, oraz zmiany czcionki według własnego uznania.
Pozostałe cechy obiektów zachowują wartości początkowe.
Dodana jest obsługa kursora w polach tekstowych.
Kod programu:
Wpisujemy kod oznaczony kolorem czarnym, pozostała część jest tworzona automatycznie przez VB.
‘ Kolor zielony (poprzedzony Apostrofem) oznacza tekst komentarza.
Zamieszczono nowe i zmienione procedury
Public Class P7
Dim xl, xc, xp, yl, yc, yp As Single
Dim azymut_l, azymut_p As Single
Dim dxl, dyl, dxp, dyp As Single
Dim długość_l, długość_p As Single
Dim t As String = " [ G/M ] "
Private Sub wyczyść_prz_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles wyczyść_prz.Click
xl_txt.Text = "" :
yl_txt.Text = ""
‘ dwukropek oznacza zakończenie instrukcji
xc_txt.Text = "" :
yc_txt.Text = ""
xp_txt.Text = "" :
yp_txt.Text = ""
Azymut_l_ety.Text = ""
Azymut_p_ety.Text = ""
kąt_ety.Text = ""
długośćL_ety.Text = ""
długośćP_ety.Text = ""
AL_ety.Text = ""
BL_ety.Text = ""
AP_ety.Text = ""
BP_ety.Text = ""
kąt_prz.Enabled = False
długość_prz.Enabled = False
współczynniki_prz.Enabled = False
End Sub
Private Sub azymut_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles azymut_prz.Click
‘ usuwamy deklarację przyrostów DIM dxl,……
If kontrola_danych() Then Exit Sub
‘ funkcja KONTROLA_DANYCH zastępuje dotychczasowe kontrole
xl = Val(xl_txt.Text)
......
......
kąt_prz.Enabled = True :
długość_prz.Enabled = True
End Sub
‘funkcja użytkownika (niezwiązana z żadnym obiektem), w całości wpisywana w oknie kodu, w dowolnym miejscu (pomiędzy
procedurami)
Function kontrola_danych() As Boolean
‘ Definicja funkcji (typu logicznego) bez parametrów
Dim okey As Boolean
okey = True
If xl_txt.Text = "" Then okey = False
If xp_txt.Text = "" Then okey = False
If xc_txt.Text = "" Then okey = False
If yl_txt.Text = "" Then okey = False
If yp_txt.Text = "" Then okey = False
If yc_txt.Text = "" Then okey = False
If Val(xl_txt.Text) = Val(xc_txt.Text) And Val(yl_txt.Text) = Val(yc_txt.Text) Then okey = False
If Val(xp_txt.Text) = Val(xc_txt.Text) And Val(yp_txt.Text) = Val(yc_txt.Text) Then okey = False
If Not okey Then MsgBox("Brak conajmniej jednej współrzędnej, lub punkty sie pokrywają !!", 16, " Błąd danych ")
kontrola_danych = Not okey
End Function
‘ Obsługa klawisza ENTER do “przechodzenia” do nastepnego pola tekstowego przy wprowadzaniu danych (kod #13)
Private Sub xl_txt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles xl_txt.KeyUp
If e.KeyCode = 13 Then yl_txt.Focus() ‘ SUB generowane w oknie kodu,odpowiednieo z listy lewej obiekt a z listy prawej zdarzenie
End Sub
Private Sub xp_txt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles xp_txt.KeyUp
If e.KeyCode = 13 Then yp_txt.Focus()
‘ SUB generowane w oknie kodu, z listy lewej obiekt a z listy prawej zdarzenie
End Sub
Private Sub xc_txt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles xc_txt.KeyUp
If e.KeyCode = 13 Then yc_txt.Focus()
‘ SUB generowane w oknie kodu, z listy lewej obiekt a z listy prawej zdarzenie
End Sub
Private Sub yc_txt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles yc_txt.KeyUp
If e.KeyCode = 13 Then xp_txt.Focus()
‘ SUB generowane w oknie kodu, z listy lewej obiekt a z listy prawej zdarzenie
End Sub
Private Sub yp_txt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles yp_txt.KeyUp
If e.KeyCode = 13 Then azymut_prz.Focus()
‘ SUB generowane w oknie kodu, z listy lewej obiekt a z listy prawej zdarzenie
End Sub
Private Sub yl_txt_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles yl_txt.KeyUp
If e.KeyCode = 13 Then xc_txt.Focus()
‘ SUB generowane w oknie kodu, z listy lewej obiekt a z listy prawej zdarzenie
End Sub
Private Sub długość_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles długość_prz.Click
długość_l = (dxl ^ 2 + dyl ^ 2) ^ 0.5
długość_p = (dxp ^ 2 + dyp ^ 2) ^ 0.5
długośćL_ety.Text = Format(długość_l, " 0.000 metrów ")
długośćP_ety.Text = Format(długość_p, " 0.000 metrów ")
współczynniki_prz.Enabled = True
End Sub
Private Sub współczynniki_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles współczynniki_prz.Click
Dim al, ap, bl, bp As Single
Dim ro As Single = 200 / Math.PI
al = dxl / długość_l ^ 2 * ro
AL_ety.Text = Format(al, " 0.00000 ") + t
ap = dxp / długość_p ^ 2 * ro
AP_ety.Text = Format(ap, " 0.00000 ") + t
bl = dyl / długość_l ^ 2 * ro
BL_ety.Text = Format(bl, " 0.00000 ") + t
bp = dyp / długość_p ^ 2 * ro
BP_ety.Text = Format(bp, " 0.00000 ") + t
End Sub
End Class
Jan Ruchel
Kraków, kwiecień 2013