Skip to content

Instantly share code, notes, and snippets.

Created October 21, 2017 17:07
VB
Public Class Form1
Dim X2, PP, EEE, X1, X3, T1, T2, T3, N1, N2, N3, TE123, TE1, TE2, TE3, X1123, X2123, X3123, Y As Double
Private Sub ВыходToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВыходToolStripMenuItem.Click
Close()
End Sub
Private Sub ОПрограммеToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ОПрограммеToolStripMenuItem.Click
Form2.ShowDialog()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
End Sub
Private Function chk(ByVal T As TextBox) As Boolean
Dim separator As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator(0)
Dim s As String = T.Text.Replace(".", separator) : T.BackColor = Color.White : T.Text = s : chk = True
If Not IsNumeric(s) Then
MessageBox.Show("В поле ввода следует вводить числа.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
T.Clear() : T.Focus() : T.BackColor = Color.Bisque
Return False
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button2.Enabled = True
For k As Integer = 4 To 9
If Not chk(Me.Controls("TextBox" & k)) Then Exit Sub
Next
For k As Integer = 4 To 9
If Me.Controls("TextBox" & k).Text < 1 Then
MessageBox.Show("Температура или количество атомов не может принимать отрицательное значение", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Me.Controls("TextBox" & k).Focus() : Me.Controls("TextBox" & k).BackColor = Color.Bisque
Exit Sub
End If
Next
For k As Integer = 4 To 6
If Me.Controls("TextBox" & k).Text > 2500 Then
MessageBox.Show("Температура не может быть такой большой!", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Me.Controls("TextBox" & k).Focus() : Me.Controls("TextBox" & k).BackColor = Color.Bisque
Exit Sub
End If
Next
For k As Integer = 7 To 9
If Me.Controls("TextBox" & k).Text > 40 Then
MessageBox.Show("Слишком много атомов для соединения!", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Me.Controls("TextBox" & k).Focus() : Me.Controls("TextBox" & k).BackColor = Color.Bisque
Exit Sub
End If
Next
Dim Triangle, pText As Graphics
Triangle = PictureBox1.CreateGraphics
pText = PictureBox1.CreateGraphics
Triangle.Clear(PictureBox1.BackColor)
Triangle.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
Dim font As New System.Drawing.Font("Tahoma", 10)
Dim font2 As New System.Drawing.Font("Tahoma", 7)
Dim tA, tB, tC As String
tA = TextBox1.Text
tB = TextBox2.Text
tC = TextBox3.Text
pText.DrawString(tB, font, Brushes.Red, 155, 8)
pText.DrawString(tA, font, Brushes.Red, 10, 259)
pText.DrawString(tC, font, Brushes.Red, 297, 259)
T1 = TextBox4.Text
T2 = TextBox5.Text
T3 = TextBox6.Text
N1 = TextBox7.Text
N2 = TextBox8.Text
N3 = TextBox9.Text
X2 = 0
PP = 1
EEE = 0.0001
Do
PP = PP / 10
var: X2 = X2 + PP
X1 = Math.Exp(N1 * (1 - T1 * (1 - Math.Log(X2) / N2) / T2))
Y = X1 + X2 - 1
If Math.Abs(Y) < EEE Then Exit Do
If Y < 0 Then GoTo var
X2 = X2 - PP
Loop While True
TE1 = T1 / (1 - Math.Log(X1) / N1)
X2 = 0
PP = 1
EEE = 0.0001
Do
PP = PP / 10
var1: X2 = X2 + PP
X1 = Math.Exp(N1 * (1 - T1 * (1 - Math.Log(X2) / N2) / T2))
X3 = Math.Exp(N3 * (1 - T3 * (1 - Math.Log(X2) / N2) / T2))
Y = X1 + X2 + X3 - 1
If Math.Abs(Y) < EEE Then Exit Do
If Y < 0 Then GoTo var1
X2 = X2 - PP
Loop While True
TE123 = T1 / (1 - Math.Log(X1) / N1)
X1123 = X1
X2123 = X2
X3123 = X3
Dim TE1, TE2, TE3 As Double
TE1 = TextBox4.Text / (1 - Math.Log(X1123 / (X1123 + X2123)) / TextBox7.Text)
TE2 = TextBox5.Text / (1 - Math.Log(X2123 / (X2123 + X3123)) / TextBox8.Text)
TE3 = TextBox6.Text / (1 - Math.Log(X3123 / (X3123 + X1123)) / TextBox9.Text)
Dim pSS, pCC, pX1, pX2, pX3, pY1, pY2, pY3, pXAB, pYAB, pXABC, pYABC, pXAC, pYAC, pXBC, pYBC, X112, X113, X223, X212, X313, X323 As Single
pSS = Math.Sqrt(3) / 2
pCC = 0.5
pX1 = 0
pX2 = 160
pX3 = 320
pY1 = 277.13
pY2 = 0
pY3 = 277.13
X112 = X1
X212 = X2
X113 = X1
X313 = X2
X223 = X1
X323 = X2
Label8.Text = X112
Label9.Text = X313
Label10.Text = X223
Triangle.DrawLine(Pens.Black, pX1, pY1, pX2, pY2)
Triangle.DrawLine(Pens.Black, pX1, pY1, pX3, pY3)
Triangle.DrawLine(Pens.Black, pX2, pY2, pX3, pY3)
pXAB = 0 + 320 * X2 * pCC
pXAC = 0 + 320 * X1
pXBC = 320 - 320 * X2 * pCC
pXABC = 0 + 320 * X2123 * pCC + 320 * X3123
pYABC = 277.13 - (320 * X2123 * pSS)
pYAB = 277.13 - (320 * X2 * pSS)
pYAC = 277.13
pYBC = 277.13 - (320 * X223 * pSS)
Triangle.DrawLine(Pens.Black, pXAB, pYAB, pXABC, pYABC)
Triangle.DrawLine(Pens.Black, pXAC, pYAC, pXABC, pYABC)
Triangle.DrawLine(Pens.Black, pXBC, pYBC, pXABC, pYABC)
Dim redBrush As New SolidBrush(Color.Black)
Triangle.FillEllipse(redBrush, pXABC - 2, pYABC - 2, 6, 6)
pText.DrawString("TE123 = " & Format(TE123, "#.##") & " K", font2, Brushes.Green, pXABC, pYABC - 17)
Triangle.FillEllipse(redBrush, pXAB - 2, pYAB - 2, 6, 6)
pText.DrawString("TE1 = " & Format(TE1, "#.##") & " K", font2, Brushes.Green, pXAB - 48, pYAB - 17)
pText.Dispose()
Triangle.FillEllipse(redBrush, pXAC - 2, pYAC - 2, 6, 6)
pText.DrawString("TE3 = " & Format(TE3, "#.##") & " K", font2, Brushes.Green, pXAC, pYAC)
pText.Dispose()
Dim XX1, XX2, XX3 As String
XX1 = TextBox1.Text
XX2 = TextBox2.Text
XX3 = TextBox3.Text
Label1.Text = XX1 & " = " & Format(X1 * 100, "#.##") & " мол %"
Label2.Text = XX2 & " = " & Format(X2 * 100, "#.##") & " мол %"
Label3.Text = XX3 & " = " & Format(X3 * 100, "#.##") & " мол %"
Label4.Text = "TE123 = " & Format(TE123, "#.##") & " K"
End Sub
Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
If CheckBox1.Checked Then
TE123 = TE123 - 273.15
Label4.Text = "TE123 = " & Format(TE123, "#.##") & " °С"
Else
Label4.Text = "TE123 = " & Format(TE123, "#.##") & " K"
TE123 = TE123
End If
End Sub
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked Then
Label6.Text = "Температура (°C):"
T1 = T1 + 273.15
T2 = T2 + 273.15
T3 = T3 + 273.15
Else
Label6.Text = "Температура (K):"
T1 = T1
T2 = T2
T3 = T3
End If
End Sub
End Class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment