opis
Transkrypt
opis
Przykład 6 Azymut i kąt ze współrzędnych. Projekt: (modyfikacja projektu P5) 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 Cecha NAME: okno ma nazwę P6a Zlikwidowane są przyciski a wprowadzono MENU – kolejne pozycje . PLIKI_MNU ; podmenu: CZYTAJDANE_MNU, ZAPISZWYNIK_MNU, ZAMKNIJPLIK_MNU, KONIEC_MNU: OBLICZENIA_MNU – podmenu:AZYMUT_MNU i KĄT_MNU; ORGANIZACJA_MNU i podmenu WYCZYŚĆ_MNU oraz AUTOR_MNU. Etykiety mają nazwy odpowiednio – KĄT_ETY, AZYMUT_L_ETY, AZYMUT_P_ETY a pozostałe LABEL (1-12 ) Pola tekstowe mają nazwy odpowiednio (2 nowe) –.XL_TXT, YL_TXT, XC_TXT, YC_TXT, XP_TXT, YP_TXT Cecha TEXT - wszystkie obiekty zgodnie z wyglądem w oknie programu Cecha TEXTALIGN - wszystkie pola tekstowe mają ustawioną wartość na = Center Cecha BORDERSTYLE etykiety KĄT_ETY, AZYMUT_L_ETY, AZYMUT_P_ETY mają ustawioną wartość na = FixedSingle Cecha ENABLED – polecenia KĄT_MNU i ZAPISZWYNIK_MNU mają ustawioną na FALSE Dodatkowo: Obiekt P6 ma zmienioną cechę: ICON – wstawiony plik P6.ICO Obiekt RYSUNEK ma zmienioną cechę: IMAGE – wstawiony szkic (plik KĄT.JPG stworzony poza VB). 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 (lub z poprzedniego projektu). Plik z danymi należy umieścić w podkatalogu BIN\DEBUG bieżącego projektu, i tam też powstanie plik z wynikami. Kod programu: Wpisujemy kod oznaczony kolorem czarnym , pozostała część jest tworzona automatycznie przez VB.‘ Kolor zielony (poprzedzony Apostrofem) oznacza tekst komentarza. Konspekt zawiera tylko procedury nowe, lub zmienione do programu P5 Public Class p6a Dim xl, xc, xp As Single: Dim yl, yc, yp As Single Dim azymut_l, azymut_p, kąt As Single Dim otwarty_plik, zapisany_wynik As Boolean Private Sub P6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load zapisany_wynik = False: otwarty_plik = False ZapiszWynik_mnu.Enabled = False: Kąt_mnu.Enabled = False ZamknijPlik_mnu.Enabled = False End Sub Private Sub CzytajDane_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CzytajDane_mnu.Click If otwarty_plik Then If EOF(1) Then FileClose(1) CzytajDane_mnu.Enabled = False Exit Sub End If Else FileOpen(1, "dane3p.txt", OpenMode.Input) otwarty_plik = True End If Input(1, xl) xl_txt.Text = Str(xl) Input(1, yl) yl_txt.Text = Str(yl) Input(1, xc) xc_txt.Text = Str(xc) Input(1, yc) yc_txt.Text = Str(yc) Input(1, xp) xp_txt.Text = Str(xp) Input(1, yp) yp_txt.Text = Str(yp) azymut_l_ety.Text = "" azymut_p_ety.Text = "" kąt_ety.Text = "" ZapiszWynik_mnu.Enabled = False Kąt_mnu.Enabled = False End Sub Private Sub ZapiszWynik_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZapiszWynik_mnu.Click If Not zapisany_wynik Then FileOpen(3, "kąty.txt", OpenMode.Output) zapisany_wynik = True ZamknijPlik_mnu.Enabled = True End If PrintLine(3, azymut_l, azymut_p, kąt) azymut_l_ety.Text = "" azymut_p_ety.Text = "" kąt_ety.Text = "" ZapiszWynik_mnu.Enabled = False Kąt_mnu.Enabled = False End Sub Private Sub ZamknijPlik_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ZamknijPlik_mnu.Click FileClose(3) ZapiszWynik_mnu.Enabled = False ZamknijPlik_mnu.Enabled = False zapisany_wynik = False End Sub Private Sub Koniec_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Koniec_mnu.Click End End Sub Private Sub Wyczyść_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Wyczyść_mnu.Click xl_txt.Text = "": yl_txt.Text = "" xc_txt.Text = "": yc_txt.Text = "" xp_txt.Text = "": yp_txt.Text = "" azymut_l_ety.Text = "": azymut_p_ety.Text = "" kąt_ety.Text = "" Kąt_mnu.Enabled = False: ZapiszWynik_mnu.Enabled = False End Sub Private Sub Azymut_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Azymut_mnu.Click Dim dxl, dyl, dxp, dyp As Single If xl_txt.Text = "" Or xc_txt.Text = "" Or xp_txt.Text = "" Or yl_txt.Text = "" Or yc_txt.Text = "" Or yp_txt.Text = "" Then MsgBox(" Co najmniej jedna współrzędna nie została wpisana!!!", 16, "BŁĄD WSPÓŁRZĘDNYCH") Exit Sub End If If Val(xl_txt.Text) = Val(xc_txt.Text) And Val(yl_txt.Text) = Val(yc_txt.Text) Then MsgBox(" Błąd, nie ma lewego azymutu !!!", 16, "BŁĄD WSPÓŁRZĘDNYCH") Wyczyść_mnu_Click(sender, e) Exit Sub ElseIf Val(xp_txt.Text) = Val(xc_txt.Text) And Val(yp_txt.Text) = Val(yc_txt.Text) Then MsgBox(" Błąd, nie ma prawego azymutu !!!", 16, "BŁĄD WSPÓŁRZĘDNYCH") Wyczyść_mnu_Click(sender, e) Exit Sub End If xl = Val(xl_txt.Text): xc = Val(xc_txt.Text) xp = Val(xp_txt.Text): yl = Val(yl_txt.Text) yc = Val(yc_txt.Text): yp = Val(yp_txt.Text) dxl = xl – xc: dyl = yl - yc azymut_l = Licz_azymut(dxl, dyl) azymut_l_ety.Text = Format(azymut_l, " 0.0000 gradów ") dxp = xp – xc: dyp = yp - yc azymut_p = Licz_azymut(dxp, dyp) azymut_p_ety.Text = Format(azymut_p, " 0.0000 gradów ") kąt_ety.Text = "": Kąt_mnu.Enabled = True End Sub Private Sub Kąt_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Kąt_mnu.Click If azymut_l = azymut_p Then MsgBox("azymuty się pokrywają !!!!!!!", 16, "błąd azymutu") Exit Sub End If kąt = azymut_p - azymut_l If kąt < 0 Then kąt = kąt + 400 kąt_ety.Text = Format(kąt, " 0.0000 gradów ") ZapiszWynik_mnu.Enabled = True End Sub Private Sub OAutorze_mnu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OAutorze_mnu.Click MsgBox("przedstaw się .... ", 0, "AUTOR !!!") End Sub End Class Pliki tekstowe Dane3p.txt kąty.txt 1 1 0 0 0 -1 1 -1 0 0 -1 -1 -1 1 0 0 1 0 1 0 0 0 0 -1 11 -22 33 -66 55 -44 50 350 150 0 316.9501 Jan Ruchel Kraków, marzec 2015 300 250 0 300 332.2829 250 300 250 300 15.33276