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