Public Class Grating_Configurator Sub Load_GUI() ' Initialize GUI Init_Form() Draw_Grating.Update_GratingPoints() End Sub ' --- Initialize GUI (form) size and position --- Private Sub Init_Form() PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid1_01 PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu1_01 Me.Width = AppForm.Width Me.Height = AppForm.Height If AppForm.fillMode = True Then Init_Multiple() Else Init_Individual() End If Me.ComboBox_Material.Enabled = False Me.ComboBox_Mesh.Enabled = False Me.ComboBox_Height.Enabled = False Me.ComboBox_Thickness.Enabled = False Me.ComboBox_Width.Enabled = False Me.TextBox_Width.Enabled = False Me.TextBox_Length.Enabled = False Me.PictureBox_ExportMenu.Enabled = False Me.Button_Angle_Corner.Enabled = False Me.Button_Angle_Side.Enabled = False Me.Button_Square_Corner.Enabled = False Me.Button_Square_Side.Enabled = False Me.Button_Square_Middle.Enabled = False PictureBox_ExportMenu.Top = 715 Label_Line_Grating.Location = New Point(260, Draw_Grating.guiPanelW - 27) Label_Line_Grid.Location = New Point(444, Draw_Grating.guiPanelW - 27) Label_Line_Beams.Location = New Point(620, Draw_Grating.guiPanelW - 27) Label_Line_AngleRecess.Location = New Point(802, Draw_Grating.guiPanelW - 27) End Sub Private Sub Init_Individual() Label_ConfigType.Text = "- Single Grating" PictureBox_ConfigType.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Individual_Icon PictureBox_CalculateGrid.Visible = False Label_Width.Top = 465 TextBox_Width.Top = 465 ComboBox_Width.Top = 465 Label_WidthUnit.Top = 469 CheckBox_Frames.Top = 537 Label_Frame.Top = 559 ComboBox_Frame.Top = 559 CheckBox_CutFrame.Top = 589 Dim CheckTemp As New CheckBox With { .Name = "CheckBox_Whole_Mesh", .Text = "Whole Mesh Widths", .Left = 110, .Top = 443, .Font = New Font("Microsoft Sans Serif", 7.8), .Checked = True, .Enabled = False, .AutoSize = True, .BackColor = Color.Transparent, .ForeColor = Color.White } AddHandler CheckTemp.CheckedChanged, AddressOf CheckBox_Whole_Mesh_CheckedChanged Me.Panel_Data.Controls.Add(CheckTemp) Me.ComboBox_Width.Visible = True Me.TextBox_Width.Visible = False End Sub Private Sub Init_Multiple() Label_ConfigType.Text = "- Fill Area" PictureBox_ConfigType.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Fill_Icon PictureBox_CalculateGrid.Visible = True Label_Width.Top = 440 TextBox_Width.Top = 440 ComboBox_Width.Top = 440 Label_WidthUnit.Top = 444 CheckBox_Frames.Top = 637 Label_Frame.Top = 659 ComboBox_Frame.Top = 659 CheckBox_CutFrame.Top = 689 ' --- Max Load --- Dim LabelTemp As New Label With { .Name = "Label_Max_Load", .Text = "Max Load", .Left = 35, .Top = 500, .AutoSize = True, .Font = New Font("Microsoft Sans Serif", 10), .ForeColor = Color.White } Me.Panel_Data.Controls.Add(LabelTemp) Dim textBoxTemp As New TextBox With { .Name = "TextBox_Max_Load", .Text = "5", .Left = 110, .Top = 500, .Width = 155, .Font = New Font("Microsoft Sans Serif", 8), .Enabled = False, .BackColor = Color.FromArgb(224, 224, 224) } AddHandler textBoxTemp.KeyPress, AddressOf TextBox_Max_Load_KeyPress Me.Panel_Data.Controls.Add(textBoxTemp) Dim LabelTemp2 As New Label With { .Name = "Label_Max_Load_Unit", .Text = "kN/m²", .Left = 269, .Top = 504, .Font = New Font("Microsoft Sans Serif", 8), .ForeColor = Color.White } Me.Panel_Data.Controls.Add(LabelTemp2) ' --- Max Grating weight --- Dim LabelTemp3 As New Label With { .Name = "Label_Max_Weight", .Text = "Max Single", .Left = 15, .Top = 535, .AutoSize = True, .Font = New Font("Microsoft Sans Serif", 10), .ForeColor = Color.White } Me.Panel_Data.Controls.Add(LabelTemp3) ' --- Max Grating weight --- Dim LabelTemp3_2 As New Label With { .Name = "Label_Max_Weight2", .Text = "Grating Mass", .Left = 15, .Top = 552, .AutoSize = True, .Font = New Font("Microsoft Sans Serif", 10), .ForeColor = Color.White } Me.Panel_Data.Controls.Add(LabelTemp3_2) Dim textBoxTemp2 As New TextBox With { .Name = "TextBox_Max_Weight", .Text = "70", .Left = 110, .Top = 545, .Width = 155, .Font = New Font("Microsoft Sans Serif", 8), .Enabled = False, .BackColor = Color.FromArgb(224, 224, 224) } AddHandler textBoxTemp2.KeyPress, AddressOf TextBox_Max_Load_KeyPress Me.Panel_Data.Controls.Add(textBoxTemp2) Dim LabelTemp4 As New Label With { .Name = "Label_Max_Weight_Unit", .Text = "kg", .Left = 269, .Top = 549, .Font = New Font("Microsoft Sans Serif", 8), .ForeColor = Color.White } Me.Panel_Data.Controls.Add(LabelTemp4) Me.ComboBox_Width.Visible = False Me.TextBox_Width.Visible = True End Sub ' ---------------------------------- Individual Templates ---------------------------------- ' --- TextBox Template --- Public Sub Create_TextBox_Recesses(TextBoxName As String, TextBoxText As String, TextBoxLeft As Integer, TextBoxTop As Integer, TextBoxWidth As Integer) Dim textBoxTemp As New TextBox With { .Name = TextBoxName, .Text = TextBoxText, .Left = TextBoxLeft, .Top = TextBoxTop, .Width = TextBoxWidth, .Font = New Font("Microsoft Sans Serif", 10) } Me.Panel_Recesses.Controls.Add(textBoxTemp) End Sub ' --- Label Template for Individual --- Public Sub Create_Label_Recesses(LabelName As String, LabelText As String, LabelLeft As Integer, LabelTop As Integer) Dim LabelTemp As New Label With { .Name = LabelName, .Text = LabelText, .Left = LabelLeft, .Top = LabelTop, .Font = New Font("Microsoft Sans Serif", 10) } Me.Panel_Recesses.Controls.Add(LabelTemp) End Sub ' ---------------------------------- Gratings Data ---------------------------------- ' --- When user changes grating type --- Private Sub ComboBox_Type_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Type.TextChanged User_Input.TypeChanged(sender, e) End Sub ' --- When user changes grating material --- Private Sub ComboBox_Material_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Material.TextChanged User_Input.MaterialChanged(sender, e) End Sub ' --- When user changes mesh size --- Private Sub ComboBox_Mesh_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Mesh.TextChanged User_Input.MeshChanged(sender, e) End Sub ' --- When user changes grating height --- Private Sub ComboBox_Height_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Height.TextChanged User_Input.HeightChanged(sender, e) End Sub ' --- When user changes grating thickness --- Private Sub ComboBox_Thickness_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Thickness.TextChanged User_Input.ThicknessChanged(sender, e) End Sub ' --- When user checkes/uncheckes whole meshes --- Private Sub CheckBox_Whole_Mesh_CheckedChanged(sender As Object, e As EventArgs) User_Input.WholeMeshWidthsChanged(sender, e) End Sub ' --- Grating width changed --- Private Sub ComboBox_Width_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Width.TextChanged User_Input.WidthChanged(sender, e) End Sub ' --- Check if width is a number --- Private Sub ComboBox_Width_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox_Width.KeyPress User_Input.Check_IfNumber(e) End Sub Private Sub ComboBox_Frame_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Frame.TextChanged User_Input.FrameChanged(sender, e) End Sub ' --- Grating width changed --- Private Sub TextBox_Width_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Width.TextChanged User_Input.WidthChanged(sender, e) End Sub ' --- Check if width is a number --- Private Sub TextBox_Width_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_Width.KeyPress User_Input.Check_IfNumber(e) End Sub ' --- Grating length changed --- Private Sub LengthBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Length.TextChanged User_Input.LengthChanged(sender, e) End Sub ' --- Check if length is a number --- Private Sub ComboBox_Length_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_Length.KeyPress User_Input.Check_IfNumber(e) End Sub Private Sub TextBox_Length_Leave(sender As Object, e As EventArgs) Handles TextBox_Length.Leave If TextBox_Length.Text <> "" Then If AppForm.fillMode Then If CInt(TextBox_Length.Text) < 300 Then MessageBox.Show("Length must be at least 300 [mm]") TextBox_Length.Focus() End If Else If CInt(TextBox_Length.Text) < 300 OrElse CInt(TextBox_Length.Text) > 6000 Then MessageBox.Show("Length must be at least 300 [mm] and max 6000 [mm]") TextBox_Length.Focus() End If End If End If End Sub Private Sub CheckBox_Frames_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Frames.CheckedChanged If User_Input.addFrame = True Then User_Input.addFrame = False Export.CheckBox_FrameDrawing.Checked = False Export.CheckBox_FrameDrawing.Enabled = False User_Input.addFrameDrawing = False CheckBox_CutFrame.Visible = False ComboBox_Frame.Enabled = False Else User_Input.addFrame = True Export.CheckBox_FrameDrawing.Enabled = True CheckBox_CutFrame.Visible = True ComboBox_Frame.Enabled = True End If End Sub Private Sub CheckBox_CutFrame_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_CutFrame.CheckedChanged If User_Input.preCutFrame = True Then User_Input.preCutFrame = False Else User_Input.preCutFrame = True End If End Sub ' --- Check if max laod is a number --- Public Sub TextBox_Max_Load_KeyPress(sender As Object, e As KeyPressEventArgs) User_Input.Check_IfNumber(e) End Sub ' ---------------------------------- Functions ---------------------------------- ' --- When angle button is pressed --- Private Sub Button_Angle_Corner_Click(sender As Object, e As EventArgs) Handles Button_Angle_Corner.Click Corner_Angle.AngleButton(sender, e) End Sub ' --- When angle side button is pressed --- Private Sub Button_Angle_Side_Click(sender As Object, e As EventArgs) Handles Button_Angle_Side.Click End Sub ' --- When square corner button is pressed --- Private Sub Button_Square_Corner_Click(sender As Object, e As EventArgs) Handles Button_Square_Corner.Click Corner_Rectangle.SquareButtton(sender, e) End Sub ' --- When square side button is pressed --- Private Sub Button_Square_Side_Click(sender As Object, e As EventArgs) Handles Button_Square_Side.Click Side_Rectangle.SquareSideButtton(sender, e) End Sub ' --- When middle square button is pressed --- Private Sub Button_Square_Middle_Click(sender As Object, e As EventArgs) Handles Button_Square_Middle.Click Middle_Rectangle.SquareMiddleButtton(sender, e) End Sub ' ---------------------------------- Calculate Grid Button ---------------------------------- Public Sub Button_Calculate_Click(sender As Object, e As EventArgs) Handles PictureBox_CalculateGrid.Click Calculate_Fill_Grid.Calculate_Grid() End Sub Private Sub PictureBox_CalculateGrid_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_CalculateGrid.MouseEnter PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid2_01 PictureBox_CalculateGrid.Cursor = Cursors.Hand End Sub Private Sub PictureBox_CalculateGrid_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_CalculateGrid.MouseLeave PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid1_01 PictureBox_CalculateGrid.Cursor = Cursors.Default End Sub ' ---------------------------------- Export Menu Button ---------------------------------- Private Sub Button_Export_GUI_Click(sender As Object, e As EventArgs) Handles PictureBox_ExportMenu.Click If User_Input.addFrame = True Then Export.CheckBox_3DModel.Text = "Grating + Frame" Else Export.CheckBox_3DModel.Text = "Grating" End If Export.StartPosition = FormStartPosition.Manual Export.Location = New Point(500, 250) Export.PictureBox_Export.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Export1_01 Export.ShowDialog() End Sub Private Sub PictureBox_ExportMenu_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_ExportMenu.MouseEnter PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu2_01 PictureBox_ExportMenu.Cursor = Cursors.Hand End Sub Private Sub PictureBox_ExportMenu_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_ExportMenu.MouseLeave PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu1_01 PictureBox_ExportMenu.Cursor = Cursors.Default End Sub End Class