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