初始化提交
仓库转移到Gitea,初始化提交,可能丢失以前的git版本日志
This commit is contained in:
282
UTS_Core/UTSModule/Station/DlgLoadStation.Designer.vb
generated
Normal file
282
UTS_Core/UTSModule/Station/DlgLoadStation.Designer.vb
generated
Normal file
@@ -0,0 +1,282 @@
|
||||
Imports System.Windows.Forms
|
||||
Namespace UTSModule.Station
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class DlgLoadStation
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form 重写 Dispose,以清理组件列表。
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Windows 窗体设计器所必需的
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'注意: 以下过程是 Windows 窗体设计器所必需的
|
||||
'可以使用 Windows 窗体设计器修改它。
|
||||
'不要使用代码编辑器修改它。
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.OK_Button = New System.Windows.Forms.Button()
|
||||
Me.Cancel_Button = New System.Windows.Forms.Button()
|
||||
Me.PicStationPreview = New System.Windows.Forms.PictureBox()
|
||||
Me.CboStation = New System.Windows.Forms.ComboBox()
|
||||
Me.LblStation = New System.Windows.Forms.Label()
|
||||
Me.CboProject = New System.Windows.Forms.ComboBox()
|
||||
Me.LblProject = New System.Windows.Forms.Label()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.GrpStationDesc = New System.Windows.Forms.GroupBox()
|
||||
Me.CboPacket = New System.Windows.Forms.ComboBox()
|
||||
Me.Label4 = New System.Windows.Forms.Label()
|
||||
Me.Label3 = New System.Windows.Forms.Label()
|
||||
Me.RtxStationDesc = New System.Windows.Forms.RichTextBox()
|
||||
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
|
||||
Me.RtxProjectDesc = New System.Windows.Forms.RichTextBox()
|
||||
Me.Label2 = New System.Windows.Forms.Label()
|
||||
Me.TableLayoutPanel1.SuspendLayout()
|
||||
CType(Me.PicStationPreview, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.GrpStationDesc.SuspendLayout()
|
||||
Me.GroupBox1.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'TableLayoutPanel1
|
||||
'
|
||||
Me.TableLayoutPanel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.TableLayoutPanel1.ColumnCount = 2
|
||||
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0)
|
||||
Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0)
|
||||
Me.TableLayoutPanel1.Location = New System.Drawing.Point(533, 431)
|
||||
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
|
||||
Me.TableLayoutPanel1.RowCount = 1
|
||||
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
|
||||
Me.TableLayoutPanel1.Size = New System.Drawing.Size(240, 39)
|
||||
Me.TableLayoutPanel1.TabIndex = 0
|
||||
'
|
||||
'OK_Button
|
||||
'
|
||||
Me.OK_Button.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.OK_Button.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.OK_Button.Location = New System.Drawing.Point(3, 3)
|
||||
Me.OK_Button.Name = "OK_Button"
|
||||
Me.OK_Button.Size = New System.Drawing.Size(114, 33)
|
||||
Me.OK_Button.TabIndex = 0
|
||||
Me.OK_Button.Text = "确定"
|
||||
'
|
||||
'Cancel_Button
|
||||
'
|
||||
Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.Cancel_Button.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.Cancel_Button.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.Cancel_Button.Location = New System.Drawing.Point(123, 3)
|
||||
Me.Cancel_Button.Name = "Cancel_Button"
|
||||
Me.Cancel_Button.Size = New System.Drawing.Size(114, 33)
|
||||
Me.Cancel_Button.TabIndex = 1
|
||||
Me.Cancel_Button.Text = "取消"
|
||||
'
|
||||
'PicStationPreview
|
||||
'
|
||||
Me.PicStationPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
|
||||
Me.PicStationPreview.Location = New System.Drawing.Point(24, 181)
|
||||
Me.PicStationPreview.Name = "PicStationPreview"
|
||||
Me.PicStationPreview.Size = New System.Drawing.Size(200, 200)
|
||||
Me.PicStationPreview.TabIndex = 5
|
||||
Me.PicStationPreview.TabStop = False
|
||||
'
|
||||
'CboStation
|
||||
'
|
||||
Me.CboStation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CboStation.Font = New System.Drawing.Font("宋体", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.CboStation.FormattingEnabled = True
|
||||
Me.CboStation.IntegralHeight = False
|
||||
Me.CboStation.Location = New System.Drawing.Point(24, 49)
|
||||
Me.CboStation.MaxDropDownItems = 16
|
||||
Me.CboStation.Name = "CboStation"
|
||||
Me.CboStation.Size = New System.Drawing.Size(200, 24)
|
||||
Me.CboStation.TabIndex = 9
|
||||
'
|
||||
'LblStation
|
||||
'
|
||||
Me.LblStation.AutoSize = True
|
||||
Me.LblStation.Location = New System.Drawing.Point(6, 27)
|
||||
Me.LblStation.Name = "LblStation"
|
||||
Me.LblStation.Size = New System.Drawing.Size(41, 12)
|
||||
Me.LblStation.TabIndex = 8
|
||||
Me.LblStation.Text = "站位:"
|
||||
'
|
||||
'CboProject
|
||||
'
|
||||
Me.CboProject.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CboProject.Font = New System.Drawing.Font("宋体", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.CboProject.FormattingEnabled = True
|
||||
Me.CboProject.IntegralHeight = False
|
||||
Me.CboProject.Location = New System.Drawing.Point(24, 49)
|
||||
Me.CboProject.MaxDropDownItems = 16
|
||||
Me.CboProject.Name = "CboProject"
|
||||
Me.CboProject.Size = New System.Drawing.Size(200, 24)
|
||||
Me.CboProject.TabIndex = 7
|
||||
'
|
||||
'LblProject
|
||||
'
|
||||
Me.LblProject.AutoSize = True
|
||||
Me.LblProject.Location = New System.Drawing.Point(6, 27)
|
||||
Me.LblProject.Name = "LblProject"
|
||||
Me.LblProject.Size = New System.Drawing.Size(41, 12)
|
||||
Me.LblProject.TabIndex = 6
|
||||
Me.LblProject.Text = "项目:"
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(6, 166)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(41, 12)
|
||||
Me.Label1.TabIndex = 10
|
||||
Me.Label1.Text = "预览:"
|
||||
'
|
||||
'GrpStationDesc
|
||||
'
|
||||
Me.GrpStationDesc.Controls.Add(Me.CboPacket)
|
||||
Me.GrpStationDesc.Controls.Add(Me.Label4)
|
||||
Me.GrpStationDesc.Controls.Add(Me.Label3)
|
||||
Me.GrpStationDesc.Controls.Add(Me.RtxStationDesc)
|
||||
Me.GrpStationDesc.Controls.Add(Me.CboStation)
|
||||
Me.GrpStationDesc.Controls.Add(Me.LblStation)
|
||||
Me.GrpStationDesc.Location = New System.Drawing.Point(291, 15)
|
||||
Me.GrpStationDesc.Name = "GrpStationDesc"
|
||||
Me.GrpStationDesc.Size = New System.Drawing.Size(483, 400)
|
||||
Me.GrpStationDesc.TabIndex = 11
|
||||
Me.GrpStationDesc.TabStop = False
|
||||
Me.GrpStationDesc.Text = "站位描述"
|
||||
'
|
||||
'CboPacket
|
||||
'
|
||||
Me.CboPacket.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CboPacket.Font = New System.Drawing.Font("宋体", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.CboPacket.FormattingEnabled = True
|
||||
Me.CboPacket.IntegralHeight = False
|
||||
Me.CboPacket.Location = New System.Drawing.Point(258, 49)
|
||||
Me.CboPacket.MaxDropDownItems = 16
|
||||
Me.CboPacket.Name = "CboPacket"
|
||||
Me.CboPacket.Size = New System.Drawing.Size(200, 24)
|
||||
Me.CboPacket.TabIndex = 13
|
||||
'
|
||||
'Label4
|
||||
'
|
||||
Me.Label4.AutoSize = True
|
||||
Me.Label4.Location = New System.Drawing.Point(244, 27)
|
||||
Me.Label4.Name = "Label4"
|
||||
Me.Label4.Size = New System.Drawing.Size(41, 12)
|
||||
Me.Label4.TabIndex = 12
|
||||
Me.Label4.Text = "站包:"
|
||||
'
|
||||
'Label3
|
||||
'
|
||||
Me.Label3.AutoSize = True
|
||||
Me.Label3.Location = New System.Drawing.Point(6, 82)
|
||||
Me.Label3.Name = "Label3"
|
||||
Me.Label3.Size = New System.Drawing.Size(65, 12)
|
||||
Me.Label3.TabIndex = 11
|
||||
Me.Label3.Text = "站位总览:"
|
||||
'
|
||||
'RtxStationDesc
|
||||
'
|
||||
Me.RtxStationDesc.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.RtxStationDesc.Font = New System.Drawing.Font("宋体", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.RtxStationDesc.ForeColor = System.Drawing.Color.Gray
|
||||
Me.RtxStationDesc.Location = New System.Drawing.Point(24, 97)
|
||||
Me.RtxStationDesc.Name = "RtxStationDesc"
|
||||
Me.RtxStationDesc.ReadOnly = True
|
||||
Me.RtxStationDesc.Size = New System.Drawing.Size(434, 284)
|
||||
Me.RtxStationDesc.TabIndex = 10
|
||||
Me.RtxStationDesc.Text = ""
|
||||
'
|
||||
'GroupBox1
|
||||
'
|
||||
Me.GroupBox1.Controls.Add(Me.RtxProjectDesc)
|
||||
Me.GroupBox1.Controls.Add(Me.Label2)
|
||||
Me.GroupBox1.Controls.Add(Me.CboProject)
|
||||
Me.GroupBox1.Controls.Add(Me.Label1)
|
||||
Me.GroupBox1.Controls.Add(Me.LblProject)
|
||||
Me.GroupBox1.Controls.Add(Me.PicStationPreview)
|
||||
Me.GroupBox1.Location = New System.Drawing.Point(23, 15)
|
||||
Me.GroupBox1.Name = "GroupBox1"
|
||||
Me.GroupBox1.Size = New System.Drawing.Size(240, 400)
|
||||
Me.GroupBox1.TabIndex = 12
|
||||
Me.GroupBox1.TabStop = False
|
||||
Me.GroupBox1.Text = "项目描述"
|
||||
'
|
||||
'RtxProjectDesc
|
||||
'
|
||||
Me.RtxProjectDesc.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.RtxProjectDesc.Font = New System.Drawing.Font("宋体", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.RtxProjectDesc.Location = New System.Drawing.Point(24, 97)
|
||||
Me.RtxProjectDesc.Name = "RtxProjectDesc"
|
||||
Me.RtxProjectDesc.ReadOnly = True
|
||||
Me.RtxProjectDesc.Size = New System.Drawing.Size(200, 57)
|
||||
Me.RtxProjectDesc.TabIndex = 12
|
||||
Me.RtxProjectDesc.Text = ""
|
||||
'
|
||||
'Label2
|
||||
'
|
||||
Me.Label2.AutoSize = True
|
||||
Me.Label2.Location = New System.Drawing.Point(6, 82)
|
||||
Me.Label2.Name = "Label2"
|
||||
Me.Label2.Size = New System.Drawing.Size(41, 12)
|
||||
Me.Label2.TabIndex = 8
|
||||
Me.Label2.Text = "简介:"
|
||||
'
|
||||
'DlgLoadStation
|
||||
'
|
||||
Me.AcceptButton = Me.OK_Button
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.Cancel_Button
|
||||
Me.ClientSize = New System.Drawing.Size(793, 471)
|
||||
Me.Controls.Add(Me.GroupBox1)
|
||||
Me.Controls.Add(Me.GrpStationDesc)
|
||||
Me.Controls.Add(Me.TableLayoutPanel1)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = false
|
||||
Me.MinimizeBox = false
|
||||
Me.Name = "DlgLoadStation"
|
||||
Me.ShowInTaskbar = false
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = "DlgLoadStation"
|
||||
Me.TableLayoutPanel1.ResumeLayout(false)
|
||||
CType(Me.PicStationPreview,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.GrpStationDesc.ResumeLayout(false)
|
||||
Me.GrpStationDesc.PerformLayout
|
||||
Me.GroupBox1.ResumeLayout(false)
|
||||
Me.GroupBox1.PerformLayout
|
||||
Me.ResumeLayout(false)
|
||||
|
||||
End Sub
|
||||
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
|
||||
Friend WithEvents OK_Button As System.Windows.Forms.Button
|
||||
Friend WithEvents Cancel_Button As System.Windows.Forms.Button
|
||||
Friend WithEvents PicStationPreview As Windows.Forms.PictureBox
|
||||
Friend WithEvents CboStation As Windows.Forms.ComboBox
|
||||
Friend WithEvents LblStation As Windows.Forms.Label
|
||||
Friend WithEvents CboProject As Windows.Forms.ComboBox
|
||||
Friend WithEvents LblProject As Windows.Forms.Label
|
||||
Friend WithEvents Label1 As Windows.Forms.Label
|
||||
Friend WithEvents GrpStationDesc As Windows.Forms.GroupBox
|
||||
Friend WithEvents GroupBox1 As Windows.Forms.GroupBox
|
||||
Friend WithEvents Label2 As Windows.Forms.Label
|
||||
Friend WithEvents Label3 As Windows.Forms.Label
|
||||
Friend WithEvents RtxStationDesc As Windows.Forms.RichTextBox
|
||||
Friend WithEvents RtxProjectDesc As Windows.Forms.RichTextBox
|
||||
Friend WithEvents CboPacket As ComboBox
|
||||
Friend WithEvents Label4 As Label
|
||||
End Class
|
||||
End Namespace
|
||||
120
UTS_Core/UTSModule/Station/DlgLoadStation.resx
Normal file
120
UTS_Core/UTSModule/Station/DlgLoadStation.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
178
UTS_Core/UTSModule/Station/DlgLoadStation.vb
Normal file
178
UTS_Core/UTSModule/Station/DlgLoadStation.vb
Normal file
@@ -0,0 +1,178 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Windows.Forms
|
||||
Imports UTS_Core.UTSModule.Project
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class DlgLoadStation
|
||||
Public Property ProcessStation() As ProcessStation
|
||||
|
||||
Public Property UserInfo() As Login.UserInfo
|
||||
|
||||
Public _projectInfo As ProjectInfo
|
||||
|
||||
Private _projectName As String
|
||||
|
||||
Private _stationName As String
|
||||
|
||||
Private _stationType As ProcessStation.StationTypeEnum
|
||||
|
||||
Private _snIndex As New Dictionary(Of Integer, Integer)
|
||||
|
||||
Public Function InitProjectStationWithoutShow(projectName As String, stationName As String) As Boolean
|
||||
Dim projectList As String() = ProjectInfo.LoadProjectList(ProjectInfo.InitializeModeEnum.LocalDatabaseLoad)
|
||||
If projectList.Contains(projectName) = False Then Return False
|
||||
|
||||
_projectInfo = New ProjectInfo(UserInfo.UserId, UserInfo.UserName, projectName, ProjectInfo.InitializeModeEnum.LocalDatabaseLoad)
|
||||
For Each projectStationInfo As ProcessStation In _projectInfo.Station
|
||||
If projectStationInfo.Name = stationName Then
|
||||
ProcessStation = projectStationInfo
|
||||
ProcessStation.UserId = UserInfo.UserId
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
Return ProcessStation IsNot Nothing
|
||||
End Function
|
||||
|
||||
Public Overloads Function ShowDialog(projectName As String, stationName As String, Optional stationType As ProcessStation.StationTypeEnum = ProcessStation.StationTypeEnum.Test) As DialogResult
|
||||
_projectName = projectName
|
||||
_stationName = stationName
|
||||
_stationType = stationType
|
||||
Return Me.ShowDialog
|
||||
End Function
|
||||
|
||||
Private Sub OK_Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OK_Button.Click
|
||||
DialogResult = DialogResult.OK
|
||||
Close()
|
||||
End Sub
|
||||
|
||||
Private Sub Cancel_Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Cancel_Button.Click
|
||||
DialogResult = DialogResult.Cancel
|
||||
Close()
|
||||
End Sub
|
||||
|
||||
Private Sub InitPreviewImage()
|
||||
PicStationPreview.SizeMode = PictureBoxSizeMode.Zoom
|
||||
End Sub
|
||||
|
||||
Private Sub InitializeForm()
|
||||
Text = $"请选择需要加载的项目"
|
||||
End Sub
|
||||
|
||||
Private Sub DlgLoadStation_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
InitializeForm()
|
||||
InitPreviewImage()
|
||||
UpdateProjectList()
|
||||
End Sub
|
||||
|
||||
Private Sub UpdateProjectList()
|
||||
CboProject.Items.Clear()
|
||||
CboProject.Items.AddRange(ProjectInfo.LoadProjectList(ProjectInfo.InitializeModeEnum.LocalDatabaseLoad))
|
||||
|
||||
If String.IsNullOrEmpty(_projectName) = False Then
|
||||
For i As Integer = 0 To CboProject.Items.Count - 1
|
||||
If CboProject.Items(i).ToString() = _projectName Then
|
||||
CboProject.SelectedIndex = i
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
Else
|
||||
If CboProject.Items.Count > 0 Then CboProject.SelectedIndex = 0
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub UpdateProjectStation(stations As List(Of ProcessStation))
|
||||
_snIndex.Clear()
|
||||
CboStation.Items.Clear()
|
||||
|
||||
Dim index As Integer = -1
|
||||
For Each station As ProcessStation In stations
|
||||
index += 1
|
||||
|
||||
If station.StationType <> _stationType Then Continue For
|
||||
|
||||
_snIndex.Add(CboStation.Items.Count, index)
|
||||
CboStation.Items.Add(station.Name)
|
||||
Next
|
||||
|
||||
CboPacket.Items.Clear()
|
||||
|
||||
|
||||
'添加所有站位描述
|
||||
RtxStationDesc.SuspendLayout()
|
||||
RtxStationDesc.Clear()
|
||||
For Each station As ProcessStation In stations
|
||||
If station.StationType <> _stationType Then
|
||||
RtxStationDesc.SelectionColor = Color.Gray
|
||||
Else
|
||||
RtxStationDesc.SelectionColor = Color.Black
|
||||
End If
|
||||
RtxStationDesc.AppendText($"{station.Name}:{station.Description}{vbNewLine}")
|
||||
Next
|
||||
RtxStationDesc.ResumeLayout(False)
|
||||
RtxStationDesc.PerformLayout()
|
||||
|
||||
'默认选择
|
||||
If String.IsNullOrEmpty(_stationName) = False Then
|
||||
For i As Integer = 0 To CboStation.Items.Count - 1
|
||||
If CboStation.Items(i).ToString() = _stationName Then
|
||||
CboStation.SelectedIndex = i
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
If CboStation.SelectedIndex = -1 AndAlso _snIndex.Count > 0 Then CboStation.SelectedIndex = _snIndex.Keys.ElementAt(0)
|
||||
End Sub
|
||||
|
||||
Private Sub CboProject_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboProject.SelectedIndexChanged
|
||||
_projectInfo = New ProjectInfo(UserInfo.UserId, UserInfo.UserName, CboProject.Text, ProjectInfo.InitializeModeEnum.LocalDatabaseLoad)
|
||||
|
||||
RtxProjectDesc.Text = _projectInfo.Description
|
||||
|
||||
If _projectInfo.MasterImage IsNot Nothing Then
|
||||
PicStationPreview.Image = _projectInfo.MasterImage
|
||||
End If
|
||||
|
||||
lastSelectIndex = -1
|
||||
UpdateProjectStation(_projectInfo.Station)
|
||||
End Sub
|
||||
|
||||
Private lastSelectIndex As Integer = -1
|
||||
Private _packetList As List(Of StationPacketVo)
|
||||
|
||||
Private Sub CboStation_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboStation.SelectedIndexChanged
|
||||
Dim selectIndex As Integer = _snIndex(CboStation.SelectedIndex)
|
||||
ProcessStation = _projectInfo.Station.Item(selectIndex)
|
||||
ProcessStation.UserId = UserInfo.UserId
|
||||
|
||||
If lastSelectIndex <> -1 Then
|
||||
RtxStationDesc.Select(RtxStationDesc.GetFirstCharIndexFromLine(lastSelectIndex), RtxStationDesc.Lines(lastSelectIndex).Length)
|
||||
RtxStationDesc.SelectionColor = Color.Black
|
||||
End If
|
||||
lastSelectIndex = selectIndex
|
||||
|
||||
RtxStationDesc.Select(RtxStationDesc.GetFirstCharIndexFromLine(selectIndex), RtxStationDesc.Lines(selectIndex).Length)
|
||||
RtxStationDesc.SelectionColor = Color.Blue
|
||||
|
||||
|
||||
'获取pid和sid
|
||||
Dim pid As Integer = _projectInfo.Index
|
||||
Dim sid As Integer = ProcessStation.StationID
|
||||
|
||||
'获取对应站位所有包,倒序添加
|
||||
_packetList = _projectInfo.LoadLocalDbStationPackets(pid, sid)
|
||||
CboPacket.Items.Clear()
|
||||
For Each packet As StationPacketVo In _packetList
|
||||
CboPacket.Items.Add(packet.PacketName)
|
||||
Next
|
||||
|
||||
If CboPacket.Items.Count > 0 Then CboPacket.SelectedIndex = 0
|
||||
End Sub
|
||||
|
||||
Private Sub CboPacket_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboPacket.SelectedIndexChanged
|
||||
ProcessStation.Packet.FileName = _packetList(CboPacket.SelectedIndex).PacketName
|
||||
ProcessStation.Packet.PacketMD5 = _packetList(CboPacket.SelectedIndex).PacketMd5
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
330
UTS_Core/UTSModule/Station/DlgStationPlanStyle.Designer.vb
generated
Normal file
330
UTS_Core/UTSModule/Station/DlgStationPlanStyle.Designer.vb
generated
Normal file
@@ -0,0 +1,330 @@
|
||||
|
||||
Namespace UTSModule.Station
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class DlgStationPlanStyle
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form 重写 Dispose,以清理组件列表。
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Windows 窗体设计器所必需的
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'注意: 以下过程是 Windows 窗体设计器所必需的
|
||||
'可以使用 Windows 窗体设计器修改它。
|
||||
'不要使用代码编辑器修改它。
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
|
||||
Me.OK_Button = New System.Windows.Forms.Button()
|
||||
Me.Cancel_Button = New System.Windows.Forms.Button()
|
||||
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
|
||||
Me.GroupBox3 = New System.Windows.Forms.GroupBox()
|
||||
Me.CheckedListBox1 = New System.Windows.Forms.CheckedListBox()
|
||||
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
|
||||
Me.CboType = New System.Windows.Forms.ComboBox()
|
||||
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
|
||||
Me.GroupBox7 = New System.Windows.Forms.GroupBox()
|
||||
Me.BtnBackground = New System.Windows.Forms.Button()
|
||||
Me.LblBackground = New System.Windows.Forms.Label()
|
||||
Me.GroupBox6 = New System.Windows.Forms.GroupBox()
|
||||
Me.BtnIcon = New System.Windows.Forms.Button()
|
||||
Me.LblIcon = New System.Windows.Forms.Label()
|
||||
Me.GroupBox5 = New System.Windows.Forms.GroupBox()
|
||||
Me.BtnFont = New System.Windows.Forms.Button()
|
||||
Me.LblFont = New System.Windows.Forms.Label()
|
||||
Me.GroupBox4 = New System.Windows.Forms.GroupBox()
|
||||
Me.LblPriview = New System.Windows.Forms.Label()
|
||||
Me.TableLayoutPanel1.SuspendLayout
|
||||
CType(Me.SplitContainer1,System.ComponentModel.ISupportInitialize).BeginInit
|
||||
Me.SplitContainer1.Panel1.SuspendLayout
|
||||
Me.SplitContainer1.Panel2.SuspendLayout
|
||||
Me.SplitContainer1.SuspendLayout
|
||||
Me.GroupBox3.SuspendLayout
|
||||
Me.GroupBox1.SuspendLayout
|
||||
Me.GroupBox2.SuspendLayout
|
||||
Me.GroupBox7.SuspendLayout
|
||||
Me.GroupBox6.SuspendLayout
|
||||
Me.GroupBox5.SuspendLayout
|
||||
Me.GroupBox4.SuspendLayout
|
||||
Me.SuspendLayout
|
||||
'
|
||||
'TableLayoutPanel1
|
||||
'
|
||||
Me.TableLayoutPanel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
|
||||
Me.TableLayoutPanel1.ColumnCount = 2
|
||||
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50!))
|
||||
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50!))
|
||||
Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0)
|
||||
Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0)
|
||||
Me.TableLayoutPanel1.Location = New System.Drawing.Point(427, 377)
|
||||
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
|
||||
Me.TableLayoutPanel1.RowCount = 1
|
||||
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50!))
|
||||
Me.TableLayoutPanel1.Size = New System.Drawing.Size(158, 28)
|
||||
Me.TableLayoutPanel1.TabIndex = 0
|
||||
'
|
||||
'OK_Button
|
||||
'
|
||||
Me.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None
|
||||
Me.OK_Button.Location = New System.Drawing.Point(6, 3)
|
||||
Me.OK_Button.Name = "OK_Button"
|
||||
Me.OK_Button.Size = New System.Drawing.Size(67, 21)
|
||||
Me.OK_Button.TabIndex = 0
|
||||
Me.OK_Button.Text = "确定"
|
||||
'
|
||||
'Cancel_Button
|
||||
'
|
||||
Me.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None
|
||||
Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.Cancel_Button.Location = New System.Drawing.Point(85, 3)
|
||||
Me.Cancel_Button.Name = "Cancel_Button"
|
||||
Me.Cancel_Button.Size = New System.Drawing.Size(67, 21)
|
||||
Me.Cancel_Button.TabIndex = 1
|
||||
Me.Cancel_Button.Text = "取消"
|
||||
'
|
||||
'SplitContainer1
|
||||
'
|
||||
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Top
|
||||
Me.SplitContainer1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.SplitContainer1.Name = "SplitContainer1"
|
||||
'
|
||||
'SplitContainer1.Panel1
|
||||
'
|
||||
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox3)
|
||||
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox1)
|
||||
'
|
||||
'SplitContainer1.Panel2
|
||||
'
|
||||
Me.SplitContainer1.Panel2.Controls.Add(Me.GroupBox2)
|
||||
Me.SplitContainer1.Size = New System.Drawing.Size(585, 370)
|
||||
Me.SplitContainer1.SplitterDistance = 250
|
||||
Me.SplitContainer1.TabIndex = 1
|
||||
'
|
||||
'GroupBox3
|
||||
'
|
||||
Me.GroupBox3.Controls.Add(Me.CheckedListBox1)
|
||||
Me.GroupBox3.Dock = System.Windows.Forms.DockStyle.Bottom
|
||||
Me.GroupBox3.Location = New System.Drawing.Point(0, 55)
|
||||
Me.GroupBox3.Name = "GroupBox3"
|
||||
Me.GroupBox3.Size = New System.Drawing.Size(250, 315)
|
||||
Me.GroupBox3.TabIndex = 0
|
||||
Me.GroupBox3.TabStop = false
|
||||
Me.GroupBox3.Text = "显示内容"
|
||||
'
|
||||
'CheckedListBox1
|
||||
'
|
||||
Me.CheckedListBox1.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.CheckedListBox1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CheckedListBox1.FormattingEnabled = true
|
||||
Me.CheckedListBox1.Location = New System.Drawing.Point(3, 17)
|
||||
Me.CheckedListBox1.Name = "CheckedListBox1"
|
||||
Me.CheckedListBox1.Size = New System.Drawing.Size(244, 295)
|
||||
Me.CheckedListBox1.TabIndex = 0
|
||||
'
|
||||
'GroupBox1
|
||||
'
|
||||
Me.GroupBox1.Controls.Add(Me.CboType)
|
||||
Me.GroupBox1.Dock = System.Windows.Forms.DockStyle.Top
|
||||
Me.GroupBox1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GroupBox1.Name = "GroupBox1"
|
||||
Me.GroupBox1.Size = New System.Drawing.Size(250, 47)
|
||||
Me.GroupBox1.TabIndex = 0
|
||||
Me.GroupBox1.TabStop = false
|
||||
Me.GroupBox1.Text = "当前类型"
|
||||
'
|
||||
'CboType
|
||||
'
|
||||
Me.CboType.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.CboType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.CboType.FormattingEnabled = true
|
||||
Me.CboType.Location = New System.Drawing.Point(3, 17)
|
||||
Me.CboType.Name = "CboType"
|
||||
Me.CboType.Size = New System.Drawing.Size(244, 20)
|
||||
Me.CboType.TabIndex = 0
|
||||
'
|
||||
'GroupBox2
|
||||
'
|
||||
Me.GroupBox2.Controls.Add(Me.GroupBox7)
|
||||
Me.GroupBox2.Controls.Add(Me.GroupBox6)
|
||||
Me.GroupBox2.Controls.Add(Me.GroupBox5)
|
||||
Me.GroupBox2.Controls.Add(Me.GroupBox4)
|
||||
Me.GroupBox2.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GroupBox2.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GroupBox2.Name = "GroupBox2"
|
||||
Me.GroupBox2.Size = New System.Drawing.Size(331, 370)
|
||||
Me.GroupBox2.TabIndex = 0
|
||||
Me.GroupBox2.TabStop = false
|
||||
Me.GroupBox2.Text = "节点样式"
|
||||
'
|
||||
'GroupBox7
|
||||
'
|
||||
Me.GroupBox7.Controls.Add(Me.BtnBackground)
|
||||
Me.GroupBox7.Controls.Add(Me.LblBackground)
|
||||
Me.GroupBox7.Location = New System.Drawing.Point(2, 201)
|
||||
Me.GroupBox7.Name = "GroupBox7"
|
||||
Me.GroupBox7.Size = New System.Drawing.Size(329, 67)
|
||||
Me.GroupBox7.TabIndex = 3
|
||||
Me.GroupBox7.TabStop = false
|
||||
Me.GroupBox7.Text = "背景"
|
||||
'
|
||||
'BtnBackground
|
||||
'
|
||||
Me.BtnBackground.Location = New System.Drawing.Point(272, 27)
|
||||
Me.BtnBackground.Name = "BtnBackground"
|
||||
Me.BtnBackground.Size = New System.Drawing.Size(54, 23)
|
||||
Me.BtnBackground.TabIndex = 3
|
||||
Me.BtnBackground.Text = "修改"
|
||||
Me.BtnBackground.UseVisualStyleBackColor = true
|
||||
'
|
||||
'LblBackground
|
||||
'
|
||||
Me.LblBackground.Location = New System.Drawing.Point(20, 27)
|
||||
Me.LblBackground.Name = "LblBackground"
|
||||
Me.LblBackground.Size = New System.Drawing.Size(246, 23)
|
||||
Me.LblBackground.TabIndex = 2
|
||||
Me.LblBackground.Text = "预览ABCDabcd1234"
|
||||
Me.LblBackground.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'GroupBox6
|
||||
'
|
||||
Me.GroupBox6.Controls.Add(Me.BtnIcon)
|
||||
Me.GroupBox6.Controls.Add(Me.LblIcon)
|
||||
Me.GroupBox6.Location = New System.Drawing.Point(3, 133)
|
||||
Me.GroupBox6.Name = "GroupBox6"
|
||||
Me.GroupBox6.Size = New System.Drawing.Size(329, 67)
|
||||
Me.GroupBox6.TabIndex = 2
|
||||
Me.GroupBox6.TabStop = false
|
||||
Me.GroupBox6.Text = "图标"
|
||||
'
|
||||
'BtnIcon
|
||||
'
|
||||
Me.BtnIcon.Location = New System.Drawing.Point(271, 27)
|
||||
Me.BtnIcon.Name = "BtnIcon"
|
||||
Me.BtnIcon.Size = New System.Drawing.Size(54, 23)
|
||||
Me.BtnIcon.TabIndex = 3
|
||||
Me.BtnIcon.Text = "修改"
|
||||
Me.BtnIcon.UseVisualStyleBackColor = true
|
||||
'
|
||||
'LblIcon
|
||||
'
|
||||
Me.LblIcon.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
Me.LblIcon.Location = New System.Drawing.Point(19, 27)
|
||||
Me.LblIcon.Name = "LblIcon"
|
||||
Me.LblIcon.Size = New System.Drawing.Size(246, 23)
|
||||
Me.LblIcon.TabIndex = 2
|
||||
Me.LblIcon.Text = "预览ABCDabcd1234"
|
||||
Me.LblIcon.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'GroupBox5
|
||||
'
|
||||
Me.GroupBox5.Controls.Add(Me.BtnFont)
|
||||
Me.GroupBox5.Controls.Add(Me.LblFont)
|
||||
Me.GroupBox5.Location = New System.Drawing.Point(3, 55)
|
||||
Me.GroupBox5.Name = "GroupBox5"
|
||||
Me.GroupBox5.Size = New System.Drawing.Size(329, 67)
|
||||
Me.GroupBox5.TabIndex = 1
|
||||
Me.GroupBox5.TabStop = false
|
||||
Me.GroupBox5.Text = "字体"
|
||||
'
|
||||
'BtnFont
|
||||
'
|
||||
Me.BtnFont.Location = New System.Drawing.Point(271, 29)
|
||||
Me.BtnFont.Name = "BtnFont"
|
||||
Me.BtnFont.Size = New System.Drawing.Size(54, 23)
|
||||
Me.BtnFont.TabIndex = 1
|
||||
Me.BtnFont.Text = "修改"
|
||||
Me.BtnFont.UseVisualStyleBackColor = true
|
||||
'
|
||||
'LblFont
|
||||
'
|
||||
Me.LblFont.Location = New System.Drawing.Point(19, 29)
|
||||
Me.LblFont.Name = "LblFont"
|
||||
Me.LblFont.Size = New System.Drawing.Size(246, 23)
|
||||
Me.LblFont.TabIndex = 0
|
||||
Me.LblFont.Text = "预览ABCDabcd1234"
|
||||
Me.LblFont.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'GroupBox4
|
||||
'
|
||||
Me.GroupBox4.Controls.Add(Me.LblPriview)
|
||||
Me.GroupBox4.Dock = System.Windows.Forms.DockStyle.Bottom
|
||||
Me.GroupBox4.Location = New System.Drawing.Point(3, 277)
|
||||
Me.GroupBox4.Name = "GroupBox4"
|
||||
Me.GroupBox4.Size = New System.Drawing.Size(325, 90)
|
||||
Me.GroupBox4.TabIndex = 0
|
||||
Me.GroupBox4.TabStop = false
|
||||
Me.GroupBox4.Text = "预览"
|
||||
'
|
||||
'LblPriview
|
||||
'
|
||||
Me.LblPriview.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
Me.LblPriview.Location = New System.Drawing.Point(19, 34)
|
||||
Me.LblPriview.Name = "LblPriview"
|
||||
Me.LblPriview.Size = New System.Drawing.Size(306, 37)
|
||||
Me.LblPriview.TabIndex = 3
|
||||
Me.LblPriview.Text = "预览ABCDabcd1234"
|
||||
Me.LblPriview.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
|
||||
'
|
||||
'DlgStationPlanStyle
|
||||
'
|
||||
Me.AcceptButton = Me.OK_Button
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 12!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.CancelButton = Me.Cancel_Button
|
||||
Me.ClientSize = New System.Drawing.Size(585, 406)
|
||||
Me.Controls.Add(Me.SplitContainer1)
|
||||
Me.Controls.Add(Me.TableLayoutPanel1)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
|
||||
Me.MaximizeBox = false
|
||||
Me.MinimizeBox = false
|
||||
Me.Name = "DlgStationPlanStyle"
|
||||
Me.ShowInTaskbar = false
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
|
||||
Me.Text = "DlgStationPlanStyle"
|
||||
Me.TableLayoutPanel1.ResumeLayout(false)
|
||||
Me.SplitContainer1.Panel1.ResumeLayout(false)
|
||||
Me.SplitContainer1.Panel2.ResumeLayout(false)
|
||||
CType(Me.SplitContainer1,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplitContainer1.ResumeLayout(false)
|
||||
Me.GroupBox3.ResumeLayout(false)
|
||||
Me.GroupBox1.ResumeLayout(false)
|
||||
Me.GroupBox2.ResumeLayout(false)
|
||||
Me.GroupBox7.ResumeLayout(false)
|
||||
Me.GroupBox6.ResumeLayout(false)
|
||||
Me.GroupBox5.ResumeLayout(false)
|
||||
Me.GroupBox4.ResumeLayout(false)
|
||||
Me.ResumeLayout(false)
|
||||
|
||||
End Sub
|
||||
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
|
||||
Friend WithEvents OK_Button As System.Windows.Forms.Button
|
||||
Friend WithEvents Cancel_Button As System.Windows.Forms.Button
|
||||
Friend WithEvents SplitContainer1 As Windows.Forms.SplitContainer
|
||||
Friend WithEvents CboType As Windows.Forms.ComboBox
|
||||
Friend WithEvents GroupBox1 As Windows.Forms.GroupBox
|
||||
Friend WithEvents GroupBox3 As Windows.Forms.GroupBox
|
||||
Friend WithEvents GroupBox2 As Windows.Forms.GroupBox
|
||||
Friend WithEvents CheckedListBox1 As Windows.Forms.CheckedListBox
|
||||
Friend WithEvents GroupBox4 As Windows.Forms.GroupBox
|
||||
Friend WithEvents GroupBox7 As Windows.Forms.GroupBox
|
||||
Friend WithEvents GroupBox6 As Windows.Forms.GroupBox
|
||||
Friend WithEvents GroupBox5 As Windows.Forms.GroupBox
|
||||
Friend WithEvents BtnBackground As Windows.Forms.Button
|
||||
Friend WithEvents LblBackground As Windows.Forms.Label
|
||||
Friend WithEvents BtnIcon As Windows.Forms.Button
|
||||
Friend WithEvents LblIcon As Windows.Forms.Label
|
||||
Friend WithEvents BtnFont As Windows.Forms.Button
|
||||
Friend WithEvents LblFont As Windows.Forms.Label
|
||||
Friend WithEvents LblPriview As Windows.Forms.Label
|
||||
End Class
|
||||
End Namespace
|
||||
120
UTS_Core/UTSModule/Station/DlgStationPlanStyle.resx
Normal file
120
UTS_Core/UTSModule/Station/DlgStationPlanStyle.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
148
UTS_Core/UTSModule/Station/DlgStationPlanStyle.vb
Normal file
148
UTS_Core/UTSModule/Station/DlgStationPlanStyle.vb
Normal file
@@ -0,0 +1,148 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Windows.Forms
|
||||
Namespace UTSModule.Station
|
||||
Public Class DlgStationPlanStyle
|
||||
|
||||
Private Sub UpdateStyleByForm()
|
||||
Dim nodeStyle As RowNodeStyle = RowNode.NodeStyles(RowType)
|
||||
|
||||
nodeStyle.NodeFont = LblPriview.Font
|
||||
nodeStyle.NodeForeColor = LblPriview.ForeColor
|
||||
nodeStyle.NodeImage = LblPriview.Image
|
||||
nodeStyle.NodeBackColor = LblPriview.BackColor
|
||||
|
||||
|
||||
nodeStyle.ShowRowType = CheckedListBox1.GetItemChecked(0)
|
||||
|
||||
nodeStyle.ShowLabel = CheckedListBox1.GetItemChecked(1)
|
||||
nodeStyle.ShowDescription = CheckedListBox1.GetItemChecked(2)
|
||||
|
||||
nodeStyle.ShowAction = CheckedListBox1.GetItemChecked(3)
|
||||
nodeStyle.ShowRecord = CheckedListBox1.GetItemChecked(4)
|
||||
|
||||
nodeStyle.ShowRetry = CheckedListBox1.GetItemChecked(5)
|
||||
nodeStyle.ShowRetryInterval = CheckedListBox1.GetItemChecked(6)
|
||||
|
||||
nodeStyle.ShowErrorCode = CheckedListBox1.GetItemChecked(7)
|
||||
nodeStyle.ShowErrorMessage = CheckedListBox1.GetItemChecked(8)
|
||||
|
||||
nodeStyle.ShowCommand = CheckedListBox1.GetItemChecked(9)
|
||||
nodeStyle.ShowParameter = CheckedListBox1.GetItemChecked(10)
|
||||
End Sub
|
||||
|
||||
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
|
||||
UpdateStyleByForm()
|
||||
|
||||
Me.DialogResult = System.Windows.Forms.DialogResult.OK
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
|
||||
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Property RowType() As RowNode.RowTypeEnum
|
||||
|
||||
Private Sub BtnFont_Click(sender As Object, e As EventArgs) Handles BtnFont.Click
|
||||
Using dlgFont As New FontDialog()
|
||||
dlgFont.ShowColor = True
|
||||
|
||||
dlgFont.Color = LblPriview.ForeColor
|
||||
dlgFont.Font = LblPriview.Font
|
||||
If dlgFont.ShowDialog() = DialogResult.OK Then
|
||||
LblFont.ForeColor = dlgFont.Color
|
||||
LblFont.Font = dlgFont.Font
|
||||
|
||||
LblPriview.ForeColor = dlgFont.Color
|
||||
LblPriview.Font = dlgFont.Font
|
||||
End If
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
Private Sub BtnIcon_Click(sender As Object, e As EventArgs) Handles BtnIcon.Click
|
||||
Using dlgFile As New OpenFileDialog
|
||||
dlgFile.Title = $"选择图像"
|
||||
dlgFile.Multiselect = False
|
||||
dlgFile.Filter = $"(*.jpg,*.png,*.jpeg,*.bmp,*.gif)|*.jgp;*.png;*.jpeg;*.bmp;*.gif|All files(*.*)|*.*"
|
||||
If dlgFile.ShowDialog() = DialogResult.OK Then
|
||||
Try
|
||||
LblIcon.Image = New Bitmap(dlgFile.FileName)
|
||||
LblPriview.Image = New Bitmap(dlgFile.FileName)
|
||||
Catch ex As Exception
|
||||
MsgBox($"加载图像错误,{ex.Message}")
|
||||
End Try
|
||||
End If
|
||||
End Using
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub BtnBackground_Click(sender As Object, e As EventArgs) Handles BtnBackground.Click
|
||||
Using dlgColor As New ColorDialog
|
||||
dlgColor.Color = LblBackground.BackColor
|
||||
If dlgColor.ShowDialog() = DialogResult.OK Then
|
||||
LblBackground.BackColor = dlgColor.Color
|
||||
LblPriview.BackColor = dlgColor.Color
|
||||
End If
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub UpdateFormByType(type As RowNode.RowTypeEnum)
|
||||
Dim nodeStyle As RowNodeStyle = RowNode.NodeStyles(type)
|
||||
|
||||
LblFont.Font = nodeStyle.NodeFont
|
||||
LblFont.ForeColor = nodeStyle.NodeForeColor
|
||||
LblIcon.Image = nodeStyle.NodeImage
|
||||
LblBackground.BackColor = nodeStyle.NodeBackColor
|
||||
|
||||
LblPriview.Font = nodeStyle.NodeFont
|
||||
LblPriview.ForeColor = nodeStyle.NodeForeColor
|
||||
LblPriview.Image = nodeStyle.NodeImage
|
||||
LblPriview.BackColor = nodeStyle.NodeBackColor
|
||||
|
||||
|
||||
CheckedListBox1.Items.Clear()
|
||||
CheckedListBox1.Items.Add("ShowRowType", nodeStyle.ShowRowType)
|
||||
|
||||
CheckedListBox1.Items.Add("ShowLabel", nodeStyle.ShowLabel)
|
||||
CheckedListBox1.Items.Add("ShowDescription", nodeStyle.ShowDescription)
|
||||
|
||||
CheckedListBox1.Items.Add("ShowAction", nodeStyle.ShowAction)
|
||||
CheckedListBox1.Items.Add("ShowRecord", nodeStyle.ShowRecord)
|
||||
|
||||
CheckedListBox1.Items.Add("ShowRetry", nodeStyle.ShowRetry)
|
||||
CheckedListBox1.Items.Add("ShowRetryInterval", nodeStyle.ShowRetryInterval)
|
||||
|
||||
CheckedListBox1.Items.Add("ShowErrorCode", nodeStyle.ShowErrorCode)
|
||||
CheckedListBox1.Items.Add("ShowErrorMessage", nodeStyle.ShowErrorMessage)
|
||||
|
||||
CheckedListBox1.Items.Add("ShowCommand", nodeStyle.ShowCommand)
|
||||
CheckedListBox1.Items.Add("ShowParameter", nodeStyle.ShowParameter)
|
||||
End Sub
|
||||
|
||||
Private Sub InitForm()
|
||||
RowType = RowNode.RowTypeEnum.Flow
|
||||
|
||||
CboType.Items.Clear()
|
||||
CboType.Items.Add(RowNode.RowTypeEnum.FixedModule.ToString())
|
||||
CboType.Items.Add(RowNode.RowTypeEnum.Module.ToString())
|
||||
CboType.Items.Add(RowNode.RowTypeEnum.Control.ToString())
|
||||
CboType.Items.Add(RowNode.RowTypeEnum.Flow.ToString())
|
||||
|
||||
CboType.SelectedIndex = 0
|
||||
|
||||
UpdateFormByType(RowType)
|
||||
End Sub
|
||||
|
||||
Private Sub DlgStationPlanStyle_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
InitForm()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub CboType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboType.SelectedIndexChanged
|
||||
RowType = CType([Enum].Parse(GetType(RowNode.RowTypeEnum), CboType.SelectedItem.ToString()), RowNode.RowTypeEnum)
|
||||
UpdateFormByType(RowType)
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
428
UTS_Core/UTSModule/Station/FrmStationDesign.Designer.vb
generated
Normal file
428
UTS_Core/UTSModule/Station/FrmStationDesign.Designer.vb
generated
Normal file
@@ -0,0 +1,428 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Namespace UTSModule.Station
|
||||
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class FrmStationDesign
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form 重写 Dispose,以清理组件列表。
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Windows 窗体设计器所必需的
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'注意: 以下过程是 Windows 窗体设计器所必需的
|
||||
'可以使用 Windows 窗体设计器修改它。
|
||||
'不要使用代码编辑器修改它。
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmStationDesign))
|
||||
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
|
||||
Me.TsBtnReleaseStation = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsBtnAddResourceFile = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnAddResourceDir = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnSearchResource = New System.Windows.Forms.ToolStripButton()
|
||||
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
|
||||
Me.GroupBox4 = New System.Windows.Forms.GroupBox()
|
||||
Me.TxtTestStation = New System.Windows.Forms.TextBox()
|
||||
Me.TxtProjectName = New System.Windows.Forms.TextBox()
|
||||
Me.NudStationVersion = New System.Windows.Forms.NumericUpDown()
|
||||
Me.ChkAutoAugment = New System.Windows.Forms.CheckBox()
|
||||
Me.Label7 = New System.Windows.Forms.Label()
|
||||
Me.Label3 = New System.Windows.Forms.Label()
|
||||
Me.Label4 = New System.Windows.Forms.Label()
|
||||
Me.TxtEditPwd = New System.Windows.Forms.TextBox()
|
||||
Me.DtpValidDate = New System.Windows.Forms.DateTimePicker()
|
||||
Me.Label5 = New System.Windows.Forms.Label()
|
||||
Me.GroupBox3 = New System.Windows.Forms.GroupBox()
|
||||
Me.PicStation = New System.Windows.Forms.PictureBox()
|
||||
Me.SplitContainer2 = New System.Windows.Forms.SplitContainer()
|
||||
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
|
||||
Me.RtxCurrentImprint = New System.Windows.Forms.RichTextBox()
|
||||
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
|
||||
Me.RtxHistoryImprint = New System.Windows.Forms.RichTextBox()
|
||||
Me.dlgOpenFile = New System.Windows.Forms.OpenFileDialog()
|
||||
Me.dlgOpenFolder = New System.Windows.Forms.FolderBrowserDialog()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.TxtReleasePwd = New System.Windows.Forms.TextBox()
|
||||
Me.ToolStrip1.SuspendLayout()
|
||||
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplitContainer1.Panel1.SuspendLayout()
|
||||
Me.SplitContainer1.Panel2.SuspendLayout()
|
||||
Me.SplitContainer1.SuspendLayout()
|
||||
Me.GroupBox4.SuspendLayout()
|
||||
CType(Me.NudStationVersion, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.GroupBox3.SuspendLayout()
|
||||
CType(Me.PicStation, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.SplitContainer2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplitContainer2.Panel1.SuspendLayout()
|
||||
Me.SplitContainer2.Panel2.SuspendLayout()
|
||||
Me.SplitContainer2.SuspendLayout()
|
||||
Me.GroupBox2.SuspendLayout()
|
||||
Me.GroupBox1.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'ToolStrip1
|
||||
'
|
||||
Me.ToolStrip1.BackColor = System.Drawing.SystemColors.Control
|
||||
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TsBtnReleaseStation, Me.ToolStripSeparator1, Me.TsBtnAddResourceFile, Me.TsBtnAddResourceDir, Me.TsBtnSearchResource})
|
||||
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.ToolStrip1.Name = "ToolStrip1"
|
||||
Me.ToolStrip1.Size = New System.Drawing.Size(800, 25)
|
||||
Me.ToolStrip1.TabIndex = 6
|
||||
Me.ToolStrip1.Text = "ToolStrip1"
|
||||
'
|
||||
'TsBtnReleaseStation
|
||||
'
|
||||
Me.TsBtnReleaseStation.BackColor = System.Drawing.SystemColors.Control
|
||||
Me.TsBtnReleaseStation.Image = CType(resources.GetObject("TsBtnReleaseStation.Image"), System.Drawing.Image)
|
||||
Me.TsBtnReleaseStation.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None
|
||||
Me.TsBtnReleaseStation.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnReleaseStation.Name = "TsBtnReleaseStation"
|
||||
Me.TsBtnReleaseStation.Size = New System.Drawing.Size(76, 22)
|
||||
Me.TsBtnReleaseStation.Text = "发布站包"
|
||||
'
|
||||
'ToolStripSeparator1
|
||||
'
|
||||
Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
|
||||
Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 25)
|
||||
'
|
||||
'TsBtnAddResourceFile
|
||||
'
|
||||
Me.TsBtnAddResourceFile.BackColor = System.Drawing.SystemColors.Control
|
||||
Me.TsBtnAddResourceFile.Image = CType(resources.GetObject("TsBtnAddResourceFile.Image"), System.Drawing.Image)
|
||||
Me.TsBtnAddResourceFile.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None
|
||||
Me.TsBtnAddResourceFile.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnAddResourceFile.Name = "TsBtnAddResourceFile"
|
||||
Me.TsBtnAddResourceFile.Size = New System.Drawing.Size(100, 22)
|
||||
Me.TsBtnAddResourceFile.Text = "添加资源文件"
|
||||
'
|
||||
'TsBtnAddResourceDir
|
||||
'
|
||||
Me.TsBtnAddResourceDir.BackColor = System.Drawing.SystemColors.Control
|
||||
Me.TsBtnAddResourceDir.Image = CType(resources.GetObject("TsBtnAddResourceDir.Image"), System.Drawing.Image)
|
||||
Me.TsBtnAddResourceDir.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None
|
||||
Me.TsBtnAddResourceDir.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnAddResourceDir.Name = "TsBtnAddResourceDir"
|
||||
Me.TsBtnAddResourceDir.Size = New System.Drawing.Size(112, 22)
|
||||
Me.TsBtnAddResourceDir.Text = "添加资源文件夹"
|
||||
'
|
||||
'TsBtnSearchResource
|
||||
'
|
||||
Me.TsBtnSearchResource.BackColor = System.Drawing.SystemColors.Control
|
||||
Me.TsBtnSearchResource.Image = CType(resources.GetObject("TsBtnSearchResource.Image"), System.Drawing.Image)
|
||||
Me.TsBtnSearchResource.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None
|
||||
Me.TsBtnSearchResource.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnSearchResource.Name = "TsBtnSearchResource"
|
||||
Me.TsBtnSearchResource.Size = New System.Drawing.Size(112, 22)
|
||||
Me.TsBtnSearchResource.Text = "查看资源文件夹"
|
||||
'
|
||||
'SplitContainer1
|
||||
'
|
||||
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SplitContainer1.Location = New System.Drawing.Point(0, 25)
|
||||
Me.SplitContainer1.Name = "SplitContainer1"
|
||||
'
|
||||
'SplitContainer1.Panel1
|
||||
'
|
||||
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox4)
|
||||
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox3)
|
||||
'
|
||||
'SplitContainer1.Panel2
|
||||
'
|
||||
Me.SplitContainer1.Panel2.Controls.Add(Me.SplitContainer2)
|
||||
Me.SplitContainer1.Size = New System.Drawing.Size(800, 425)
|
||||
Me.SplitContainer1.SplitterDistance = 475
|
||||
Me.SplitContainer1.TabIndex = 7
|
||||
'
|
||||
'GroupBox4
|
||||
'
|
||||
Me.GroupBox4.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.GroupBox4.Controls.Add(Me.Label1)
|
||||
Me.GroupBox4.Controls.Add(Me.TxtReleasePwd)
|
||||
Me.GroupBox4.Controls.Add(Me.TxtTestStation)
|
||||
Me.GroupBox4.Controls.Add(Me.TxtProjectName)
|
||||
Me.GroupBox4.Controls.Add(Me.NudStationVersion)
|
||||
Me.GroupBox4.Controls.Add(Me.ChkAutoAugment)
|
||||
Me.GroupBox4.Controls.Add(Me.Label7)
|
||||
Me.GroupBox4.Controls.Add(Me.Label3)
|
||||
Me.GroupBox4.Controls.Add(Me.Label4)
|
||||
Me.GroupBox4.Controls.Add(Me.TxtEditPwd)
|
||||
Me.GroupBox4.Controls.Add(Me.DtpValidDate)
|
||||
Me.GroupBox4.Controls.Add(Me.Label5)
|
||||
Me.GroupBox4.Location = New System.Drawing.Point(3, 0)
|
||||
Me.GroupBox4.Name = "GroupBox4"
|
||||
Me.GroupBox4.Size = New System.Drawing.Size(469, 124)
|
||||
Me.GroupBox4.TabIndex = 25
|
||||
Me.GroupBox4.TabStop = False
|
||||
Me.GroupBox4.Text = "基本信息"
|
||||
'
|
||||
'TxtTestStation
|
||||
'
|
||||
Me.TxtTestStation.Location = New System.Drawing.Point(296, 28)
|
||||
Me.TxtTestStation.Name = "TxtTestStation"
|
||||
Me.TxtTestStation.ReadOnly = True
|
||||
Me.TxtTestStation.Size = New System.Drawing.Size(137, 21)
|
||||
Me.TxtTestStation.TabIndex = 1
|
||||
'
|
||||
'TxtProjectName
|
||||
'
|
||||
Me.TxtProjectName.Location = New System.Drawing.Point(71, 28)
|
||||
Me.TxtProjectName.Name = "TxtProjectName"
|
||||
Me.TxtProjectName.ReadOnly = True
|
||||
Me.TxtProjectName.Size = New System.Drawing.Size(136, 21)
|
||||
Me.TxtProjectName.TabIndex = 1
|
||||
'
|
||||
'NudStationVersion
|
||||
'
|
||||
Me.NudStationVersion.Enabled = False
|
||||
Me.NudStationVersion.Location = New System.Drawing.Point(296, 82)
|
||||
Me.NudStationVersion.Maximum = New Decimal(New Integer() {1024, 0, 0, 0})
|
||||
Me.NudStationVersion.Name = "NudStationVersion"
|
||||
Me.NudStationVersion.Size = New System.Drawing.Size(137, 21)
|
||||
Me.NudStationVersion.TabIndex = 25
|
||||
'
|
||||
'ChkAutoAugment
|
||||
'
|
||||
Me.ChkAutoAugment.AutoSize = True
|
||||
Me.ChkAutoAugment.Checked = True
|
||||
Me.ChkAutoAugment.CheckState = System.Windows.Forms.CheckState.Checked
|
||||
Me.ChkAutoAugment.Location = New System.Drawing.Point(218, 85)
|
||||
Me.ChkAutoAugment.Name = "ChkAutoAugment"
|
||||
Me.ChkAutoAugment.Size = New System.Drawing.Size(72, 16)
|
||||
Me.ChkAutoAugment.TabIndex = 24
|
||||
Me.ChkAutoAugment.Text = "版本递增"
|
||||
Me.ChkAutoAugment.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Label7
|
||||
'
|
||||
Me.Label7.AutoSize = True
|
||||
Me.Label7.Location = New System.Drawing.Point(231, 33)
|
||||
Me.Label7.Name = "Label7"
|
||||
Me.Label7.Size = New System.Drawing.Size(59, 12)
|
||||
Me.Label7.TabIndex = 23
|
||||
Me.Label7.Text = "测试站名:"
|
||||
'
|
||||
'Label3
|
||||
'
|
||||
Me.Label3.AutoSize = True
|
||||
Me.Label3.Location = New System.Drawing.Point(6, 31)
|
||||
Me.Label3.Name = "Label3"
|
||||
Me.Label3.Size = New System.Drawing.Size(59, 12)
|
||||
Me.Label3.TabIndex = 10
|
||||
Me.Label3.Text = "测试项目:"
|
||||
'
|
||||
'Label4
|
||||
'
|
||||
Me.Label4.AutoSize = True
|
||||
Me.Label4.Location = New System.Drawing.Point(6, 58)
|
||||
Me.Label4.Name = "Label4"
|
||||
Me.Label4.Size = New System.Drawing.Size(59, 12)
|
||||
Me.Label4.TabIndex = 16
|
||||
Me.Label4.Text = "编辑密码:"
|
||||
'
|
||||
'TxtEditPwd
|
||||
'
|
||||
Me.TxtEditPwd.Location = New System.Drawing.Point(71, 55)
|
||||
Me.TxtEditPwd.Name = "TxtEditPwd"
|
||||
Me.TxtEditPwd.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42)
|
||||
Me.TxtEditPwd.Size = New System.Drawing.Size(136, 21)
|
||||
Me.TxtEditPwd.TabIndex = 17
|
||||
'
|
||||
'DtpValidDate
|
||||
'
|
||||
Me.DtpValidDate.CustomFormat = "yyyy-MM-dd"
|
||||
Me.DtpValidDate.Format = System.Windows.Forms.DateTimePickerFormat.Custom
|
||||
Me.DtpValidDate.Location = New System.Drawing.Point(296, 55)
|
||||
Me.DtpValidDate.MinDate = New Date(2021, 1, 1, 0, 0, 0, 0)
|
||||
Me.DtpValidDate.Name = "DtpValidDate"
|
||||
Me.DtpValidDate.Size = New System.Drawing.Size(137, 21)
|
||||
Me.DtpValidDate.TabIndex = 19
|
||||
'
|
||||
'Label5
|
||||
'
|
||||
Me.Label5.AutoSize = True
|
||||
Me.Label5.Location = New System.Drawing.Point(231, 60)
|
||||
Me.Label5.Name = "Label5"
|
||||
Me.Label5.Size = New System.Drawing.Size(59, 12)
|
||||
Me.Label5.TabIndex = 18
|
||||
Me.Label5.Text = "有效日期:"
|
||||
'
|
||||
'GroupBox3
|
||||
'
|
||||
Me.GroupBox3.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
|
||||
Or System.Windows.Forms.AnchorStyles.Left) _
|
||||
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.GroupBox3.Controls.Add(Me.PicStation)
|
||||
Me.GroupBox3.Location = New System.Drawing.Point(3, 129)
|
||||
Me.GroupBox3.Name = "GroupBox3"
|
||||
Me.GroupBox3.Size = New System.Drawing.Size(469, 297)
|
||||
Me.GroupBox3.TabIndex = 24
|
||||
Me.GroupBox3.TabStop = False
|
||||
Me.GroupBox3.Text = "图像"
|
||||
'
|
||||
'PicStation
|
||||
'
|
||||
Me.PicStation.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.PicStation.Location = New System.Drawing.Point(3, 17)
|
||||
Me.PicStation.Name = "PicStation"
|
||||
Me.PicStation.Size = New System.Drawing.Size(463, 277)
|
||||
Me.PicStation.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
|
||||
Me.PicStation.TabIndex = 0
|
||||
Me.PicStation.TabStop = False
|
||||
'
|
||||
'SplitContainer2
|
||||
'
|
||||
Me.SplitContainer2.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SplitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1
|
||||
Me.SplitContainer2.Location = New System.Drawing.Point(0, 0)
|
||||
Me.SplitContainer2.Name = "SplitContainer2"
|
||||
Me.SplitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal
|
||||
'
|
||||
'SplitContainer2.Panel1
|
||||
'
|
||||
Me.SplitContainer2.Panel1.Controls.Add(Me.GroupBox2)
|
||||
'
|
||||
'SplitContainer2.Panel2
|
||||
'
|
||||
Me.SplitContainer2.Panel2.Controls.Add(Me.GroupBox1)
|
||||
Me.SplitContainer2.Size = New System.Drawing.Size(321, 425)
|
||||
Me.SplitContainer2.SplitterDistance = 124
|
||||
Me.SplitContainer2.TabIndex = 0
|
||||
'
|
||||
'GroupBox2
|
||||
'
|
||||
Me.GroupBox2.Controls.Add(Me.RtxCurrentImprint)
|
||||
Me.GroupBox2.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GroupBox2.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||
Me.GroupBox2.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GroupBox2.Name = "GroupBox2"
|
||||
Me.GroupBox2.Size = New System.Drawing.Size(321, 124)
|
||||
Me.GroupBox2.TabIndex = 1
|
||||
Me.GroupBox2.TabStop = False
|
||||
Me.GroupBox2.Text = "当前说明"
|
||||
'
|
||||
'RtxCurrentImprint
|
||||
'
|
||||
Me.RtxCurrentImprint.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.RtxCurrentImprint.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.RtxCurrentImprint.Location = New System.Drawing.Point(3, 17)
|
||||
Me.RtxCurrentImprint.Name = "RtxCurrentImprint"
|
||||
Me.RtxCurrentImprint.Size = New System.Drawing.Size(315, 104)
|
||||
Me.RtxCurrentImprint.TabIndex = 0
|
||||
Me.RtxCurrentImprint.Text = ""
|
||||
'
|
||||
'GroupBox1
|
||||
'
|
||||
Me.GroupBox1.Controls.Add(Me.RtxHistoryImprint)
|
||||
Me.GroupBox1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||
Me.GroupBox1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GroupBox1.Name = "GroupBox1"
|
||||
Me.GroupBox1.Size = New System.Drawing.Size(321, 297)
|
||||
Me.GroupBox1.TabIndex = 0
|
||||
Me.GroupBox1.TabStop = False
|
||||
Me.GroupBox1.Text = "历史说明"
|
||||
'
|
||||
'RtxHistoryImprint
|
||||
'
|
||||
Me.RtxHistoryImprint.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.RtxHistoryImprint.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.RtxHistoryImprint.Location = New System.Drawing.Point(3, 17)
|
||||
Me.RtxHistoryImprint.Name = "RtxHistoryImprint"
|
||||
Me.RtxHistoryImprint.Size = New System.Drawing.Size(315, 277)
|
||||
Me.RtxHistoryImprint.TabIndex = 0
|
||||
Me.RtxHistoryImprint.Text = ""
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(6, 86)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(59, 12)
|
||||
Me.Label1.TabIndex = 26
|
||||
Me.Label1.Text = "发布密码:"
|
||||
'
|
||||
'TxtReleasePwd
|
||||
'
|
||||
Me.TxtReleasePwd.Location = New System.Drawing.Point(71, 83)
|
||||
Me.TxtReleasePwd.Name = "TxtReleasePwd"
|
||||
Me.TxtReleasePwd.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42)
|
||||
Me.TxtReleasePwd.Size = New System.Drawing.Size(136, 21)
|
||||
Me.TxtReleasePwd.TabIndex = 27
|
||||
'
|
||||
'FrmStationDesign
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(800, 450)
|
||||
Me.Controls.Add(Me.SplitContainer1)
|
||||
Me.Controls.Add(Me.ToolStrip1)
|
||||
Me.Enabled = False
|
||||
Me.Name = "FrmStationDesign"
|
||||
Me.Text = "FrmStationDesign"
|
||||
Me.ToolStrip1.ResumeLayout(false)
|
||||
Me.ToolStrip1.PerformLayout
|
||||
Me.SplitContainer1.Panel1.ResumeLayout(false)
|
||||
Me.SplitContainer1.Panel2.ResumeLayout(false)
|
||||
CType(Me.SplitContainer1,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplitContainer1.ResumeLayout(false)
|
||||
Me.GroupBox4.ResumeLayout(false)
|
||||
Me.GroupBox4.PerformLayout
|
||||
CType(Me.NudStationVersion,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.GroupBox3.ResumeLayout(false)
|
||||
CType(Me.PicStation,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplitContainer2.Panel1.ResumeLayout(false)
|
||||
Me.SplitContainer2.Panel2.ResumeLayout(false)
|
||||
CType(Me.SplitContainer2,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplitContainer2.ResumeLayout(false)
|
||||
Me.GroupBox2.ResumeLayout(false)
|
||||
Me.GroupBox1.ResumeLayout(false)
|
||||
Me.ResumeLayout(false)
|
||||
Me.PerformLayout
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents ToolStrip1 As ToolStrip
|
||||
Friend WithEvents TsBtnReleaseStation As ToolStripButton
|
||||
Friend WithEvents SplitContainer1 As SplitContainer
|
||||
Friend WithEvents GroupBox4 As GroupBox
|
||||
Friend WithEvents TxtTestStation As TextBox
|
||||
Friend WithEvents TxtProjectName As TextBox
|
||||
Friend WithEvents NudStationVersion As NumericUpDown
|
||||
Friend WithEvents ChkAutoAugment As CheckBox
|
||||
Friend WithEvents Label7 As Label
|
||||
Friend WithEvents Label3 As Label
|
||||
Friend WithEvents Label4 As Label
|
||||
Friend WithEvents TxtEditPwd As TextBox
|
||||
Friend WithEvents DtpValidDate As DateTimePicker
|
||||
Friend WithEvents Label5 As Label
|
||||
Friend WithEvents GroupBox3 As GroupBox
|
||||
Friend WithEvents PicStation As PictureBox
|
||||
Friend WithEvents SplitContainer2 As SplitContainer
|
||||
Friend WithEvents GroupBox2 As GroupBox
|
||||
Friend WithEvents GroupBox1 As GroupBox
|
||||
Friend WithEvents RtxCurrentImprint As RichTextBox
|
||||
Friend WithEvents RtxHistoryImprint As RichTextBox
|
||||
Friend WithEvents ToolStripSeparator1 As ToolStripSeparator
|
||||
Friend WithEvents TsBtnAddResourceFile As ToolStripButton
|
||||
Friend WithEvents dlgOpenFile As OpenFileDialog
|
||||
Friend WithEvents TsBtnSearchResource As ToolStripButton
|
||||
Friend WithEvents TsBtnAddResourceDir As ToolStripButton
|
||||
Friend WithEvents dlgOpenFolder As FolderBrowserDialog
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents TxtReleasePwd As TextBox
|
||||
End Class
|
||||
End Namespace
|
||||
170
UTS_Core/UTSModule/Station/FrmStationDesign.resx
Normal file
170
UTS_Core/UTSModule/Station/FrmStationDesign.resx
Normal file
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="TsBtnReleaseStation.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEOSURBVDhPtdKxS0JBAMfxc7CgybGhP6MpiGh1FQchiFp0
|
||||
CpdoK4RykkajPyCoJp1CkGzIP0GnoCWoRVKHCJT0+zvvQh5PH4J+4QN373nnPd4zy24TJ7jFDbLYQmQx
|
||||
nGGAb9TxjB5+oHv6zcxK+EUe67rgiuMUunelC2Ht4Q8ZOwvvACPs2FmgOzQmw7k10UYZKfw/0hd09Kh2
|
||||
8YAXDPGENZg+DjUISSfTgmDb6OJcEx2rqEGgKvTconGwS7xpcI13bGjiqkALP/HhxjVMdwyd3n48HRQ0
|
||||
oRz8vz46/jT6sHz3eJ0MjdmHXqdKQJsov4HSYt1TF9CrT9rZnKY38OnjauHIziIK22Ch0s6qMmYMstY8
|
||||
SYKCRL0AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnAddResourceFile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACqSURBVDhPvZJLCsIwGAZzLBU8hi48g+Bj5x0sgjdw67U8
|
||||
gu4EdT6aH9I8240DQwNNJqGNi1jgKnKDW2xywW/FI1Z54a4fDlijAh+sRjRJk2MssPfPE2ZpBfQ9bqiT
|
||||
XDGhFFjiG/XeVCShFIixEyXkAvYrQyYF7t6QUQHtqoUPr8Z2kv8EDC2UIZMC2tV2NooBXWXdthYHfPbD
|
||||
IR2qPMYzZpmjHbvkDD3O/QAe6U3bzyBpTQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnAddResourceDir.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADCSURBVDhPrZPBCcJAEEUXtA715MEm1BpET1bkwRL0KNiE
|
||||
6EGwBgvRm76/7sqyTCYBffAgGTI/k2QS/sUc93gsXGMnRvjEM+bmU6pNsJUFvrAXzz708YZ3LKfKatoZ
|
||||
RlaogJoxHtAK0LSacIiNAR6aVj2a3g3Q+5EW6lGvG6BHkBZugO66xGtSx/UkbsAGVStVrUS1xoBMfusW
|
||||
nQK2SYtvgLVIbWjR1BM/o5ZBS3HBclk8de0DBxiZYv0zee5QPb8SwhtuoEpL4I8v/QAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnSearchResource.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD2SURBVDhPzdLNSgJRGIfxIXJT+27AoEV5RUWIbaK6gkJw
|
||||
EUQQaF6NuHGvkHoV1qLoA2xXPc/Me0JFhAiiP/xg3nPmfMyck/3LbOECfTzhMZ7PYd/KHOIZE7RQC7fR
|
||||
Zt8+lqaOD9xgw4aFbMI+33GHc3HWT5zlVZEKXFl7NkRO4LsHeUXKeMF1XhVx8DuGGMXz7CRXeMW2RQe+
|
||||
VLKIuKpta2EM/0nKOu7QtehhABtTfjTBDt5waRFxu27bgZpiFyl+7vcnmCr8Mcd5VcRJXFWzg08x9xNT
|
||||
GkjH6JEtxrYmlh5jSrpI92jjKPj8gJUXKeVXV/mvk2Vf1ZlCFgRcwokAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="dlgOpenFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>129, 17</value>
|
||||
</metadata>
|
||||
<metadata name="dlgOpenFolder.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>252, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
297
UTS_Core/UTSModule/Station/FrmStationDesign.vb
Normal file
297
UTS_Core/UTSModule/Station/FrmStationDesign.vb
Normal file
@@ -0,0 +1,297 @@
|
||||
Imports System.IO
|
||||
Imports System.Windows.Forms
|
||||
Imports UTS_Core.DebugLog
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class FrmStationDesign
|
||||
Implements IProcessStation
|
||||
Implements IProductionLine
|
||||
|
||||
Private _utsApp As UtsAppForm
|
||||
Private _isAutoAugment As Boolean = True
|
||||
|
||||
Public Property StationPacket() As StationPacket
|
||||
|
||||
Public Event StationRelease(station As ProcessStation) '项目发布事件
|
||||
|
||||
Public Sub ShowForm(parentControl As Control)
|
||||
FormBorderStyle = FormBorderStyle.None
|
||||
TopLevel = False
|
||||
Dock = DockStyle.Fill
|
||||
Parent = parentControl
|
||||
|
||||
Enabled = StationPacket IsNot Nothing
|
||||
|
||||
Show()
|
||||
End Sub
|
||||
|
||||
Public Sub ShowForm(parentControl As Control, packet As StationPacket)
|
||||
FormBorderStyle = FormBorderStyle.None
|
||||
TopLevel = False
|
||||
Dock = DockStyle.Fill
|
||||
Parent = parentControl
|
||||
|
||||
UpdateStationPacket(packet)
|
||||
Enabled = StationPacket IsNot Nothing
|
||||
Show()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 产线变化
|
||||
''' </summary>
|
||||
Public Sub ProductionLineChanged() Implements IProductionLine.ProductionLineChanged
|
||||
'Todo:产线变化代码
|
||||
|
||||
ApplicationLog.WriteInfoLog($"发布页面生产线变更中。")
|
||||
|
||||
|
||||
ApplicationLog.WriteInfoLog($"发布页面生产线变更完成。")
|
||||
End Sub
|
||||
|
||||
Public Sub Station_Changed() Implements IProcessStation.StationChanged
|
||||
ApplicationLog.WriteInfoLog($"发布页面站位变更中,PN:{_utsApp.ProcessStation.ParentProject.Name} - SN:{_utsApp.ProcessStation.Name} - TP:{_utsApp.ProcessStation.Packet.Name}!")
|
||||
|
||||
UpdateStationPacket(_utsApp.ProcessStation.Packet)
|
||||
|
||||
ApplicationLog.WriteInfoLog($"发布页面站位变更完成。")
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>修改窗体标题</summary>
|
||||
Private Sub ShowFormTitle()
|
||||
Text = $"{My.Application.Info.ProductName} StationDesign"
|
||||
End Sub
|
||||
|
||||
Private Sub ShowFormTitle(packetName As String)
|
||||
Text = $"{My.Application.Info.ProductName} StationDesign -- {packetName}"
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub UpdateStationPacket(packet As StationPacket)
|
||||
StationPacket = packet
|
||||
Enabled = StationPacket IsNot Nothing
|
||||
If StationPacket IsNot Nothing Then
|
||||
ShowFormTitle(StationPacket.Name)
|
||||
LoadProjectInitForm()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub LoadProjectInitForm()
|
||||
TxtProjectName.Text = StationPacket.ParentProcessStation.ParentProject.Name
|
||||
TxtTestStation.Text = StationPacket.ParentProcessStation.Name
|
||||
TxtEditPwd.Text = StationPacket.EditPwd
|
||||
TxtReleasePwd.Text = StationPacket.ReleasePwd
|
||||
|
||||
|
||||
NudStationVersion.Text = CType(StationPacket.StationVersion, String)
|
||||
PicStation.Image = StationPacket.StationImage
|
||||
RtxHistoryImprint.Text = StationPacket.PacketImprintsToString(StationPacket.HistoryImprints)
|
||||
RtxCurrentImprint.Text = StationPacket.CurrentImprint.ToString()
|
||||
|
||||
If StationPacket.ValidDate >= DtpValidDate.MaxDate Then
|
||||
DtpValidDate.Value = Now.AddMonths(6) '默认有效期六个月
|
||||
ElseIf StationPacket.ValidDate <= DtpValidDate.MinDate Then
|
||||
DtpValidDate.Value = Now.AddMonths(6) '默认有效期六个月
|
||||
Else
|
||||
DtpValidDate.Value = StationPacket.ValidDate
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Private Sub FrmStationDesign_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
ApplicationLog.WriteInfoLog($"发布页面加载中。")
|
||||
|
||||
'初始化UTS窗体信息,失败则关闭窗体
|
||||
If InitializeUtsApp() = False Then Return
|
||||
|
||||
'初始化窗体页面
|
||||
InitializeForm()
|
||||
|
||||
ApplicationLog.WriteInfoLog($"发布页面加载完成。")
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function InitializeUtsApp() As Boolean
|
||||
_utsApp = UtsAppForm.CreateSingleton()
|
||||
_utsApp.AddStatisticsObserver(Me)
|
||||
|
||||
Try
|
||||
If _utsApp.IsInitialized = False Then
|
||||
_utsApp.Initialize() 'Todo:可根据需要限定可选站位
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"初始化窗体失败,原因:{ex.Message}!")
|
||||
|
||||
MsgBox($"初始化窗体失败,原因:{ex.Message}")
|
||||
Close()
|
||||
Return False
|
||||
End Try
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub InitializeForm()
|
||||
ShowFormTitle()
|
||||
End Sub
|
||||
|
||||
Private Sub PicStation_DoubleClick(sender As Object, e As EventArgs) Handles PicStation.DoubleClick
|
||||
dlgOpenFile.Multiselect = False
|
||||
dlgOpenFile.Filter = $"设备图像 (*.bmp;*.gif;*.jpg;*.png)|*.bmp;*.gif;*.jpg;*.png"
|
||||
If dlgOpenFile.ShowDialog <> DialogResult.OK Then Return
|
||||
|
||||
ApplicationLog.WriteInfoLog($"发布页面切换产品图像中。")
|
||||
|
||||
Try
|
||||
Dim imagePath As String = dlgOpenFile.FileName
|
||||
PicStation.Image = ImageProcessor.ImageProcessor.GetBitmapImage(imagePath)
|
||||
|
||||
'更新图像预览图
|
||||
If String.IsNullOrEmpty(StationPacket.ImageFileName) Then '若图像路径不存在,则更新图像路径
|
||||
Dim imgSavePath As String = $"{UtsPath.GetStationPacketResourceDirPath(StationPacket.Name)}\{StationPacket.ParentProcessStation.StationID}.jpg"
|
||||
PicStation.Image.Save(imgSavePath)
|
||||
|
||||
StationPacket.ImageFileName = $"{StationPacket.ParentProcessStation.StationID}.jpg" '更新站图像路径
|
||||
Else
|
||||
Dim imgSavePath As String = $"{UtsPath.GetStationPacketResourceDirPath(StationPacket.Name)}\{StationPacket.ImageFileName}"
|
||||
PicStation.Image.Save(imgSavePath)
|
||||
End If
|
||||
ApplicationLog.WriteInfoLog($"发布页面切换产品图像完成。")
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"设置项目图像失败,原因:{ex.Message}")
|
||||
MsgBox($"设置项目图像失败,{ex.Message}")
|
||||
End Try
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub UpdateStationPacket()
|
||||
StationPacket.AppVersion = New Version(Application.ProductVersion)
|
||||
StationPacket.ModifiedTime = Now
|
||||
StationPacket.EditPwd = TxtEditPwd.Text
|
||||
StationPacket.ReleasePwd = TxtReleasePwd.Text
|
||||
StationPacket.ValidDate = DtpValidDate.Value
|
||||
StationPacket.CurrentImprint = New StationPacketImprint(RtxCurrentImprint.Text)
|
||||
If _isAutoAugment Then
|
||||
StationPacket.StationVersion += 1
|
||||
Else
|
||||
StationPacket.StationVersion = CInt(NudStationVersion.Value)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub AfterReleasePacketSuccess()
|
||||
RtxCurrentImprint.Text = StationPacket.CurrentImprint.ToString()
|
||||
RtxHistoryImprint.Text = StationPacket.PacketImprintsToString(StationPacket.HistoryImprints)
|
||||
NudStationVersion.Value = StationPacket.StationVersion
|
||||
|
||||
ShowFormTitle(StationPacket.Name)
|
||||
End Sub
|
||||
|
||||
Private Sub AfterReleasePacketFail()
|
||||
RtxCurrentImprint.Text = StationPacket.CurrentImprint.ToString()
|
||||
RtxHistoryImprint.Text = StationPacket.PacketImprintsToString(StationPacket.HistoryImprints)
|
||||
StationPacket.StationVersion = CInt(NudStationVersion.Value)
|
||||
|
||||
ShowFormTitle(StationPacket.Name)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnReleaseStation_Click(sender As Object, e As EventArgs) Handles TsBtnReleaseStation.Click
|
||||
Try
|
||||
If String.IsNullOrEmpty(TxtEditPwd.Text) Then
|
||||
MsgBox("请输入编辑密码...")
|
||||
Return
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(TxtReleasePwd.Text) Then
|
||||
MsgBox("请输入发布密码...")
|
||||
Return
|
||||
End If
|
||||
|
||||
If String.IsNullOrEmpty(RtxCurrentImprint.Text) Then
|
||||
MsgBox("请输入版本说明...")
|
||||
Return
|
||||
End If
|
||||
|
||||
ApplicationLog.WriteInfoLog($"项目站包发布准备中。")
|
||||
|
||||
UpdateStationPacket()
|
||||
StationPacket.ReleasePacket()
|
||||
AfterReleasePacketSuccess()
|
||||
|
||||
RaiseEvent StationRelease(StationPacket.ParentProcessStation)
|
||||
|
||||
ApplicationLog.WriteInfoLog($"项目站包 {StationPacket.FileName} 发布成功!")
|
||||
MsgBox($"项目站包 {StationPacket.FileName} 发布成功!")
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"项目站包发布失败,原因:{ex.Message}")
|
||||
MsgBox($"项目站包发布失败,原因:{ex.Message}")
|
||||
|
||||
AfterReleasePacketFail()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub ChkAutoAugment_CheckedChanged(sender As Object, e As EventArgs) Handles ChkAutoAugment.CheckedChanged
|
||||
_isAutoAugment = ChkAutoAugment.Checked
|
||||
NudStationVersion.Enabled = Not _isAutoAugment
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnAddResource_Click(sender As Object, e As EventArgs) Handles TsBtnAddResourceFile.Click
|
||||
dlgOpenFile.Multiselect = True
|
||||
dlgOpenFile.Filter = $"资源文件 (*.*)|*.*"
|
||||
|
||||
If dlgOpenFile.ShowDialog <> DialogResult.OK Then Return
|
||||
|
||||
|
||||
ApplicationLog.WriteInfoLog($"项目站包资源文件添加中。")
|
||||
Try
|
||||
For Each fileName As String In dlgOpenFile.FileNames
|
||||
ApplicationLog.WriteInfoLog($"正在添加{fileName}")
|
||||
FileIO.FileSystem.CopyFile(fileName, $"{UtsPath.StationPacketResourceDirPath}\{Path.GetFileName(fileName)}")
|
||||
Next
|
||||
|
||||
ApplicationLog.WriteInfoLog($"项目站包资源文件添加完成。")
|
||||
MsgBox($"项目站包资源文件添加完成。")
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"项目站包资源文件添加失败,原因:{ex.Message}")
|
||||
MsgBox($"项目站包资源文件添加失败,原因:{ex.Message}")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnAddResourceDir_Click(sender As Object, e As EventArgs) Handles TsBtnAddResourceDir.Click
|
||||
If dlgOpenFolder.ShowDialog() <> DialogResult.OK Then Return
|
||||
ApplicationLog.WriteInfoLog($"项目站包资源文件夹添加中,目标文件夹:{dlgOpenFolder.SelectedPath}。")
|
||||
Try
|
||||
CopyDirectory(New DirectoryInfo(dlgOpenFolder.SelectedPath), New DirectoryInfo(UtsPath.StationPacketResourceDirPath))
|
||||
ApplicationLog.WriteInfoLog($"项目站包资源文件夹添加完成。")
|
||||
MsgBox($"项目站包资源文件夹添加完成")
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"项目站包资源文件添加失败,原因:{ex.Message}")
|
||||
MsgBox($"项目站包资源文件添加失败,原因:{ex.Message}")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Public Sub CopyDirectory(directorySrc As DirectoryInfo, directoryDes As DirectoryInfo)
|
||||
Dim strDirectoryDesPath As String = $"{directoryDes.FullName}\{directorySrc.Name}"
|
||||
If Directory.Exists(strDirectoryDesPath) = False Then
|
||||
Directory.CreateDirectory(strDirectoryDesPath)
|
||||
End If
|
||||
|
||||
For Each f As FileInfo In directorySrc.GetFiles()
|
||||
File.Copy(f.FullName, $"{strDirectoryDesPath}\{ f.Name}", True)
|
||||
Next
|
||||
|
||||
' 递归调用自身
|
||||
For Each dirSrc As DirectoryInfo In directorySrc.GetDirectories()
|
||||
CopyDirectory(dirSrc, New DirectoryInfo(strDirectoryDesPath))
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub TsBtnSearchResource_Click(sender As Object, e As EventArgs) Handles TsBtnSearchResource.Click
|
||||
'定位到/Resource文件夹内
|
||||
Process.Start("Explorer.exe", $"{UtsPath.GetStationPacketResourceDirPath(StationPacket.Name)}")
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
885
UTS_Core/UTSModule/Station/FrmStationPlan.Designer.vb
generated
Normal file
885
UTS_Core/UTSModule/Station/FrmStationPlan.Designer.vb
generated
Normal file
@@ -0,0 +1,885 @@
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Namespace UTSModule.Station
|
||||
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class FrmStationPlan
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form 重写 Dispose,以清理组件列表。
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Windows 窗体设计器所必需的
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'注意: 以下过程是 Windows 窗体设计器所必需的
|
||||
'可以使用 Windows 窗体设计器修改它。
|
||||
'不要使用代码编辑器修改它。
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmStationPlan))
|
||||
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
|
||||
Me.TsBtnOpen = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnSave = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsBtnLoad = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnSaveAs = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsBtnBackward = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnForward = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsBtnUndo = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnRedo = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator13 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.tsBtnInsertRow = New System.Windows.Forms.ToolStripButton()
|
||||
Me.tsBtnRemoveRow = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator14 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsBtnMoveUp = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnMoveDown = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnMoveLeft = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnMoveRight = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsBtnDebugMode = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnDebugStart = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtnFailMode = New System.Windows.Forms.ToolStripButton()
|
||||
Me.ToolStripSeparator10 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.tslBtn_ActionOnly = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtn_Record = New System.Windows.Forms.ToolStripButton()
|
||||
Me.TsBtn_ExpandNode = New System.Windows.Forms.ToolStripButton()
|
||||
Me.StuMain = New System.Windows.Forms.StatusStrip()
|
||||
Me.TssLblTestStatus = New System.Windows.Forms.ToolStripStatusLabel()
|
||||
Me.TssLblTestTime = New System.Windows.Forms.ToolStripStatusLabel()
|
||||
Me.TssBarTestProgress = New System.Windows.Forms.ToolStripProgressBar()
|
||||
Me.SplStationPlan = New System.Windows.Forms.SplitContainer()
|
||||
Me.SplPlanDesign = New System.Windows.Forms.SplitContainer()
|
||||
Me.GrpStationPlan = New System.Windows.Forms.GroupBox()
|
||||
Me.GrdStationPlan = New FlexCell.Grid()
|
||||
Me.CmsPlanGrid = New System.Windows.Forms.ContextMenuStrip(Me.components)
|
||||
Me.MsiGridRowBlockInsert = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.MsiGridRowBlockDelete = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.tsBtn_CheckAction = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.tsBtn_UncheckAction = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator15 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.MsiUndo = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.MsiRedo = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.MsiSaveNodeFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.MsiLoadNodeFile = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator11 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsmiDebugStart = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugEnd = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugContinue = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.执行1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.执行2ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugStep = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsmiDebugSetup = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugMain = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugPass = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugFail = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugCleanup = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator()
|
||||
Me.TsmiDebugNode = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiDebugNodeBegin = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.TsmiJumpCall = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.GrpSingleRowInfo = New System.Windows.Forms.GroupBox()
|
||||
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
|
||||
Me.GrdRowNode = New FlexCell.Grid()
|
||||
Me.RtxColTip = New System.Windows.Forms.RichTextBox()
|
||||
Me.GrpOutputInfo = New System.Windows.Forms.GroupBox()
|
||||
Me.TabControl1 = New System.Windows.Forms.TabControl()
|
||||
Me.TpOutputInfo = New System.Windows.Forms.TabPage()
|
||||
Me.RtxOutputInfo = New System.Windows.Forms.RichTextBox()
|
||||
Me.ToolStrip1.SuspendLayout()
|
||||
Me.StuMain.SuspendLayout()
|
||||
CType(Me.SplStationPlan, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplStationPlan.Panel1.SuspendLayout()
|
||||
Me.SplStationPlan.Panel2.SuspendLayout()
|
||||
Me.SplStationPlan.SuspendLayout()
|
||||
CType(Me.SplPlanDesign, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplPlanDesign.Panel1.SuspendLayout()
|
||||
Me.SplPlanDesign.Panel2.SuspendLayout()
|
||||
Me.SplPlanDesign.SuspendLayout()
|
||||
Me.GrpStationPlan.SuspendLayout()
|
||||
Me.CmsPlanGrid.SuspendLayout()
|
||||
Me.GrpSingleRowInfo.SuspendLayout()
|
||||
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplitContainer1.Panel1.SuspendLayout()
|
||||
Me.SplitContainer1.Panel2.SuspendLayout()
|
||||
Me.SplitContainer1.SuspendLayout()
|
||||
Me.GrpOutputInfo.SuspendLayout()
|
||||
Me.TabControl1.SuspendLayout()
|
||||
Me.TpOutputInfo.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'ToolStrip1
|
||||
'
|
||||
Me.ToolStrip1.ImageScalingSize = New System.Drawing.Size(24, 24)
|
||||
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TsBtnOpen, Me.TsBtnSave, Me.ToolStripSeparator4, Me.TsBtnLoad, Me.TsBtnSaveAs, Me.ToolStripSeparator3, Me.TsBtnBackward, Me.TsBtnForward, Me.ToolStripSeparator1, Me.TsBtnUndo, Me.TsBtnRedo, Me.ToolStripSeparator13, Me.tsBtnInsertRow, Me.tsBtnRemoveRow, Me.ToolStripSeparator14, Me.TsBtnMoveUp, Me.TsBtnMoveDown, Me.TsBtnMoveLeft, Me.TsBtnMoveRight, Me.ToolStripSeparator2, Me.TsBtnDebugMode, Me.TsBtnDebugStart, Me.TsBtnFailMode, Me.ToolStripSeparator10, Me.tslBtn_ActionOnly, Me.TsBtn_Record, Me.TsBtn_ExpandNode})
|
||||
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.ToolStrip1.Name = "ToolStrip1"
|
||||
Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 3, 0)
|
||||
Me.ToolStrip1.Size = New System.Drawing.Size(1466, 58)
|
||||
Me.ToolStrip1.TabIndex = 0
|
||||
Me.ToolStrip1.Text = "ToolStrip1"
|
||||
'
|
||||
'TsBtnOpen
|
||||
'
|
||||
Me.TsBtnOpen.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnOpen.Image = CType(resources.GetObject("TsBtnOpen.Image"), System.Drawing.Image)
|
||||
Me.TsBtnOpen.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnOpen.Name = "TsBtnOpen"
|
||||
Me.TsBtnOpen.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnOpen.Text = "打开"
|
||||
Me.TsBtnOpen.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnSave
|
||||
'
|
||||
Me.TsBtnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnSave.Image = CType(resources.GetObject("TsBtnSave.Image"), System.Drawing.Image)
|
||||
Me.TsBtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnSave.Name = "TsBtnSave"
|
||||
Me.TsBtnSave.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnSave.Text = "保存"
|
||||
Me.TsBtnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'ToolStripSeparator4
|
||||
'
|
||||
Me.ToolStripSeparator4.Name = "ToolStripSeparator4"
|
||||
Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'TsBtnLoad
|
||||
'
|
||||
Me.TsBtnLoad.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnLoad.Image = CType(resources.GetObject("TsBtnLoad.Image"), System.Drawing.Image)
|
||||
Me.TsBtnLoad.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnLoad.Name = "TsBtnLoad"
|
||||
Me.TsBtnLoad.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnLoad.Text = "重载"
|
||||
Me.TsBtnLoad.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnSaveAs
|
||||
'
|
||||
Me.TsBtnSaveAs.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnSaveAs.Image = CType(resources.GetObject("TsBtnSaveAs.Image"), System.Drawing.Image)
|
||||
Me.TsBtnSaveAs.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnSaveAs.Name = "TsBtnSaveAs"
|
||||
Me.TsBtnSaveAs.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnSaveAs.Text = "导出"
|
||||
Me.TsBtnSaveAs.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'ToolStripSeparator3
|
||||
'
|
||||
Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
|
||||
Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'TsBtnBackward
|
||||
'
|
||||
Me.TsBtnBackward.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnBackward.Image = CType(resources.GetObject("TsBtnBackward.Image"), System.Drawing.Image)
|
||||
Me.TsBtnBackward.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnBackward.Name = "TsBtnBackward"
|
||||
Me.TsBtnBackward.Size = New System.Drawing.Size(64, 53)
|
||||
Me.TsBtnBackward.Text = "上一步"
|
||||
Me.TsBtnBackward.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnForward
|
||||
'
|
||||
Me.TsBtnForward.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnForward.Image = CType(resources.GetObject("TsBtnForward.Image"), System.Drawing.Image)
|
||||
Me.TsBtnForward.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnForward.Name = "TsBtnForward"
|
||||
Me.TsBtnForward.Size = New System.Drawing.Size(64, 53)
|
||||
Me.TsBtnForward.Text = "下一步"
|
||||
Me.TsBtnForward.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
Me.TsBtnForward.ToolTipText = "下一步"
|
||||
'
|
||||
'ToolStripSeparator1
|
||||
'
|
||||
Me.ToolStripSeparator1.Name = "ToolStripSeparator1"
|
||||
Me.ToolStripSeparator1.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'TsBtnUndo
|
||||
'
|
||||
Me.TsBtnUndo.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnUndo.Image = CType(resources.GetObject("TsBtnUndo.Image"), System.Drawing.Image)
|
||||
Me.TsBtnUndo.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnUndo.Name = "TsBtnUndo"
|
||||
Me.TsBtnUndo.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnUndo.Text = "撤销"
|
||||
Me.TsBtnUndo.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnRedo
|
||||
'
|
||||
Me.TsBtnRedo.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnRedo.Image = CType(resources.GetObject("TsBtnRedo.Image"), System.Drawing.Image)
|
||||
Me.TsBtnRedo.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnRedo.Name = "TsBtnRedo"
|
||||
Me.TsBtnRedo.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnRedo.Text = "重做"
|
||||
Me.TsBtnRedo.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
Me.TsBtnRedo.ToolTipText = "撤销"
|
||||
'
|
||||
'ToolStripSeparator13
|
||||
'
|
||||
Me.ToolStripSeparator13.Name = "ToolStripSeparator13"
|
||||
Me.ToolStripSeparator13.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'tsBtnInsertRow
|
||||
'
|
||||
Me.tsBtnInsertRow.Image = CType(resources.GetObject("tsBtnInsertRow.Image"), System.Drawing.Image)
|
||||
Me.tsBtnInsertRow.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.tsBtnInsertRow.Name = "tsBtnInsertRow"
|
||||
Me.tsBtnInsertRow.Size = New System.Drawing.Size(73, 53)
|
||||
Me.tsBtnInsertRow.Text = "插入行"
|
||||
Me.tsBtnInsertRow.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'tsBtnRemoveRow
|
||||
'
|
||||
Me.tsBtnRemoveRow.Image = CType(resources.GetObject("tsBtnRemoveRow.Image"), System.Drawing.Image)
|
||||
Me.tsBtnRemoveRow.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.tsBtnRemoveRow.Name = "tsBtnRemoveRow"
|
||||
Me.tsBtnRemoveRow.Size = New System.Drawing.Size(73, 53)
|
||||
Me.tsBtnRemoveRow.Text = "移除行"
|
||||
Me.tsBtnRemoveRow.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'ToolStripSeparator14
|
||||
'
|
||||
Me.ToolStripSeparator14.Name = "ToolStripSeparator14"
|
||||
Me.ToolStripSeparator14.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'TsBtnMoveUp
|
||||
'
|
||||
Me.TsBtnMoveUp.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnMoveUp.Image = CType(resources.GetObject("TsBtnMoveUp.Image"), System.Drawing.Image)
|
||||
Me.TsBtnMoveUp.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnMoveUp.Name = "TsBtnMoveUp"
|
||||
Me.TsBtnMoveUp.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnMoveUp.Text = "上移"
|
||||
Me.TsBtnMoveUp.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnMoveDown
|
||||
'
|
||||
Me.TsBtnMoveDown.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnMoveDown.Image = CType(resources.GetObject("TsBtnMoveDown.Image"), System.Drawing.Image)
|
||||
Me.TsBtnMoveDown.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnMoveDown.Name = "TsBtnMoveDown"
|
||||
Me.TsBtnMoveDown.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnMoveDown.Text = "下移"
|
||||
Me.TsBtnMoveDown.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnMoveLeft
|
||||
'
|
||||
Me.TsBtnMoveLeft.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnMoveLeft.Image = CType(resources.GetObject("TsBtnMoveLeft.Image"), System.Drawing.Image)
|
||||
Me.TsBtnMoveLeft.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnMoveLeft.Name = "TsBtnMoveLeft"
|
||||
Me.TsBtnMoveLeft.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnMoveLeft.Text = "升级"
|
||||
Me.TsBtnMoveLeft.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnMoveRight
|
||||
'
|
||||
Me.TsBtnMoveRight.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
|
||||
Me.TsBtnMoveRight.Image = CType(resources.GetObject("TsBtnMoveRight.Image"), System.Drawing.Image)
|
||||
Me.TsBtnMoveRight.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnMoveRight.Name = "TsBtnMoveRight"
|
||||
Me.TsBtnMoveRight.Size = New System.Drawing.Size(47, 53)
|
||||
Me.TsBtnMoveRight.Text = "降级"
|
||||
Me.TsBtnMoveRight.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'ToolStripSeparator2
|
||||
'
|
||||
Me.ToolStripSeparator2.Name = "ToolStripSeparator2"
|
||||
Me.ToolStripSeparator2.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'TsBtnDebugMode
|
||||
'
|
||||
Me.TsBtnDebugMode.Image = CType(resources.GetObject("TsBtnDebugMode.Image"), System.Drawing.Image)
|
||||
Me.TsBtnDebugMode.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnDebugMode.Name = "TsBtnDebugMode"
|
||||
Me.TsBtnDebugMode.Size = New System.Drawing.Size(92, 53)
|
||||
Me.TsBtnDebugMode.Text = "调试模式"
|
||||
Me.TsBtnDebugMode.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnDebugStart
|
||||
'
|
||||
Me.TsBtnDebugStart.Image = CType(resources.GetObject("TsBtnDebugStart.Image"), System.Drawing.Image)
|
||||
Me.TsBtnDebugStart.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnDebugStart.Name = "TsBtnDebugStart"
|
||||
Me.TsBtnDebugStart.Size = New System.Drawing.Size(92, 53)
|
||||
Me.TsBtnDebugStart.Text = "开始调试"
|
||||
Me.TsBtnDebugStart.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtnFailMode
|
||||
'
|
||||
Me.TsBtnFailMode.Image = CType(resources.GetObject("TsBtnFailMode.Image"), System.Drawing.Image)
|
||||
Me.TsBtnFailMode.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtnFailMode.Name = "TsBtnFailMode"
|
||||
Me.TsBtnFailMode.Size = New System.Drawing.Size(92, 53)
|
||||
Me.TsBtnFailMode.Text = "单步退出"
|
||||
Me.TsBtnFailMode.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'ToolStripSeparator10
|
||||
'
|
||||
Me.ToolStripSeparator10.Name = "ToolStripSeparator10"
|
||||
Me.ToolStripSeparator10.Size = New System.Drawing.Size(6, 58)
|
||||
'
|
||||
'tslBtn_ActionOnly
|
||||
'
|
||||
Me.tslBtn_ActionOnly.Image = CType(resources.GetObject("tslBtn_ActionOnly.Image"), System.Drawing.Image)
|
||||
Me.tslBtn_ActionOnly.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.tslBtn_ActionOnly.Name = "tslBtn_ActionOnly"
|
||||
Me.tslBtn_ActionOnly.Size = New System.Drawing.Size(67, 53)
|
||||
Me.tslBtn_ActionOnly.Text = "Action"
|
||||
Me.tslBtn_ActionOnly.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtn_Record
|
||||
'
|
||||
Me.TsBtn_Record.Image = CType(resources.GetObject("TsBtn_Record.Image"), System.Drawing.Image)
|
||||
Me.TsBtn_Record.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtn_Record.Name = "TsBtn_Record"
|
||||
Me.TsBtn_Record.Size = New System.Drawing.Size(71, 53)
|
||||
Me.TsBtn_Record.Text = "Record"
|
||||
Me.TsBtn_Record.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'TsBtn_ExpandNode
|
||||
'
|
||||
Me.TsBtn_ExpandNode.Image = CType(resources.GetObject("TsBtn_ExpandNode.Image"), System.Drawing.Image)
|
||||
Me.TsBtn_ExpandNode.ImageTransparentColor = System.Drawing.Color.Magenta
|
||||
Me.TsBtn_ExpandNode.Name = "TsBtn_ExpandNode"
|
||||
Me.TsBtn_ExpandNode.Size = New System.Drawing.Size(74, 53)
|
||||
Me.TsBtn_ExpandNode.Text = "Expand"
|
||||
Me.TsBtn_ExpandNode.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
|
||||
'
|
||||
'StuMain
|
||||
'
|
||||
Me.StuMain.ImageScalingSize = New System.Drawing.Size(24, 24)
|
||||
Me.StuMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TssLblTestStatus, Me.TssLblTestTime, Me.TssBarTestProgress})
|
||||
Me.StuMain.Location = New System.Drawing.Point(0, 841)
|
||||
Me.StuMain.Name = "StuMain"
|
||||
Me.StuMain.Padding = New System.Windows.Forms.Padding(2, 0, 21, 0)
|
||||
Me.StuMain.Size = New System.Drawing.Size(1466, 29)
|
||||
Me.StuMain.TabIndex = 1
|
||||
Me.StuMain.Text = "StatusStrip1"
|
||||
'
|
||||
'TssLblTestStatus
|
||||
'
|
||||
Me.TssLblTestStatus.AutoSize = False
|
||||
Me.TssLblTestStatus.Name = "TssLblTestStatus"
|
||||
Me.TssLblTestStatus.Size = New System.Drawing.Size(120, 22)
|
||||
Me.TssLblTestStatus.Text = "测试状态"
|
||||
'
|
||||
'TssLblTestTime
|
||||
'
|
||||
Me.TssLblTestTime.AutoSize = False
|
||||
Me.TssLblTestTime.ForeColor = System.Drawing.Color.Green
|
||||
Me.TssLblTestTime.Name = "TssLblTestTime"
|
||||
Me.TssLblTestTime.Overflow = System.Windows.Forms.ToolStripItemOverflow.Always
|
||||
Me.TssLblTestTime.Size = New System.Drawing.Size(160, 22)
|
||||
Me.TssLblTestTime.Text = "TimeExpend:00:00:00:000"
|
||||
'
|
||||
'TssBarTestProgress
|
||||
'
|
||||
Me.TssBarTestProgress.AutoSize = False
|
||||
Me.TssBarTestProgress.Name = "TssBarTestProgress"
|
||||
Me.TssBarTestProgress.Size = New System.Drawing.Size(300, 21)
|
||||
'
|
||||
'SplStationPlan
|
||||
'
|
||||
Me.SplStationPlan.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SplStationPlan.Location = New System.Drawing.Point(0, 58)
|
||||
Me.SplStationPlan.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.SplStationPlan.Name = "SplStationPlan"
|
||||
Me.SplStationPlan.Orientation = System.Windows.Forms.Orientation.Horizontal
|
||||
'
|
||||
'SplStationPlan.Panel1
|
||||
'
|
||||
Me.SplStationPlan.Panel1.Controls.Add(Me.SplPlanDesign)
|
||||
'
|
||||
'SplStationPlan.Panel2
|
||||
'
|
||||
Me.SplStationPlan.Panel2.Controls.Add(Me.GrpOutputInfo)
|
||||
Me.SplStationPlan.Size = New System.Drawing.Size(1466, 783)
|
||||
Me.SplStationPlan.SplitterDistance = 526
|
||||
Me.SplStationPlan.SplitterWidth = 6
|
||||
Me.SplStationPlan.TabIndex = 10
|
||||
'
|
||||
'SplPlanDesign
|
||||
'
|
||||
Me.SplPlanDesign.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SplPlanDesign.FixedPanel = System.Windows.Forms.FixedPanel.Panel2
|
||||
Me.SplPlanDesign.Location = New System.Drawing.Point(0, 0)
|
||||
Me.SplPlanDesign.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.SplPlanDesign.Name = "SplPlanDesign"
|
||||
'
|
||||
'SplPlanDesign.Panel1
|
||||
'
|
||||
Me.SplPlanDesign.Panel1.Controls.Add(Me.GrpStationPlan)
|
||||
'
|
||||
'SplPlanDesign.Panel2
|
||||
'
|
||||
Me.SplPlanDesign.Panel2.Controls.Add(Me.GrpSingleRowInfo)
|
||||
Me.SplPlanDesign.Size = New System.Drawing.Size(1466, 526)
|
||||
Me.SplPlanDesign.SplitterDistance = 1006
|
||||
Me.SplPlanDesign.SplitterWidth = 6
|
||||
Me.SplPlanDesign.TabIndex = 0
|
||||
'
|
||||
'GrpStationPlan
|
||||
'
|
||||
Me.GrpStationPlan.Controls.Add(Me.GrdStationPlan)
|
||||
Me.GrpStationPlan.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GrpStationPlan.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GrpStationPlan.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.GrpStationPlan.Name = "GrpStationPlan"
|
||||
Me.GrpStationPlan.Padding = New System.Windows.Forms.Padding(4)
|
||||
Me.GrpStationPlan.Size = New System.Drawing.Size(1006, 526)
|
||||
Me.GrpStationPlan.TabIndex = 45
|
||||
Me.GrpStationPlan.TabStop = False
|
||||
Me.GrpStationPlan.Text = "执行流程"
|
||||
'
|
||||
'GrdStationPlan
|
||||
'
|
||||
Me.GrdStationPlan.BorderStyle = FlexCell.BorderStyleEnum.None
|
||||
Me.GrdStationPlan.ContextMenuStrip = Me.CmsPlanGrid
|
||||
Me.GrdStationPlan.DefaultFont = New System.Drawing.Font("宋体", 9.0!)
|
||||
Me.GrdStationPlan.DefaultRowHeight = CType(28, Short)
|
||||
Me.GrdStationPlan.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GrdStationPlan.GridColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
|
||||
Me.GrdStationPlan.Location = New System.Drawing.Point(4, 25)
|
||||
Me.GrdStationPlan.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.GrdStationPlan.MouseWheelSpeed = CType(3, Short)
|
||||
Me.GrdStationPlan.Name = "GrdStationPlan"
|
||||
Me.GrdStationPlan.Size = New System.Drawing.Size(998, 497)
|
||||
Me.GrdStationPlan.TabIndex = 0
|
||||
'
|
||||
'CmsPlanGrid
|
||||
'
|
||||
Me.CmsPlanGrid.ImageScalingSize = New System.Drawing.Size(24, 24)
|
||||
Me.CmsPlanGrid.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MsiGridRowBlockInsert, Me.MsiGridRowBlockDelete, Me.ToolStripSeparator7, Me.tsBtn_CheckAction, Me.tsBtn_UncheckAction, Me.ToolStripSeparator15, Me.MsiUndo, Me.MsiRedo, Me.ToolStripSeparator6, Me.MsiSaveNodeFile, Me.MsiLoadNodeFile, Me.ToolStripSeparator11, Me.TsmiDebugStart, Me.TsmiDebugEnd, Me.TsmiDebugContinue, Me.执行1ToolStripMenuItem, Me.执行2ToolStripMenuItem, Me.TsmiDebugStep, Me.ToolStripSeparator8, Me.TsmiDebugSetup, Me.TsmiDebugMain, Me.TsmiDebugPass, Me.TsmiDebugFail, Me.TsmiDebugCleanup, Me.ToolStripSeparator9, Me.TsmiDebugNode, Me.TsmiDebugNodeBegin, Me.TsmiJumpCall})
|
||||
Me.CmsPlanGrid.Name = "CmsMain"
|
||||
Me.CmsPlanGrid.Size = New System.Drawing.Size(303, 744)
|
||||
'
|
||||
'MsiGridRowBlockInsert
|
||||
'
|
||||
Me.MsiGridRowBlockInsert.Image = CType(resources.GetObject("MsiGridRowBlockInsert.Image"), System.Drawing.Image)
|
||||
Me.MsiGridRowBlockInsert.Name = "MsiGridRowBlockInsert"
|
||||
Me.MsiGridRowBlockInsert.ShortcutKeyDisplayString = "Ctr+I"
|
||||
Me.MsiGridRowBlockInsert.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.I), System.Windows.Forms.Keys)
|
||||
Me.MsiGridRowBlockInsert.Size = New System.Drawing.Size(302, 32)
|
||||
Me.MsiGridRowBlockInsert.Text = "插入"
|
||||
'
|
||||
'MsiGridRowBlockDelete
|
||||
'
|
||||
Me.MsiGridRowBlockDelete.Image = CType(resources.GetObject("MsiGridRowBlockDelete.Image"), System.Drawing.Image)
|
||||
Me.MsiGridRowBlockDelete.Name = "MsiGridRowBlockDelete"
|
||||
Me.MsiGridRowBlockDelete.ShortcutKeyDisplayString = "Ctr+D"
|
||||
Me.MsiGridRowBlockDelete.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.D), System.Windows.Forms.Keys)
|
||||
Me.MsiGridRowBlockDelete.Size = New System.Drawing.Size(302, 32)
|
||||
Me.MsiGridRowBlockDelete.Text = "删除"
|
||||
'
|
||||
'ToolStripSeparator7
|
||||
'
|
||||
Me.ToolStripSeparator7.Name = "ToolStripSeparator7"
|
||||
Me.ToolStripSeparator7.Size = New System.Drawing.Size(299, 6)
|
||||
'
|
||||
'tsBtn_CheckAction
|
||||
'
|
||||
Me.tsBtn_CheckAction.Image = CType(resources.GetObject("tsBtn_CheckAction.Image"), System.Drawing.Image)
|
||||
Me.tsBtn_CheckAction.Name = "tsBtn_CheckAction"
|
||||
Me.tsBtn_CheckAction.Size = New System.Drawing.Size(302, 32)
|
||||
Me.tsBtn_CheckAction.Text = "勾选测试"
|
||||
'
|
||||
'tsBtn_UncheckAction
|
||||
'
|
||||
Me.tsBtn_UncheckAction.Image = CType(resources.GetObject("tsBtn_UncheckAction.Image"), System.Drawing.Image)
|
||||
Me.tsBtn_UncheckAction.Name = "tsBtn_UncheckAction"
|
||||
Me.tsBtn_UncheckAction.Size = New System.Drawing.Size(302, 32)
|
||||
Me.tsBtn_UncheckAction.Text = "取消勾选测试"
|
||||
'
|
||||
'ToolStripSeparator15
|
||||
'
|
||||
Me.ToolStripSeparator15.Name = "ToolStripSeparator15"
|
||||
Me.ToolStripSeparator15.Size = New System.Drawing.Size(299, 6)
|
||||
'
|
||||
'MsiUndo
|
||||
'
|
||||
Me.MsiUndo.Name = "MsiUndo"
|
||||
Me.MsiUndo.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Z), System.Windows.Forms.Keys)
|
||||
Me.MsiUndo.Size = New System.Drawing.Size(302, 32)
|
||||
Me.MsiUndo.Text = "撤销"
|
||||
'
|
||||
'MsiRedo
|
||||
'
|
||||
Me.MsiRedo.Name = "MsiRedo"
|
||||
Me.MsiRedo.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Y), System.Windows.Forms.Keys)
|
||||
Me.MsiRedo.Size = New System.Drawing.Size(302, 32)
|
||||
Me.MsiRedo.Text = "重做"
|
||||
'
|
||||
'ToolStripSeparator6
|
||||
'
|
||||
Me.ToolStripSeparator6.Name = "ToolStripSeparator6"
|
||||
Me.ToolStripSeparator6.Size = New System.Drawing.Size(299, 6)
|
||||
'
|
||||
'MsiSaveNodeFile
|
||||
'
|
||||
Me.MsiSaveNodeFile.Name = "MsiSaveNodeFile"
|
||||
Me.MsiSaveNodeFile.Size = New System.Drawing.Size(302, 32)
|
||||
Me.MsiSaveNodeFile.Text = "另存为节点文件"
|
||||
'
|
||||
'MsiLoadNodeFile
|
||||
'
|
||||
Me.MsiLoadNodeFile.Name = "MsiLoadNodeFile"
|
||||
Me.MsiLoadNodeFile.Size = New System.Drawing.Size(302, 32)
|
||||
Me.MsiLoadNodeFile.Text = "加载节点文件"
|
||||
'
|
||||
'ToolStripSeparator11
|
||||
'
|
||||
Me.ToolStripSeparator11.Name = "ToolStripSeparator11"
|
||||
Me.ToolStripSeparator11.Size = New System.Drawing.Size(299, 6)
|
||||
'
|
||||
'TsmiDebugStart
|
||||
'
|
||||
Me.TsmiDebugStart.Image = CType(resources.GetObject("TsmiDebugStart.Image"), System.Drawing.Image)
|
||||
Me.TsmiDebugStart.Name = "TsmiDebugStart"
|
||||
Me.TsmiDebugStart.ShortcutKeys = System.Windows.Forms.Keys.F5
|
||||
Me.TsmiDebugStart.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugStart.Text = "开始执行"
|
||||
'
|
||||
'TsmiDebugEnd
|
||||
'
|
||||
Me.TsmiDebugEnd.Image = CType(resources.GetObject("TsmiDebugEnd.Image"), System.Drawing.Image)
|
||||
Me.TsmiDebugEnd.Name = "TsmiDebugEnd"
|
||||
Me.TsmiDebugEnd.ShortcutKeys = CType((System.Windows.Forms.Keys.Shift Or System.Windows.Forms.Keys.F5), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugEnd.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugEnd.Text = "退出执行"
|
||||
'
|
||||
'TsmiDebugContinue
|
||||
'
|
||||
Me.TsmiDebugContinue.Image = CType(resources.GetObject("TsmiDebugContinue.Image"), System.Drawing.Image)
|
||||
Me.TsmiDebugContinue.Name = "TsmiDebugContinue"
|
||||
Me.TsmiDebugContinue.ShortcutKeys = CType((System.Windows.Forms.Keys.Alt Or System.Windows.Forms.Keys.F5), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugContinue.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugContinue.Text = "继续执行"
|
||||
'
|
||||
'执行1ToolStripMenuItem
|
||||
'
|
||||
Me.执行1ToolStripMenuItem.Name = "执行1ToolStripMenuItem"
|
||||
Me.执行1ToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F9
|
||||
Me.执行1ToolStripMenuItem.Size = New System.Drawing.Size(302, 32)
|
||||
Me.执行1ToolStripMenuItem.Text = "单步重复"
|
||||
'
|
||||
'执行2ToolStripMenuItem
|
||||
'
|
||||
Me.执行2ToolStripMenuItem.Name = "执行2ToolStripMenuItem"
|
||||
Me.执行2ToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F10
|
||||
Me.执行2ToolStripMenuItem.Size = New System.Drawing.Size(302, 32)
|
||||
Me.执行2ToolStripMenuItem.Text = "单步调试"
|
||||
'
|
||||
'TsmiDebugStep
|
||||
'
|
||||
Me.TsmiDebugStep.Image = CType(resources.GetObject("TsmiDebugStep.Image"), System.Drawing.Image)
|
||||
Me.TsmiDebugStep.Name = "TsmiDebugStep"
|
||||
Me.TsmiDebugStep.ShortcutKeys = System.Windows.Forms.Keys.F11
|
||||
Me.TsmiDebugStep.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugStep.Text = "单步断点调试"
|
||||
'
|
||||
'ToolStripSeparator8
|
||||
'
|
||||
Me.ToolStripSeparator8.Name = "ToolStripSeparator8"
|
||||
Me.ToolStripSeparator8.Size = New System.Drawing.Size(299, 6)
|
||||
'
|
||||
'TsmiDebugSetup
|
||||
'
|
||||
Me.TsmiDebugSetup.Name = "TsmiDebugSetup"
|
||||
Me.TsmiDebugSetup.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F1), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugSetup.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugSetup.Text = "Setup模块执行"
|
||||
'
|
||||
'TsmiDebugMain
|
||||
'
|
||||
Me.TsmiDebugMain.Name = "TsmiDebugMain"
|
||||
Me.TsmiDebugMain.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F2), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugMain.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugMain.Text = "Main模块执行"
|
||||
'
|
||||
'TsmiDebugPass
|
||||
'
|
||||
Me.TsmiDebugPass.Name = "TsmiDebugPass"
|
||||
Me.TsmiDebugPass.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F3), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugPass.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugPass.Text = "Pass模块执行"
|
||||
'
|
||||
'TsmiDebugFail
|
||||
'
|
||||
Me.TsmiDebugFail.Name = "TsmiDebugFail"
|
||||
Me.TsmiDebugFail.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F4), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugFail.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugFail.Text = "Fail模块执行"
|
||||
'
|
||||
'TsmiDebugCleanup
|
||||
'
|
||||
Me.TsmiDebugCleanup.Name = "TsmiDebugCleanup"
|
||||
Me.TsmiDebugCleanup.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F5), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugCleanup.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugCleanup.Text = "Cleanup模块执行"
|
||||
'
|
||||
'ToolStripSeparator9
|
||||
'
|
||||
Me.ToolStripSeparator9.Name = "ToolStripSeparator9"
|
||||
Me.ToolStripSeparator9.Size = New System.Drawing.Size(299, 6)
|
||||
'
|
||||
'TsmiDebugNode
|
||||
'
|
||||
Me.TsmiDebugNode.Name = "TsmiDebugNode"
|
||||
Me.TsmiDebugNode.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F10), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugNode.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugNode.Text = "节点测试"
|
||||
'
|
||||
'TsmiDebugNodeBegin
|
||||
'
|
||||
Me.TsmiDebugNodeBegin.Name = "TsmiDebugNodeBegin"
|
||||
Me.TsmiDebugNodeBegin.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.F11), System.Windows.Forms.Keys)
|
||||
Me.TsmiDebugNodeBegin.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiDebugNodeBegin.Text = "节点开始测试"
|
||||
'
|
||||
'TsmiJumpCall
|
||||
'
|
||||
Me.TsmiJumpCall.Name = "TsmiJumpCall"
|
||||
Me.TsmiJumpCall.ShortcutKeys = System.Windows.Forms.Keys.F12
|
||||
Me.TsmiJumpCall.Size = New System.Drawing.Size(302, 32)
|
||||
Me.TsmiJumpCall.Text = "函数跳转"
|
||||
Me.TsmiJumpCall.Visible = False
|
||||
'
|
||||
'GrpSingleRowInfo
|
||||
'
|
||||
Me.GrpSingleRowInfo.Controls.Add(Me.SplitContainer1)
|
||||
Me.GrpSingleRowInfo.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GrpSingleRowInfo.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GrpSingleRowInfo.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.GrpSingleRowInfo.Name = "GrpSingleRowInfo"
|
||||
Me.GrpSingleRowInfo.Padding = New System.Windows.Forms.Padding(4)
|
||||
Me.GrpSingleRowInfo.Size = New System.Drawing.Size(454, 526)
|
||||
Me.GrpSingleRowInfo.TabIndex = 1
|
||||
Me.GrpSingleRowInfo.TabStop = False
|
||||
Me.GrpSingleRowInfo.Text = "属性"
|
||||
'
|
||||
'SplitContainer1
|
||||
'
|
||||
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SplitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2
|
||||
Me.SplitContainer1.Location = New System.Drawing.Point(4, 25)
|
||||
Me.SplitContainer1.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.SplitContainer1.Name = "SplitContainer1"
|
||||
Me.SplitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal
|
||||
'
|
||||
'SplitContainer1.Panel1
|
||||
'
|
||||
Me.SplitContainer1.Panel1.Controls.Add(Me.GrdRowNode)
|
||||
'
|
||||
'SplitContainer1.Panel2
|
||||
'
|
||||
Me.SplitContainer1.Panel2.Controls.Add(Me.RtxColTip)
|
||||
Me.SplitContainer1.Size = New System.Drawing.Size(446, 497)
|
||||
Me.SplitContainer1.SplitterDistance = 407
|
||||
Me.SplitContainer1.SplitterWidth = 6
|
||||
Me.SplitContainer1.TabIndex = 1
|
||||
'
|
||||
'GrdRowNode
|
||||
'
|
||||
Me.GrdRowNode.BorderStyle = FlexCell.BorderStyleEnum.None
|
||||
Me.GrdRowNode.DefaultFont = New System.Drawing.Font("宋体", 9.0!)
|
||||
Me.GrdRowNode.DefaultRowHeight = CType(28, Short)
|
||||
Me.GrdRowNode.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GrdRowNode.GridColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
|
||||
Me.GrdRowNode.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GrdRowNode.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.GrdRowNode.MouseWheelSpeed = CType(3, Short)
|
||||
Me.GrdRowNode.Name = "GrdRowNode"
|
||||
Me.GrdRowNode.Size = New System.Drawing.Size(446, 407)
|
||||
Me.GrdRowNode.TabIndex = 0
|
||||
'
|
||||
'RtxColTip
|
||||
'
|
||||
Me.RtxColTip.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.RtxColTip.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.RtxColTip.Enabled = False
|
||||
Me.RtxColTip.Location = New System.Drawing.Point(0, 0)
|
||||
Me.RtxColTip.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.RtxColTip.Name = "RtxColTip"
|
||||
Me.RtxColTip.Size = New System.Drawing.Size(446, 84)
|
||||
Me.RtxColTip.TabIndex = 0
|
||||
Me.RtxColTip.Text = ""
|
||||
'
|
||||
'GrpOutputInfo
|
||||
'
|
||||
Me.GrpOutputInfo.Controls.Add(Me.TabControl1)
|
||||
Me.GrpOutputInfo.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GrpOutputInfo.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GrpOutputInfo.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.GrpOutputInfo.Name = "GrpOutputInfo"
|
||||
Me.GrpOutputInfo.Padding = New System.Windows.Forms.Padding(4)
|
||||
Me.GrpOutputInfo.Size = New System.Drawing.Size(1466, 251)
|
||||
Me.GrpOutputInfo.TabIndex = 0
|
||||
Me.GrpOutputInfo.TabStop = False
|
||||
Me.GrpOutputInfo.Text = "输出内容"
|
||||
'
|
||||
'TabControl1
|
||||
'
|
||||
Me.TabControl1.Controls.Add(Me.TpOutputInfo)
|
||||
Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.TabControl1.Location = New System.Drawing.Point(4, 25)
|
||||
Me.TabControl1.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.TabControl1.Name = "TabControl1"
|
||||
Me.TabControl1.SelectedIndex = 0
|
||||
Me.TabControl1.Size = New System.Drawing.Size(1458, 222)
|
||||
Me.TabControl1.TabIndex = 1
|
||||
'
|
||||
'TpOutputInfo
|
||||
'
|
||||
Me.TpOutputInfo.Controls.Add(Me.RtxOutputInfo)
|
||||
Me.TpOutputInfo.Location = New System.Drawing.Point(4, 28)
|
||||
Me.TpOutputInfo.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.TpOutputInfo.Name = "TpOutputInfo"
|
||||
Me.TpOutputInfo.Padding = New System.Windows.Forms.Padding(4)
|
||||
Me.TpOutputInfo.Size = New System.Drawing.Size(1450, 190)
|
||||
Me.TpOutputInfo.TabIndex = 0
|
||||
Me.TpOutputInfo.Text = "输出信息"
|
||||
Me.TpOutputInfo.UseVisualStyleBackColor = True
|
||||
'
|
||||
'RtxOutputInfo
|
||||
'
|
||||
Me.RtxOutputInfo.BorderStyle = System.Windows.Forms.BorderStyle.None
|
||||
Me.RtxOutputInfo.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.RtxOutputInfo.Location = New System.Drawing.Point(4, 4)
|
||||
Me.RtxOutputInfo.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.RtxOutputInfo.Name = "RtxOutputInfo"
|
||||
Me.RtxOutputInfo.Size = New System.Drawing.Size(1442, 182)
|
||||
Me.RtxOutputInfo.TabIndex = 0
|
||||
Me.RtxOutputInfo.Text = ""
|
||||
'
|
||||
'FrmStationPlan
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(9.0!, 18.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(1466, 870)
|
||||
Me.Controls.Add(Me.SplStationPlan)
|
||||
Me.Controls.Add(Me.StuMain)
|
||||
Me.Controls.Add(Me.ToolStrip1)
|
||||
Me.KeyPreview = True
|
||||
Me.Margin = New System.Windows.Forms.Padding(4)
|
||||
Me.Name = "FrmStationPlan"
|
||||
Me.Text = "Form1"
|
||||
Me.ToolStrip1.ResumeLayout(False)
|
||||
Me.ToolStrip1.PerformLayout()
|
||||
Me.StuMain.ResumeLayout(False)
|
||||
Me.StuMain.PerformLayout
|
||||
Me.SplStationPlan.Panel1.ResumeLayout(false)
|
||||
Me.SplStationPlan.Panel2.ResumeLayout(false)
|
||||
CType(Me.SplStationPlan,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplStationPlan.ResumeLayout(false)
|
||||
Me.SplPlanDesign.Panel1.ResumeLayout(false)
|
||||
Me.SplPlanDesign.Panel2.ResumeLayout(false)
|
||||
CType(Me.SplPlanDesign,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplPlanDesign.ResumeLayout(false)
|
||||
Me.GrpStationPlan.ResumeLayout(false)
|
||||
Me.CmsPlanGrid.ResumeLayout(false)
|
||||
Me.GrpSingleRowInfo.ResumeLayout(false)
|
||||
Me.SplitContainer1.Panel1.ResumeLayout(false)
|
||||
Me.SplitContainer1.Panel2.ResumeLayout(false)
|
||||
CType(Me.SplitContainer1,System.ComponentModel.ISupportInitialize).EndInit
|
||||
Me.SplitContainer1.ResumeLayout(false)
|
||||
Me.GrpOutputInfo.ResumeLayout(false)
|
||||
Me.TabControl1.ResumeLayout(false)
|
||||
Me.TpOutputInfo.ResumeLayout(false)
|
||||
Me.ResumeLayout(false)
|
||||
Me.PerformLayout
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents ToolStrip1 As ToolStrip
|
||||
Friend WithEvents StuMain As StatusStrip
|
||||
Friend WithEvents SplStationPlan As SplitContainer
|
||||
Friend WithEvents SplPlanDesign As SplitContainer
|
||||
Friend WithEvents GrpStationPlan As GroupBox
|
||||
Friend WithEvents GrpSingleRowInfo As GroupBox
|
||||
Friend WithEvents SplitContainer1 As SplitContainer
|
||||
Friend WithEvents RtxColTip As RichTextBox
|
||||
Friend WithEvents GrpOutputInfo As GroupBox
|
||||
Friend WithEvents TsBtnBackward As ToolStripButton
|
||||
Friend WithEvents TsBtnForward As ToolStripButton
|
||||
Friend WithEvents TsBtnMoveUp As ToolStripButton
|
||||
Friend WithEvents GrdRowNode As FlexCell.Grid
|
||||
Friend WithEvents CmsPlanGrid As ContextMenuStrip
|
||||
Friend WithEvents MsiSaveNodeFile As ToolStripMenuItem
|
||||
Friend WithEvents TsBtnMoveDown As ToolStripButton
|
||||
Friend WithEvents TsBtnMoveLeft As ToolStripButton
|
||||
Friend WithEvents TsBtnMoveRight As ToolStripButton
|
||||
Friend WithEvents ToolStripSeparator2 As ToolStripSeparator
|
||||
Friend WithEvents ToolStripSeparator3 As ToolStripSeparator
|
||||
Friend WithEvents TsBtnLoad As ToolStripButton
|
||||
Friend WithEvents TsBtnSave As ToolStripButton
|
||||
Friend WithEvents MsiLoadNodeFile As ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator6 As ToolStripSeparator
|
||||
Friend WithEvents MsiUndo As ToolStripMenuItem
|
||||
Friend WithEvents MsiRedo As ToolStripMenuItem
|
||||
Friend WithEvents TsBtnOpen As ToolStripButton
|
||||
Friend WithEvents GrdStationPlan As FlexCell.Grid
|
||||
Friend WithEvents TsBtnDebugStart As ToolStripButton
|
||||
Friend WithEvents TsBtnDebugMode As ToolStripButton
|
||||
Friend WithEvents ToolStripSeparator7 As ToolStripSeparator
|
||||
Friend WithEvents TsmiDebugStep As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugContinue As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugStart As ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator8 As ToolStripSeparator
|
||||
Friend WithEvents TsmiDebugSetup As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugMain As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugPass As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugFail As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugCleanup As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugEnd As ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator9 As ToolStripSeparator
|
||||
Friend WithEvents TsmiDebugNode As ToolStripMenuItem
|
||||
Friend WithEvents TsmiDebugNodeBegin As ToolStripMenuItem
|
||||
Friend WithEvents TssLblTestStatus As ToolStripStatusLabel
|
||||
Friend WithEvents TssLblTestTime As ToolStripStatusLabel
|
||||
Friend WithEvents TssBarTestProgress As ToolStripProgressBar
|
||||
Friend WithEvents TsBtnFailMode As ToolStripButton
|
||||
Friend WithEvents TabControl1 As TabControl
|
||||
Friend WithEvents TpOutputInfo As TabPage
|
||||
Friend WithEvents RtxOutputInfo As RichTextBox
|
||||
Friend WithEvents TsBtnSaveAs As ToolStripButton
|
||||
Friend WithEvents ToolStripSeparator4 As ToolStripSeparator
|
||||
Friend WithEvents tsBtnInsertRow As ToolStripButton
|
||||
Friend WithEvents tsBtnRemoveRow As ToolStripButton
|
||||
Friend WithEvents tslBtn_ActionOnly As ToolStripButton
|
||||
Friend WithEvents ToolStripSeparator10 As ToolStripSeparator
|
||||
Friend WithEvents TsBtn_Record As ToolStripButton
|
||||
Friend WithEvents TsBtn_ExpandNode As ToolStripButton
|
||||
Friend WithEvents MsiGridRowBlockInsert As ToolStripMenuItem
|
||||
Friend WithEvents MsiGridRowBlockDelete As ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator11 As ToolStripSeparator
|
||||
Friend WithEvents ToolStripSeparator13 As ToolStripSeparator
|
||||
Friend WithEvents ToolStripSeparator14 As ToolStripSeparator
|
||||
Friend WithEvents tsBtn_CheckAction As ToolStripMenuItem
|
||||
Friend WithEvents tsBtn_UncheckAction As ToolStripMenuItem
|
||||
Friend WithEvents ToolStripSeparator15 As ToolStripSeparator
|
||||
Friend WithEvents ToolStripSeparator1 As ToolStripSeparator
|
||||
Friend WithEvents TsBtnUndo As ToolStripButton
|
||||
Friend WithEvents TsBtnRedo As ToolStripButton
|
||||
Friend WithEvents TsmiJumpCall As ToolStripMenuItem
|
||||
Friend WithEvents 执行1ToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents 执行2ToolStripMenuItem As ToolStripMenuItem
|
||||
End Class
|
||||
End Namespace
|
||||
459
UTS_Core/UTSModule/Station/FrmStationPlan.resx
Normal file
459
UTS_Core/UTSModule/Station/FrmStationPlan.resx
Normal file
@@ -0,0 +1,459 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>22, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="TsBtnOpen.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGnSURBVGhD7ZjNSgRBDIQLFPWuN/XdRK/+vJzoG/iDiPoq
|
||||
rnpVAjMgRa+1Sad7XegP+rLpSqVnMg0bYDAYRNkDcAXgEcAHgO/kZTkfAFwC2GXzWo4AvBVMW63XyTMF
|
||||
e/I9i5+XHSLlTVjbcPJe64KLiWA9/zvpNYBD3pSAtcwNed3zpggLSprWmwWOyeudN0Tg19qadL/0hIKw
|
||||
3zaAM/6xJmGQkN8BgOclglDCCtx+9uTn4ksCd8JK3H7WNn8J3Akrcfs9CYE7YSVuvy8hcCesxO2nBCqe
|
||||
jdtPCVQ8G7efEqh4Nm4/JVDxbNx+SqDi2bj9lEDFs3H7KYGKZ+P2UwIVz8btpwQqno3bTwlUPBu3nxKo
|
||||
eDZuPyVQ8Wzcfkrw7//UqwPwWMVGHy0OYcXfktdKYxV1AJtV8p5e65yLKcEixsZ7Nubjfa3XC4AdLqYE
|
||||
C0tYy/Q8hBW/8vSPxcuwN2GzSutL/rAzluW8m9pmpSc/w4k2jo0/ALdDiyuyKb3u+Was854/5WIirOue
|
||||
t4HaFhcTpfc9b8XvcxG1tL7nP6fv7WQaKA8GgwA/US97ZXWnuP4AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHbSURBVGhD7ZlLSsVAEEWvTlyCvy05U3DiUNGRixNx4m/m
|
||||
Z+QmdAPqTEEpeEhT3clJJd1PwRyo0e17q8okL2CkmZmZLlYkHUt6lPQu6atRvUja9c2nsiXpptCsVX1I
|
||||
2vdDjGVV0m2hSev6lHTghxnDSSF8WVXlStg9n4aeS1pPdN90CjasDV11iTcXuOH0mgsY1ZegAUkfw15h
|
||||
idHPBA1I+liqLUEDkj6FKkvQgKRPZfISNKDXx5a9gXd8+IKuB3vQG9s38nh9Sj378ITSEn3nf/BNPBbi
|
||||
z4wtGsiW8B6EDHbZ7fL7c9Hqu4VSvA8JGxoTnidsaEx4nrChMeF5wobGhOcJGxoTnidsaEx4HjLU+hn1
|
||||
1fWz6s8hZKj5IvNVerH5MwgZvF67PKRnkMHrtctDegYZSI9CeaRnkIH0KJRHegYZSI9CeaRnkIH0KJRH
|
||||
egYZSI9CeaRnkIH0KJRHegYZSI9CeaRnkIH0KJRHegYZSI9CeaRnkIH0KJRHesarM6T/mTbCgUBfnn1o
|
||||
STWbDXlwpjNJm4ne13AMXXnW88Jp94neyWkh9K/UoR+2xJqkp4L5t+ty8eFxENuSrgshv1VX7jYehG17
|
||||
JOmu8NVmGWUPrPW222bwX35m5r/xDfNWMy9xCndOAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnLoad.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHASURBVGhD1ZlLTgMxEERLAsEelsDd+Gwhp0NwA/4SnIXf
|
||||
NqglR4paE9WUXXbIk7xJT/WzZyZejIF6DgEsADwB+AawNI/oGb1visvKCYCPCWmv8V6cFuJujJz8asQi
|
||||
LE8iXpvcfNS4zpOp4Tk1vXU+3jVOAdwl12O+qIav1DREvThLrs98QQ35sfbG7rM3JFT79gBc5h9bGlZS
|
||||
5TsG8LYhUNWwAdm3vzb5qYDcsBHZd0UCcsNGZN8rCcgNG5F9vyQgN2xE9rEAq7uRfSzA6m5kHwuwuhvZ
|
||||
xwKs7kb2sQCru5F9LMDqbmQfC7C6G9nHAqzuRvaxAKu7kX0swOpuZB8LsLob2ccCrO5G9rEAq7uRfSzA
|
||||
6m5kHwuwuhvZxwKs7kb2sQCru5F9LMDqbmQfC7C6G9nHAqzuRvaxwL//uMsWkD+vxyfwHouIyd8n16zP
|
||||
62wBcWaVrxk1Zh1w5FAmjnniuCdf13uE8yBPZoocnCJOZEYuQjrky+FNxN2IRxrvZf5jO0b0fCiOWXd+
|
||||
RW60c+z8AvLr0GOL7Mqofb4b29znL/JkatjWPv9SDhYtjN7nY/JHeRKt9N7nf8r/7bwcLFbxB5dd2uNo
|
||||
4MxjAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnSaveAs.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAADWSURBVEhL5ZYxCsJAEEXfETyBeATPYSEewSN4BI9gZ2tl
|
||||
bWVhZydWHkEsrbTSTvkywWU0wVkMBP3wYT87M28JSxJ4qg/sMrxMZlRqCNyAFbD40Adg7weVqQB0/EaF
|
||||
Zj8BOAID57YvlHIB6vHWrBflAHTSbuLetwFe6v0jgK5fxFIIoLVeBbopc8tby6lVoz0pDBjbumV5lNQX
|
||||
Uk1zAVfgBJwtXyynVk02YANMgKnlteXUqskG1P6IagdELIUAOlnEUgiQo2YAIh99b/WWAnJ/W95Zsx66
|
||||
A61XwcQ50MgGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnBackward.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHOSURBVDhPvZHfS5NRAIb3p6QyxLr2DwgpLQoMDC/qIqjE
|
||||
q13oVVeRoaDEjAXO5sKaNdmm33QR6SRl6lyazJzr16RlUBtM5ft0Oaff5iM7onOftIKgF56rc97n5XB0
|
||||
un+NZ/IzOaSJsMAxEqTP8xbtvd8mV9bGNhygoeXF30nc4+GCcia7R5d9DK8/zLWmzj9LHKMLouiNgPQe
|
||||
QlGFR7bXSNMKrkkZp0/m6aiMaWhdoO3r+jyBo/Wd3QzKZppYIikE2rT2r1J5218osbp84rDXv4txROGe
|
||||
9JPmZ1Hsb9a0fZosCTyzCmfqh/MSs31MvHsrpbIqp1iJbfAxuob1VVyUOqSMILS8wQ1jnNP1L6moG6C8
|
||||
9vmBJPfe7bR6tGywRmg0f+Chc6VgXfmlsvxjG//SJhZpHv3lJ3mBkkzz6VuChS8xAqHvTLz7Skvvwffe
|
||||
7U9iMMe5/iDClfuLAos0h/5id15QeeHmCZpNi0KgZvdIyCpL0S3GgwruqXUeDwQoqzad/JHjudU6KwTH
|
||||
lw/pds1Qes5YXHD1jo/UThbrUJAe9zyWwTmxnCubHdOUVLUXF1QbvFTUOQXltTb0l3ooq+mi9HwnJVUd
|
||||
nDrbVlzw37IPxZzRV+2pq28AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnForward.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAACESURBVDhPtZDBDYAgDEV7YFZ3YgGHMZ5dgasbYEpFm08r
|
||||
mOhP3sFKH1+J/kgIIWvwfRNcYPJKBZw3Qh7My35Rl7XIOmMK9M0InnMFT3QFowwJiKLLoGDKVnguoq4g
|
||||
4m4Jz1PabokvkAZyo4DPHYHdgPOyQfsTRXA2qBJkuIEf/a0eH+QAf0C4uBZ9A6wAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnUndo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHOSURBVDhPvZHfS5NRAIb3p6QyxLr2DwgpLQoMDC/qIqjE
|
||||
q13oVVeRoaDEjAXO5sKaNdmm33QR6SRl6lyazJzr16RlUBtM5ft0Oaff5iM7onOftIKgF56rc97n5XB0
|
||||
un+NZ/IzOaSJsMAxEqTP8xbtvd8mV9bGNhygoeXF30nc4+GCcia7R5d9DK8/zLWmzj9LHKMLouiNgPQe
|
||||
QlGFR7bXSNMKrkkZp0/m6aiMaWhdoO3r+jyBo/Wd3QzKZppYIikE2rT2r1J5218osbp84rDXv4txROGe
|
||||
9JPmZ1Hsb9a0fZosCTyzCmfqh/MSs31MvHsrpbIqp1iJbfAxuob1VVyUOqSMILS8wQ1jnNP1L6moG6C8
|
||||
9vmBJPfe7bR6tGywRmg0f+Chc6VgXfmlsvxjG//SJhZpHv3lJ3mBkkzz6VuChS8xAqHvTLz7Skvvwffe
|
||||
7U9iMMe5/iDClfuLAos0h/5id15QeeHmCZpNi0KgZvdIyCpL0S3GgwruqXUeDwQoqzad/JHjudU6KwTH
|
||||
lw/pds1Qes5YXHD1jo/UThbrUJAe9zyWwTmxnCubHdOUVLUXF1QbvFTUOQXltTb0l3ooq+mi9HwnJVUd
|
||||
nDrbVlzw37IPxZzRV+2pq28AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnRedo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAACESURBVDhPtZDBDYAgDEV7YFZ3YgGHMZ5dgasbYEpFm08r
|
||||
mOhP3sFKH1+J/kgIIWvwfRNcYPJKBZw3Qh7My35Rl7XIOmMK9M0InnMFT3QFowwJiKLLoGDKVnguoq4g
|
||||
4m4Jz1PabokvkAZyo4DPHYHdgPOyQfsTRXA2qBJkuIEf/a0eH+QAf0C4uBZ9A6wAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsBtnInsertRow.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAADYSURBVDhPrVItD8IwFNxf4i/gsPsHpApJpmZJ1eRSNUlS
|
||||
M7mkZnbJDJJkBomYmJx4AnHkddCQBvaRccmp3t3Le70gWAtTNtBFDZ0PVGcDmRr4up/AB+gxUKZ6YcDL
|
||||
SD3Q9kAUq/kB76lstOyA8CDnB2x2At/o61ZDZQZMvo9MFMRRWvo6H07AZl6vuQP1DTAXgi5pNIAfHXmy
|
||||
NV4BXRFkThDpeADDCaKTskZVEKKMECaEbdxOBjjwvv6h7bFN1cCUtWvj0MSlRfp3E8XqJu6n/9fBP8rS
|
||||
Jj4BXasamGdFJGcAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsBtnRemoveRow.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAADdSURBVDhPY2CgBth28ML/tTtP/V+84dD/mct2/Z8wb/P/
|
||||
3tnr/6OrwwnW7Tr9HwS+fP/3//HbP/8vPfr139QzmXgD5q/Zj6L5+K2f/53C8ok3YMK8jWAbQRikccbC
|
||||
1XA8ec7y/11TF/5v6pmFYiALEwtuC0AaD9/483/buZ//lx789n/S5k9gw0Ga0DG6XjAA2bjuxI//7cse
|
||||
/C+defd/Ss8djDBB0YweC5WtU8BegXkLhpENQAHYYiEiuwm3BnSALRbw2ogOQAagO5ckA7B5gSQDKPYC
|
||||
ckIiywsDCgCBjwD6FcXgCwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnMoveUp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGTSURBVHhe7ZhBSsUwFEWv4sChM9ENuA7X4SpcgatwIDhy
|
||||
JLoYRyKCuABx7NTPgRY+If83SVNt2nvgQXntJ++e5E8iGWOMMcYY89ccS7ruiudVcSHpR9JvVzzTWwWn
|
||||
kr62wvf1Lek8/HhpnEl6i4Tvi3d8s0jY+ddI6LDel3gShnY+rEWdhNSdD2sRJyF358Nq+iSU7nxYTZ6E
|
||||
ofCfkd5HpNekhKHw95KeI/0nSbeRflMSUsIfdmHDd/QOWpaQGh52CYAmJeSEh30CoCkJueFhSAA0IaEk
|
||||
PKQIgFlLKA0PqQJglhLGhIccATArCWPDQ64AmIWEGuGhRAD8q4QjSS+RRfu66wZMoVQAsAZrhb/vixmZ
|
||||
tTqXkcVKwsMYATAkgVmrs0tAbngYKwD2SZhEQOwvUBIeagiAmITJ/gJwIulG0oOkq/BlBrUE9DALMzEb
|
||||
M86e2gKawwIswAIswAIswAIswAIswAIswALWKOAxIoDeauDiIhRAbzVwa7N9vcZzEzc5NeHejstLarI7
|
||||
PGOMMcYYY+JsAHNd5AEOCv+IAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnMoveDown.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGSSURBVHhe7ZhNSgQxEIWf4sKlO3Eu4Dk8h6fwBJ7CheDK
|
||||
1aCHcSOIIO4F124dHnRBE2omP50eOp33QUGomXTnfUlvAgghhBBCCHFszgDcDMVxV1wAeAPwPxTH7HXD
|
||||
/Si8FXvdsHUEsNcNL44A9rpBAiRAAiRAAiRAAiRAAiRAAiRAAloSwFsbXlw8A7gNf8ygtgCuhWvi2ma7
|
||||
WeK93fgai/UI4CT8YwK1BPDdXMP4OVzjLHeMvLwMF10qoYYAL7wV11qdfQJKJEwVcCj8bAK8T6BUwhQB
|
||||
sfCzfQLkEsC781KrJwCn4SSHUgEM/+DMtfoEsAkn1aaGhBIBiwhvTJWQK2BR4Y0pEnIELDK8USohVcCi
|
||||
wxslElIENBHeyJUQE9BUeCNHwiEBTYY3UiXsE9B0eCNFwqvTp4DmwxsxCd9O78vpNRneiElIrSbDG1cA
|
||||
PpxQqcW5fEbTlJ6Epnc+JPckrGLnQ1JPwqp2PiR2Ela58yE8CT9O+N8173zINYC/UXiO2euKcwB3Q3Es
|
||||
hBBCCCHEEdkBVsTj8gS5a8wAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnMoveLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAEYSURBVHhe7ZoxigJBEEU/i4HhZuIF9h6ew1PsCTyHYGLo
|
||||
ehgTxWzz9QCmStFTIE05Jjsq1e/Bhwm6Gd6H6YGmJAAAAACAZzOSNOtiz00xlbSTdOliz5/1oqyY/PFG
|
||||
3rOoF2bknrxlXS/ORp+8ZV5vyMQj+WW9IRMTSYdA2rOS9FFvygLygTTyyCOfE+QDaeSRRz4nyAfSTch/
|
||||
SToF0p5fSVtJPy/IprtUGexmaSzpHEi/W+x6bZA7xu/gZe8au2j9d5ovoPlPwLBD8C94qSf1IejYb3Af
|
||||
yHtS/wYdSqCEAiVQQoESKKFACZRQoARKKFACJRSaHpBwHpWQekTG6Ssh/ZCUc6+EJsbknKYHJZ2mR2UB
|
||||
AAAA4NVcAcDx5AIlrB0yAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnMoveRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAD5SURBVHhe7dqxCQJBFIThEQwMTbUC27AOq7ACqzAwNNRm
|
||||
DEWwBGNT5bF3IMuGh7vs/B88uEBxZ0CF5UkAAADAv80lbYeJZytLSTdJn2HieZW/qGeHn/Dj3J1KOBcK
|
||||
sCphVwhvV8KpEN6qhJmkYyH8OA9J6/xNvaEESkgogRISSqCEhBIoIaEESkgooZUS4iYnLjMukq6V5lkI
|
||||
P85L0iY/9FTi3u73GqvVeUta5IefQlxe5h/W6uzzw0/BvgD7r0Cw/hGsrYm/wVoIXwhNeMITvk+EL4Qm
|
||||
POEJ3yfCF0JbhA/WCxL2KzL2S1L2a3L2i5LBelUWAAAAtX0B0+Hj+Dk2eN8AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnDebugMode.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAV9SURBVHhe7ZtHqy1FFIWXKCIoDk0js76ROYAJAwbEgQFF
|
||||
xJGioEMD6MTwF3RuHKgoZp0YwIhTsw7ViWFiAJ9ZvksVFOvu6qrTp/u8mz7Y8Li1anftOl3Vu3b3k3bY
|
||||
YRVcLuk7Sf912reSLnMnmxkC8iBb9o072cx4cL22ZfDAem1Ds5+kSyQd7Q0BvYH16jLHpDEwlpVysKSP
|
||||
0yD/knSLC4zewHp1wDW5NjrGwphWwkGSPrWB/ivpdhcW9AbWq7tZ0j+m/VLSYS6cmij4nklwbY0eXRR8
|
||||
tlknYSj4bLVJcF2Nlm4o+GyzTALr6/PgYu9L2m1/YxJuTf3OkPRo0K+G6+iLD8Anvst2rs0YvB9jnWxP
|
||||
qAX/sqR9U8YWTcJnQR/sb79AQe3XxVcUPNdmDIzF+0wyCa3gM9Ek1Oydop/zbqCPLAefmWUSeLbmR11p
|
||||
HnymNQnfS3oo7SU1GOzDSev9s3nwmdokEMOoPIEEw52x3qLgMz4J3LYvSrpQ0t4uHgAtfV6yW78WfIax
|
||||
RXvCxS7sgQwvJxq9A4Bz0sAfl3SyN47glOSLicT3EP4DYMTQk62GkG3VNp+NRhQ8Y29lqU1uCnbnPyRd
|
||||
4cIGe6Vf80FJb6fn9W/Jvkh/e2DkXcNy/T0I/jYXjmWZSSDwayV9Zf2HjMm5OvVtMXvwmVoicq4LC46S
|
||||
9FEQYK+xoR3uTgu4dnTb50RscqJJeNVFibMbj7Ne+0nS+e488bppZw0+4xkeO7TDgP8MgmHZPCXpeknH
|
||||
Sdo/Gf/mb08nTdQvutOeMB1jm5Uzg8GdZhpue3411z0r6UjTRtD/uaD/D8FyOCm4I/PZYRYes4u9YO1s
|
||||
Wr7myf3vMF0PdwYbL3uCb4zkHKWGA9QoFi1dYxeYj+sCzZjgM3cH/q4yDRmja4asWnJftHTNBlemt/wy
|
||||
/qjjtl+W580nB5wSxrDoZhuW3F3UMg42JadaOxsX63lZjgg2xhNNwwHKx9eydbigZqxpjrR+zCTDK3Xs
|
||||
9lPxjPm+z9oPSUdpxubjrdk6moIGpLJlfx5rU3GD+X7DBR0042sKGnxt/anZl7T8D7WTJ5RtnB0WZcj/
|
||||
Gk1Bg1+t/wHW3vI/1I6vsu0Xa+9hyP8aTUEDBlX2n3ICDrS2n629hyH/azQFDfwReKy1t/wPte+ytg25
|
||||
BN6y/lNugjea7zdd0EEzPhfUjPT0veAxSDGj1HGwmQoSqtJ39BgkTfbUecjW4YKWeSJEJads5zQ4uhZX
|
||||
wFLyk+UJppkkEZoiFaaSU2o41S0DPv2w46nwPlOlwhwQFp0EDiIl1wQaTnVjuTfwd6VpLgo0Q0bwl5qP
|
||||
bvw9H6XqEn6xD03DurzLdC3wc0+wptl7/DjsL0MesfZJodjgM+oFEQ4vPwY6TnU9ewJr3m97LCqIsO94
|
||||
QeR000yOl8QoSznnBSc4jM2Mgw25/fEpWcJ4zvOoY7f3DQ/DV/RS5EnTzV4Si4qir7gocdaIzSmyDVMU
|
||||
jYKnJB39MhmWwwdBUL3GmvfbvmRlZfHoy4xFXozwkoP01QOsGY86L33VqL0Yib5UGcUywTtUce9PqSwT
|
||||
wgkS49/8jQzPqz09zDYJ2/rlKAWNMa/HWZevTfh6HB/4wmf0cqQkmoTRr8en+kCCZ/qYDyTI8PboBxJT
|
||||
fyJDIsOhxU+RJZzq0KD1/tlqkzD5JzIwx0dSVG9r8NhzfWQ+CbXgl/pIKtOahCh4blvPGLNtqs/kMrVJ
|
||||
2BYfSmb4vO2T4GKlMcDoywzX1Wjpoi9V3KhJHOodp2JoEmrBg2tr9OiGJmHW4DPRJAwFDz7QGr26aBJW
|
||||
EnyG9bVt/8NEZiP8lxmuvUf+y8yieGC9tmXwwHpty7BotRkLS9eblUVL7kuVrnfYoZ//AROOTSGrgwV9
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnDebugStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAEXSURBVGhD7ZfBCcJAFETnqNiFJ5uxBHuxJ4/W4smDHSie
|
||||
lIUshGGWRAPZ+fAfzCW75M+Gl0CAJEkSdy4A9nwxEh8ATwBnABtejEA5QM0NwJE3uDM+QE0orbh8TRit
|
||||
uDjHXisu3IqtVlz0BOAhrpe8Bq22fJOecMnCbij6FuslVlpxuTEHAFexp8ZCKy6lKE/7LvaWdP9acaEW
|
||||
tlpxkSnstOICc7HRiof/goVWPPQfumrFw5bQRSsetJTVteIBSwl9gLAKhX2JV9dFwUPn0kUXBQ+foqsu
|
||||
Ci7QwkIXBRdR2Oii4EJj7HRRcKmCrS4KLhf+p74VC10UXJRjpYuCC9d0/7rMhYuX2OqiCKWLIpQuilC6
|
||||
JEmSrMsX05VR/EVYTyAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtnFailMode.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAFaSURBVGhD7Zk9TgMxEEYfNByBvyvRAaKAFkHFLbgQok1K
|
||||
BBWXgAsEOpBAXxEJjbzyJjvrsYWfNFXGu99TxlllDZ1OZ4gd4AZ4AT6Bn0y9Ayf2IlEcActEyFy92QtF
|
||||
sLtl+GoEbhPBxlQ1I6SZ/xvsEdi3TTXzYQQObEPt2NFoji4wEm14bXzVqf1wCqUE9JO7vscXcGEbtiVC
|
||||
wFWilIDGRqHdJUoJiLOExDdwZRs3oaSAcJcoLSBcJSIEhJtElIBwkYgUEJMlNhVYP1Htujnq3t48hV2U
|
||||
wz6Q5ix9E1nsohzNCzQ/Qt6cD2ziS9s4RKTA5PAiSsAlvIgQcAsvSgu4hhclBdzDi1ICzf+hsQ9Al/Ai
|
||||
QsAtvCgl0PxrldloXmBlBJp6My2ejcADcGibauYuMUZjqpoDjj3gNRFwTFVxxCSOgUUiYK6qERA6Zr0G
|
||||
nhKnNqmqZoQ6nf/ELxInwHd6df9CAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tslBtn_ActionOnly.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAFUSURBVDhPpZKhbsMwFEX7Cf2FsMGFDYcNzqyw8hdMRqWV
|
||||
UWBlFFjJJDCSSWikkMJIJoEBBoEBBgV3em7TJN1CuitdmeSc9xS9zea/sY0Ftb7UqKsapjDQuYY+a+hM
|
||||
Q50UZCrxzD1CoO89KK5zcP29rYO/evjBQ3yLdYEpzTR1nHiUAaLyHQf7ZOsClAKvdhKsxOQK5qygqZmE
|
||||
PkmoVAJXD11q6MpgVUCw7+TUVsA3HLbgQUKwbtTfghEWu2QB+wuDrxL4MobMBWTFfwse8J5Nkhnsigj2
|
||||
HEFkHKJkS8Ecds1d0nCIPYExbBbBpBHEVwSeMvBiJiB4hOgnBUlFMAsrx29bJO/b8PK9QHJIwPOnDeSB
|
||||
B3gswTaPkXxEwGCB3gJDDbQKJuNgx2QmGEFMAlxdWJ/eICC4vwme7uAG0NlicPA0iT7sDNBpoKWqZReC
|
||||
F7s46VfzAzFvgHyRmx3AAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtn_Record.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJXSURBVDhPtZJfSJNRGMY/6MJuiv5QV10VRDdRRFBdZBS2
|
||||
wmaLRWKLVouYk5RNlrWt1Jw6dOl0adoWzW2oTWclikrREFqOzEpjW/RHos3Itax9m5tzWTzxHZnyqRBd
|
||||
9MDDuXjP83vf83Io6n/I2a2B454anU1KLKwt0tPBIXQ018y5qfoUQoEWRAO34fdW4ZKYg5pyOW5qVdCX
|
||||
FywGMqE4bUci3I54qBXWRjliExaUXcnFmwEFruZyoRDtRMB5BhO9GyEVHmVDGAATToRtaNCcxrCrCvTn
|
||||
Oox7VfjoOocuIw/ZglS0FG7AyxoKOSePsAHtlupZAH0X2kIhiuVZUOVl4nIOH3IxDzIRFxJBGmqlmwgg
|
||||
Kz2VDWg1aTFNt2E6aEBsrALB13nwWNYSu81rMNy4As/1KSTMOG3PdjbAatBgKtiEKV8pYm8vIPrqOOju
|
||||
ldCZe1Fh6MS1G21QaK2QqY3IVuohzK9kA0z1akz69Yh6xZgc4iLyZAe+PlhHwkklZn4hFI7DNx5CpqQE
|
||||
GWdV8xCjrgj0u1JEBjmI9G9FuG89/GaKdGZkuu8kNtgccI8GSPjRgAeH+KJZSH2lEt9HLiLs2AK6ZzWC
|
||||
9hSM3qHI2D9nfuNHJA7flxDcHwJwjXxCukAGDl+EA4ePIXXvPlC1ZQUIPpOA7lmFbx3LMda8DJ4GClK1
|
||||
kYydnOCWzYE6ax+6+j3kZLx722ZQ14vzyQdJbjlpsVLP6vzY9Z6E7Q+HYet9MQ9gpCs6D6mQBxH/IDL2
|
||||
7yIFZtvMm5PdlvIcYCmdkJSQC3/zwtw/6w/y9PJ0ELb+pAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsBtn_ExpandNode.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAEoSURBVDhPxZAhj4NAEIX7l/gLuJPtP2hQJxvU2QZV2aCQ
|
||||
TTDIJpizTdYgSTCViBGVFSMqXvN2WbphW3fJTfICDPO+ebur1V9Ue1EkXxnKsyKv1D7bDlZl43rZQbDZ
|
||||
C9KfSTvBC9A5gDfxPRR7BUGnCVYpku8hBoRiDTcHozk7qt3qlWwDgOlkNrGWsOEq7scD0AfQ/g62/0pw
|
||||
cQ1fpp8M4fdk1jtQn817gIxqh6MEvYAz3ExzDJgihWL5O+ARuF3ugNyAuokAruFrCWMCbx7GNwAfyR6h
|
||||
E7txVi8wXRC/MSg/Ad4lSNfuCG67wlz1MyBUeAe8QEanue0V5amNAXbL6LSE8Qic4WaaIwAbjLrZ5sj3
|
||||
JYpj7QarGsWhRrYrkK5zOxOCZ8C/1hOIQgeeYXTusQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="StuMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>133, 21</value>
|
||||
</metadata>
|
||||
<metadata name="CmsPlanGrid.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>235, 17</value>
|
||||
</metadata>
|
||||
<data name="MsiGridRowBlockInsert.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAANhJREFUOE+tUi0PwjAU3F/iL+Cw+wekCkmmZknV5FI1SVIzuaRmdskMkmQGiZiY
|
||||
nHgCceR10JAG9pFxyane3ct7vSBYC1M20EUNnQ9UZwOZGvi6n8AH6DFQpnphwMtIPdD2QBSr+QHvqWy0
|
||||
7IDwIOcHbHYC3+jrVkNlBky+j0wUxFFa+jofTsBmXq+5A/UNMBeCLmk0gB8debI1XgFdEWROEOl4AMMJ
|
||||
opOyRlUQoowQJoRt3E4GOPC+/qHtsU3VwJS1a+PQxKVF+ncTxeom7qf/18E/ytImPgFdqxqYZ0UkZwAA
|
||||
AABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="MsiGridRowBlockDelete.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAAN1JREFUOE9jYKAG2Hbwwv+1O0/9X7zh0P+Zy3b9nzBv8//e2ev/o6vDCdbtOv0f
|
||||
BL58//f/8ds//y89+vXf1DOZeAPmr9mPovn4rZ//ncLyiTdgwryNYBtBGKRxxsLVcDx5zvL/XVMX/m/q
|
||||
mYViIAsTC24LQBoP3/jzf9u5n/+XHvz2f9LmT2DDQZrQMbpeMADZuO7Ej//tyx78L515939Kzx2MMEHR
|
||||
jB4Lla1TwF6BeQuGkQ1AAdhiISK7CbcGdIAtFvDaiA5ABqA7lyQDsHmBJAMo9gJyQiLLCwMKAIGPAPoV
|
||||
xeALAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsBtn_CheckAction.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAAGNJREFUOE+lzMEJADEIRFFr2lq2nO0kvdmADXjb4EEIY1RCBv7NJ9H13u8/bsXM
|
||||
HBKRkKr2GJHDFiOynkE9RuSwxX64gyXG4wzaWpzBEuMDhCX24wym2I/XdgsYUQZtAR93uwnUrvqqK2la
|
||||
WwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsBtn_UncheckAction.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAAFNJREFUOE+ly8ENACAIBEGLtBxrpQEa4Kfxp6fAGTfZ55TyXW39+RWLiLuqbtMY
|
||||
oZlx+AYp7MEURzDEGXQxA2cHZmGKEa0wxIgQuhjRDc4O/PxvA9b+IgeMUL95AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsmiDebugStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAALxJREFUOE+tk4ENxCAIRdmJndiJBW6YC8PcBlw+WkVizTU5kp9Yy38gtkT/DhZz
|
||||
VshDBGFPzGvuEpdJrGmYs8RcbQMSNZduXioXc4jVX+/PhOAhqnczIKvZmi4AjsM6AfW8LuR6QboBe0a0
|
||||
QBTQ1j8qzIpIHpADYA71BgBhNr8DUrUsJJ4BvA7ocQex2AAw3LxXAWOIsUhdVPMWkK9x18VRnK/wKYS1
|
||||
zeUu4iXaq8YYWvmET4EW2//RdDJ+AdNswjzahYpaAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsmiDebugEnd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAAHpJREFUOE+9kTsOwCAMQzNxbhbOnSqoocZ8Ujr0SRmo7JcKRBaklHQ3nB+wUCml
|
||||
GxTYmTsVDnFZcj4XYPmVQFQ7iX+bCnBj22RhkIQCLwxzh0MBD5e3AqaGoRzeAYNb8RX+EzgoCgSq63lk
|
||||
G0EMCtofneCCT2WjuwviAtoUGxZ57ZXzAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsmiDebugContinue.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAYAAADQWvz5AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAALhJREFUOE+l1LsNwyAQgGGPkFEyAz07pHDPCqlYI0MwBVUa+tSIgoZHeclFQiIn
|
||||
BzD8EpXhkyweW0oJUko+hHDdVkJICAHWWp9zvtHvwyHEGIN938E5B9NYgQpmjIEY453O61ZDODjnBXvQ
|
||||
uc0oVDCt9Rfz3l/omsOOoDKUUrijzyGsBZ3CelDBYowvuvanHiSlHDuwLWj4t7B/0CkEo9DU1mM1NH0Y
|
||||
sfquTV8PDKHlC4shtPyEfHoD0XQ+lbNEzJUAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="TsmiDebugStep.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAYAAADQWvz5AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAATxJREFUOE+tlLFugzAQhvMIfYQ+Qh+hYkfKytaBncxMnVgjdqSOjB3Y6czURygr
|
||||
YvDC2aOrz8KR4wS1kbD0S9bd+buz7+CgtT4f9lhaaysiH7H94QWo73urtf5USj3F/n8vQEmS2K7rgH1v
|
||||
wYwxbyLyFQrbJcCDUNM0DmaMeY4haBxHF4PYi8jxAgtBqKoqYGpZlhf8BBODjcM+jj02fC42BnnYNE0O
|
||||
RiPqunY2DqdparMsc/uyLG3btgDPd0Eoz3M7z7PLykFsQEL5OBH52QT5yshcFIU7EPux4YOxCfIV0R2q
|
||||
Yh/CAPiKibkLCh+c+1OVh/AuQKJkpxtQ3DXaG1YzDINTCHIjEILWDtzMESNAF5kfHpZE68wpY8zr1Rz9
|
||||
NdnrNXmPk4i8h1W79ci3RqXEeF05Ae319e/yP/oF9/8g1rKWugAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>50</value>
|
||||
</metadata>
|
||||
</root>
|
||||
901
UTS_Core/UTSModule/Station/FrmStationPlan.vb
Normal file
901
UTS_Core/UTSModule/Station/FrmStationPlan.vb
Normal file
@@ -0,0 +1,901 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Threading
|
||||
Imports System.Windows.Forms
|
||||
Imports UTS_Core.DebugLog
|
||||
Imports UTS_Core.UTSModule.Test
|
||||
Imports UTS_Core.UTSModule.Test.Command
|
||||
Imports UTS_Core.UTSModule.Test.StatusMonitor
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class FrmStationPlan
|
||||
Implements IUtsTest
|
||||
Implements IProcessStation
|
||||
Implements IProductionLine
|
||||
|
||||
Private _utsApp As UtsAppForm
|
||||
|
||||
#Region "初始化"
|
||||
Public Property StationPlan() As StationTestPlan
|
||||
|
||||
Private _planGrid As StationPlanGrid
|
||||
|
||||
Private _nodeGrid As RowNodeGrid
|
||||
|
||||
''' <summary>
|
||||
''' 显示窗体
|
||||
''' </summary>
|
||||
''' <param name="parentControl"></param>
|
||||
Public Sub ShowForm(parentControl As Control)
|
||||
FormBorderStyle = FormBorderStyle.None
|
||||
TopLevel = False
|
||||
Dock = DockStyle.Fill
|
||||
Parent = parentControl
|
||||
Enabled = StationPlan IsNot Nothing
|
||||
|
||||
Show()
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 产线变化
|
||||
''' </summary>
|
||||
Public Sub ProductionLineChanged() Implements IProductionLine.ProductionLineChanged
|
||||
'Todo:产线变化代码
|
||||
ApplicationLog.WriteInfoLog($"编辑页面生产线变更中。")
|
||||
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面生产线变更完成。")
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 测试站修改时处理函数
|
||||
''' </summary>
|
||||
Public Sub Station_Changed() Implements IProcessStation.StationChanged
|
||||
ApplicationLog.WriteInfoLog($"编辑页面站位变更中,PN:{_utsApp.ProcessStation.ParentProject.Name} - SN:{_utsApp.ProcessStation.Name} - TP:{_utsApp.ProcessStation.Packet.Name}!")
|
||||
|
||||
StationPlan = CType(_utsApp.ProcessStation.Packet.StationPlan, StationTestPlan)
|
||||
|
||||
Enabled = StationPlan IsNot Nothing
|
||||
|
||||
If StationPlan IsNot Nothing Then
|
||||
_planGrid.HeadNode = StationPlan.HeadNode
|
||||
_planGrid.UpdateGrid()
|
||||
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.None
|
||||
|
||||
_tester.ProcessStation = _utsApp.ProcessStation
|
||||
End If
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面站位变更完成。")
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 初始化行节点的风格
|
||||
''' </summary>
|
||||
Private Sub InitRowNodeStyles()
|
||||
If IO.File.Exists(UtsPath.NodeStylePath()) Then
|
||||
RowNode.LoadNodeStyles(UtsPath.NodeStylePath())
|
||||
Else
|
||||
RowNode.InitNodeStyles()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub InitStationPlanGrid()
|
||||
_planGrid = New StationPlanGrid With {
|
||||
.Grid = GrdStationPlan}
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub InitRowNodeGrid()
|
||||
_nodeGrid = New RowNodeGrid With {
|
||||
.Grid = GrdRowNode,
|
||||
.RtxColTip = RtxColTip}
|
||||
|
||||
AddHandler _planGrid.PlanNodeSelectChanged, AddressOf PlanGridSelectChanged
|
||||
AddHandler _planGrid.PlanGridCommandChanged, AddressOf PlanGridCommandChanged
|
||||
'todo:检测撤销队列的变化
|
||||
|
||||
AddHandler _planGrid.PlanNodeSelectChanged, AddressOf _nodeGrid.Grid_PlanNodeSelectChanged
|
||||
AddHandler _planGrid.RowNodeTextChanged, AddressOf _nodeGrid.Grid_RowNodeTextChanged
|
||||
|
||||
AddHandler _nodeGrid.RowNodeTextChanged, AddressOf _planGrid.Grid_RowNodeTextChanged
|
||||
End Sub
|
||||
|
||||
Private Sub FrmStationPlan_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
ApplicationLog.WriteInfoLog($"编辑页面加载中。")
|
||||
|
||||
'初始化UTS窗体信息,失败则关闭窗体
|
||||
If InitializeUtsApp() = False Then Return
|
||||
|
||||
'初始化窗体页面
|
||||
InitializeForm()
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面加载完成。")
|
||||
End Sub
|
||||
|
||||
Public Sub PlanGridSelectChanged(sender As Object, ByVal e As PlanNodeSelectChangedEventArgs)
|
||||
TsBtnBackward.Enabled = _planGrid.CanBackward
|
||||
TsBtnForward.Enabled = _planGrid.CanForward
|
||||
|
||||
'表格移动
|
||||
If GrdStationPlan Is Nothing OrElse GrdStationPlan.Tree.SelectedNode Is Nothing Then Return
|
||||
Dim canMove As Boolean = True
|
||||
Dim startMoveRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim moveRows As Integer = GrdStationPlan.Selection.LastRow - GrdStationPlan.Selection.FirstRow + 1
|
||||
Dim startLever As Integer = GrdStationPlan.Tree.FindNode(startMoveRow).Level
|
||||
For i As Integer = startMoveRow To startMoveRow + moveRows - 1
|
||||
If startLever <> GrdStationPlan.Tree.FindNode(startMoveRow).Level Then
|
||||
canMove = False
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
TsBtnMoveDown.Enabled = canMove
|
||||
TsBtnMoveLeft.Enabled = canMove
|
||||
TsBtnMoveRight.Enabled = canMove
|
||||
TsBtnMoveUp.Enabled = canMove
|
||||
End Sub
|
||||
|
||||
Public Sub PlanGridCommandChanged(sender As Object, e As EventArgs)
|
||||
TsBtnUndo.Enabled = _planGrid.CanUndo
|
||||
TsBtnRedo.Enabled = _planGrid.CanRedo
|
||||
|
||||
MsiUndo.Enabled = _planGrid.CanUndo
|
||||
MsiRedo.Enabled = _planGrid.CanRedo
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function InitializeUtsApp() As Boolean
|
||||
_utsApp = UtsAppForm.CreateSingleton()
|
||||
_utsApp.AddStatisticsObserver(Me)
|
||||
|
||||
Try
|
||||
If _utsApp.IsInitialized = False Then
|
||||
_utsApp.Initialize() 'Todo:可根据需要限定可选站位
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"初始化窗体失败,原因:{ex.Message}!")
|
||||
|
||||
MsgBox($"初始化窗体失败,原因:{ex.Message}")
|
||||
Close()
|
||||
Return False
|
||||
End Try
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub InitializeForm()
|
||||
InitRowNodeStyles()
|
||||
|
||||
InitStationPlanGrid()
|
||||
|
||||
InitRowNodeGrid()
|
||||
|
||||
InitTester()
|
||||
End Sub
|
||||
|
||||
Private Sub ClearText()
|
||||
If RtxOutputInfo.InvokeRequired Then '判断是否需要开委托
|
||||
RtxOutputInfo.Invoke(New Action(AddressOf ClearText))
|
||||
Return
|
||||
End If
|
||||
|
||||
RtxOutputInfo.Clear()
|
||||
End Sub
|
||||
|
||||
Private Sub AppendText(cor As Color, txt As String)
|
||||
If RtxOutputInfo.InvokeRequired Then '判断是否需要开委托
|
||||
RtxOutputInfo.Invoke(New Action(Of Color, String)(AddressOf AppendText), New Object() {cor, txt})
|
||||
Return
|
||||
End If
|
||||
|
||||
RtxOutputInfo.SelectionColor = cor
|
||||
RtxOutputInfo.AppendText($"{Now:[HH:mm:ss:fff}]-{txt}{vbCrLf}")
|
||||
RtxOutputInfo.ScrollToCaret()
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 快捷键操作
|
||||
''' </summary>
|
||||
''' <param name="sender"></param>
|
||||
''' <param name="e"></param>
|
||||
Private Sub TvwStationPlan_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
|
||||
If e.Modifiers = Keys.Control Then
|
||||
Select Case e.KeyCode
|
||||
Case Keys.O '加载
|
||||
LoadTreeViewFormXml()
|
||||
Case Keys.S '保存
|
||||
ExportTreeViewToXml()
|
||||
End Select
|
||||
ElseIf e.Modifiers = Keys.Alt Then
|
||||
Select Case e.KeyCode
|
||||
Case Keys.O '加载指定节点文件
|
||||
LoadNodeFile(_planGrid.ActiveNode)
|
||||
Case Keys.S '保存指定节点
|
||||
SaveNodeFile(_planGrid.ActiveNode)
|
||||
End Select
|
||||
|
||||
ElseIf e.Modifiers = Keys.None Then
|
||||
|
||||
End If
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "增删节点"
|
||||
|
||||
''' <summary>
|
||||
''' 读取XML,加载树状视图
|
||||
''' </summary>
|
||||
Private Sub LoadTreeViewFormXml()
|
||||
Dim revStationPlanPath As String = $"{UtsPath.GetStationPacketTestPlanDirPath(StationPlan.ParentPacket.Name)}\Main.xml"
|
||||
|
||||
Try
|
||||
StationPlan.LoadFile(revStationPlanPath)
|
||||
_planGrid.UpdateGrid()
|
||||
' _planGrid.GridUpdateEventTrigger(GrdStationPlan) '笨方法,开始就触发一次刷新
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.None
|
||||
|
||||
If StationEditStatusMonitor.StationEditStatus <> StationEditStatusMonitor.StationEditStatusEnum.Saved Then
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"加载测试站流程发生错误,原因:{ex.Message}")
|
||||
MsgBox($"加载测试站流程发生错误,原因:{ex.Message}")
|
||||
StationPlan.CreateStationPlan()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 读取XML,加载树状视图
|
||||
''' </summary>
|
||||
Private Sub LoadTreeViewFormXml(revStationPlanPath As String)
|
||||
Try
|
||||
StationPlan.LoadFile(revStationPlanPath)
|
||||
_planGrid.UpdateGrid()
|
||||
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.None
|
||||
|
||||
If StationEditStatusMonitor.StationEditStatus <> StationEditStatusMonitor.StationEditStatusEnum.Saved Then
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
|
||||
End If
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"加载测试站流程发生错误,原因:{ex.Message}")
|
||||
MsgBox($"加载测试站流程发生错误,原因:{ex.Message}")
|
||||
StationPlan.CreateStationPlan()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 将树状视图导出为Xml
|
||||
''' </summary>
|
||||
Private Sub ExportTreeViewToXml()
|
||||
'保存至项目文件
|
||||
Dim revStationPlanPath As String = $"{UtsPath.GetStationPacketTestPlanDirPath(StationPlan.ParentPacket.Name)}\Main.xml"
|
||||
StationPlan.SaveFile(revStationPlanPath)
|
||||
|
||||
'备份至临时文件
|
||||
Dim tempPath As String = $"{UtsPath.StationDesignDirPath()}\Main.xml"
|
||||
StationPlan.SaveFile(tempPath)
|
||||
|
||||
If StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Changed Then
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnMoveUp_Click(sender As Object, e As EventArgs) Handles TsBtnMoveUp.Click
|
||||
If GrdStationPlan Is Nothing OrElse GrdStationPlan.Tree.SelectedNode Is Nothing Then Return
|
||||
|
||||
Dim startMoveRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim moveRows As Integer = GrdStationPlan.Selection.LastRow - GrdStationPlan.Selection.FirstRow + 1
|
||||
_planGrid.NodeMoveUp(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnMoveDown_Click(sender As Object, e As EventArgs) Handles TsBtnMoveDown.Click
|
||||
If GrdStationPlan Is Nothing OrElse GrdStationPlan.Tree.SelectedNode Is Nothing Then Return
|
||||
|
||||
Dim startMoveRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim moveRows As Integer = GrdStationPlan.Selection.LastRow - GrdStationPlan.Selection.FirstRow + 1
|
||||
_planGrid.NodeMoveDown(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnMoveLeft_Click(sender As Object, e As EventArgs) Handles TsBtnMoveLeft.Click
|
||||
If GrdStationPlan Is Nothing OrElse GrdStationPlan.Tree.SelectedNode Is Nothing Then Return
|
||||
|
||||
Dim startMoveRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim moveRows As Integer = GrdStationPlan.Selection.LastRow - GrdStationPlan.Selection.FirstRow + 1
|
||||
_planGrid.NodeMoveLeft(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnMoveRight_Click(sender As Object, e As EventArgs) Handles TsBtnMoveRight.Click
|
||||
If GrdStationPlan Is Nothing OrElse GrdStationPlan.Tree.SelectedNode Is Nothing Then Return
|
||||
|
||||
Dim startMoveRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim moveRows As Integer = GrdStationPlan.Selection.LastRow - GrdStationPlan.Selection.FirstRow + 1
|
||||
_planGrid.NodeMoveRight(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnOpen_Click(sender As Object, e As EventArgs) Handles TsBtnOpen.Click
|
||||
Using xml As New OpenFileDialog
|
||||
xml.Filter = $"流程文件(*.xml)|*.xml"
|
||||
|
||||
If xml.ShowDialog() = DialogResult.OK Then
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程正在加载{xml.FileName}")
|
||||
LoadTreeViewFormXml(xml.FileName)
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程加载完成。")
|
||||
End If
|
||||
End Using
|
||||
|
||||
_planGrid.ClearNavigation()
|
||||
_planGrid.ClearCommand()
|
||||
|
||||
PlanGridSelectChanged(Nothing, Nothing)
|
||||
PlanGridCommandChanged(Nothing, Nothing)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnLoad_Click(sender As Object, e As EventArgs) Handles TsBtnLoad.Click
|
||||
If MsgBox("重载会将流程返回为上一次保存的流程状态,是否继续", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程重载中。")
|
||||
LoadTreeViewFormXml()
|
||||
_planGrid.ClearNavigation()
|
||||
_planGrid.ClearCommand()
|
||||
PlanGridSelectChanged(Nothing, Nothing)
|
||||
PlanGridCommandChanged(Nothing, Nothing)
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程重载完成。")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub TsBtnSave_Click(sender As Object, e As EventArgs) Handles TsBtnSave.Click
|
||||
'记录名称重名检测
|
||||
If _planGrid.CheckRecordDuplicateName() = False Then Return
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程保存中。")
|
||||
ExportTreeViewToXml()
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程保存完成。")
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "保存与读取节点文件"
|
||||
|
||||
Private Sub SaveNodeFile(node As RowNode)
|
||||
If node Is Nothing Then Return
|
||||
|
||||
Using dialog As New SaveFileDialog
|
||||
dialog.Title = $"请输入需要保存节点的文件名"
|
||||
dialog.AddExtension = True
|
||||
dialog.Filter = $"节点文件(*.xml)|*.xml"
|
||||
If dialog.ShowDialog() <> DialogResult.OK Then Return
|
||||
|
||||
node.ExportToXml(dialog.FileName)
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
Private Sub LoadNodeFile(node As RowNode)
|
||||
If node Is Nothing Then Return
|
||||
|
||||
Using dialog As New OpenFileDialog
|
||||
dialog.Title = $"请选择需要加载的节点文件"
|
||||
dialog.Filter = $"节点文件(*.xml)|*.xml"
|
||||
dialog.Multiselect = False
|
||||
If dialog.ShowDialog() <> DialogResult.OK Then Return
|
||||
|
||||
Dim childRowNode As New RowNode
|
||||
childRowNode.LoadFormXml(dialog.FileName)
|
||||
|
||||
_planGrid.NodesAdd(childRowNode)
|
||||
|
||||
If node.Expanded = False Then node.Expand() '展开当前节点
|
||||
End Using
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub MsiSaveNodeFile_Click(sender As Object, e As EventArgs) Handles MsiSaveNodeFile.Click
|
||||
SaveNodeFile(_planGrid.ActiveNode)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub MsiLoadNodeFile_Click(sender As Object, e As EventArgs) Handles MsiLoadNodeFile.Click
|
||||
LoadNodeFile(_planGrid.ActiveNode)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "调试反馈"
|
||||
Private Sub TestStart(sender As Object, e As EventArgs) Implements IUtsTest.TestStart
|
||||
If _tester.DebugMode = False Then Return
|
||||
ClearText()
|
||||
AppendText(Color.Blue, $"TestStart!{vbCrLf}")
|
||||
End Sub
|
||||
|
||||
Private Sub TestPass(sender As Object, e As EventArgs) Implements IUtsTest.TestPass
|
||||
If _tester.DebugMode = False Then Return
|
||||
AppendText(Color.Blue, $"TestPass!{vbCrLf}")
|
||||
End Sub
|
||||
|
||||
Private Sub TestFail(sender As Object, e As TestFailEventArgs) Implements IUtsTest.TestFail
|
||||
If _tester.DebugMode = False Then Return
|
||||
AppendText(Color.Blue, $"TestFail!{vbCrLf}")
|
||||
End Sub
|
||||
|
||||
Private Sub TestPause(sender As Object, e As TestPauseEventArgs) Implements IUtsTest.TestPause
|
||||
If _tester.DebugMode = False Then Return
|
||||
AppendText(Color.Blue, $"TestPause!{vbCrLf}")
|
||||
End Sub
|
||||
|
||||
Private Sub TestEnd(sender As Object, e As TestEndEventArgs) Implements IUtsTest.TestEnd
|
||||
If _tester.DebugMode = False Then Return
|
||||
AppendText(Color.Blue, $"TestEnd!{vbCrLf}")
|
||||
End Sub
|
||||
|
||||
Private Sub TestNodeChanged(sender As Object, e As TestNodeChangedEventArgs) Implements IUtsTest.TestNodeChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
If GrdStationPlan.InvokeRequired Then '判断是否需要开委托
|
||||
GrdStationPlan.Invoke(New Action(Of Object, TestNodeChangedEventArgs)(AddressOf TestNodeChanged), New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
AppendText(Color.Black, $"Row:{e.Node.RowListIndex};Desc:{e.Node.Description}")
|
||||
|
||||
_planGrid.TestNodeChanged(e.Node)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub TestNodeResultChanged(sender As Object, e As TestNodeResultChangedEventArgs) Implements IUtsTest.TestNodeResultChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
If GrdStationPlan.InvokeRequired Then '判断是否需要开委托
|
||||
GrdStationPlan.Invoke(New Action(Of Object, TestNodeResultChangedEventArgs)(AddressOf TestNodeResultChanged), New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim cor As Color
|
||||
If e.TestReturn.ExecuteResult Then
|
||||
cor = Color.Green
|
||||
Else
|
||||
cor = Color.Red
|
||||
End If
|
||||
'Dim txt As String = $"Result:{e.TestReturn.ExecuteResult};Retrun:{e.TestReturn.RecordValue};Lower:{e.TestReturn.LowerLimit};Upper:{e.TestReturn.UpperLimit};Tip:{e.TestReturn.ExecuteResultTipString}{vbCrLf}"
|
||||
'Momo 2023-12-15 提示信息增加两个标准显示
|
||||
Dim txt As String = $"Result:{e.TestReturn.ExecuteResult}; Retrun:{e.TestReturn.RecordValue}; Lower_1:{e.TestReturn.LowerLimit};Upper_1:{e.TestReturn.UpperLimit}; Lower_2:{e.TestReturn.LowerLimit_2};Upper_2:{e.TestReturn.UpperLimit_2}; Tip:{e.TestReturn.ExecuteResultTipString}{vbCrLf}"
|
||||
|
||||
AppendText(cor, txt)
|
||||
|
||||
_planGrid.NodeCompleted(e.Node, e.TestReturn)
|
||||
End Sub
|
||||
|
||||
Private Sub TestNodeCompleted(sender As Object, e As TestNodeCompletedEventArgs) Implements IUtsTest.TestNodeCompleted
|
||||
If _tester.DebugMode = False Then Return
|
||||
If GrdStationPlan.InvokeRequired Then '判断是否需要开委托
|
||||
GrdStationPlan.Invoke(New Action(Of Object, TestNodeCompletedEventArgs)(AddressOf TestNodeCompleted), New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
Dim cor As Color
|
||||
If e.TestReturn.ExecuteResult Then
|
||||
cor = Color.Green
|
||||
Else
|
||||
cor = Color.Red
|
||||
End If
|
||||
'Dim txt As String = $"Result:{e.TestReturn.ExecuteResult};Retrun:{e.TestReturn.RecordValue};Lower:{e.TestReturn.LowerLimit};Upper:{e.TestReturn.UpperLimit};Tip:{e.TestReturn.ExecuteResultTipString}{vbCrLf}"
|
||||
'Momo 2023-12-15 提示信息增加两个标准显示
|
||||
Dim txt As String = $"Result:{e.TestReturn.ExecuteResult}; Retrun:{e.TestReturn.RecordValue}; Lower_1:{e.TestReturn.LowerLimit};Upper_1:{e.TestReturn.UpperLimit}; Lower_2:{e.TestReturn.LowerLimit_2};Upper_2:{e.TestReturn.UpperLimit_2}; Tip:{e.TestReturn.ExecuteResultTipString}{vbCrLf}"
|
||||
|
||||
AppendText(cor, txt)
|
||||
|
||||
_planGrid.NodeCompleted(e.Node, e.TestReturn)
|
||||
End Sub
|
||||
|
||||
Private Sub TestStatusChanged(sender As Object, e As TestStatusChangedEventArgs) Implements IUtsTest.TestStatusChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
If StuMain.InvokeRequired Then '判断是否需要开委托
|
||||
StuMain.Invoke(New Action(Of Object, TestStatusChangedEventArgs)(AddressOf TestStatusChanged), New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
Select Case e.Status
|
||||
Case TestStatusMonitor.TestStatusEnum.WaitForTest
|
||||
TssLblTestStatus.ForeColor = Color.Gray
|
||||
TssLblTestStatus.Text = $"未测试"
|
||||
Case TestStatusMonitor.TestStatusEnum.Testing
|
||||
TssLblTestStatus.ForeColor = Color.Blue
|
||||
TssLblTestStatus.Text = $"测试中"
|
||||
Case TestStatusMonitor.TestStatusEnum.TestPass
|
||||
TssLblTestStatus.ForeColor = Color.Green
|
||||
TssLblTestStatus.Text = $"测试成功"
|
||||
Case TestStatusMonitor.TestStatusEnum.TestFail
|
||||
TssLblTestStatus.ForeColor = Color.Red
|
||||
TssLblTestStatus.Text = $"测试失败"
|
||||
Case TestStatusMonitor.TestStatusEnum.DeviceError
|
||||
TssLblTestStatus.ForeColor = Color.DarkRed
|
||||
TssLblTestStatus.Text = $"设备错误"
|
||||
Case Else
|
||||
Console.WriteLine($"UpdateTestStatus Unknown:{e.Status}")
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
Private Sub TestTimeChanged(sender As Object, e As TestTimeEventArgs) Implements IUtsTest.TestTimeChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
If StuMain.InvokeRequired Then '判断是否需要开委托
|
||||
StuMain.Invoke(New Action(Of Object, TestTimeEventArgs)(AddressOf TestTimeChanged), New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
TssLblTestTime.Text = $"TimeExpend:{e.TimeElapsed.Hours:D2}:{e.TimeElapsed.Minutes:D2}:{e.TimeElapsed.Seconds:D2}:{e.TimeElapsed.Milliseconds:D3}"
|
||||
End Sub
|
||||
|
||||
Private Sub TestProgressChanged(sender As Object, e As TestProgressChangedEventArgs) Implements IUtsTest.TestProgressChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
If StuMain.InvokeRequired Then '判断是否需要开委托
|
||||
StuMain.Invoke(New Action(Of Object, TestProgressChangedEventArgs)(AddressOf TestProgressChanged), New Object() {sender, e})
|
||||
Return
|
||||
End If
|
||||
|
||||
If e.Percent < TssBarTestProgress.Minimum Then e.Percent = TssBarTestProgress.Minimum
|
||||
If e.Percent > TssBarTestProgress.Maximum Then e.Percent = TssBarTestProgress.Maximum
|
||||
TssBarTestProgress.Value = CType(e.Percent, Integer)
|
||||
End Sub
|
||||
|
||||
Private Sub RetryProgressChanged(sender As Object, e As TestProgressChangedEventArgs) Implements IUtsTest.RetryProgressChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
AppendText(Color.Blue, $"重试剩余:{e.Percent:F2}%")
|
||||
End Sub
|
||||
|
||||
Public Sub TestCountChanged(sender As Object, e As TestCountChangedEventArgs) Implements IUtsTest.TestCountChanged
|
||||
If _tester.DebugMode = False Then Return
|
||||
AppendText(Color.Blue, $"当前测试总数:{e.Count},成功数:{e.PassCount},失败数:{e.FailCount}")
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "调试模式"
|
||||
Private _tester As UtsTester
|
||||
|
||||
Private Sub InitTester()
|
||||
_tester = UtsTester.CreateTester()
|
||||
|
||||
AddHandler _tester.TestStart, AddressOf TestStart
|
||||
AddHandler _tester.TestPass, AddressOf TestPass
|
||||
AddHandler _tester.TestFail, AddressOf TestFail
|
||||
AddHandler _tester.TestPause, AddressOf TestPause
|
||||
AddHandler _tester.TestEnd, AddressOf TestEnd
|
||||
|
||||
AddHandler _tester.TestStatusChanged, AddressOf TestStatusChanged
|
||||
|
||||
AddHandler _tester.TestNodeChanged, AddressOf TestNodeChanged
|
||||
AddHandler _tester.TestNodeCompleted, AddressOf TestNodeCompleted
|
||||
AddHandler _tester.TestNodeResultChanged, AddressOf TestNodeResultChanged
|
||||
|
||||
AddHandler _tester.TestProgressChanged, AddressOf TestProgressChanged
|
||||
AddHandler _tester.RetryProgressChanged, AddressOf RetryProgressChanged
|
||||
|
||||
AddHandler _tester.TestTimeChanged, AddressOf TestTimeChanged
|
||||
|
||||
AddHandler StationEditStatusMonitor.StationEditStatusChanged, AddressOf _tester.StationEditStatusChanged
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 调试模式
|
||||
''' </summary>
|
||||
Private Sub TsBtnDebugMode_Click(sender As Object, e As EventArgs) Handles TsBtnDebugMode.Click
|
||||
Static editMode As Boolean = False
|
||||
editMode = Not editMode
|
||||
|
||||
_planGrid.DebugMode = editMode
|
||||
TsBtnDebugMode.Text = $"{IIf(editMode, $"编辑模式", $"调试模式")}"
|
||||
End Sub
|
||||
|
||||
Private _debugTest As Thread
|
||||
|
||||
|
||||
Private Sub TsBtnDebug_Click(sender As Object, e As EventArgs) Handles TsBtnDebugStart.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.StartDebugTest) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnFailMode_Click(sender As Object, e As EventArgs) Handles TsBtnFailMode.Click
|
||||
Static flg As Boolean = False
|
||||
flg = Not flg
|
||||
|
||||
If flg Then
|
||||
_tester.TestFailMode = UtsTester.TestFailModeEnum.AllFail
|
||||
TsBtnFailMode.Text = $"全部退出"
|
||||
Else
|
||||
_tester.TestFailMode = UtsTester.TestFailModeEnum.StepFail
|
||||
TsBtnFailMode.Text = $"单步退出"
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugStart_Click(sender As Object, e As EventArgs) Handles TsmiDebugStart.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.StartDebugTest) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub 执行1ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 执行1ToolStripMenuItem.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
'_planGrid.ClearDebug()
|
||||
StartDebugThread(AddressOf _tester.TestNode, _planGrid.ActiveNode)
|
||||
End Sub
|
||||
|
||||
Private Async Sub 执行2ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 执行2ToolStripMenuItem.Click
|
||||
'If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
' MsgBox($"请先退出当前调试后重试")
|
||||
' Return
|
||||
'End If
|
||||
|
||||
'_planGrid.ClearDebug()
|
||||
'StartDebugThread(AddressOf _tester.TestNode, _planGrid.ActiveNode)
|
||||
|
||||
' _planGrid.ClearDebug()
|
||||
|
||||
Dim row As Integer = _planGrid.ActiveNode.RowListIndex
|
||||
Dim result As TestCommandReturn = Await Task.Run(Function()
|
||||
Return _tester.TestNode(_planGrid.ActiveNode)
|
||||
End Function, _testerCancel)
|
||||
|
||||
If result IsNot Nothing AndAlso result.ExecuteResult Then _planGrid.SetRowFocus(row + 1)
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiStepDebug_Click(sender As Object, e As EventArgs) Handles TsmiDebugStep.Click
|
||||
_tester.StepTest()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiContinueDebug_Click(sender As Object, e As EventArgs) Handles TsmiDebugContinue.Click
|
||||
_tester.ContinueTest()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugEnd_Click(sender As Object, e As EventArgs) Handles TsmiDebugEnd.Click
|
||||
_tester.ExitTest()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugSetup_Click(sender As Object, e As EventArgs) Handles TsmiDebugSetup.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.TestSetupModule) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugMain_Click(sender As Object, e As EventArgs) Handles TsmiDebugMain.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.TestMainModule) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugPass_Click(sender As Object, e As EventArgs) Handles TsmiDebugPass.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.TestPassModule) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugFail_Click(sender As Object, e As EventArgs) Handles TsmiDebugFail.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.TestFailModule) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiDebugCleanup_Click(sender As Object, e As EventArgs) Handles TsmiDebugCleanup.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
_debugTest = New Thread(AddressOf _tester.TestCleanupModule) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private _testerCancel As New CancellationToken
|
||||
|
||||
Private Sub TsmiDebugNode_Click(sender As Object, e As EventArgs) Handles TsmiDebugNode.Click
|
||||
'If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
' MsgBox($"请先退出当前调试后重试")
|
||||
' Return
|
||||
'End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
|
||||
'Dim row As Integer = _planGrid.ActiveNode.RowListIndex
|
||||
'Dim result As TestCommandReturn = Await Task.Run(Function()
|
||||
' Return _tester.TestNode(_planGrid.ActiveNode)
|
||||
' End Function, _testerCancel)
|
||||
|
||||
'If result IsNot Nothing AndAlso result.ExecuteResult Then _planGrid.SetFocus(row + 1, StationPlanGrid.ColNames.Description)
|
||||
|
||||
|
||||
StartDebugThread(AddressOf _tester.TestNode, _planGrid.ActiveNode)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub TsmiDebugNodeBegin_Click(sender As Object, e As EventArgs) Handles TsmiDebugNodeBegin.Click
|
||||
If _debugTest IsNot Nothing AndAlso _debugTest.IsAlive Then
|
||||
MsgBox($"请先退出当前调试后重试")
|
||||
Return
|
||||
End If
|
||||
|
||||
_planGrid.ClearDebug()
|
||||
|
||||
StartDebugThread(AddressOf _tester.TestBeginWithNode, _planGrid.ActiveNode)
|
||||
End Sub
|
||||
|
||||
Private Sub StartDebugThread(start As ParameterizedThreadStart)
|
||||
_debugTest = New Thread(start) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start()
|
||||
End Sub
|
||||
|
||||
Private Sub StartDebugThread(start As ParameterizedThreadStart, parameter As Object)
|
||||
_debugTest = New Thread(start) With {
|
||||
.IsBackground = True
|
||||
}
|
||||
_debugTest.Start(parameter)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnSaveAs_Click(sender As Object, e As EventArgs) Handles TsBtnSaveAs.Click
|
||||
Using dlg As New SaveFileDialog
|
||||
dlg.Filter = "Excel 文件(*.xls)|*.xls|CSV 文件(*.csv)|*.csv|PDF 文件(*.pdf)|*.pdf|Flexcell 文件(*.flx)|*.flx"
|
||||
dlg.AddExtension = True
|
||||
If dlg.ShowDialog <> DialogResult.OK Then Return
|
||||
Cursor = Cursors.WaitCursor
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程导出中。")
|
||||
Try
|
||||
Select Case dlg.FilterIndex
|
||||
Case 1
|
||||
GrdStationPlan.ExportToExcel(dlg.FileName, True, True)
|
||||
Case 2
|
||||
GrdStationPlan.ExportToCSV(dlg.FileName, True, True)
|
||||
Case 3
|
||||
GrdStationPlan.ExportToPDF(dlg.FileName)
|
||||
Case 4
|
||||
GrdStationPlan.SaveFile(dlg.FileName)
|
||||
End Select
|
||||
|
||||
ApplicationLog.WriteInfoLog($"编辑页面执行流程导出完成。")
|
||||
Catch ex As Exception
|
||||
ApplicationLog.WriteErrorLog($"编辑页面执行流程导出失败,原因:{ex.Message}")
|
||||
MsgBox($"编辑页面执行流程导出失败,原因:{ex.Message}")
|
||||
End Try
|
||||
Cursor = Cursors.Arrow
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
Private Sub tslBtn_ActionOnly_Click(sender As Object, e As EventArgs) Handles tslBtn_ActionOnly.Click
|
||||
Static OnlyShowAction As Boolean = False
|
||||
OnlyShowAction = Not OnlyShowAction
|
||||
_planGrid.SetNodeActionShowMode(OnlyShowAction)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtn_Record_Click(sender As Object, e As EventArgs) Handles TsBtn_Record.Click
|
||||
Static OnlyShowRecord As Boolean = False
|
||||
OnlyShowRecord = Not OnlyShowRecord
|
||||
_planGrid.SetNodeRecordShowMode(OnlyShowRecord)
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtn_ExpandNode_Click(sender As Object, e As EventArgs) Handles TsBtn_ExpandNode.Click
|
||||
Static NodeExpand As Boolean = True
|
||||
NodeExpand = Not NodeExpand
|
||||
_planGrid.SetNodeExpand(NodeExpand)
|
||||
End Sub
|
||||
|
||||
Private Sub tsBtnInsertRow_Click(sender As Object, e As EventArgs) Handles tsBtnInsertRow.Click
|
||||
Dim tmpFrisRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim tmpLastRow As Integer = GrdStationPlan.Selection.LastRow
|
||||
Dim tempRowCount As Integer = tmpLastRow - tmpFrisRow + 1
|
||||
_planGrid.NodeAdd(tmpFrisRow, tempRowCount)
|
||||
End Sub
|
||||
|
||||
Private Sub tsBtnRemoveRow_Click(sender As Object, e As EventArgs) Handles tsBtnRemoveRow.Click
|
||||
Dim tmpFrisRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim tmpLastRow As Integer = GrdStationPlan.Selection.LastRow
|
||||
Dim tempRowCount As Integer = tmpLastRow - tmpFrisRow + 1
|
||||
_planGrid.NodeDel(tmpFrisRow, tempRowCount)
|
||||
End Sub
|
||||
|
||||
Private Sub MsiGridRowBlockInsert_Click(sender As Object, e As EventArgs) Handles MsiGridRowBlockInsert.Click
|
||||
tsBtnInsertRow.PerformClick()
|
||||
End Sub
|
||||
|
||||
Private Sub MsiGridRowBlockDelete_Click(sender As Object, e As EventArgs) Handles MsiGridRowBlockDelete.Click
|
||||
tsBtnRemoveRow.PerformClick()
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnCopyWholeRow_Click(sender As Object, e As EventArgs) Handles TsBtnBackward.Click
|
||||
_planGrid.BackwardNavigation()
|
||||
End Sub
|
||||
|
||||
Private Sub TsBtnPasteWholdRows_Click(sender As Object, e As EventArgs) Handles TsBtnForward.Click
|
||||
_planGrid.ForwardNavigation()
|
||||
End Sub
|
||||
|
||||
Private Sub tsBtn_CheckAction_Click(sender As Object, e As EventArgs) Handles tsBtn_CheckAction.Click
|
||||
Dim tmpFrisRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim tmpLastRow As Integer = GrdStationPlan.Selection.LastRow
|
||||
|
||||
_planGrid.Check_Uncheck_Action(GrdStationPlan, tmpFrisRow, tmpLastRow, True)
|
||||
End Sub
|
||||
|
||||
Private Sub tsBtn_UncheckAction_Click(sender As Object, e As EventArgs) Handles tsBtn_UncheckAction.Click
|
||||
Dim tmpFrisRow As Integer = GrdStationPlan.Selection.FirstRow
|
||||
Dim tmpLastRow As Integer = GrdStationPlan.Selection.LastRow
|
||||
|
||||
_planGrid.Check_Uncheck_Action(GrdStationPlan, tmpFrisRow, tmpLastRow, False)
|
||||
End Sub
|
||||
|
||||
Private Sub MsiUndo_Click(sender As Object, e As EventArgs) Handles MsiUndo.Click, TsBtnUndo.Click
|
||||
_planGrid.UndoCommand()
|
||||
End Sub
|
||||
|
||||
Private Sub MsiRedo_Click(sender As Object, e As EventArgs) Handles MsiRedo.Click, TsBtnRedo.Click
|
||||
_planGrid.RedoCommand()
|
||||
End Sub
|
||||
|
||||
Private Sub TsmiJumpCall_Click(sender As Object, e As EventArgs) Handles TsmiJumpCall.Click
|
||||
_planGrid.JumpCall()
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
#End Region
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -0,0 +1,94 @@
|
||||
Public Module CommandManager
|
||||
Private Property UndoCommands As New Stack(Of ICommand)
|
||||
|
||||
Private Property RedoCommands As New Stack(Of ICommand)
|
||||
|
||||
Private _isRunning As Boolean = False
|
||||
|
||||
''' <summary>
|
||||
''' 运行命令,并将命令添加至撤销堆栈
|
||||
''' </summary>
|
||||
''' <param name="command"></param>
|
||||
Public Sub RunCommand(command As ICommand)
|
||||
command.Redo()
|
||||
|
||||
AddUndoCommand(command)
|
||||
End Sub
|
||||
|
||||
|
||||
Public ReadOnly Property IsRuning() As Boolean
|
||||
Get
|
||||
Return _isRunning
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Function CanUndo() As Boolean
|
||||
Return UndoCommands.Count > 0
|
||||
End Function
|
||||
|
||||
Public Function CanRedo() As Boolean
|
||||
Return RedoCommands.Count > 0
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 将命令添加至撤销堆栈
|
||||
''' </summary>
|
||||
Public Sub AddUndoCommand(command As ICommand)
|
||||
UndoCommands.Push(command)
|
||||
|
||||
If RedoCommands.Count > 0 Then
|
||||
ClearRedoCommands()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 清空撤销命令堆栈
|
||||
''' </summary>
|
||||
Public Sub ClearUndoCommands()
|
||||
UndoCommands.Clear()
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 清空重做命令堆栈
|
||||
''' </summary>
|
||||
Public Sub ClearRedoCommands()
|
||||
RedoCommands.Clear()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 清空撤销与重做命令堆栈
|
||||
''' </summary>
|
||||
Public Sub ClearCommands()
|
||||
ClearUndoCommands()
|
||||
ClearRedoCommands()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 执行撤销命令
|
||||
''' </summary>
|
||||
Public Sub Undo()
|
||||
If UndoCommands.Count <= 0 Then Return
|
||||
_isRunning = True
|
||||
Dim command As ICommand = UndoCommands.Pop()
|
||||
command.Undo()
|
||||
RedoCommands.Push(command)
|
||||
_isRunning = False
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 执行重做命令
|
||||
''' </summary>
|
||||
Public Sub Redo()
|
||||
If RedoCommands.Count <= 0 Then Return
|
||||
_isRunning = True
|
||||
|
||||
Dim command As ICommand = RedoCommands.Pop()
|
||||
command.Redo()
|
||||
|
||||
UndoCommands.Push(command)
|
||||
_isRunning = False
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
@@ -0,0 +1,22 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
Public Class GridNodeAddCommand : Implements ICommand
|
||||
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly startMoveRow As Integer
|
||||
Private ReadOnly moveRows As Integer
|
||||
|
||||
Sub New(grd As StationPlanGrid, startMoveRow As Integer, moveRows As Integer)
|
||||
Me.grd = grd
|
||||
Me.startMoveRow = startMoveRow
|
||||
Me.moveRows = moveRows
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
grd.NodeAddCommand(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
grd.NodeDeleteCommand(startMoveRow, moveRows)
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,12 @@
|
||||
Public Class GridNodeCopyPasteCommand : Implements ICommand
|
||||
Public Sub New()
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
Throw New NotImplementedException()
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
Throw New NotImplementedException()
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,10 @@
|
||||
Public Class GridNodeCutPasteCommand : Implements ICommand
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
Throw New NotImplementedException()
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
Throw New NotImplementedException()
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,23 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
Public Class GridNodeDeleteCommand : Implements ICommand
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly startMoveRow As Integer
|
||||
Private ReadOnly moveRows As Integer
|
||||
Private ReadOnly nodes As List(Of RowNode)
|
||||
|
||||
Sub New(grd As StationPlanGrid, startMoveRow As Integer, moveRows As Integer, nodes As List(Of RowNode))
|
||||
Me.grd = grd
|
||||
Me.startMoveRow = startMoveRow
|
||||
Me.moveRows = moveRows
|
||||
Me.nodes = nodes
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
grd.NodeDeleteCommand(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
grd.NodeAddCommand(startMoveRow, moveRows, nodes)
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,23 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
Public Class GridNodeMoveDownCommand : Implements ICommand
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly startMoveRow As Integer
|
||||
Private ReadOnly moveRows As Integer
|
||||
Private ReadOnly moveEndRow As Integer
|
||||
|
||||
Sub New(grd As StationPlanGrid, startMoveRow As Integer, moveRows As Integer, moveEndRow As Integer)
|
||||
Me.grd = grd
|
||||
Me.startMoveRow = startMoveRow
|
||||
Me.moveRows = moveRows
|
||||
Me.moveEndRow = moveEndRow
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
grd.NodeMoveDownCommand(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
grd.NodeMoveUpCommand(moveEndRow, moveRows)
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,25 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
Public Class GridNodeMoveLeftCommand : Implements ICommand
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly startMoveRow As Integer
|
||||
Private ReadOnly moveRows As Integer
|
||||
Private ReadOnly moveEndRow As Integer
|
||||
Private ReadOnly moveRightNodeIndex As Integer
|
||||
|
||||
Sub New(grd As StationPlanGrid, startMoveRow As Integer, moveRows As Integer, moveEndRow As Integer, moveRightNodeIndex As Integer)
|
||||
Me.grd = grd
|
||||
Me.startMoveRow = startMoveRow
|
||||
Me.moveRows = moveRows
|
||||
Me.moveEndRow = moveEndRow
|
||||
Me.moveRightNodeIndex = moveRightNodeIndex
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
grd.NodeMoveLeftCommand(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
grd.NodeMoveRightCommand(moveEndRow, moveRows, moveRightNodeIndex)
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,25 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
Public Class GridNodeMoveRightCommand : Implements ICommand
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly startMoveRow As Integer
|
||||
Private ReadOnly moveRows As Integer
|
||||
Private ReadOnly moveEndRow As Integer
|
||||
Private ReadOnly moveRightNodeIndex As Integer
|
||||
|
||||
Sub New(grd As StationPlanGrid, startMoveRow As Integer, moveRows As Integer, moveEndRow As Integer, moveRightNodeIndex As Integer)
|
||||
Me.grd = grd
|
||||
Me.startMoveRow = startMoveRow
|
||||
Me.moveRows = moveRows
|
||||
Me.moveEndRow = moveEndRow
|
||||
Me.moveRightNodeIndex = moveRightNodeIndex
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
grd.NodeMoveRightCommand(startMoveRow, moveRows, moveRightNodeIndex)
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
grd.NodeMoveLeftCommand(moveEndRow, moveRows)
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,25 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
|
||||
Public Class GridNodeMoveUpCommand : Implements ICommand
|
||||
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly startMoveRow As Integer
|
||||
Private ReadOnly moveRows As Integer
|
||||
Private ReadOnly moveEndRow As Integer
|
||||
|
||||
Sub New(grd As StationPlanGrid, startMoveRow As Integer, moveRows As Integer, moveEndRow As Integer)
|
||||
Me.grd = grd
|
||||
Me.startMoveRow = startMoveRow
|
||||
Me.moveRows = moveRows
|
||||
Me.moveEndRow = moveEndRow
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
grd.NodeMoveUpCommand(startMoveRow, moveRows)
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
grd.NodeMoveDownCommand(moveEndRow, moveRows)
|
||||
End Sub
|
||||
End Class
|
||||
@@ -0,0 +1,35 @@
|
||||
Imports UTS_Core.UTSModule.Station
|
||||
|
||||
Public Class GridNodeTextChangedCommand : Implements ICommand
|
||||
|
||||
Private ReadOnly grd As StationPlanGrid
|
||||
Private ReadOnly dic As Dictionary(Of Integer, TextChangedRowNode)
|
||||
|
||||
Sub New(grd As StationPlanGrid, dic As Dictionary(Of Integer, TextChangedRowNode))
|
||||
Me.grd = grd
|
||||
Me.dic = dic
|
||||
End Sub
|
||||
|
||||
Public Sub Redo() Implements ICommand.Redo
|
||||
For Each row As Integer In dic.Keys
|
||||
grd.UpdateGrid2(dic(row).AfterRowNode)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub Undo() Implements ICommand.Undo
|
||||
|
||||
For Each row As Integer In dic.Keys
|
||||
grd.UpdateGrid2(dic(row).BeforeRowNode)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Public Class TextChangedRowNode
|
||||
|
||||
Public Property BeforeRowNode As RowNode
|
||||
|
||||
Public Property AfterRowNode As RowNode
|
||||
|
||||
End Class
|
||||
11
UTS_Core/UTSModule/Station/GridNodeCommands/ICommand.vb
Normal file
11
UTS_Core/UTSModule/Station/GridNodeCommands/ICommand.vb
Normal file
@@ -0,0 +1,11 @@
|
||||
Public Interface ICommand
|
||||
''' <summary>
|
||||
''' 重做命令
|
||||
''' </summary>
|
||||
Sub Redo()
|
||||
|
||||
''' <summary>
|
||||
''' 撤销命令
|
||||
''' </summary>
|
||||
Sub Undo()
|
||||
End Interface
|
||||
@@ -0,0 +1,36 @@
|
||||
Imports FlexCell
|
||||
|
||||
Public Class GridNavigation : Implements INavigation
|
||||
|
||||
Private ReadOnly _grd As Grid
|
||||
Private ReadOnly _beforeRange As GridSelectRange
|
||||
Private ReadOnly _afterRange As GridSelectRange
|
||||
|
||||
Sub New(grd As FlexCell.Grid, beforeRange As GridSelectRange, afterRange As GridSelectRange)
|
||||
_grd = grd
|
||||
Me._beforeRange = beforeRange
|
||||
Me._afterRange = afterRange
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub Backward() Implements INavigation.Backward
|
||||
_grd.Range(_beforeRange.StartRow, _beforeRange.StartCol, _beforeRange.EndRow, _beforeRange.EndCol).SelectCells()
|
||||
End Sub
|
||||
|
||||
Public Sub Forward() Implements INavigation.Forward
|
||||
_grd.Range(_afterRange.StartRow, _afterRange.StartCol, _afterRange.EndRow, _afterRange.EndCol).SelectCells()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
Public Class GridSelectRange
|
||||
Public Property StartRow As Integer
|
||||
Public Property StartCol As Integer
|
||||
|
||||
Public Property EndRow As Integer
|
||||
|
||||
Public Property EndCol As Integer
|
||||
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,82 @@
|
||||
Public Module GridNavigationManager
|
||||
Private _forwardStack As New Stack(Of INavigation)()
|
||||
Private _backwardStack As New Stack(Of INavigation)()
|
||||
Private _isRunning As Boolean = False
|
||||
|
||||
|
||||
Sub New()
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 是否正在执行导航操作
|
||||
''' </summary>
|
||||
''' <remarks></remarks>
|
||||
Public ReadOnly Property IsRunning As Boolean
|
||||
Get
|
||||
Return _isRunning
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 是否可以后退
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property CanForward As Boolean
|
||||
Get
|
||||
Return _forwardStack.Count > 0
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 是否可以前进
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
''' <remarks></remarks>
|
||||
Public ReadOnly Property CanBackward As Boolean
|
||||
Get
|
||||
Return _backwardStack.Count > 0
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 添加导航
|
||||
''' <param name="navigation">导航</param>
|
||||
''' </summary>
|
||||
Public Sub Append(navigation As INavigation)
|
||||
_backwardStack.Push(navigation)
|
||||
_forwardStack.Clear()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
'''
|
||||
''' </summary>
|
||||
Public Sub RemoveForward()
|
||||
If CanBackward Then _backwardStack.Pop()
|
||||
End Sub
|
||||
|
||||
Public Sub Clear()
|
||||
_forwardStack.Clear()
|
||||
_backwardStack.Clear()
|
||||
End Sub
|
||||
|
||||
Public Sub Forward()
|
||||
If Not CanForward Then Return
|
||||
Dim navigation As INavigation = _forwardStack.Pop()
|
||||
_backwardStack.Push(navigation)
|
||||
_isRunning = True
|
||||
navigation.Forward()
|
||||
_isRunning = False
|
||||
End Sub
|
||||
|
||||
Public Sub Backward()
|
||||
If Not CanBackward Then Return
|
||||
Dim navigation As INavigation = _backwardStack.Pop()
|
||||
_forwardStack.Push(navigation)
|
||||
_isRunning = True
|
||||
navigation.Backward()
|
||||
_isRunning = False
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
12
UTS_Core/UTSModule/Station/GridNodeNavigation/INavigation.vb
Normal file
12
UTS_Core/UTSModule/Station/GridNodeNavigation/INavigation.vb
Normal file
@@ -0,0 +1,12 @@
|
||||
Public Interface INavigation
|
||||
''' <summary>
|
||||
''' 向后导航
|
||||
''' </summary>
|
||||
Sub Backward()
|
||||
|
||||
''' <summary>
|
||||
''' 向前导航
|
||||
''' </summary>
|
||||
Sub Forward()
|
||||
|
||||
End Interface
|
||||
7
UTS_Core/UTSModule/Station/IStationPlan.vb
Normal file
7
UTS_Core/UTSModule/Station/IStationPlan.vb
Normal file
@@ -0,0 +1,7 @@
|
||||
Public Interface IStationPlan
|
||||
Sub CreateStationPlan()
|
||||
|
||||
Sub SaveFile(path As String)
|
||||
|
||||
Sub LoadFile(path As String)
|
||||
End Interface
|
||||
@@ -0,0 +1,8 @@
|
||||
Namespace UTSModule.Station
|
||||
Public Class PlanNodeSelectChangedEventArgs
|
||||
Inherits EventArgs
|
||||
Public Property Node() As RowNode
|
||||
Public LineNumber As Integer '指示当前节点所在的行号
|
||||
Public LineActionEn As Boolean '结合本机勾选和父级勾选确定的实际是否勾选执行的结果
|
||||
End Class
|
||||
End Namespace
|
||||
46
UTS_Core/UTSModule/Station/PlanNodeTextChangedEventArgs.vb
Normal file
46
UTS_Core/UTSModule/Station/PlanNodeTextChangedEventArgs.vb
Normal file
@@ -0,0 +1,46 @@
|
||||
Namespace UTSModule.Station
|
||||
Public Class RowNodeChangedEventArgs
|
||||
Inherits EventArgs
|
||||
|
||||
Enum RowNodeChangeType
|
||||
None
|
||||
RowType
|
||||
Action
|
||||
SaveToDb
|
||||
RecordName
|
||||
Retry
|
||||
RetryInterval
|
||||
[Label]
|
||||
ControlType
|
||||
Description
|
||||
ErrorCode
|
||||
ErrorMessage
|
||||
CommandType
|
||||
Command
|
||||
Parameters
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 修改后的节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Node() As RowNode
|
||||
|
||||
''' <summary>
|
||||
''' 修改前的节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property BeforeNode() As RowNode
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 修改类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
|
||||
Public Property ChangeType() As RowNodeChangeType
|
||||
End Class
|
||||
|
||||
|
||||
|
||||
End Namespace
|
||||
213
UTS_Core/UTSModule/Station/ProcessStation.vb
Normal file
213
UTS_Core/UTSModule/Station/ProcessStation.vb
Normal file
@@ -0,0 +1,213 @@
|
||||
Imports System.Drawing
|
||||
Imports UTS_Core.UTSModule.Project
|
||||
|
||||
Namespace UTSModule.Station
|
||||
|
||||
Public Class ProcessStation
|
||||
Enum StationTypeEnum
|
||||
''' <summary>
|
||||
''' 未知类型
|
||||
''' </summary>
|
||||
None
|
||||
''' <summary>
|
||||
''' 扫码目检站
|
||||
''' </summary>
|
||||
AOI
|
||||
''' <summary>
|
||||
''' 测试站
|
||||
''' </summary>
|
||||
Test
|
||||
''' <summary>
|
||||
''' 条码关联站
|
||||
''' </summary>
|
||||
Assem
|
||||
''' <summary>
|
||||
''' 成品录入站
|
||||
''' </summary>
|
||||
PE
|
||||
''' <summary>
|
||||
''' 抽检站
|
||||
''' </summary>
|
||||
QA
|
||||
|
||||
''' <summary>
|
||||
''' 包装站位
|
||||
''' </summary>
|
||||
Package
|
||||
|
||||
''' <summary>
|
||||
''' 唯一条码测试站
|
||||
''' </summary>
|
||||
Test2
|
||||
|
||||
''' <summary>
|
||||
''' 包装测试站,2023-05-09添加,参考uts-win的方式做包装站
|
||||
''' </summary>
|
||||
PackageTest
|
||||
End Enum
|
||||
|
||||
|
||||
Enum SnTypeEnum
|
||||
''' <summary>
|
||||
''' 无序列号
|
||||
''' </summary>
|
||||
None
|
||||
''' <summary>
|
||||
''' 系统生成
|
||||
''' </summary>
|
||||
Auto
|
||||
|
||||
''' <summary>
|
||||
''' 测试时录入
|
||||
''' </summary>
|
||||
Test
|
||||
|
||||
''' <summary>
|
||||
''' 用户录入
|
||||
''' </summary>
|
||||
Excel
|
||||
End Enum
|
||||
|
||||
|
||||
Sub New(project As ProjectInfo)
|
||||
StationID = -1
|
||||
|
||||
Name = String.Empty
|
||||
Description = String.Empty
|
||||
|
||||
_stationType = StationTypeEnum.None
|
||||
PreViewImage = Nothing
|
||||
|
||||
UserId = -1
|
||||
|
||||
DevType = String.Empty
|
||||
DevApp = String.Empty
|
||||
|
||||
SnListOrder = -1
|
||||
IsValid = True
|
||||
|
||||
Packet = New StationPacket(Me)
|
||||
ParentProject = project
|
||||
|
||||
SnType = SnTypeEnum.Auto
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 当前站位类型
|
||||
''' </summary>
|
||||
Private _stationType As StationTypeEnum
|
||||
|
||||
''' <summary>
|
||||
''' 项目站索引,项目站唯一索引,新建站时自动生成,生成后不能修改
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property StationID As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 项目站名称
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Name As String
|
||||
|
||||
Public Property StationType As StationTypeEnum
|
||||
Get
|
||||
Return _stationType
|
||||
End Get
|
||||
Set(value As StationTypeEnum)
|
||||
_stationType = value
|
||||
Packet.StationType = _stationType
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 项目站序号,表示该站在项目站总流程中测试顺序
|
||||
''' 例如1,表示当前为第一站
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ArtworkOrder() As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 项目站内容描述
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Description As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 工艺站预览图
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property PreViewImage() As Image
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 使用测试站的设备类型,待删除
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DevType() As String
|
||||
|
||||
''' <summary>
|
||||
''' 使用测试站的设备软件名,待删除
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property DevApp() As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 项目站当前操作人员,为当前登录人员账号
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property UserId As Integer
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 生成测试站时的顺序,从1开始
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property SnListOrder As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 当前站位是否有效
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsValid As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 条码生成规则,1系统生成,2客户录入
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property SnType() As SnTypeEnum
|
||||
|
||||
''' <summary>
|
||||
''' 项目站关联的项目站包信息
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Packet() As StationPacket
|
||||
|
||||
''' <summary>
|
||||
''' 项目站所属项目信息
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ParentProject() As ProjectInfo
|
||||
|
||||
''' <summary>
|
||||
''' 工艺站信息已被修改
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property InfoChanged() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 工艺站类型已被修改
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property TypeChange() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 工艺站预览图已被修改
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property PreviewImageChanged() As Boolean
|
||||
End Class
|
||||
End Namespace
|
||||
839
UTS_Core/UTSModule/Station/RowNode.vb
Normal file
839
UTS_Core/UTSModule/Station/RowNode.vb
Normal file
@@ -0,0 +1,839 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Text
|
||||
Imports System.Xml
|
||||
Imports UTS_Core.UTSModule.Production
|
||||
Imports UTS_Core.UTSModule.Test.Command
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public NotInheritable Class RowNode
|
||||
|
||||
#Region "初始化"
|
||||
Sub New()
|
||||
RowType = RowTypeEnum.Flow
|
||||
AuthByType(RowType)
|
||||
|
||||
Pause = False
|
||||
Action = True
|
||||
RecordName = String.Empty
|
||||
|
||||
Retry = 0
|
||||
RetryInterval = 100
|
||||
|
||||
[Label] = String.Empty
|
||||
Description = String.Empty
|
||||
|
||||
ErrorCode = String.Empty
|
||||
ErrorMessage = String.Empty
|
||||
|
||||
CommandType = String.Empty
|
||||
Command = String.Empty
|
||||
Parameters = New List(Of TestCmdParam)
|
||||
|
||||
SaveToDb = False
|
||||
ControlType = String.Empty
|
||||
|
||||
Children = New List(Of RowNode)()
|
||||
|
||||
Expanded = True
|
||||
AllChildCount = 0
|
||||
RowNodes = New RowNodeCollection(Me)
|
||||
|
||||
RowListIndex = 0
|
||||
RowList = New List(Of RowNode)()
|
||||
RowList.Add(Me)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 模块名称
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property [Label] As String
|
||||
|
||||
''' <summary>
|
||||
''' 控制命令类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ControlType As String
|
||||
|
||||
''' <summary>
|
||||
''' 当前流程步骤的解释
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Description As String
|
||||
|
||||
''' <summary>
|
||||
''' 调试模式下运行到当前节点后,暂停运行
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Pause() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 当前流程步骤是否允许执行
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Action As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 当前流程步骤是否会被执行
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsRunning As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 当前流程步骤执行结果是否保存至数据库,FALSE则为临时变量
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property SaveToDb() As Boolean
|
||||
|
||||
Public Property RecordName As String
|
||||
|
||||
|
||||
Public Property Retry As Integer
|
||||
Public Property RetryInterval As Integer
|
||||
|
||||
|
||||
Public Property ErrorCode As String
|
||||
Public Property ErrorMessage As String
|
||||
|
||||
Public Property CommandType As String
|
||||
Public Property Command As String
|
||||
|
||||
Public Property Parameters() As List(Of TestCmdParam)
|
||||
|
||||
Private _rowType As RowTypeEnum
|
||||
''' <summary>
|
||||
''' 行的类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RowType As RowTypeEnum
|
||||
Get
|
||||
Return _rowType
|
||||
End Get
|
||||
Set
|
||||
_rowType = Value
|
||||
AuthByType(Value)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 行节点关联的站流程
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property StationPlan() As StationTestPlan
|
||||
|
||||
''' <summary>
|
||||
''' 行节点执行结果信息
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property TestReturn As TestCommandReturn
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 节点树的所有节点集合
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RowList As List(Of RowNode)
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 节点所属节点数组的位置,从0开始,即头结点的的索引
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RowListIndex() As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 节点的级别,可见节点级别从0开始
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RowLever As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 节点在父节点中的索引,可见节点级别从0开始
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RowIndex As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 记录总使用的说明内容
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Desc4Record As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 子节点总数
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property Count() As Integer
|
||||
Get
|
||||
Return Children.Count
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 所有子节点总数
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property AllChildCount() As Integer
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 行下包含的子行集合
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RowNodes() As RowNodeCollection
|
||||
|
||||
''' <summary>
|
||||
''' 当前节点的同级上一节点,若当前节点为首节点则返回nothing
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property PrevNode() As RowNode
|
||||
|
||||
''' <summary>
|
||||
''' 当前节点的同级下一节点,若当前节点为尾节点则返回nothing
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property NextNode() As RowNode
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 当前节点的父节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ParentNode() As RowNode
|
||||
|
||||
''' <summary>
|
||||
''' 当前节点树的起始节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property HeadNode() As RowNode
|
||||
|
||||
''' <summary>
|
||||
''' 内部缓存子节点
|
||||
''' </summary>
|
||||
Friend Children As List(Of RowNode)
|
||||
|
||||
''' <summary>
|
||||
''' 处于展开状态
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Expanded() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 是否允许删除当前节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CanDelete() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 是否允许添加子节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CanAddChildNode() As Boolean
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 允许操作当前节点内容
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CanChangeContent() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 允许移动节点改变节点的级别
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CanChangeLever() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 允许移动节点移动
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CanMove() As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 当前节点是否处于重试状态
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property IsRetry As Boolean
|
||||
|
||||
Private Sub AuthByType(type As RowTypeEnum)
|
||||
Select Case type
|
||||
Case RowTypeEnum.FixedModule
|
||||
CanAddChildNode = True
|
||||
CanChangeContent = False
|
||||
CanDelete = False
|
||||
CanChangeLever = False
|
||||
CanMove = False
|
||||
Case RowTypeEnum.Module
|
||||
CanAddChildNode = True
|
||||
CanChangeContent = True
|
||||
CanDelete = True
|
||||
CanChangeLever = True
|
||||
CanMove = True
|
||||
Case RowTypeEnum.Control
|
||||
CanAddChildNode = True
|
||||
CanChangeContent = True
|
||||
CanDelete = True
|
||||
CanChangeLever = True
|
||||
CanMove = True
|
||||
|
||||
Case RowTypeEnum.Flow
|
||||
CanAddChildNode = True
|
||||
CanChangeContent = True
|
||||
CanDelete = True
|
||||
CanChangeLever = True
|
||||
CanMove = True
|
||||
|
||||
End Select
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "节点操作"
|
||||
''' <summary>
|
||||
''' 展开节点
|
||||
''' </summary>
|
||||
Public Sub Expand()
|
||||
If Expanded Then Return
|
||||
Expanded = True
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 折叠节点
|
||||
''' </summary>
|
||||
Public Sub Collapse()
|
||||
If Expanded = False Then Return
|
||||
Expanded = False
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 展开或折叠节点
|
||||
''' </summary>
|
||||
Public Sub Toggle()
|
||||
Expanded = Not Expanded
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 增加子节点
|
||||
''' </summary>
|
||||
Public Sub AddNode(node As RowNode)
|
||||
If CanAddChildNode Then
|
||||
RowNodes.Add(node)
|
||||
Else
|
||||
ParentNode.InsertNode(RowIndex + 1, node)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 插入子节点
|
||||
''' </summary>
|
||||
Public Sub InsertNode(index As Integer, childNode As RowNode)
|
||||
If CanAddChildNode Then
|
||||
RowNodes.Insert(index, childNode)
|
||||
Else
|
||||
ParentNode.InsertNode(index, childNode)
|
||||
End If
|
||||
' ParentNode.InsertNode(index, childNode)
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub RemoveChildNode(childNode As RowNode)
|
||||
If childNode.CanDelete = False Then Return
|
||||
RowNodes.Remove(childNode)
|
||||
End Sub
|
||||
|
||||
Public Sub RemoveChildAt(index As Integer)
|
||||
If index >= RowNodes.Count Then Return
|
||||
Dim child As RowNode = CType(RowNodes.Item(index), RowNode)
|
||||
If child.CanDelete = False Then Return
|
||||
RowNodes.RemoveAt(index)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 移除本身节点
|
||||
''' </summary>
|
||||
Public Function Remove() As Boolean
|
||||
' If CanDelete = False Then Return False
|
||||
ParentNode.RowNodes.Remove(Me)
|
||||
Return True
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 清空节点所有子节点
|
||||
''' </summary>
|
||||
Public Sub Clear()
|
||||
RowNodes.Clear()
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 节点上移
|
||||
''' </summary>
|
||||
Public Sub MoveUp()
|
||||
If RowIndex = 0 Then Return
|
||||
|
||||
If Remove() = False Then Return
|
||||
ParentNode.RowNodes.Insert(RowIndex - 1, Me)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 节点下移
|
||||
''' </summary>
|
||||
Public Sub MoveDown()
|
||||
If RowIndex = ParentNode.RowNodes.Count - 1 Then Return
|
||||
|
||||
If Remove() = False Then Return
|
||||
ParentNode.RowNodes.Insert(RowIndex + 1, Me)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 节点左移
|
||||
''' </summary>
|
||||
Public Sub MoveLeft()
|
||||
If RowLever = 0 Then Return
|
||||
If Remove() = False Then Return
|
||||
ParentNode.ParentNode.RowNodes.Insert(ParentNode.RowIndex + 1, Me)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 节点右移
|
||||
''' </summary>
|
||||
Public Sub MoveRight()
|
||||
If RowIndex = 0 Then Return
|
||||
' If CanChangeLever = False Then Return
|
||||
|
||||
If Remove() = False Then Return
|
||||
Dim rNode As RowNode = CType(ParentNode.RowNodes(RowIndex - 1), RowNode)
|
||||
rNode.RowNodes.Add(Me)
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 节点深复制,创建一个完全相同信息的节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function Clone() As RowNode
|
||||
Dim cpNode As New RowNode
|
||||
|
||||
With cpNode
|
||||
.RowListIndex = RowListIndex
|
||||
|
||||
.Pause = Pause
|
||||
.ControlType = ControlType
|
||||
.SaveToDb = SaveToDb
|
||||
|
||||
.RowType = RowType
|
||||
|
||||
.Action = Action
|
||||
.RecordName = RecordName
|
||||
|
||||
.Retry = Retry
|
||||
.RetryInterval = RetryInterval
|
||||
|
||||
.[Label] = String.Copy(Label)
|
||||
.Description = String.Copy(Description)
|
||||
|
||||
.ErrorCode = String.Copy(ErrorCode)
|
||||
.ErrorMessage = String.Copy(ErrorMessage)
|
||||
|
||||
.CommandType = String.Copy(CommandType)
|
||||
.Command = String.Copy(Command)
|
||||
|
||||
.Parameters = New List(Of TestCmdParam)
|
||||
For Each param As TestCmdParam In Parameters
|
||||
.Parameters.Add(param.Clone())
|
||||
Next
|
||||
|
||||
'.RowNodes = New RowNodeCollection(cpNode)
|
||||
'.Children = New List(Of RowNode)()
|
||||
|
||||
''todo:克隆功能待重写
|
||||
|
||||
'For Each child As RowNode In Children
|
||||
' .RowNodes.Add(child.Clone())
|
||||
'Next
|
||||
End With
|
||||
|
||||
Return cpNode
|
||||
End Function
|
||||
|
||||
Public Sub CopyFrom(node As RowNode)
|
||||
With node
|
||||
.RowListIndex = RowListIndex
|
||||
|
||||
Pause = .Pause
|
||||
ControlType = .ControlType
|
||||
SaveToDb = .SaveToDb
|
||||
|
||||
RowType = .RowType
|
||||
Action = .Action
|
||||
RecordName = .RecordName
|
||||
Retry = .Retry
|
||||
RetryInterval = .RetryInterval
|
||||
[Label] = String.Copy(.Label)
|
||||
Description = String.Copy(.Description)
|
||||
ErrorCode = String.Copy(.ErrorCode)
|
||||
ErrorMessage = String.Copy(.ErrorMessage)
|
||||
CommandType = String.Copy(.CommandType)
|
||||
Command = String.Copy(.Command)
|
||||
Parameters.Clear()
|
||||
For Each param As TestCmdParam In .Parameters
|
||||
Parameters.Add(param.Clone())
|
||||
Next
|
||||
End With
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "节点样式"
|
||||
Public Enum RowTypeEnum
|
||||
''' <summary>
|
||||
''' 固定模块
|
||||
''' </summary>
|
||||
FixedModule
|
||||
''' <summary>
|
||||
''' 模块,可以当作跳转入口
|
||||
''' </summary>
|
||||
[Module]
|
||||
''' <summary>
|
||||
''' 控制
|
||||
''' </summary>
|
||||
Control
|
||||
''' <summary>
|
||||
''' 流程
|
||||
''' </summary>
|
||||
Flow
|
||||
End Enum
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "节点风格"
|
||||
Public Shared Property NodeStyles() As Dictionary(Of RowTypeEnum, RowNodeStyle)
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 默认的初始化节点风格
|
||||
''' </summary>
|
||||
Public Shared Sub InitNodeStyles()
|
||||
NodeStyles = New Dictionary(Of RowTypeEnum, RowNodeStyle) From {
|
||||
{RowTypeEnum.FixedModule, New RowNodeStyle(RowTypeEnum.FixedModule)},
|
||||
{RowTypeEnum.Module, New RowNodeStyle(RowTypeEnum.Module)},
|
||||
{RowTypeEnum.Control, New RowNodeStyle(RowTypeEnum.Control)},
|
||||
{RowTypeEnum.Flow, New RowNodeStyle(RowTypeEnum.Flow)}
|
||||
}
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Shared Function LoadNodeStyle(nodeList As XmlNodeList) As RowNodeStyle
|
||||
Dim nodeStyle As New RowNodeStyle
|
||||
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "Font"
|
||||
Dim fStyle As FontStyle = CType([Enum].Parse(GetType(FontStyle), xe.GetAttribute("FontStyle")), FontStyle)
|
||||
Dim fSize As Single = CSng(xe.GetAttribute("FontSize"))
|
||||
|
||||
nodeStyle.NodeFont = New Font(xe.InnerText, fSize, fStyle)
|
||||
Case "ForeColor"
|
||||
nodeStyle.NodeForeColor = Color.FromArgb(CInt(xe.InnerText))
|
||||
Case "BackColor"
|
||||
nodeStyle.NodeBackColor = Color.FromArgb(CInt(xe.InnerText))
|
||||
|
||||
Case "ImageKey"
|
||||
nodeStyle.NodeImageKey = xe.InnerText
|
||||
|
||||
Case "ShowRecord"
|
||||
nodeStyle.ShowRecord = CType(xe.InnerText, Boolean)
|
||||
Case "ShowLabel"
|
||||
nodeStyle.ShowLabel = CType(xe.InnerText, Boolean)
|
||||
Case "ShowDescription"
|
||||
nodeStyle.ShowDescription = CType(xe.InnerText, Boolean)
|
||||
|
||||
Case "ShowAction"
|
||||
nodeStyle.ShowAction = CType(xe.InnerText, Boolean)
|
||||
Case "ShowRecord"
|
||||
nodeStyle.ShowRecord = CType(xe.InnerText, Boolean)
|
||||
|
||||
Case "ShowRetry"
|
||||
nodeStyle.ShowRetry = CType(xe.InnerText, Boolean)
|
||||
Case "ShowRetryInterval"
|
||||
nodeStyle.ShowRetryInterval = CType(xe.InnerText, Boolean)
|
||||
|
||||
Case "ShowErrorCode"
|
||||
nodeStyle.ShowErrorCode = CType(xe.InnerText, Boolean)
|
||||
Case "ShowErrorMessage"
|
||||
nodeStyle.ShowErrorMessage = CType(xe.InnerText, Boolean)
|
||||
|
||||
Case "ShowCommand"
|
||||
nodeStyle.ShowCommand = CType(xe.InnerText, Boolean)
|
||||
Case "ShowParameter"
|
||||
nodeStyle.ShowParameter = CType(xe.InnerText, Boolean)
|
||||
Case Else
|
||||
Throw New Exception($"LoadRowNodes Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
|
||||
Return nodeStyle
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 从本地文件中初始化节点风格
|
||||
''' </summary>
|
||||
''' <param name="path"></param>
|
||||
Public Shared Sub LoadNodeStyles(path As String)
|
||||
NodeStyles = New Dictionary(Of RowTypeEnum, RowNodeStyle)()
|
||||
|
||||
Dim xd As New XmlDocument()
|
||||
xd.Load(path)
|
||||
|
||||
Dim xe As XmlElement
|
||||
Dim nodeList As XmlNodeList = xd.SelectSingleNode($"NodeStyles").ChildNodes
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "NodeStyle"
|
||||
Dim type As RowTypeEnum = CType([Enum].Parse(GetType(RowTypeEnum), xe.GetAttribute("Type")), RowTypeEnum)
|
||||
|
||||
NodeStyles.Add(type, LoadNodeStyle(xe.ChildNodes))
|
||||
Case Else
|
||||
Throw New Exception($"LoadNodeStyles Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Public Shared Sub SaveNodeStyles(path As String)
|
||||
Dim xws As New XmlWriterSettings
|
||||
With xws
|
||||
.Indent = True
|
||||
.NewLineOnAttributes = False
|
||||
.Encoding = New UTF8Encoding(False)
|
||||
End With
|
||||
|
||||
Using xw As XmlWriter = XmlWriter.Create(path, xws)
|
||||
xw.WriteStartDocument()
|
||||
xw.WriteStartElement($"NodeStyles") '创建跟节点
|
||||
|
||||
|
||||
For Each nodeStyle As KeyValuePair(Of RowTypeEnum, RowNodeStyle) In NodeStyles
|
||||
xw.WriteStartElement($"NodeStyle") '创建表属性节点
|
||||
xw.WriteAttributeString("Type", nodeStyle.Key.ToString())
|
||||
|
||||
|
||||
xw.WriteStartElement($"Font") '创建表属性节点
|
||||
xw.WriteAttributeString("FontSize", nodeStyle.Value.NodeFont.Size.ToString())
|
||||
xw.WriteAttributeString("FontStyle", nodeStyle.Value.NodeFont.Style.ToString())
|
||||
xw.WriteString(nodeStyle.Value.NodeFont.Name.ToString())
|
||||
xw.WriteEndElement()
|
||||
|
||||
|
||||
xw.WriteElementString("ForeColor", nodeStyle.Value.NodeForeColor.ToArgb().ToString())
|
||||
xw.WriteElementString("BackColor", nodeStyle.Value.NodeBackColor.ToArgb().ToString())
|
||||
|
||||
xw.WriteElementString("ImageKey", nodeStyle.Value.NodeImageKey)
|
||||
|
||||
|
||||
If nodeStyle.Value.ShowRowType Then xw.WriteElementString("ShowRecord", nodeStyle.Value.ShowRowType.ToString())
|
||||
If nodeStyle.Value.ShowLabel Then xw.WriteElementString("ShowLabel", nodeStyle.Value.ShowLabel.ToString())
|
||||
If nodeStyle.Value.ShowDescription Then xw.WriteElementString("ShowDescription", nodeStyle.Value.ShowDescription.ToString())
|
||||
|
||||
If nodeStyle.Value.ShowAction Then xw.WriteElementString("ShowAction", nodeStyle.Value.ShowAction.ToString())
|
||||
If nodeStyle.Value.ShowRecord Then xw.WriteElementString("ShowRecord", nodeStyle.Value.ShowRecord.ToString())
|
||||
|
||||
If nodeStyle.Value.ShowRetry Then xw.WriteElementString("ShowRetry", nodeStyle.Value.ShowRetry.ToString())
|
||||
If nodeStyle.Value.ShowRetryInterval Then xw.WriteElementString("ShowRetryInterval", nodeStyle.Value.ShowRetryInterval.ToString())
|
||||
|
||||
If nodeStyle.Value.ShowErrorCode Then xw.WriteElementString("ShowErrorCode", nodeStyle.Value.ShowErrorCode.ToString())
|
||||
If nodeStyle.Value.ShowErrorMessage Then xw.WriteElementString("ShowErrorMessage", nodeStyle.Value.ShowErrorMessage.ToString())
|
||||
|
||||
If nodeStyle.Value.ShowCommand Then xw.WriteElementString("ShowCommand", nodeStyle.Value.ShowCommand.ToString())
|
||||
If nodeStyle.Value.ShowParameter Then xw.WriteElementString("ShowParameter", nodeStyle.Value.ShowParameter.ToString())
|
||||
|
||||
xw.WriteEndElement()
|
||||
Next
|
||||
|
||||
|
||||
xw.WriteEndElement()
|
||||
xw.WriteEndDocument()
|
||||
End Using
|
||||
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
#Region "节点保存与加载"
|
||||
Public Sub SaveRowNode(xw As XmlWriter)
|
||||
xw.WriteStartElement($"RowNode") '创建单元格节点
|
||||
|
||||
xw.WriteElementString("RowType", RowType.ToString())
|
||||
|
||||
If String.IsNullOrEmpty(Label) = False Then xw.WriteElementString("Label", Label)
|
||||
xw.WriteElementString("Action", Action.ToString())
|
||||
|
||||
If String.IsNullOrEmpty(ControlType) = False Then xw.WriteElementString("ControlType", ControlType)
|
||||
|
||||
If String.IsNullOrEmpty(CommandType) = False Then xw.WriteElementString("CommandType", CommandType)
|
||||
If String.IsNullOrEmpty(Command) = False Then xw.WriteElementString("Command", Command)
|
||||
If String.IsNullOrEmpty(Description) = False Then xw.WriteElementString("Description", Description)
|
||||
|
||||
xw.WriteElementString("Retry", Retry.ToString())
|
||||
xw.WriteElementString("RetryInterval", RetryInterval.ToString())
|
||||
|
||||
xw.WriteElementString("SaveToDb", SaveToDb.ToString())
|
||||
If String.IsNullOrEmpty(RecordName) = False Then xw.WriteElementString("RecordName", RecordName)
|
||||
|
||||
|
||||
If String.IsNullOrEmpty(ErrorCode) = False Then xw.WriteElementString("ErrorCode", ErrorCode)
|
||||
If String.IsNullOrEmpty(ErrorMessage) = False Then xw.WriteElementString("ErrorMessage", ErrorMessage)
|
||||
|
||||
For Each parameter As TestCmdParam In Parameters
|
||||
xw.WriteStartElement($"Parameter") '创建跟节点
|
||||
|
||||
xw.WriteAttributeString("Type", parameter.Type)
|
||||
xw.WriteAttributeString("Desc", parameter.Desc)
|
||||
xw.WriteAttributeString("LowerLimit", parameter.LowerLimit)
|
||||
xw.WriteAttributeString("UpperLimit", parameter.UpperLimit)
|
||||
xw.WriteString(parameter.Value)
|
||||
|
||||
xw.WriteEndElement()
|
||||
Next
|
||||
|
||||
If RowNodes.Count > 0 Then
|
||||
SaveRowNodes(xw, RowNodes)
|
||||
End If
|
||||
|
||||
xw.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
|
||||
Public Shared Sub SaveRowNodes(xw As XmlWriter, nodes As RowNodeCollection)
|
||||
xw.WriteStartElement($"RowNodes") '创建单元格节点
|
||||
|
||||
For Each node As RowNode In nodes
|
||||
node.SaveRowNode(xw)
|
||||
Next
|
||||
|
||||
xw.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 导出为XML文件
|
||||
''' </summary>
|
||||
''' <param name="path">文件路径</param>
|
||||
Public Sub ExportToXml(path As String)
|
||||
Dim xws As New XmlWriterSettings
|
||||
With xws
|
||||
.Indent = True
|
||||
.NewLineOnAttributes = False
|
||||
.Encoding = New UTF8Encoding(False)
|
||||
End With
|
||||
|
||||
Using xw As XmlWriter = XmlWriter.Create(path, xws)
|
||||
xw.WriteStartDocument()
|
||||
|
||||
SaveRowNode(xw)
|
||||
|
||||
xw.WriteEndDocument()
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 加载行节点
|
||||
''' </summary>
|
||||
''' <param name="nodeList"></param>
|
||||
''' <param name="rowCollection"></param>
|
||||
Public Shared Sub LoadRowNodes(nodeList As XmlNodeList, rowCollection As RowNodeCollection)
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "RowNode"
|
||||
Dim row As New RowNode
|
||||
rowCollection.Add(row)
|
||||
row.LoadFormXmlNodeList(xe.ChildNodes)
|
||||
Case Else
|
||||
Throw New Exception($"LoadRowNodes Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub LoadFormXmlNodeList(nodeList As XmlNodeList)
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "RowType"
|
||||
RowType = CType([Enum].Parse(GetType(RowTypeEnum), xe.InnerText), RowTypeEnum)
|
||||
|
||||
Case "Description"
|
||||
Description = xe.InnerText
|
||||
|
||||
Case "Label"
|
||||
Label = xe.InnerText
|
||||
|
||||
Case "ControlType"
|
||||
ControlType = xe.InnerText
|
||||
|
||||
Case "Action"
|
||||
Action = CBool(xe.InnerText)
|
||||
|
||||
Case "SaveToDb"
|
||||
SaveToDb = CBool(xe.InnerText)
|
||||
Case "RecordName"
|
||||
RecordName = xe.InnerText
|
||||
|
||||
Case "Retry"
|
||||
Retry = CInt(xe.InnerText)
|
||||
Case "RetryInterval"
|
||||
RetryInterval = CInt(xe.InnerText)
|
||||
|
||||
Case "ErrorCode"
|
||||
ErrorCode = xe.InnerText
|
||||
Case "ErrorMessage"
|
||||
ErrorMessage = xe.InnerText
|
||||
|
||||
Case "CommandType"
|
||||
CommandType = xe.InnerText
|
||||
Case "Command"
|
||||
Command = xe.InnerText
|
||||
|
||||
Case "Parameter"
|
||||
Dim param As New TestCmdParam With {
|
||||
.Type = xe.GetAttribute("Type"),
|
||||
.Desc = xe.GetAttribute("Desc"),
|
||||
.LowerLimit = xe.GetAttribute("LowerLimit"),
|
||||
.UpperLimit = xe.GetAttribute("UpperLimit"),
|
||||
.Value = xe.InnerText
|
||||
}
|
||||
|
||||
Parameters.Add(param)
|
||||
Case "RowNodes"
|
||||
RowNodes.Clear()
|
||||
LoadRowNodes(xe.ChildNodes, RowNodes)
|
||||
Case Else
|
||||
Throw New Exception($"LoadRowNode Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub LoadFormXml(path As String)
|
||||
Dim xd As New XmlDocument()
|
||||
xd.Load(path)
|
||||
|
||||
Dim nodeList As XmlNodeList = xd.SelectSingleNode($"RowNode").ChildNodes
|
||||
|
||||
LoadFormXmlNodeList(nodeList)
|
||||
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
417
UTS_Core/UTSModule/Station/RowNodeCollection.vb
Normal file
417
UTS_Core/UTSModule/Station/RowNodeCollection.vb
Normal file
@@ -0,0 +1,417 @@
|
||||
Namespace UTSModule.Station
|
||||
|
||||
Public Class RowNodeCollection
|
||||
Implements IList, ICollection, IEnumerable
|
||||
|
||||
Private ReadOnly _owner As RowNode
|
||||
|
||||
Friend Sub New(node As RowNode)
|
||||
_owner = node
|
||||
End Sub
|
||||
|
||||
|
||||
Default Public Property Item(index As Integer) As Object Implements IList.Item
|
||||
Get
|
||||
Return _owner.Children.Item(index)
|
||||
End Get
|
||||
Set(value As Object)
|
||||
_owner.Children(index) = CType(value, RowNode)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
|
||||
Public ReadOnly Property IsReadOnly As Boolean Implements IList.IsReadOnly
|
||||
Get
|
||||
Return False
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property IsFixedSize As Boolean Implements IList.IsFixedSize
|
||||
Get
|
||||
Return False
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property Count As Integer Implements ICollection.Count
|
||||
Get
|
||||
Return _owner.Children.Count
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot
|
||||
Get
|
||||
Return False
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property IsSynchronized As Boolean Implements ICollection.IsSynchronized
|
||||
Get
|
||||
Return False
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新节点的所有子节点的流程站指向
|
||||
''' </summary>
|
||||
''' <param name="pNode"></param>
|
||||
Private Sub AddNodeUpdateStationPlan(pNode As RowNode)
|
||||
For Each cNode As RowNode In pNode.RowNodes
|
||||
cNode.StationPlan = pNode.StationPlan
|
||||
|
||||
If cNode.Count > 0 Then
|
||||
AddNodeUpdateStationPlan(cNode)
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新节点的上一节点指向
|
||||
''' </summary>
|
||||
''' <param name="node">需要更新的节点</param>
|
||||
Private Sub AddNodeUpdatePrevNode(node As RowNode)
|
||||
If node.RowIndex > 0 Then
|
||||
node.PrevNode = node.ParentNode.Children(node.RowIndex - 1)
|
||||
|
||||
'更新上一节点的下一节点指向
|
||||
node.PrevNode.NextNode = node
|
||||
Else
|
||||
node.PrevNode = Nothing
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 更新节点的下一节点指向
|
||||
''' </summary>
|
||||
''' <param name="node">需要更新的节点</param>
|
||||
Private Sub AddNodeUpdateNextNode(node As RowNode)
|
||||
If node.RowIndex < node.ParentNode.Children.Count - 1 Then
|
||||
node.NextNode = node.ParentNode.Children(node.RowIndex + 1)
|
||||
|
||||
'更新下一节点的上一节点指向
|
||||
node.NextNode.PrevNode = node
|
||||
Else
|
||||
node.NextNode = Nothing
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 新增节点后,更新父节点的所有子节点计数
|
||||
''' </summary>
|
||||
''' <param name="node">新增的节点</param>
|
||||
Private Sub AddNodeUpdateAllChildCount(node As RowNode)
|
||||
Dim pNode As RowNode = node.ParentNode
|
||||
|
||||
While pNode IsNot Nothing
|
||||
pNode.AllChildCount += (node.AllChildCount + 1)
|
||||
|
||||
pNode = pNode.ParentNode
|
||||
End While
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 删除节点后,更新父节点的所有子节点计数
|
||||
''' </summary>
|
||||
''' <param name="node">被删除的节点</param>
|
||||
''' <param name="include">包含当前节点</param>
|
||||
Private Sub DelNodeUpdateAllChildCount(node As RowNode, Optional include As Boolean = True)
|
||||
|
||||
Dim removeCount As Integer
|
||||
|
||||
If include Then
|
||||
removeCount = node.AllChildCount + 1
|
||||
Else
|
||||
removeCount = node.AllChildCount
|
||||
End If
|
||||
|
||||
Dim pNode As RowNode = node.ParentNode
|
||||
While pNode IsNot Nothing
|
||||
pNode.AllChildCount -= removeCount
|
||||
|
||||
pNode = pNode.ParentNode
|
||||
End While
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 插入节点后,更新节点下方节点的索引
|
||||
''' </summary>
|
||||
''' <param name="node">需要更新下方节点索引的节点</param>
|
||||
Private Sub AddNodeUpdateRowIndex(node As RowNode)
|
||||
While node.NextNode IsNot Nothing
|
||||
node.NextNode.RowIndex = node.RowIndex + 1
|
||||
node = node.NextNode
|
||||
End While
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 删除节点后,更新节点下方节点的索引
|
||||
''' </summary>
|
||||
''' <param name="node"></param>
|
||||
Private Sub DelNodeUpdateRowIndex(node As RowNode)
|
||||
If node.NextNode Is Nothing Then Return
|
||||
node.NextNode.RowIndex = node.RowIndex
|
||||
node = node.NextNode
|
||||
|
||||
While node.NextNode IsNot Nothing
|
||||
node.NextNode.RowIndex = node.RowIndex + 1
|
||||
node = node.NextNode
|
||||
End While
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 获取新添加的节点的链状目录索引
|
||||
''' </summary>
|
||||
''' <param name="node"></param>
|
||||
''' <returns></returns>
|
||||
Private Function GetRowListIndex(node As RowNode) As Integer
|
||||
Dim rowListIndex As Integer
|
||||
If node.RowIndex = 0 Then
|
||||
rowListIndex = node.ParentNode.RowListIndex + 1
|
||||
Else
|
||||
rowListIndex = node.PrevNode.RowListIndex + node.PrevNode.AllChildCount + 1
|
||||
End If
|
||||
Return rowListIndex
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 更新节点的所有子节点的链式结合的指向
|
||||
''' </summary>
|
||||
''' <param name="pNode"></param>
|
||||
''' <param name="node"></param>
|
||||
Private Sub AddNodeUpdateRowList(pNode As RowNode, node As RowNode)
|
||||
node.RowList = pNode.RowList
|
||||
node.RowListIndex = GetRowListIndex(node)
|
||||
node.RowList.Insert(node.RowListIndex, node)
|
||||
|
||||
For Each cNode As RowNode In node.RowNodes
|
||||
AddNodeUpdateRowList(node, cNode)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 删除节点后,更新链状列表
|
||||
''' </summary>
|
||||
''' <param name="node"></param>
|
||||
''' <param name="include">包含当前节点</param>
|
||||
Private Sub DelNodeUpdateRowList(node As RowNode, Optional include As Boolean = True)
|
||||
Dim index As Integer
|
||||
|
||||
If include Then
|
||||
index = node.RowListIndex
|
||||
node.RowList.RemoveAt(index)
|
||||
Else
|
||||
index = node.RowListIndex + 1
|
||||
End If
|
||||
|
||||
Dim removeCount As Integer = node.AllChildCount
|
||||
While removeCount > 0
|
||||
node.RowList.RemoveAt(index)
|
||||
removeCount -= 1
|
||||
End While
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 插入节点后,更新链状目录中受影响节点的索引
|
||||
''' </summary>
|
||||
''' <param name="node"></param>
|
||||
Private Sub AddNodeUpdateRowListIndex(node As RowNode)
|
||||
Dim startIndex As Integer = node.RowListIndex + node.AllChildCount + 1
|
||||
|
||||
For index As Integer = startIndex To node.RowList.Count - 1
|
||||
node.RowList(index).RowListIndex = index
|
||||
Next
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 删除节点后,更新链状目录中受影响节点的索引
|
||||
''' </summary>
|
||||
''' <param name="node">删除的节点</param>
|
||||
''' <param name="include">是否保存该节点</param>
|
||||
Private Sub DelNodeUpdateRowListIndex(node As RowNode, Optional include As Boolean = True)
|
||||
Dim startIndex As Integer = node.RowListIndex
|
||||
If include = False Then startIndex += 1
|
||||
For i As Integer = startIndex To node.RowList.Count - 1
|
||||
_owner.RowList(i).RowListIndex = i
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function Add(value As Object) As Integer Implements IList.Add
|
||||
Dim node As RowNode
|
||||
Try
|
||||
node = CType(value, RowNode)
|
||||
Catch ex As Exception
|
||||
Return -1
|
||||
End Try
|
||||
|
||||
_owner.Children.Add(node)
|
||||
node.HeadNode = _owner.HeadNode
|
||||
node.ParentNode = _owner
|
||||
node.RowLever = _owner.RowLever + 1
|
||||
node.RowIndex = _owner.Children.Count - 1
|
||||
node.RowList = _owner.RowList
|
||||
|
||||
'更新所有子节点的流程计划指向
|
||||
AddNodeUpdateStationPlan(node)
|
||||
|
||||
'更新父节点总子节点计数
|
||||
AddNodeUpdateAllChildCount(node)
|
||||
|
||||
'更新上一节点指向
|
||||
AddNodeUpdatePrevNode(node)
|
||||
|
||||
'更新下一节点指向
|
||||
node.NextNode = Nothing
|
||||
|
||||
'将节点及其子节点插入到链状目录中,并更新链状目指向
|
||||
AddNodeUpdateRowList(_owner, node)
|
||||
|
||||
'更新下方节点链状索引
|
||||
AddNodeUpdateRowListIndex(node)
|
||||
|
||||
Return _owner.Children.Count
|
||||
End Function
|
||||
|
||||
|
||||
Public Sub Insert(index As Integer, value As Object) Implements IList.Insert
|
||||
Dim node As RowNode = CType(value, RowNode)
|
||||
_owner.Children.Insert(index, node)
|
||||
node.HeadNode = _owner.HeadNode
|
||||
node.ParentNode = _owner
|
||||
node.RowLever = _owner.RowLever + 1
|
||||
node.RowIndex = index
|
||||
node.RowList = _owner.RowList
|
||||
|
||||
'更新所有子节点的流程计划指向
|
||||
AddNodeUpdateStationPlan(node)
|
||||
|
||||
'更新父节点总子节点计数
|
||||
AddNodeUpdateAllChildCount(node)
|
||||
|
||||
'更新上一节点指向
|
||||
AddNodeUpdatePrevNode(node)
|
||||
|
||||
'更新下一节点指向
|
||||
AddNodeUpdateNextNode(node)
|
||||
|
||||
'更新下方节点树状索引
|
||||
AddNodeUpdateRowIndex(node)
|
||||
|
||||
|
||||
|
||||
'将节点及其子节点插入到链状目录中,并更新链状目指向
|
||||
AddNodeUpdateRowList(_owner, node)
|
||||
|
||||
'更新下方节点链状索引
|
||||
AddNodeUpdateRowListIndex(node)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 移除指定节点
|
||||
''' </summary>
|
||||
''' <param name="value"></param>
|
||||
Public Sub Remove(value As Object) Implements IList.Remove
|
||||
Dim node As RowNode = CType(value, RowNode)
|
||||
_owner.Children.Remove(node)
|
||||
|
||||
'更新父节点总子节点计数
|
||||
DelNodeUpdateAllChildCount(node)
|
||||
|
||||
'更新上一节点的下一节点指向
|
||||
If node.PrevNode IsNot Nothing Then
|
||||
node.PrevNode.NextNode = node.NextNode
|
||||
End If
|
||||
|
||||
'更新下一节点的上一节点指向
|
||||
If node.NextNode IsNot Nothing Then
|
||||
node.NextNode.PrevNode = node.PrevNode
|
||||
End If
|
||||
|
||||
'更新下方节点树状索引
|
||||
DelNodeUpdateRowIndex(node)
|
||||
|
||||
|
||||
|
||||
'链状目录移除被删除的节点
|
||||
DelNodeUpdateRowList(node)
|
||||
|
||||
'更新链状目录中的节点索引
|
||||
DelNodeUpdateRowListIndex(node)
|
||||
End Sub
|
||||
|
||||
Public Sub RemoveAt(index As Integer) Implements IList.RemoveAt
|
||||
Dim node As RowNode = _owner.Children(index)
|
||||
_owner.Children.RemoveAt(index)
|
||||
|
||||
|
||||
'更新父节点总子节点计数
|
||||
DelNodeUpdateAllChildCount(node)
|
||||
|
||||
'更新上一节点的下一节点指向
|
||||
If node.PrevNode IsNot Nothing Then
|
||||
node.PrevNode.NextNode = node.NextNode
|
||||
End If
|
||||
|
||||
'更新下一节点的上一节点指向
|
||||
If node.NextNode IsNot Nothing Then
|
||||
node.NextNode.PrevNode = node.PrevNode
|
||||
End If
|
||||
|
||||
'更新下方节点树状索引
|
||||
DelNodeUpdateRowIndex(node)
|
||||
|
||||
|
||||
|
||||
'链状目录移除被删除的节点
|
||||
DelNodeUpdateRowList(node)
|
||||
|
||||
'更新链状目录中的节点索引
|
||||
DelNodeUpdateRowListIndex(node)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 清空节点
|
||||
''' </summary>
|
||||
Public Sub Clear() Implements IList.Clear
|
||||
'清空树状目录子节点
|
||||
_owner.Children.Clear()
|
||||
|
||||
'更新父节点总子节点计数
|
||||
DelNodeUpdateAllChildCount(_owner, False)
|
||||
|
||||
|
||||
|
||||
'链状目录移除被删除的节点
|
||||
DelNodeUpdateRowList(_owner, False)
|
||||
|
||||
'更新链状目录中的节点索引
|
||||
DelNodeUpdateRowListIndex(_owner, False)
|
||||
|
||||
'更新总子节点计数
|
||||
_owner.AllChildCount = 0
|
||||
End Sub
|
||||
Public Sub CopyTo(array As Array, index As Integer) Implements ICollection.CopyTo
|
||||
_owner.Children.CopyTo(CType(array, RowNode()), index)
|
||||
End Sub
|
||||
|
||||
|
||||
Public Function Contains(value As Object) As Boolean Implements IList.Contains
|
||||
Return _owner.Children.Contains(CType(value, RowNode))
|
||||
End Function
|
||||
|
||||
Public Function IndexOf(value As Object) As Integer Implements IList.IndexOf
|
||||
Return _owner.Children.IndexOf(CType(value, RowNode))
|
||||
End Function
|
||||
|
||||
Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
|
||||
Return _owner.Children.GetEnumerator
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
761
UTS_Core/UTSModule/Station/RowNodeGrid.vb
Normal file
761
UTS_Core/UTSModule/Station/RowNodeGrid.vb
Normal file
@@ -0,0 +1,761 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Windows.Forms
|
||||
Imports FlexCell.Grid
|
||||
Imports FlexCell
|
||||
Imports UTS_Core.UTSModule.Production
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class RowNodeGrid
|
||||
''' <summary>
|
||||
''' 行节点表,当前选择行
|
||||
''' </summary>
|
||||
Private _lastSingleRowSelRow As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 行节点表,下拉框选择行
|
||||
''' </summary>
|
||||
Private _grdSingleRowDropRow As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 行节点表,下拉框所在列
|
||||
''' </summary>
|
||||
Private _grdSingleRowDropCol As Integer
|
||||
|
||||
Private _grd As Grid
|
||||
|
||||
''' <summary>
|
||||
''' 详细信息表格内容变更类型
|
||||
''' </summary>
|
||||
Private _cellChanged As GridCellChangedEnum = GridCellChangedEnum.None
|
||||
|
||||
Public Property RtxColTip As RichTextBox
|
||||
|
||||
Private ReadOnly _planColManager As PlanColManager '测试列提示管理器
|
||||
Private ReadOnly _testCmdManager As TestCmdManager '测试命令管理器
|
||||
Private ReadOnly _errCodeManager As ErrCodeManager '错误代码管理器
|
||||
|
||||
Private Property ActiveRowNode() As RowNode
|
||||
|
||||
Public Event RowNodeTextChanged(ByVal sender As Object, ByVal e As RowNodeChangedEventArgs) '自定义事件
|
||||
|
||||
|
||||
Public Sub New()
|
||||
_errCodeManager = ErrCodeManager.CreateManager()
|
||||
_testCmdManager = TestCmdManager.CreateManager()
|
||||
_planColManager = PlanColManager.CreateManager()
|
||||
End Sub
|
||||
|
||||
#Region "FlexCell"
|
||||
Public Property Grid() As Grid
|
||||
Get
|
||||
Return _grd
|
||||
End Get
|
||||
Set(value As Grid)
|
||||
_grd = value
|
||||
|
||||
InitializeGrid()
|
||||
|
||||
RemoveHandler _grd.CellChange, AddressOf Grid_CellChange
|
||||
RemoveHandler _grd.ComboClick, AddressOf Grid_ComboClick
|
||||
RemoveHandler _grd.ComboDropDown, AddressOf Grid_ComboDropDown
|
||||
RemoveHandler _grd.SelChange, AddressOf Grid_SelChange
|
||||
|
||||
|
||||
AddHandler _grd.CellChange, AddressOf Grid_CellChange
|
||||
AddHandler _grd.ComboClick, AddressOf Grid_ComboClick
|
||||
AddHandler _grd.ComboDropDown, AddressOf Grid_ComboDropDown
|
||||
AddHandler _grd.SelChange, AddressOf Grid_SelChange
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 初始化测试站表格
|
||||
''' </summary>
|
||||
Public Sub InitializeGrid()
|
||||
With _grd
|
||||
.AutoRedraw = False
|
||||
|
||||
.Rows = RowNames.Max '行数不确定
|
||||
.Cols = ColNames.Max
|
||||
|
||||
.DisplayRowNumber = True '首列显示数字
|
||||
.ExtendLastCol = True '最后一列自动扩充
|
||||
.MultiSelect = False '是否允许选择多行
|
||||
|
||||
.BorderStyle = BorderStyleEnum.None
|
||||
.DefaultFont = New Font("微软雅黑", 8)
|
||||
|
||||
.Range(0, 0, 0, .Cols - 1).Font = New Font($"幼圆", 8) '首行样式
|
||||
|
||||
|
||||
For col As Integer = 0 To ColNames.Max - 1
|
||||
.Cell(0, col).Text = [Enum].GetName(GetType(ColNames), col) '设置列名
|
||||
Next
|
||||
|
||||
|
||||
For i As Integer = 0 To RowNames.Max - 1
|
||||
.Cell(i, ColNames.ColName).Text = [Enum].GetName(GetType(RowNames), i) '填充行内容
|
||||
Next
|
||||
|
||||
.Column(ColNames.ColName).Locked = True
|
||||
|
||||
|
||||
.Cell(RowNames.RowType, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
|
||||
.Cell(RowNames.ControlType, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
|
||||
.Cell(RowNames.ErrorCode, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
|
||||
.Cell(RowNames.Command, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
|
||||
.Cell(RowNames.CommandType, ColNames.ColValue).CellType = CellTypeEnum.ComboBox
|
||||
.Cell(RowNames.ActionEn, ColNames.ColValue).CellType = CellTypeEnum.CheckBox
|
||||
.Cell(RowNames.Action, ColNames.ColValue).CellType = CellTypeEnum.CheckBox
|
||||
.Cell(RowNames.SaveToDb, ColNames.ColValue).CellType = CellTypeEnum.CheckBox
|
||||
|
||||
.Cell(RowNames.ActionEn, ColNames.ColValue).Locked = True
|
||||
|
||||
|
||||
|
||||
'CommandType 背景色
|
||||
.Range(RowNames.CommandType, ColNames.ColValue, RowNames.CommandType, ColNames.ColValue).BackColor = Color.LemonChiffon
|
||||
'Command 背景色
|
||||
.Range(RowNames.Command, ColNames.ColValue, RowNames.Command, ColNames.ColValue).BackColor = Color.Beige
|
||||
.Range(RowNames.Command, ColNames.ColValue, RowNames.Command, ColNames.ColValue).FontSize = 10
|
||||
.Range(RowNames.Command, ColNames.ColValue, RowNames.Command, ColNames.ColValue).FontBold = True
|
||||
|
||||
'Description 背景色
|
||||
.Range(RowNames.Description, ColNames.ColValue, RowNames.Description, ColNames.ColValue).BackColor = Color.MistyRose
|
||||
.Range(RowNames.Description, ColNames.ColValue, RowNames.Description, ColNames.ColValue).FontSize = 10
|
||||
|
||||
|
||||
|
||||
.ComboBox(0).Locked = True
|
||||
|
||||
.AutoRedraw = True
|
||||
.Refresh()
|
||||
End With
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "表格事件处理"
|
||||
Private _isUpload As Boolean
|
||||
Private _beforeNode As RowNode
|
||||
|
||||
Private Sub Grid_CellChange(sender As Object, e As CellChangeEventArgs)
|
||||
If ActiveRowNode Is Nothing Then Return
|
||||
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.RowNodeInfo
|
||||
If _cellChanged <> GridCellChangedEnum.RowNodeInfo Then Return
|
||||
|
||||
If Not _isUpload Then _beforeNode = ActiveRowNode.Clone
|
||||
_isUpload = True
|
||||
|
||||
If e.Col = ColNames.ColValue Then
|
||||
Dim value As String = _grd.Cell(e.Row, e.Col).Text
|
||||
Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType = RowNodeChangedEventArgs.RowNodeChangeType.None
|
||||
Select Case e.Row
|
||||
Case RowNames.Action
|
||||
ActiveRowNode.Action = _grd.Cell(e.Row, e.Col).BooleanValue
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Action
|
||||
Case RowNames.Label
|
||||
ActiveRowNode.Label = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Label
|
||||
Case RowNames.CommandType
|
||||
Dim cmdType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
|
||||
If String.Compare(ActiveRowNode.CommandType, cmdType) <> 0 Then
|
||||
ActiveRowNode.CommandType = cmdType
|
||||
ActiveRowNode.Command = ""
|
||||
ActiveRowNode.Parameters.Clear()
|
||||
ActiveRowNode.Action = Not String.IsNullOrWhiteSpace(ActiveRowNode.Command)
|
||||
CommandTypeChanged(ActiveRowNode)
|
||||
End If
|
||||
ActiveRowNode.CommandType = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
|
||||
Case RowNames.ControlType
|
||||
ActiveRowNode.ControlType = _grd.Cell(RowNames.ControlType, ColNames.ColValue).Text
|
||||
Case RowNames.Command
|
||||
Dim cmdName As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text
|
||||
If String.Compare(ActiveRowNode.Command, cmdName) <> 0 Then
|
||||
ActiveRowNode.Command = cmdName
|
||||
ActiveRowNode.Parameters.Clear()
|
||||
ActiveRowNode.Action = Not String.IsNullOrWhiteSpace(ActiveRowNode.Command)
|
||||
|
||||
'拷贝所有参数到当前节点信息中
|
||||
Dim planCommand As TestCmd = _testCmdManager.GetCommand(ActiveRowNode.CommandType, ActiveRowNode.Command)
|
||||
If planCommand Is Nothing Then Return
|
||||
For Each cmdParam As TestCmdParam In planCommand.Params
|
||||
ActiveRowNode.Parameters.Add(cmdParam.Clone())
|
||||
Next
|
||||
|
||||
'更新行节点信息表格内容
|
||||
CommandChanged(ActiveRowNode)
|
||||
End If
|
||||
|
||||
ActiveRowNode.Command = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
|
||||
Case RowNames.ErrorCode
|
||||
Dim codeMsg As String = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text
|
||||
Dim errCode As String = ErrCodeManager.CodeMsgToCode(codeMsg)
|
||||
If String.Compare(ActiveRowNode.ErrorCode, errCode) <> 0 Then
|
||||
ActiveRowNode.ErrorCode = errCode
|
||||
ActiveRowNode.ErrorMessage = _errCodeManager(ActiveRowNode.ErrorCode).Msg
|
||||
_grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text = errCode
|
||||
_grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor = _errCodeManager(ActiveRowNode.ErrorCode).Color
|
||||
_grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).BackColor = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor
|
||||
ErrCodeChanged(ActiveRowNode)
|
||||
End If
|
||||
ActiveRowNode.ErrorCode = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
|
||||
Case RowNames.ErrorMessage
|
||||
ActiveRowNode.ErrorMessage = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
|
||||
|
||||
Case RowNames.RowType
|
||||
ActiveRowNode.RowType = CType([Enum].Parse(GetType(RowNode.RowTypeEnum), value), RowNode.RowTypeEnum)
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RowType
|
||||
Case RowNames.Description
|
||||
ActiveRowNode.Description = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Description
|
||||
Case RowNames.SaveToDb
|
||||
ActiveRowNode.SaveToDb = _grd.Cell(e.Row, e.Col).BooleanValue
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb
|
||||
Case RowNames.RecordName
|
||||
ActiveRowNode.RecordName = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RecordName
|
||||
Case RowNames.Retry
|
||||
ActiveRowNode.Retry = CInt(value)
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Retry
|
||||
Case RowNames.RetryInterval
|
||||
ActiveRowNode.RetryInterval = CInt(value)
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
|
||||
|
||||
Case >= RowNames.Parameters
|
||||
If e.Row - RowNames.Parameters > ActiveRowNode.Parameters.Count - 1 Then Return
|
||||
ActiveRowNode.Parameters(e.Row - RowNames.Parameters).Value = value
|
||||
changeType = RowNodeChangedEventArgs.RowNodeChangeType.Parameters
|
||||
End Select
|
||||
|
||||
If changeType = RowNodeChangedEventArgs.RowNodeChangeType.None Then Return
|
||||
|
||||
If _beforeNode IsNot Nothing Then
|
||||
Dim args As New RowNodeChangedEventArgs With {
|
||||
.Node = ActiveRowNode,
|
||||
.BeforeNode = _beforeNode,
|
||||
.ChangeType = changeType
|
||||
}
|
||||
RaiseEvent RowNodeTextChanged(sender, args)
|
||||
End If
|
||||
End If
|
||||
_isUpload = False
|
||||
_cellChanged = GridCellChangedEnum.None
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 单行信息表格命令修改后,同步刷新本身信息
|
||||
''' </summary>
|
||||
Private Sub CommandChanged(node As RowNode)
|
||||
_grd.Rows = RowNames.Parameters + node.Parameters.Count
|
||||
For idx As Integer = 0 To node.Parameters.Count - 1
|
||||
Dim row As Integer = RowNames.Parameters + idx
|
||||
|
||||
_grd.Cell(row, ColNames.ColName).Text = node.Parameters(idx).Desc
|
||||
_grd.Cell(row, ColNames.ColValue).Text = node.Parameters(idx).Value
|
||||
Next
|
||||
|
||||
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).BackColor = Color.LightGray
|
||||
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).Alignment = AlignmentEnum.RightCenter
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub CommandTypeChanged(node As RowNode)
|
||||
_grd.Rows = RowNames.Parameters + 1
|
||||
|
||||
_grd.Cell(RowNames.Command, ColNames.ColValue).Text = node.Command
|
||||
_grd.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
|
||||
_grd.Cell(RowNames.Parameters, ColNames.ColValue).Text = ""
|
||||
|
||||
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).BackColor = Color.LightGray
|
||||
_grd.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).Alignment = AlignmentEnum.RightCenter
|
||||
End Sub
|
||||
|
||||
Private Sub ErrCodeChanged(node As RowNode)
|
||||
_grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).Text = node.ErrorMessage
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 下拉框选择对象事件
|
||||
''' </summary>
|
||||
''' <param name="sender"></param>
|
||||
''' <param name="e"></param>
|
||||
Private Sub Grid_ComboClick(sender As Object, e As ComboClickEventArgs)
|
||||
'If ActiveRowNode Is Nothing Then Return
|
||||
'Dim changeType As RowNodeChangedEventArgs.RowNodeChangeType = RowNodeChangedEventArgs.RowNodeChangeType.None
|
||||
'Dim beforeNode As RowNode = ActiveRowNode.Clone
|
||||
'Select Case _grdSingleRowDropRow
|
||||
' Case RowNames.ControlType
|
||||
' ActiveRowNode.ControlType = _grd.Cell(RowNames.ControlType, ColNames.ColValue).Text
|
||||
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.ControlType
|
||||
' Case RowNames.CommandType
|
||||
' '如果命令类型变化则,清空命令
|
||||
' Dim cmdType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
|
||||
' If String.Compare(ActiveRowNode.CommandType, cmdType) <> 0 Then
|
||||
' ActiveRowNode.CommandType = cmdType
|
||||
' ActiveRowNode.Command = ""
|
||||
' ActiveRowNode.Parameters.Clear()
|
||||
' CommandTypeChanged(ActiveRowNode)
|
||||
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.CommandType
|
||||
' End If
|
||||
' Case RowNames.Command
|
||||
' Dim cmdName As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text
|
||||
' If String.Compare(ActiveRowNode.Command, cmdName) <> 0 Then
|
||||
' ActiveRowNode.Command = cmdName
|
||||
' ActiveRowNode.Parameters.Clear()
|
||||
|
||||
' '拷贝所有参数到当前节点信息中
|
||||
' Dim planCommand As TestCmd = _testCmdManager.GetCommand(ActiveRowNode.CommandType, ActiveRowNode.Command)
|
||||
' If planCommand Is Nothing Then Return
|
||||
' For Each cmdParam As TestCmdParam In planCommand.Params
|
||||
' ActiveRowNode.Parameters.Add(cmdParam.Clone())
|
||||
' Next
|
||||
|
||||
' '更新行节点信息表格内容
|
||||
' CommandChanged(ActiveRowNode)
|
||||
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.Command
|
||||
' End If
|
||||
' Case RowNames.ErrorCode
|
||||
' Dim codeMsg As String = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text
|
||||
' Dim errCode As String = ErrCodeManager.CodeMsgToCode(codeMsg)
|
||||
' If String.Compare(ActiveRowNode.ErrorCode, errCode) <> 0 Then
|
||||
' ActiveRowNode.ErrorCode = errCode
|
||||
' ActiveRowNode.ErrorMessage = _errCodeManager(ActiveRowNode.ErrorCode).Msg
|
||||
' _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).Text = errCode
|
||||
' _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor = _errCodeManager(ActiveRowNode.ErrorCode).Color
|
||||
' _grd.Cell(RowNames.ErrorMessage, ColNames.ColValue).BackColor = _grd.Cell(RowNames.ErrorCode, ColNames.ColValue).BackColor
|
||||
' ErrCodeChanged(ActiveRowNode)
|
||||
' changeType = RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
|
||||
' End If
|
||||
'End Select
|
||||
|
||||
'If changeType = RowNodeChangedEventArgs.RowNodeChangeType.None Then Return
|
||||
|
||||
'Dim args As New RowNodeChangedEventArgs With {
|
||||
' .Node = ActiveRowNode,
|
||||
' .BeforeNode = beforeNode,
|
||||
' .ChangeType = changeType
|
||||
'}
|
||||
'RaiseEvent RowNodeTextChanged(sender, args)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 表格下拉框出现时触发事件
|
||||
''' </summary>
|
||||
''' <param name="sender"></param>
|
||||
''' <param name="e"></param>
|
||||
Private Sub Grid_ComboDropDown(sender As Object, e As ComboDropDownEventArgs)
|
||||
_grdSingleRowDropRow = e.Row
|
||||
_grdSingleRowDropCol = e.Col
|
||||
|
||||
Select Case e.Row
|
||||
Case RowNames.ControlType
|
||||
_grd.ComboBox(0).Items.Clear()
|
||||
If ActiveRowNode.ParentNode.ControlType = "If" Then
|
||||
_grd.ComboBox(0).Items.Add("Then")
|
||||
_grd.ComboBox(0).Items.Add("ElseIf")
|
||||
_grd.ComboBox(0).Items.Add("Else")
|
||||
Else
|
||||
_grd.ComboBox(0).Items.Add("While")
|
||||
_grd.ComboBox(0).Items.Add("If")
|
||||
End If
|
||||
Case RowNames.CommandType
|
||||
_grd.ComboBox(0).Items.Clear()
|
||||
_grd.ComboBox(0).Items.AddRange(_testCmdManager.GetCommandTypes())
|
||||
Case RowNames.Command
|
||||
_grd.ComboBox(0).Items.Clear()
|
||||
_grd.ComboBox(0).Items.AddRange(_testCmdManager.GetCommandNames(ActiveRowNode.CommandType))
|
||||
Case RowNames.ErrorCode
|
||||
_grd.ComboBox(0).Items.Clear()
|
||||
_grd.ComboBox(0).Items.AddRange(_errCodeManager.GetAllCodeAndMsg())
|
||||
Case RowNames.RowType
|
||||
_grd.ComboBox(0).Items.Clear()
|
||||
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Control)
|
||||
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Flow)
|
||||
_grd.ComboBox(0).Items.Add(RowNode.RowTypeEnum.Module)
|
||||
Case RowNames.Parameters '特殊处理Call命令
|
||||
_grd.ComboBox(0).Items.Clear()
|
||||
_grd.ComboBox(0).Items.AddRange(UTS_Core.UTSModule.Test.UtsTester.CreateTester.GetCustomModuleName())
|
||||
End Select
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 更新流程列名提示
|
||||
''' </summary>
|
||||
''' <param name="colName"></param>
|
||||
Private Sub UpdatePlanColNameTip(colName As String)
|
||||
If _planColManager.IndexOf(colName) > 0 Then
|
||||
Dim planCol As PlanCol = _planColManager(colName)
|
||||
|
||||
RtxColTip.SuspendLayout()
|
||||
RtxColTip.Clear()
|
||||
|
||||
RtxColTip.AppendText($"{planCol.ColName}{vbCrLf}")
|
||||
RtxColTip.AppendText($"类型:{planCol.ColType}{vbCrLf}")
|
||||
RtxColTip.AppendText($"描述:{planCol.ColDesc}{vbCrLf}")
|
||||
RtxColTip.ResumeLayout(False)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 更新流程命令提示
|
||||
''' </summary>
|
||||
''' <param name="colName"></param>
|
||||
''' <param name="commandType"></param>
|
||||
''' <param name="commandName"></param>
|
||||
''' <param name="paramIndex"></param>
|
||||
Private Sub UpdateCommandTip(colName As String, commandType As String, commandName As String, paramIndex As Integer)
|
||||
|
||||
Dim planCommand As TestCmd = _testCmdManager.GetCommand(commandType, commandName)
|
||||
If planCommand IsNot Nothing Then
|
||||
RtxColTip.SuspendLayout()
|
||||
RtxColTip.Clear()
|
||||
|
||||
RtxColTip.AppendText($"{colName}{vbCrLf}")
|
||||
RtxColTip.AppendText($"类型:{planCommand.Params(paramIndex).Type}{vbCrLf}")
|
||||
RtxColTip.AppendText($"上限:{planCommand.Params(paramIndex).UpperLimit}{vbCrLf}")
|
||||
RtxColTip.AppendText($"下限:{planCommand.Params(paramIndex).LowerLimit}{vbCrLf}")
|
||||
RtxColTip.AppendText($"描述:{planCommand.Params(paramIndex).Desc}{vbCrLf}")
|
||||
RtxColTip.ResumeLayout(False)
|
||||
Else
|
||||
RtxColTip.AppendText($"{colName}{vbCrLf}")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 单行信息表格更新当前行
|
||||
''' </summary>
|
||||
''' <param name="row"></param>
|
||||
Private Sub UpdateSingleRowTip(row As Integer)
|
||||
Dim colName As String = _grd.Cell(row, ColNames.ColName).Text
|
||||
|
||||
If row >= RowNames.Parameters Then
|
||||
Dim commandType As String = _grd.Cell(RowNames.CommandType, ColNames.ColValue).Text
|
||||
Dim command As String = _grd.Cell(RowNames.Command, ColNames.ColValue).Text
|
||||
|
||||
If String.IsNullOrEmpty(command) Then
|
||||
UpdatePlanColNameTip(colName)
|
||||
Else
|
||||
UpdateCommandTip(colName, commandType, command, row - RowNames.Parameters)
|
||||
End If
|
||||
Else
|
||||
UpdatePlanColNameTip(colName)
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub SingleRowSelChange(row As Integer)
|
||||
If _lastSingleRowSelRow = row Then Return
|
||||
If _lastSingleRowSelRow >= _grd.Rows Then Return
|
||||
'新增命令切换处理
|
||||
|
||||
_grd.Cell(_lastSingleRowSelRow, ColNames.ColName).FontBold = False
|
||||
|
||||
_grd.Cell(row, ColNames.ColName).FontBold = True
|
||||
|
||||
UpdateSingleRowTip(row) '更新列提示
|
||||
|
||||
_lastSingleRowSelRow = row
|
||||
End Sub
|
||||
|
||||
Private Sub Grid_SelChange(sender As Object, e As SelChangeEventArgs)
|
||||
SingleRowSelChange(e.FirstRow)
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
#Region "外部事件处理"
|
||||
''' <summary>
|
||||
''' 主表格选中单元格时触发事件
|
||||
''' </summary>
|
||||
''' <param name="node"></param>
|
||||
''' <param name="LineNumber"></param>
|
||||
''' <param name="LineActionEn"></param>
|
||||
Public Sub AfterSelectUpdateGrid(node As RowNode, LineNumber As Integer, LineActionEn As Boolean)
|
||||
Dim col As Integer = ColNames.ColValue
|
||||
Dim textColor As Color
|
||||
Dim RecordNameEn As Boolean
|
||||
|
||||
_grd.AutoRedraw = False
|
||||
|
||||
With _grd
|
||||
.SuspendLayout()
|
||||
|
||||
.Column(col).Locked = Not node.CanChangeContent '是否允许编辑
|
||||
|
||||
If node.Parameters.Count > 0 Then
|
||||
.Rows = RowNames.Parameters + node.Parameters.Count
|
||||
|
||||
'todo:特殊处理Call命令
|
||||
If node.Command = "Call" Then
|
||||
.Cell(RowNames.Parameters, col).CellType = CellTypeEnum.ComboBox
|
||||
Else
|
||||
.Cell(RowNames.Parameters, col).CellType = CellTypeEnum.TextBox
|
||||
End If
|
||||
|
||||
For i As Integer = 0 To node.Parameters.Count - 1
|
||||
.Cell(RowNames.Parameters + i, ColNames.ColName).Text = node.Parameters(i).Desc
|
||||
.Cell(RowNames.Parameters + i, col).Text = node.Parameters(i).Value
|
||||
Next
|
||||
|
||||
Else
|
||||
.Rows = RowNames.Parameters + 1
|
||||
|
||||
.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
|
||||
.Cell(RowNames.Parameters, col).CellType = CellTypeEnum.TextBox
|
||||
.Cell(RowNames.Parameters, col).Text = ""
|
||||
End If
|
||||
|
||||
.Cell(RowNames.LineNumber, col).Text = LineNumber.ToString
|
||||
.Cell(RowNames.RowType, col).Text = node.RowType.ToString()
|
||||
.Cell(RowNames.ActionEn, col).Text = LineActionEn.ToString()
|
||||
.Cell(RowNames.Action, col).Text = IIf(node.Action, "1", "0").ToString()
|
||||
.Cell(RowNames.ErrorCode, col).Text = node.ErrorCode.ToString()
|
||||
.Cell(RowNames.ErrorMessage, col).Text = node.ErrorMessage.ToString()
|
||||
|
||||
.Cell(RowNames.Command, col).Text = node.Command.ToString()
|
||||
.Cell(RowNames.CommandType, col).Text = node.CommandType.ToString()
|
||||
.Cell(RowNames.[Label], col).Text = node.[Label].ToString()
|
||||
.Cell(RowNames.Description, col).Text = node.Description.ToString()
|
||||
|
||||
.Cell(RowNames.SaveToDb, col).Text = node.SaveToDb.ToString()
|
||||
.Cell(RowNames.RecordName, col).Text = node.RecordName.ToString()
|
||||
|
||||
.Cell(RowNames.Retry, col).Text = node.Retry.ToString()
|
||||
.Cell(RowNames.RetryInterval, col).Text = node.RetryInterval.ToString()
|
||||
|
||||
textColor = setRowTextForeColor(.Cell(RowNames.CommandType, col).Text, LineActionEn, node.RowType)
|
||||
|
||||
.Cell(RowNames.CommandType, col).ForeColor = textColor
|
||||
.Cell(RowNames.RecordName, col).ForeColor = textColor
|
||||
|
||||
Select Case node.RowType
|
||||
Case RowNode.RowTypeEnum.FixedModule
|
||||
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).BackColor = Color.PeachPuff
|
||||
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).ForeColor = Color.Blue
|
||||
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).FontBold = True
|
||||
Case Else
|
||||
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).BackColor = Color.White
|
||||
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).ForeColor = textColor
|
||||
.Range(RowNames.RowType, col, RowNames.RowType, ColNames.Max - 1).FontBold = False
|
||||
End Select
|
||||
|
||||
|
||||
If String.IsNullOrWhiteSpace(node.ErrorCode) = False Then
|
||||
.Cell(RowNames.ErrorCode, col).BackColor = _errCodeManager(node.ErrorCode).Color
|
||||
.Cell(RowNames.ErrorMessage, col).BackColor = .Cell(RowNames.ErrorCode, col).BackColor
|
||||
Else
|
||||
.Cell(RowNames.ErrorCode, col).BackColor = Color.White
|
||||
.Cell(RowNames.ErrorMessage, col).BackColor = Color.White
|
||||
End If
|
||||
|
||||
' .Range(RowNames.Label, ColNames.ColValue, _grd.Rows - 1, ColNames.ColValue).BackColor = Color.White
|
||||
.Range(RowNames.Label, ColNames.ColValue, _grd.Rows - 1, ColNames.ColValue).ForeColor = textColor
|
||||
' .Range(RowNames.Label, ColNames.ColValue, _grd.Rows - 1, ColNames.ColValue).FontBold = False
|
||||
|
||||
|
||||
RecordNameEn = LineActionEn And .Cell(RowNames.SaveToDb, col).BooleanValue
|
||||
textColor = setRowTextForeColor(.Cell(RowNames.CommandType, col).Text, RecordNameEn, node.RowType)
|
||||
.Cell(RowNames.RecordName, col).ForeColor = textColor
|
||||
|
||||
.Cell(RowNames.Command, ColNames.ColValue).ForeColor = Color.Blue
|
||||
|
||||
.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).BackColor = Color.LightGray
|
||||
.Range(RowNames.LineNumber, ColNames.ColName, _grd.Rows - 1, ColNames.ColName).Alignment = AlignmentEnum.RightCenter
|
||||
|
||||
.ResumeLayout(False)
|
||||
.PerformLayout()
|
||||
End With
|
||||
|
||||
|
||||
_grd.AutoRedraw = True
|
||||
_grd.Refresh()
|
||||
End Sub
|
||||
''' <summary>
|
||||
''' 根据CmdType 和 isAction 返回该行字体颜色
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function setRowTextForeColor(rowCmdType As String, isAction As Boolean, Optional rowNodeType As Integer = 3) As Color
|
||||
If isAction = True Then
|
||||
If rowNodeType = RowNode.RowTypeEnum.Flow Then
|
||||
Select Case rowCmdType
|
||||
Case "System"
|
||||
Return Color.DarkSlateGray
|
||||
Case "ComPort"
|
||||
Return Color.DarkCyan
|
||||
Case "UtsComPort"
|
||||
Return Color.SeaGreen
|
||||
Case "Converter"
|
||||
Return Color.DarkOrange
|
||||
Case "Process"
|
||||
Return Color.DarkBlue
|
||||
Case Else
|
||||
Return Color.Black
|
||||
End Select
|
||||
ElseIf rowNodeType = RowNode.RowTypeEnum.Module Then
|
||||
Return Color.DeepPink
|
||||
ElseIf rowNodeType = RowNode.RowTypeEnum.FixedModule Then
|
||||
Return Color.Blue
|
||||
End If
|
||||
Else
|
||||
Return Color.LightGray
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Sub Grid_PlanNodeSelectChanged(sender As Object, ByVal e As PlanNodeSelectChangedEventArgs)
|
||||
If e.Node Is Nothing Then Return
|
||||
|
||||
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.SelectChange
|
||||
|
||||
If _cellChanged = GridCellChangedEnum.SelectChange Then
|
||||
ActiveRowNode = e.Node
|
||||
|
||||
AfterSelectUpdateGrid(ActiveRowNode, e.LineNumber, e.LineActionEn)
|
||||
|
||||
_cellChanged = GridCellChangedEnum.None
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Sub RowNodeTextChangedUpdateGrid(e As RowNodeChangedEventArgs)
|
||||
Dim col As Integer = ColNames.ColValue
|
||||
Dim node As RowNode = e.Node
|
||||
|
||||
With _grd
|
||||
Select Case e.ChangeType
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.Action
|
||||
.Cell(RowNames.Action, col).Text = IIf(node.Action, "1", "0").ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.SaveToDb
|
||||
.Cell(RowNames.SaveToDb, col).Text = IIf(node.SaveToDb, "1", "0").ToString
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.RowType
|
||||
.Cell(RowNames.RowType, col).Text = node.RowType.ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.Label
|
||||
.Cell(RowNames.[Label], col).Text = node.[Label].ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.Description
|
||||
.Cell(RowNames.Description, col).Text = node.Description.ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.CommandType
|
||||
.Cell(RowNames.CommandType, col).Text = node.CommandType.ToString()
|
||||
CommandTypeChanged(node)
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.Command
|
||||
.Cell(RowNames.Command, col).Text = node.Command.ToString()
|
||||
CommandChanged(node)
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.Parameters
|
||||
If node.Parameters.Count > 0 Then
|
||||
.Rows = RowNames.Parameters + node.Parameters.Count
|
||||
|
||||
For i As Integer = 0 To node.Parameters.Count - 1
|
||||
.Cell(RowNames.Parameters + i, ColNames.ColName).Text = node.Parameters(i).Desc
|
||||
.Cell(RowNames.Parameters + i, col).Text = node.Parameters(i).Value
|
||||
Next
|
||||
Else
|
||||
.Rows = RowNames.Parameters + 1
|
||||
|
||||
.Cell(RowNames.Parameters, ColNames.ColName).Text = RowNames.Parameters.ToString()
|
||||
.Cell(RowNames.Parameters, col).Text = ""
|
||||
End If
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.RecordName
|
||||
.Cell(RowNames.RecordName, col).Text = node.RecordName.ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.Retry
|
||||
.Cell(RowNames.Retry, col).Text = node.Retry.ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.RetryInterval
|
||||
.Cell(RowNames.RetryInterval, col).Text = node.RetryInterval.ToString()
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorCode
|
||||
.Cell(RowNames.ErrorCode, col).Text = node.ErrorCode
|
||||
If String.IsNullOrWhiteSpace(node.ErrorCode) = False Then
|
||||
.Cell(RowNames.ErrorCode, col).BackColor = _errCodeManager(node.ErrorCode).Color
|
||||
.Cell(RowNames.ErrorMessage, col).BackColor = .Cell(RowNames.ErrorCode, col).BackColor
|
||||
Else
|
||||
.Cell(RowNames.ErrorCode, col).BackColor = Color.White
|
||||
.Cell(RowNames.ErrorMessage, col).BackColor = Color.White
|
||||
End If
|
||||
Case RowNodeChangedEventArgs.RowNodeChangeType.ErrorMessage
|
||||
.Cell(RowNames.ErrorMessage, col).Text = node.ErrorMessage.ToString()
|
||||
End Select
|
||||
End With
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub Grid_RowNodeTextChanged(sender As Object, e As RowNodeChangedEventArgs)
|
||||
If _cellChanged = GridCellChangedEnum.None Then _cellChanged = GridCellChangedEnum.TextChange
|
||||
If _cellChanged <> GridCellChangedEnum.TextChange Then Return
|
||||
|
||||
RowNodeTextChangedUpdateGrid(e)
|
||||
|
||||
_cellChanged = GridCellChangedEnum.None
|
||||
End Sub
|
||||
#End Region
|
||||
|
||||
|
||||
Public Enum ColNames
|
||||
Sn
|
||||
ColName
|
||||
ColValue
|
||||
Max
|
||||
End Enum
|
||||
|
||||
Public Enum RowNames
|
||||
ColName
|
||||
|
||||
LineNumber
|
||||
RowType
|
||||
|
||||
[Label]
|
||||
ControlType
|
||||
Description
|
||||
|
||||
ActionEn
|
||||
Action
|
||||
SaveToDb
|
||||
RecordName
|
||||
|
||||
Retry
|
||||
RetryInterval
|
||||
|
||||
ErrorCode
|
||||
ErrorMessage
|
||||
|
||||
CommandType
|
||||
Command
|
||||
Parameters
|
||||
|
||||
Max
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 详细信息表格内容变更类型枚举值
|
||||
''' </summary>
|
||||
Enum GridCellChangedEnum
|
||||
''' <summary>
|
||||
''' 未变更
|
||||
''' </summary>
|
||||
None
|
||||
''' <summary>
|
||||
''' 加载流程时时引起的变更
|
||||
''' </summary>
|
||||
TestPlan
|
||||
''' <summary>
|
||||
''' 行节点信息修改引起的变更
|
||||
''' </summary>
|
||||
RowNodeInfo
|
||||
''' <summary>
|
||||
''' 切换选择节点引起的变更
|
||||
''' </summary>
|
||||
SelectChange
|
||||
''' <summary>
|
||||
''' 关联节点内容变更
|
||||
''' </summary>
|
||||
TextChange
|
||||
End Enum
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
139
UTS_Core/UTSModule/Station/RowNodeStyle.vb
Normal file
139
UTS_Core/UTSModule/Station/RowNodeStyle.vb
Normal file
@@ -0,0 +1,139 @@
|
||||
Imports System.Drawing
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class RowNodeStyle
|
||||
Sub New()
|
||||
NodeFont = New Font($"Consolas", 8.5, FontStyle.Regular)
|
||||
NodeForeColor = Color.Transparent
|
||||
NodeBackColor = Color.Transparent
|
||||
NodeImageKey = String.Empty
|
||||
|
||||
ShowLabel = False
|
||||
ShowDescription = False
|
||||
|
||||
ShowCommand = False
|
||||
ShowParameter = False
|
||||
|
||||
ShowRetry = False
|
||||
ShowRetryInterval = False
|
||||
|
||||
ShowErrorCode = False
|
||||
ShowErrorMessage = False
|
||||
|
||||
ShowAction = False
|
||||
ShowRecord = False
|
||||
End Sub
|
||||
|
||||
|
||||
Sub New(type As RowNode.RowTypeEnum)
|
||||
Select Case type
|
||||
Case RowNode.RowTypeEnum.FixedModule
|
||||
NodeBackColor = Color.Transparent
|
||||
NodeFont = New Font($"Consolas", 11.5, FontStyle.Bold Or FontStyle.Italic)
|
||||
NodeForeColor = Color.SkyBlue
|
||||
NodeImage = Nothing
|
||||
NodeImageKey = type.ToString()
|
||||
|
||||
ShowLabel = True
|
||||
ShowDescription = True
|
||||
Case RowNode.RowTypeEnum.Module
|
||||
NodeBackColor = Color.Transparent
|
||||
NodeFont = New Font($"Consolas", 10.5, FontStyle.Bold)
|
||||
NodeForeColor = Color.LightSkyBlue
|
||||
NodeImage = Nothing
|
||||
NodeImageKey = type.ToString()
|
||||
|
||||
|
||||
ShowLabel = True
|
||||
ShowDescription = True
|
||||
Case RowNode.RowTypeEnum.Control
|
||||
NodeBackColor = Color.Transparent
|
||||
NodeFont = New Font($"Consolas", 9.5, FontStyle.Italic)
|
||||
NodeForeColor = Color.DarkOrchid
|
||||
NodeImage = Nothing
|
||||
NodeImageKey = type.ToString()
|
||||
|
||||
|
||||
ShowLabel = True
|
||||
ShowDescription = True
|
||||
|
||||
ShowCommand = True
|
||||
ShowParameter = True
|
||||
|
||||
Case RowNode.RowTypeEnum.Flow
|
||||
NodeBackColor = Color.Transparent
|
||||
NodeFont = New Font($"Consolas", 8.5, FontStyle.Regular)
|
||||
NodeForeColor = Color.Black
|
||||
NodeImage = Nothing
|
||||
NodeImageKey = type.ToString()
|
||||
|
||||
|
||||
|
||||
ShowLabel = True
|
||||
ShowDescription = True
|
||||
|
||||
ShowCommand = True
|
||||
ShowParameter = True
|
||||
|
||||
ShowRetry = True
|
||||
ShowRetryInterval = True
|
||||
|
||||
ShowErrorCode = True
|
||||
ShowErrorMessage = True
|
||||
|
||||
ShowAction = True
|
||||
ShowRecord = True
|
||||
End Select
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 节点字体
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property NodeFont() As Font
|
||||
|
||||
''' <summary>
|
||||
''' 节点字体颜色
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property NodeForeColor() As Color
|
||||
|
||||
''' <summary>
|
||||
''' 节点图标
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property NodeImage() As Image
|
||||
|
||||
''' <summary>
|
||||
''' 节点图标索引
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property NodeImageKey() As String
|
||||
|
||||
''' <summary>
|
||||
''' 节点背景颜色
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property NodeBackColor() As Color
|
||||
|
||||
|
||||
Public Property ShowRowType As Boolean
|
||||
Public Property ShowLabel As Boolean
|
||||
Public Property ShowDescription As Boolean
|
||||
|
||||
Public Property ShowAction As Boolean
|
||||
Public Property ShowRecord As Boolean
|
||||
|
||||
Public Property ShowRetry As Boolean
|
||||
Public Property ShowRetryInterval As Boolean
|
||||
|
||||
Public Property ShowErrorCode As Boolean
|
||||
Public Property ShowErrorMessage As Boolean
|
||||
|
||||
Public Property ShowCommand As Boolean
|
||||
Public Property ShowParameter As Boolean
|
||||
End Class
|
||||
End Namespace
|
||||
369
UTS_Core/UTSModule/Station/StationPackagePlan.vb
Normal file
369
UTS_Core/UTSModule/Station/StationPackagePlan.vb
Normal file
@@ -0,0 +1,369 @@
|
||||
|
||||
Imports System.Text
|
||||
Imports System.Xml
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class StationPackagePlan
|
||||
Inherits StationPlan
|
||||
|
||||
Sub New(packet As StationPacket)
|
||||
MyBase.New(packet)
|
||||
|
||||
CreateStationPlan()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 校验条码未测试后处理方式
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CheckSnTested As CheckStatus
|
||||
|
||||
''' <summary>
|
||||
''' 校验条码已参与包装后处理方式
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CheckSnPackaged As CheckStatus
|
||||
|
||||
''' <summary>
|
||||
''' 校验条码不属于指定MO后处理方式
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CheckSnMO As CheckStatus
|
||||
|
||||
''' <summary>
|
||||
''' 保存图像的数量
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property PictureCount As Integer
|
||||
|
||||
''' <summary>
|
||||
''' 解锁密码
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property UnlockKey As String
|
||||
|
||||
''' <summary>
|
||||
''' 条码类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property BarCodeType As BarcodeTypes
|
||||
|
||||
''' <summary>
|
||||
''' 缺失条码数量后的处理方式
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property MissingQuantity As MissCountStatus
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 缺失条码数量后的解锁密码
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property MissingQuantityKey As String
|
||||
|
||||
''' <summary>
|
||||
''' 是否自动打印
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property AutoPrint As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 发生错误后报警文件
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ErrorSound As String
|
||||
|
||||
''' <summary>
|
||||
''' 模板文件名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property TemplateFile As String
|
||||
|
||||
''' <summary>
|
||||
''' 箱号编辑密码
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property BoxMumEditKey As String
|
||||
|
||||
''' <summary>
|
||||
''' 公司Logo文件
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CompanyLogo As String
|
||||
|
||||
''' <summary>
|
||||
''' 公司名称
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CompanyName As String
|
||||
|
||||
''' <summary>
|
||||
''' 箱号规则
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property BoxNumText As String
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 箱号条码
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property BoxBarCode As String
|
||||
|
||||
''' <summary>
|
||||
''' 前置站位
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property ForwardPosition As String
|
||||
|
||||
''' <summary>
|
||||
''' 后置站位
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property RearPosition As String
|
||||
''' <summary>
|
||||
''' 软件版本
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Versions As String
|
||||
|
||||
|
||||
|
||||
Public Overrides Sub CreateStationPlan()
|
||||
CheckSnTested = CheckStatus.Fail
|
||||
CheckSnPackaged = CheckStatus.Fail
|
||||
CheckSnMO = CheckStatus.Fail
|
||||
UnlockKey = ""
|
||||
BarCodeType = BarcodeTypes.AsTemplate
|
||||
MissingQuantity = MissCountStatus.Key
|
||||
MissingQuantityKey = ""
|
||||
AutoPrint = False
|
||||
ErrorSound = ""
|
||||
TemplateFile = ""
|
||||
BoxMumEditKey = ""
|
||||
CompanyLogo = ""
|
||||
CompanyName = ""
|
||||
BoxNumText = ""
|
||||
BoxBarCode = ""
|
||||
ForwardPosition = ""
|
||||
RearPosition = ""
|
||||
Versions = ""
|
||||
End Sub
|
||||
|
||||
Public Overrides Sub SaveFile(path As String)
|
||||
Dim xws As New XmlWriterSettings
|
||||
With xws
|
||||
.Indent = True
|
||||
.NewLineOnAttributes = False
|
||||
.Encoding = New UTF8Encoding(False)
|
||||
End With
|
||||
|
||||
Using xw As XmlWriter = XmlWriter.Create(path, xws)
|
||||
xw.WriteStartDocument()
|
||||
xw.WriteStartElement($"UtsStationPlan") '创建跟节点
|
||||
|
||||
xw.WriteStartElement($"Properties") '创建表属性节点
|
||||
|
||||
'测试流程的属性
|
||||
xw.WriteElementString("CheckSnTested", CheckSnTested.ToString)
|
||||
xw.WriteElementString("CheckSnPackaged", CheckSnPackaged.ToString)
|
||||
xw.WriteElementString("CheckSnMO", CheckSnMO.ToString)
|
||||
xw.WriteElementString("PictureCount", PictureCount.ToString)
|
||||
xw.WriteElementString("UnlockKey", UnlockKey)
|
||||
xw.WriteElementString("BarCodeType", BarCodeType.ToString)
|
||||
xw.WriteElementString("MissingQuantity", MissingQuantity.ToString)
|
||||
xw.WriteElementString("MissingQuantityKey", MissingQuantityKey)
|
||||
xw.WriteElementString("AutoPrint", AutoPrint.ToString)
|
||||
xw.WriteElementString("ErrorSound", ErrorSound)
|
||||
xw.WriteElementString("TemplateFile", TemplateFile)
|
||||
xw.WriteElementString("BoxMumEditKey", BoxMumEditKey)
|
||||
xw.WriteElementString("CompanyLogo", CompanyLogo)
|
||||
xw.WriteElementString("CompanyName", CompanyName)
|
||||
xw.WriteElementString("BoxNumText", BoxNumText)
|
||||
xw.WriteElementString("ForwardPosition", ForwardPosition)
|
||||
xw.WriteElementString("RearPosition", RearPosition)
|
||||
xw.WriteElementString("Versions", Versions)
|
||||
xw.WriteEndElement()
|
||||
|
||||
xw.WriteEndElement()
|
||||
xw.WriteEndDocument()
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 读取测试站属性
|
||||
''' </summary>
|
||||
''' <param name="nodeList"></param>
|
||||
Private Sub LoadProperties(nodeList As XmlNodeList)
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "CheckSnTested"
|
||||
If [Enum].TryParse(xe.InnerText, CheckSnTested) = False Then
|
||||
CheckSnTested = CheckStatus.Fail
|
||||
End If
|
||||
Case "CheckSnPackaged"
|
||||
If [Enum].TryParse(xe.InnerText, CheckSnPackaged) = False Then
|
||||
CheckSnPackaged = CheckStatus.Fail
|
||||
End If
|
||||
Case "CheckSnMO"
|
||||
If [Enum].TryParse(xe.InnerText, CheckSnMO) = False Then
|
||||
CheckSnMO = CheckStatus.Fail
|
||||
End If
|
||||
Case "PictureCount"
|
||||
If Integer.TryParse(xe.InnerText, PictureCount) = False Then
|
||||
PictureCount = 1
|
||||
End If
|
||||
Case "UnlockKey"
|
||||
UnlockKey = xe.InnerText
|
||||
Case "BarCodeType"
|
||||
If [Enum].TryParse(xe.InnerText, BarCodeType) = False Then
|
||||
BarCodeType = BarcodeTypes.AsTemplate
|
||||
End If
|
||||
Case "MissingQuantity"
|
||||
If [Enum].TryParse(xe.InnerText, MissingQuantity) = False Then
|
||||
MissingQuantity = MissCountStatus.Key
|
||||
End If
|
||||
Case "MissingQuantityKey"
|
||||
MissingQuantityKey = xe.InnerText
|
||||
Case "AutoPrint"
|
||||
If Boolean.TryParse(xe.InnerText, AutoPrint) = False Then
|
||||
AutoPrint = False
|
||||
End If
|
||||
Case "ErrorSound"
|
||||
ErrorSound = xe.InnerText
|
||||
Case "TemplateFile"
|
||||
TemplateFile = xe.InnerText
|
||||
Case "BoxMumEditKey"
|
||||
BoxMumEditKey = xe.InnerText
|
||||
Case "CompanyLogo"
|
||||
CompanyLogo = xe.InnerText
|
||||
Case "CompanyName"
|
||||
CompanyName = xe.InnerText
|
||||
Case "BoxNumText"
|
||||
BoxNumText = xe.InnerText
|
||||
Case "BoxBarCode"
|
||||
BoxBarCode = xe.InnerText
|
||||
Case "RearPosition"
|
||||
RearPosition = xe.InnerText
|
||||
Case "ForwardPosition"
|
||||
ForwardPosition = xe.InnerText
|
||||
Case "Versions"
|
||||
Versions = xe.InnerText
|
||||
Case Else
|
||||
'Throw New Exception($"StationPackagePlan LoadProperties Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Overrides Sub LoadFile(path As String)
|
||||
Dim xd As New XmlDocument()
|
||||
xd.Load(path)
|
||||
|
||||
Dim xe As XmlElement
|
||||
Dim nodeList As XmlNodeList = xd.SelectSingleNode($"UtsStationPlan").ChildNodes
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "Properties"
|
||||
LoadProperties(xe.ChildNodes)
|
||||
Case Else
|
||||
Throw New Exception($"StationPackagePlan LoadXml Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 校验条码失败后处理方式
|
||||
''' </summary>
|
||||
Enum CheckStatus
|
||||
''' <summary>
|
||||
''' 不处理
|
||||
''' </summary>
|
||||
None
|
||||
''' <summary>
|
||||
''' 校验失败
|
||||
''' </summary>
|
||||
Fail
|
||||
''' <summary>
|
||||
''' 程序锁定,需要管理员密码解锁,并写入注册表
|
||||
''' </summary>
|
||||
Lock
|
||||
''' <summary>
|
||||
''' 忽略错误继续录入
|
||||
''' </summary>
|
||||
Ignore
|
||||
End Enum
|
||||
|
||||
''' <summary>
|
||||
''' 条码总数缺少的处理方式
|
||||
''' </summary>
|
||||
Enum MissCountStatus
|
||||
''' <summary>
|
||||
''' 允许录入
|
||||
''' </summary>
|
||||
Yes
|
||||
''' <summary>
|
||||
''' 不允许录入
|
||||
''' </summary>
|
||||
No
|
||||
''' <summary>
|
||||
''' 需要输入密码解锁
|
||||
''' </summary>
|
||||
Key
|
||||
End Enum
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 条码单元格的类型
|
||||
''' </summary>
|
||||
Enum BarcodeTypes
|
||||
''' <summary>
|
||||
''' 以模板内容为准
|
||||
''' </summary>
|
||||
AsTemplate
|
||||
|
||||
''' <summary>
|
||||
''' CODE39支持的字符:空格, 数字, 大写字母, $, %, *, +, -, ., /
|
||||
''' </summary>
|
||||
CODE39
|
||||
|
||||
''' <summary>
|
||||
''' CODE128A支持的字符:空格, 数字, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /
|
||||
''' </summary>
|
||||
CODE128A
|
||||
|
||||
''' <summary>
|
||||
''' CODE128B支持的字符:空格, 数字, 小写字母, 大写字母, 标点符号, @, #, $, %, ^, +, -, *, /, ~
|
||||
''' </summary>
|
||||
CODE128B
|
||||
|
||||
''' <summary>
|
||||
''' CODE128C只能包含数字
|
||||
''' </summary>
|
||||
CODE128C
|
||||
|
||||
''' <summary>
|
||||
''' EAN128只能包含数字
|
||||
''' </summary>
|
||||
EAN128
|
||||
|
||||
''' <summary>
|
||||
''' EAN13是商品编码,必须是13位数字,第13位是根据前面12位运算后得到的
|
||||
''' </summary>
|
||||
EAN13
|
||||
|
||||
''' <summary>
|
||||
''' Interleaved2of5只能包含数字,数字的长度必须为偶数
|
||||
''' </summary>
|
||||
Interleaved2of5
|
||||
End Enum
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
700
UTS_Core/UTSModule/Station/StationPacket.vb
Normal file
700
UTS_Core/UTSModule/Station/StationPacket.vb
Normal file
@@ -0,0 +1,700 @@
|
||||
Imports System.IO
|
||||
Imports System.Text
|
||||
Imports System.Xml
|
||||
Imports FluentFTP
|
||||
Imports UTS_Core.Database
|
||||
|
||||
Imports UTS_Core.Security
|
||||
Imports UTS_Core.UTSModule.Station.ProcessStation
|
||||
Imports UTS_Core.UTSModule.Test.StatusMonitor
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class StationPacket
|
||||
Sub New(processStation As ProcessStation)
|
||||
CurrentImprint = New StationPacketImprint()
|
||||
HistoryImprints = New List(Of StationPacketImprint)()
|
||||
|
||||
_stationType = processStation.StationType
|
||||
StationPlan = StationPlanManager.CreateStationPlan(_stationType, Me)
|
||||
|
||||
EditPwd = String.Empty
|
||||
ReleasePwd = String.Empty
|
||||
|
||||
StationVersion = 0 '项目站版本从一开始
|
||||
|
||||
ParentProcessStation = processStation
|
||||
End Sub
|
||||
|
||||
Private _image As Drawing.Image
|
||||
Private _imageFileName As String
|
||||
Private _fileName As String
|
||||
Private _name As String
|
||||
Private _stationType As StationTypeEnum
|
||||
|
||||
''' <summary>测试包文件名称,不含.uts后缀</summary>
|
||||
Public ReadOnly Property Name() As String
|
||||
Get
|
||||
Return _name
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>测试包文件名称,含.uts后缀</summary>
|
||||
Public Property FileName() As String
|
||||
Get
|
||||
Return _fileName
|
||||
End Get
|
||||
Set(value As String)
|
||||
_fileName = value
|
||||
|
||||
If String.IsNullOrWhiteSpace(_fileName) Then
|
||||
_name = String.Empty
|
||||
Else
|
||||
_name = Path.GetFileNameWithoutExtension(_fileName)
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 当前站包所属站位类型
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property StationType As StationTypeEnum
|
||||
Get
|
||||
Return _stationType
|
||||
End Get
|
||||
Set(value As StationTypeEnum)
|
||||
_stationType = value
|
||||
StationPlan = StationPlanManager.CreateStationPlan(_stationType, Me)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
''' <summary>测试站包MD5值</summary>
|
||||
Public Property PacketMD5 As String
|
||||
|
||||
''' <summary>测试站包版本</summary>
|
||||
Public Property StationVersion As Integer
|
||||
|
||||
|
||||
''' <summary>修改项目流程时所需密码</summary>
|
||||
Public Property EditPwd As String
|
||||
|
||||
''' <summary>发布项目流程时所需密码</summary>
|
||||
Public Property ReleasePwd As String
|
||||
|
||||
''' <summary>测试站包有效日期</summary>
|
||||
Public Property ValidDate As Date
|
||||
|
||||
|
||||
''' <summary>测试站包创建时间</summary>
|
||||
Public Property CreateTime As Date
|
||||
|
||||
|
||||
''' <summary>测试站包修改时间</summary>
|
||||
Public Property ModifiedTime As Date
|
||||
|
||||
|
||||
''' <summary>发布测试站包的应用程序版本</summary>
|
||||
Public Property AppVersion() As Version
|
||||
|
||||
|
||||
''' <summary>发布测试站包的图片</summary>
|
||||
Public ReadOnly Property StationImage As Drawing.Image
|
||||
Get
|
||||
Return _image
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 项目站包历史发布说明
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property HistoryImprints() As List(Of StationPacketImprint)
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 当前版本发布说明
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CurrentImprint() As StationPacketImprint
|
||||
|
||||
Public Shared Function PacketImprintsToString(imprints As List(Of StationPacketImprint)) As String
|
||||
Dim strReturn As New StringBuilder
|
||||
For Each imprint As StationPacketImprint In imprints
|
||||
strReturn.Append($"{imprint.FileName}{vbNewLine}")
|
||||
strReturn.Append($"{imprint.Creator}{vbNewLine}")
|
||||
strReturn.Append(vbNewLine)
|
||||
|
||||
strReturn.Append(imprint.ToString())
|
||||
|
||||
strReturn.Append(vbNewLine)
|
||||
strReturn.Append(String.Empty.PadRight(40, "-"c))
|
||||
strReturn.Append(vbNewLine)
|
||||
Next
|
||||
|
||||
Return strReturn.ToString() '将历史记录转换成文本
|
||||
End Function
|
||||
|
||||
Public Property ImageFileName() As String
|
||||
Get
|
||||
Return _imageFileName
|
||||
End Get
|
||||
Set(value As String)
|
||||
_imageFileName = value
|
||||
Try
|
||||
Dim imagePath As String = $"{UtsPath.GetStationPacketResourceDirPath(Name)}\{_imageFileName}"
|
||||
If File.Exists(imagePath) Then
|
||||
_image = ImageProcessor.ImageProcessor.GetBitmapImage(imagePath)
|
||||
Else
|
||||
_image = Nothing
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Console.WriteLine($"ImageName Convert To Image Error:{ex.Message}")
|
||||
End Try
|
||||
End Set
|
||||
End Property
|
||||
|
||||
''' <summary>站位流程,不同的站位流程类型不同</summary>
|
||||
Public Property StationPlan() As StationPlan
|
||||
|
||||
|
||||
''' <summary>测试站包所在的测试站信息</summary>
|
||||
Public Property ParentProcessStation() As ProcessStation
|
||||
|
||||
''' <summary>
|
||||
''' 创建项目站包
|
||||
''' </summary>
|
||||
Public Sub CreatePacket()
|
||||
If ParentProcessStation Is Nothing Then Throw New Exception($"项目站包未关联项目站!")
|
||||
If ParentProcessStation.ParentProject Is Nothing Then Throw New Exception($"项目站包未关联项目!")
|
||||
|
||||
StationVersion = 0 '流程从零开始
|
||||
EditPwd = "123456"
|
||||
ReleasePwd = "00803"
|
||||
ValidDate = Now.AddMonths(6) '有效期六个月
|
||||
CreateTime = Now
|
||||
ModifiedTime = Now
|
||||
|
||||
FileName = NewPacketFileName() '更新文件名,唯一索引
|
||||
|
||||
AppVersion = New Version(Windows.Forms.Application.ProductVersion)
|
||||
HistoryImprints = New List(Of StationPacketImprint)()
|
||||
CurrentImprint = New StationPacketImprint()
|
||||
StationPlan = StationPlanManager.CreateStationPlan(_stationType, Me) '新的测试流程
|
||||
|
||||
UtsPath.StationPacketDirPath = UtsPath.GetStationPacketDirPath(Name)
|
||||
UtsPath.StationPacketInfoPath = UtsPath.GetStationPacketInfoPath(Name)
|
||||
UtsPath.StationPacketResourceDirPath = UtsPath.GetStationPacketResourceDirPath(Name)
|
||||
UtsPath.StationPacketTestPlanDirPath = UtsPath.GetStationPacketTestPlanDirPath(Name)
|
||||
|
||||
'创建相关文件夹
|
||||
Directory.CreateDirectory(UtsPath.StationPacketDirPath)
|
||||
Directory.CreateDirectory(UtsPath.StationPacketResourceDirPath)
|
||||
Directory.CreateDirectory(UtsPath.StationPacketTestPlanDirPath)
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function LoadImprintNode(nodeList As XmlNodeList) As List(Of String)
|
||||
Dim imprints As New List(Of String)
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "Imprint"
|
||||
imprints.Add(xe.InnerText)
|
||||
End Select
|
||||
Next
|
||||
Return imprints
|
||||
End Function
|
||||
|
||||
Private Function LoadImprintsNode(nodeList As XmlNodeList) As List(Of String)
|
||||
Dim imprints As New List(Of String)
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "Imprints"
|
||||
imprints = LoadImprintNode(node.ChildNodes)
|
||||
End Select
|
||||
Next
|
||||
Return imprints
|
||||
End Function
|
||||
|
||||
Private Function LoadHistoryImprintsNode(nodeList As XmlNodeList) As List(Of StationPacketImprint)
|
||||
Dim packetImprints As New List(Of StationPacketImprint)
|
||||
Dim xe As XmlElement
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
|
||||
Select Case xe.LocalName
|
||||
Case "HistoryImprint"
|
||||
Dim packetImprint As New StationPacketImprint
|
||||
packetImprint.FileName = xe.GetAttribute($"PacketName")
|
||||
packetImprint.Creator = xe.GetAttribute($"Creator")
|
||||
packetImprint.Imprints = LoadImprintsNode(node.ChildNodes)
|
||||
packetImprints.Add(packetImprint)
|
||||
Case Else
|
||||
Console.WriteLine($"LoadHistoryImprintsNode Unknown NodeName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
Return packetImprints
|
||||
End Function
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 加载项目站包信息文件
|
||||
''' </summary>
|
||||
''' <param name="packetInfoFilePath"></param>
|
||||
Private Sub LoadStationPacketInfoFile(packetInfoFilePath As String)
|
||||
Dim xd As New XmlDocument()
|
||||
xd.Load(packetInfoFilePath)
|
||||
Dim nodeList As XmlNodeList = xd.SelectSingleNode("Configs/StationInfo").ChildNodes
|
||||
For Each node As XmlNode In nodeList
|
||||
Dim xe As XmlElement = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "AppVersion"
|
||||
If Version.TryParse(xe.InnerText, AppVersion) = False Then '版本转换
|
||||
Throw New Exception($"AppVersionError!")
|
||||
End If
|
||||
'If AppVersion.CompareTo(My.Application.Info.Version) > 0 Then '版本比较,应该在加载后校验。
|
||||
' Throw New Exception($"AppVersion Is Too Low!")
|
||||
'End If
|
||||
Case "CreateTime"
|
||||
If Date.TryParse(xe.InnerText, CreateTime) = False Then
|
||||
Throw New Exception($"CreateTimeError!")
|
||||
End If
|
||||
Case "ModifiedTime"
|
||||
If Date.TryParse(xe.InnerText, ModifiedTime) = False Then
|
||||
Throw New Exception($"ModifiedTimeError!")
|
||||
End If
|
||||
Case "PassWord"
|
||||
EditPwd = Aes128.DecryptStr(xe.InnerText, Aes128.ServerAesKey)
|
||||
Case "ReleasePwd"
|
||||
ReleasePwd = Aes128.DecryptStr(xe.InnerText, Aes128.ServerAesKey)
|
||||
Case "ValidDate"
|
||||
If Date.TryParse(Aes128.DecryptStr(xe.InnerText, Aes128.ServerAesKey), ValidDate) = False Then
|
||||
Throw New Exception($"ValidDateError!")
|
||||
End If
|
||||
Case "StationVersion"
|
||||
If IsNumeric(xe.InnerText) = False Then
|
||||
StationVersion = 0
|
||||
Else
|
||||
StationVersion = CType(xe.InnerText, Integer)
|
||||
End If
|
||||
Case "ImageName"
|
||||
ImageFileName = xe.InnerText
|
||||
Case "HistoryImprints"
|
||||
HistoryImprints = LoadHistoryImprintsNode(xe.ChildNodes)
|
||||
Case Else
|
||||
Console.WriteLine($"LoadStationPacketFile Unknown NodeName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 加载项目站包时,校验路径
|
||||
''' </summary>
|
||||
''' <param name="packetPath"></param>
|
||||
Private Sub LoadCheckPath(packetPath As String)
|
||||
If String.IsNullOrEmpty(FileName) Then
|
||||
Throw New Exception($"未搜索到项目站 {ParentProcessStation.Name} 的项目站包包名,请自行设计发布!")
|
||||
End If
|
||||
|
||||
If File.Exists(packetPath) = False Then
|
||||
Throw New Exception($"未搜索到项目包 {packetPath},请自行设计发布!")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub LoadCheckMd5(packetPath As String)
|
||||
If String.IsNullOrEmpty(PacketMD5) Then Return
|
||||
|
||||
If File.Exists(packetPath) = False Then
|
||||
Throw New Exception($"MD5校验失败,未查找到站包文件:{packetPath}")
|
||||
End If
|
||||
|
||||
Dim srcMd5 As String = UTS_Core.Security.Md5.GetFileMd5(packetPath)
|
||||
If String.Compare(PacketMD5, srcMd5, True) <> 0 Then
|
||||
File.Delete(packetPath)
|
||||
Throw New Exception("MD5校验失败,请重新选择当前站位下载更新包")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 加载项目站包时,解压项目文件到指定路径
|
||||
''' </summary>
|
||||
''' <param name="packetPath"></param>
|
||||
Private Sub LoadExtractFile(packetPath As String)
|
||||
Dim stationDesignDir As String = UtsPath.StationDesignDirPath()
|
||||
If Directory.Exists(stationDesignDir) = False Then Directory.CreateDirectory(stationDesignDir)
|
||||
Compress.Compress.TarExtractToDirectory(packetPath, stationDesignDir) '解压缩文件到指定路径
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 加载测试站包时,加载项目站包信息
|
||||
''' </summary>
|
||||
''' <param name="packetName"></param>
|
||||
Private Sub LoadFileUpdatePacketInfo(packetName As String)
|
||||
Dim packetInfoPath As String = $"{UtsPath.GetStationPacketInfoPath(packetName)}"
|
||||
LoadStationPacketInfoFile(packetInfoPath) '解析项目站信息内容
|
||||
|
||||
Dim stationPlanPath As String = $"{UtsPath.GetStationPacketTestPlanDirPath(packetName)}\Main.xml"
|
||||
StationPlan.LoadFile(stationPlanPath)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 加载测试站包内容
|
||||
''' </summary>
|
||||
Public Sub LoadPacket()
|
||||
Dim packetPath As String = UtsPath.StationPacketPath(ParentProcessStation.ParentProject.Index, ParentProcessStation.StationID, FileName)
|
||||
|
||||
'本地不存在压缩包则从FTP上下载
|
||||
If File.Exists(packetPath) = False Then
|
||||
Dim remotePath As String = UtsPath.RemoteStationPacketPath(ParentProcessStation.ParentProject.Index, ParentProcessStation.StationID, FileName)
|
||||
|
||||
Dim ftp As UtsFtp = UtsFtp.CreateObject
|
||||
If ftp.FtpFileExists(remotePath) Then ftp.FtpDownload(remotePath, packetPath)
|
||||
End If
|
||||
|
||||
'加载本地压缩包
|
||||
LoadCheckPath(packetPath)
|
||||
|
||||
LoadCheckMd5(packetPath)
|
||||
|
||||
LoadExtractFile(packetPath)
|
||||
|
||||
LoadFileUpdatePacketInfo(Name)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 保存项目站历史版本说明
|
||||
''' </summary>
|
||||
''' <param name="xw"></param>
|
||||
Private Sub SavePacketHistoryImprints(xw As XmlWriter)
|
||||
'写入当前版本信息
|
||||
xw.WriteStartElement($"HistoryImprint")
|
||||
xw.WriteAttributeString($"PacketName", CurrentImprint.FileName)
|
||||
xw.WriteAttributeString($"Creator", CurrentImprint.Creator)
|
||||
xw.WriteStartElement($"Imprints")
|
||||
For Each imprint As String In CurrentImprint.Imprints
|
||||
xw.WriteElementString("Imprint", imprint)
|
||||
Next
|
||||
xw.WriteEndElement()
|
||||
xw.WriteEndElement()
|
||||
|
||||
'写入历史版本信息
|
||||
For Each packetImprint As StationPacketImprint In HistoryImprints
|
||||
xw.WriteStartElement($"HistoryImprint")
|
||||
xw.WriteAttributeString($"PacketName", packetImprint.FileName)
|
||||
xw.WriteAttributeString($"Creator", packetImprint.Creator)
|
||||
|
||||
xw.WriteStartElement($"Imprints")
|
||||
For Each imprint As String In packetImprint.Imprints
|
||||
xw.WriteElementString("Imprint", imprint)
|
||||
Next
|
||||
xw.WriteEndElement()
|
||||
|
||||
xw.WriteEndElement()
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 保存项目站信息节点内容
|
||||
''' </summary>
|
||||
''' <param name="xw"></param>
|
||||
Private Sub SavePacketInfoNode(xw As XmlWriter)
|
||||
xw.WriteElementString("AppVersion", AppVersion.ToString)
|
||||
xw.WriteElementString("CreateTime", $"{CreateTime:yyyy-MM-dd HH:mm:ss}")
|
||||
xw.WriteElementString("ModifiedTime", $"{ModifiedTime:yyyy-MM-dd HH:mm:ss}")
|
||||
xw.WriteElementString("PassWord", Aes128.EncryptStr(EditPwd, Aes128.ServerAesKey))
|
||||
xw.WriteElementString("ReleasePwd", Aes128.EncryptStr(ReleasePwd, Aes128.ServerAesKey))
|
||||
xw.WriteElementString("ValidDate", Aes128.EncryptStr(ValidDate.ToString("yyyy-MM-dd"), Aes128.ServerAesKey))
|
||||
xw.WriteElementString("StationVersion", StationVersion.ToString())
|
||||
xw.WriteElementString("ImageName", ImageFileName)
|
||||
|
||||
xw.WriteStartElement($"HistoryImprints")
|
||||
SavePacketHistoryImprints(xw)
|
||||
xw.WriteEndElement()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 保存项目站包信息文件
|
||||
''' </summary>
|
||||
''' <param name="configPath"></param>
|
||||
Private Sub SavePacketInfoFile(configPath As String)
|
||||
Dim xws As New XmlWriterSettings
|
||||
With xws
|
||||
.Indent = True
|
||||
.NewLineOnAttributes = False
|
||||
.Encoding = New UTF8Encoding(False)
|
||||
End With
|
||||
|
||||
Using xw As XmlWriter = XmlWriter.Create(configPath, xws)
|
||||
xw.WriteStartDocument()
|
||||
xw.WriteStartElement($"Configs") '创建跟节点
|
||||
xw.WriteStartElement($"StationInfo") '创建一级子节点
|
||||
|
||||
SavePacketInfoNode(xw)
|
||||
|
||||
xw.WriteEndElement()
|
||||
xw.WriteEndElement()
|
||||
xw.WriteEndDocument()
|
||||
End Using
|
||||
Return
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目时,校验路径合法性
|
||||
''' </summary>
|
||||
Private Sub ReleaseCheckPath()
|
||||
Directory.CreateDirectory(UtsPath.StationReleaseDirPath)
|
||||
Directory.CreateDirectory(UtsPath.StationProjectReleaseDirPath(ParentProcessStation.ParentProject.Index))
|
||||
Directory.CreateDirectory(UtsPath.StationPacketReleaseDirPath(ParentProcessStation.ParentProject.Index, ParentProcessStation.StationID))
|
||||
|
||||
Dim designDirPath As String = UtsPath.StationDesignDirPath()
|
||||
If Directory.Exists(designDirPath) = False Then
|
||||
Throw New Exception($"未搜索到项目站包文件夹 {designDirPath}")
|
||||
End If
|
||||
|
||||
Directory.CreateDirectory(UtsPath.GetStationPacketResourceDirPath(Name))
|
||||
Directory.CreateDirectory(UtsPath.GetStationPacketTestPlanDirPath(Name))
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目时,将原项目包文件夹名重命名为预发布项目包文件夹名
|
||||
''' </summary>
|
||||
''' <param name="revPacketName">预发布项目站包名</param>
|
||||
Private Sub ReleaseRenamePacketDir(revPacketName As String)
|
||||
Dim revPacketDirPath As String = UtsPath.GetStationPacketDirPath(revPacketName)
|
||||
|
||||
If String.IsNullOrWhiteSpace(Name) Then
|
||||
If Directory.Exists(revPacketDirPath) = False Then
|
||||
Directory.CreateDirectory(revPacketDirPath)
|
||||
|
||||
Directory.CreateDirectory(UtsPath.GetStationPacketResourceDirPath(revPacketName))
|
||||
Directory.CreateDirectory(UtsPath.GetStationPacketTestPlanDirPath(revPacketName))
|
||||
End If
|
||||
Else
|
||||
Dim curPacketDirPath As String = UtsPath.StationPacketDirPath
|
||||
Directory.Move(curPacketDirPath, revPacketDirPath)
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目时,将缓存信息保存到本地文件中
|
||||
''' </summary>
|
||||
''' <param name="revPacketName">预发布项目站包名</param>
|
||||
Private Sub ReleaseSaveFile(revPacketName As String)
|
||||
Dim revPacketInfoPath As String = $"{UtsPath.GetStationPacketInfoPath(revPacketName)}"
|
||||
SavePacketInfoFile(revPacketInfoPath) '生成项目站包信息文件
|
||||
|
||||
Dim revStationPlanPath As String = $"{UtsPath.GetStationPacketTestPlanDirPath(revPacketName)}\Main.xml"
|
||||
StationPlan.SaveFile(revStationPlanPath)
|
||||
|
||||
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目时,压缩项目文件夹至发布路径
|
||||
''' </summary>
|
||||
''' <param name="revPacketName">预发布项目站包名</param>
|
||||
''' <param name="revFileName">预发布项目站包文件名</param>
|
||||
Private Sub ReleaseTarFile(revPacketName As String, revFileName As String)
|
||||
Dim tarFileList As New List(Of String)
|
||||
Dim revDirPath As String = UtsPath.StationPacketDirPath
|
||||
Compress.Compress.FillFileList(tarFileList, revDirPath, revPacketName) '获取压缩文件列表
|
||||
|
||||
Dim revTarFilePath As String = $"{UtsPath.StationDesignDirPath}\{revFileName}"
|
||||
Compress.Compress.TarFiles(tarFileList, revTarFilePath, UtsPath.StationDesignDirPath) '压缩到临时文件夹
|
||||
|
||||
Dim revFilePath As String = $"{UtsPath.StationPacketPath(ParentProcessStation.ParentProject.Index, ParentProcessStation.StationID, revFileName)}"
|
||||
If File.Exists(revFilePath) Then File.Delete(revFilePath)
|
||||
File.Move(revTarFilePath, revFilePath) '压缩文件成功后,从临时文件夹移动到发布文件夹
|
||||
|
||||
Dim ftpPath As String = $"{UtsPath.RemoteStationPacketPath(ParentProcessStation.ParentProject.Index, ParentProcessStation.StationID, revFileName)}"
|
||||
|
||||
UtsFtp.CreateObject.FtpUpload(ftpPath, revFilePath)
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目成功后,更新数据库数据
|
||||
''' </summary>
|
||||
''' <param name="revFileName"></param>
|
||||
Private Sub ReleaseUpdateDatabase(revFileName As String)
|
||||
|
||||
'获取站包Md5值
|
||||
|
||||
Dim revFilePath As String = $"{UtsPath.StationPacketPath(ParentProcessStation.ParentProject.Index, ParentProcessStation.StationID, revFileName)}"
|
||||
Dim md5 As String = UTS_Core.Security.Md5.GetFileMd5(revFilePath)
|
||||
|
||||
ReleaseUpdatePacketLogTable(revFileName, md5) '更新发布历史
|
||||
ReleaseUpdateStationTable(revFileName, md5) '更新站位表
|
||||
|
||||
PacketMD5 = md5
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 发布站包时,更新站位表信息
|
||||
''' </summary>
|
||||
''' <param name="revFileName"></param>
|
||||
''' <param name="md5"></param>
|
||||
Private Sub ReleaseUpdateStationTable(revFileName As String, md5 As String)
|
||||
Dim saved As Boolean = False
|
||||
|
||||
'更新最新包名,编辑密码与发布密码
|
||||
Dim tableName As String = DbTableModel.Customer.StationListTable.TableName
|
||||
Dim colNames As New Dictionary(Of String, String)
|
||||
colNames.Add(DbTableModel.Customer.StationListTable.ColNames.PacketName.ToString(), revFileName)
|
||||
colNames.Add(DbTableModel.Customer.StationListTable.ColNames.PacketMd5.ToString(), md5)
|
||||
colNames.Add(DbTableModel.Customer.StationListTable.ColNames.EditPwd.ToString(), EditPwd)
|
||||
colNames.Add(DbTableModel.Customer.StationListTable.ColNames.ReleasePwd.ToString(), ReleasePwd)
|
||||
|
||||
Dim condition As String = $"{DbTableModel.Customer.StationListTable.ColNames.ID} = {ParentProcessStation.StationID}"
|
||||
|
||||
'保存至云端
|
||||
Dim remoteCmd As String
|
||||
Using db As New DbExecutor(UtsDb.RemoteDbType, UtsDb.RemoteConnString)
|
||||
remoteCmd = db.CmdHelper.DbUpdate(UtsDb.RemotePrivateDb, tableName, colNames, condition)
|
||||
|
||||
Try
|
||||
db.Open()
|
||||
db.ExecuteNonQuery(remoteCmd)
|
||||
db.Close()
|
||||
saved = True
|
||||
Catch ex As Exception
|
||||
Console.WriteLine($"Release Packet To Update Station Table Fail,{ex.Message}")
|
||||
saved = False
|
||||
End Try
|
||||
End Using
|
||||
|
||||
'保存至本地库
|
||||
Using db As New DbExecutor(UtsDb.LocalDbType, UtsDb.LocalConnString) '存至本地
|
||||
db.Open()
|
||||
|
||||
Dim localCmd As String = db.CmdHelper.Update(tableName, colNames, condition)
|
||||
db.ExecuteNonQuery(localCmd)
|
||||
|
||||
'更新缓存日志表
|
||||
If saved = False Then
|
||||
DbConnect.DbConnector.SaveCmdStringToCacheTable(db, remoteCmd)
|
||||
End If
|
||||
|
||||
db.Close()
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 发布站包时,更新站包发布记录表信息
|
||||
''' </summary>
|
||||
''' <param name="revFileName"></param>
|
||||
''' <param name="md5"></param>
|
||||
Private Sub ReleaseUpdatePacketLogTable(revFileName As String, md5 As String)
|
||||
Dim saved As Boolean = False
|
||||
Dim tableName As String = DbTableModel.Customer.StationPacketReleaseLogTable.TableName
|
||||
Dim colNames As New Dictionary(Of String, String)
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.ProjectID.ToString(), ParentProcessStation.ParentProject.Index.ToString)
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.StationID.ToString(), ParentProcessStation.StationID.ToString)
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.CreateTime.ToString(), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.UpdateTime.ToString(), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"))
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.PacketName.ToString(), revFileName)
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.PacketMd5.ToString(), md5)
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.Description.ToString(), CurrentImprint.ToString())
|
||||
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.Remark.ToString(), "")
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.IsValid.ToString(), "1")
|
||||
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.UserID.ToString(), ParentProcessStation.ParentProject.UserId.ToString())
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.UserName.ToString(), ParentProcessStation.ParentProject.UserName.ToString())
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.PublicIP.ToString(), "") 'todo:填充信息
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.ComputerName.ToString(), "")
|
||||
colNames.Add(DbTableModel.Customer.StationPacketReleaseLogTable.ColNames.SID.ToString(), "")
|
||||
|
||||
'保存至云端
|
||||
Dim remoteCmd As String
|
||||
Using db As New DbExecutor(UtsDb.RemoteDbType, UtsDb.RemoteConnString)
|
||||
remoteCmd = db.CmdHelper.DbInsert(UtsDb.RemotePrivateDb, tableName, colNames)
|
||||
|
||||
Try
|
||||
db.Open()
|
||||
db.ExecuteNonQuery(remoteCmd)
|
||||
db.Close()
|
||||
saved = True
|
||||
Catch ex As Exception
|
||||
Console.WriteLine($"Release Packet To Update Packet Log Table Fail,{ex.Message}")
|
||||
saved = False
|
||||
End Try
|
||||
End Using
|
||||
|
||||
'保存至本地库
|
||||
Using db As New DbExecutor(UtsDb.LocalDbType, UtsDb.LocalConnString) '存至本地
|
||||
db.Open()
|
||||
|
||||
Dim localCmd As String = db.CmdHelper.Insert(tableName, colNames)
|
||||
db.ExecuteNonQuery(localCmd)
|
||||
|
||||
'更新缓存日志表
|
||||
If saved = False Then
|
||||
DbConnect.DbConnector.SaveCmdStringToCacheTable(db, remoteCmd)
|
||||
End If
|
||||
|
||||
db.Close()
|
||||
End Using
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目成功后,更新项目包信息
|
||||
''' </summary>
|
||||
Private Sub ReleaseUpdatePacketInfo()
|
||||
HistoryImprints.Insert(0, CurrentImprint)
|
||||
CurrentImprint = New StationPacketImprint()
|
||||
End Sub
|
||||
|
||||
Private Function NewPacketName() As String
|
||||
Return $"TP_{ParentProcessStation.ParentProject.Index}_{ParentProcessStation.StationID}_REV_{StationVersion.ToString.PadLeft(2, "0"c)}_{ModifiedTime:yyyyMMddHHmmss}"
|
||||
End Function
|
||||
|
||||
Private Function NewPacketFileName() As String
|
||||
Return $"{NewPacketName()}.uts"
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 发布项目站包
|
||||
''' </summary>
|
||||
Public Sub ReleasePacket()
|
||||
|
||||
ReleaseCheckPath() '新建文件夹
|
||||
|
||||
Dim revPacketName As String = NewPacketName()
|
||||
Dim revFileName As String = $"{revPacketName}.uts"
|
||||
|
||||
CurrentImprint.Creator = ParentProcessStation.UserId.ToString()
|
||||
CurrentImprint.FileName = revFileName
|
||||
|
||||
ReleaseRenamePacketDir(revPacketName)
|
||||
|
||||
FileName = revFileName '更新包名,以及路径信息
|
||||
UtsPath.StationPacketDirPath = UtsPath.GetStationPacketDirPath(Name)
|
||||
UtsPath.StationPacketInfoPath = UtsPath.GetStationPacketInfoPath(Name)
|
||||
UtsPath.StationPacketResourceDirPath = UtsPath.GetStationPacketResourceDirPath(Name)
|
||||
UtsPath.StationPacketTestPlanDirPath = UtsPath.GetStationPacketTestPlanDirPath(Name)
|
||||
|
||||
ReleaseSaveFile(revPacketName) '保存
|
||||
|
||||
ReleaseTarFile(revPacketName, revFileName)
|
||||
|
||||
ReleaseUpdateDatabase(revFileName)
|
||||
|
||||
ReleaseUpdatePacketInfo()
|
||||
|
||||
GC.Collect() '回收资源
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
42
UTS_Core/UTSModule/Station/StationPacketImprint.vb
Normal file
42
UTS_Core/UTSModule/Station/StationPacketImprint.vb
Normal file
@@ -0,0 +1,42 @@
|
||||
Imports System.Text
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class StationPacketImprint
|
||||
Sub New()
|
||||
|
||||
Imprints = New List(Of String)()
|
||||
End Sub
|
||||
|
||||
Sub New(imprintString As String)
|
||||
imprintString = imprintString.Replace(Chr(13), Chr(0))
|
||||
Imprints = imprintString.Split(Chr(10)).ToList()
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 项目站包文件名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property FileName() As String
|
||||
|
||||
''' <summary>
|
||||
''' 项目站包创建者
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Creator() As String
|
||||
|
||||
''' <summary>
|
||||
''' 项目站包版本说明
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property Imprints() As List(Of String)
|
||||
|
||||
Public Overrides Function ToString() As String
|
||||
Dim strReturn As New StringBuilder
|
||||
For Each imprint As String In Imprints
|
||||
strReturn.Append($"{imprint}{vbNewLine}")
|
||||
Next
|
||||
Return strReturn.ToString()
|
||||
End Function
|
||||
End Class
|
||||
End Namespace
|
||||
13
UTS_Core/UTSModule/Station/StationPacketVo.vb
Normal file
13
UTS_Core/UTSModule/Station/StationPacketVo.vb
Normal file
@@ -0,0 +1,13 @@
|
||||
Public Class StationPacketVo
|
||||
|
||||
Public Property ProjectID As Integer
|
||||
|
||||
Public Property StationID As Integer
|
||||
|
||||
Public Property PacketName As String
|
||||
|
||||
Public Property PacketMd5 As String
|
||||
|
||||
Public Property Description As String
|
||||
|
||||
End Class
|
||||
26
UTS_Core/UTSModule/Station/StationPlan.vb
Normal file
26
UTS_Core/UTSModule/Station/StationPlan.vb
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
Imports UTS_Core.UTSModule.Station.ProcessStation
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public MustInherit Class StationPlan
|
||||
Implements IStationPlan
|
||||
|
||||
''' <summary>测试流程所关联的项目站包信息</summary>
|
||||
Public Property ParentPacket() As StationPacket
|
||||
|
||||
Public ReadOnly StationType As StationTypeEnum
|
||||
|
||||
Public Sub New(packet As StationPacket)
|
||||
ParentPacket = packet
|
||||
|
||||
StationType = packet.ParentProcessStation.StationType
|
||||
End Sub
|
||||
|
||||
Public MustOverride Sub CreateStationPlan() Implements IStationPlan.CreateStationPlan
|
||||
|
||||
Public MustOverride Sub SaveFile(path As String) Implements IStationPlan.SaveFile
|
||||
|
||||
Public MustOverride Sub LoadFile(path As String) Implements IStationPlan.LoadFile
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
2269
UTS_Core/UTSModule/Station/StationPlanGrid.vb
Normal file
2269
UTS_Core/UTSModule/Station/StationPlanGrid.vb
Normal file
File diff suppressed because it is too large
Load Diff
20
UTS_Core/UTSModule/Station/StationPlanManager.vb
Normal file
20
UTS_Core/UTSModule/Station/StationPlanManager.vb
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
Imports UTS_Core.UTSModule.Station.ProcessStation
|
||||
|
||||
Namespace UTSModule.Station
|
||||
Public Class StationPlanManager
|
||||
Public Shared Function CreateStationPlan(type As StationTypeEnum, packet As StationPacket) As StationPlan
|
||||
Select Case type
|
||||
Case StationTypeEnum.Test
|
||||
Return New StationTestPlan(packet)
|
||||
Case StationTypeEnum.Package
|
||||
Return New StationPackagePlan(packet)
|
||||
Case Else
|
||||
Return Nothing
|
||||
End Select
|
||||
Console.WriteLine($"站位类型:{type}")
|
||||
End Function
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
|
||||
214
UTS_Core/UTSModule/Station/StationTestPlan.vb
Normal file
214
UTS_Core/UTSModule/Station/StationTestPlan.vb
Normal file
@@ -0,0 +1,214 @@
|
||||
Imports System.Text
|
||||
Imports System.Xml
|
||||
|
||||
Namespace UTSModule.Station
|
||||
|
||||
Public Class StationTestPlan
|
||||
Inherits StationPlan
|
||||
|
||||
Sub New(packet As StationPacket)
|
||||
MyBase.New(packet)
|
||||
|
||||
TestPlanLocked = False
|
||||
ParentPacket = packet
|
||||
|
||||
HeadNode = New RowNode()
|
||||
HeadNode.HeadNode = HeadNode
|
||||
HeadNode.RowType = RowNode.RowTypeEnum.FixedModule
|
||||
HeadNode.RowLever = -1
|
||||
HeadNode.RowIndex = 0
|
||||
HeadNode.StationPlan = Me
|
||||
HeadNode.Label = $"StationPlan"
|
||||
HeadNode.Description = $"StationPlan"
|
||||
|
||||
CreateStationPlan()
|
||||
End Sub
|
||||
|
||||
''' <summary>测试流程是否已锁定</summary>
|
||||
Public Property TestPlanLocked As Boolean
|
||||
|
||||
''' <summary>
|
||||
''' 头节点
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Friend Property HeadNode As RowNode
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 节点树状集合
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property RowNodes() As RowNodeCollection
|
||||
Get
|
||||
Return HeadNode.RowNodes
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 节点树的所有节点集合
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property RowList() As List(Of RowNode)
|
||||
Get
|
||||
Return HeadNode.RowList
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' 节点总数
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property RowCount() As Integer
|
||||
Get
|
||||
Return HeadNode.AllChildCount
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' '创建固定模块节点
|
||||
''' </summary>
|
||||
''' <param name="text"></param>
|
||||
''' <param name="desc"></param>
|
||||
''' <returns></returns>
|
||||
Private Function CreateFixedRowNode(text As String, desc As String) As RowNode
|
||||
Dim node As New RowNode With {.RowType = RowNode.RowTypeEnum.FixedModule, .Action = True, .Label = text, .Description = desc}
|
||||
node.AddNode(New RowNode()) '添加一个空的子节点
|
||||
Return node
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' 创建新的测试流程
|
||||
''' </summary>
|
||||
Public Overrides Sub CreateStationPlan()
|
||||
HeadNode.Clear()
|
||||
|
||||
HeadNode.AddNode(CreateFixedRowNode($"{FixedModuleEnum.Setup}", $"{FixedModuleEnum.Setup} Module"))
|
||||
HeadNode.AddNode(New RowNode()) '添加一个空的子节点
|
||||
HeadNode.AddNode(CreateFixedRowNode($"{FixedModuleEnum.Main}", $"{FixedModuleEnum.Main} Module"))
|
||||
HeadNode.AddNode(New RowNode()) '添加一个空的子节点
|
||||
HeadNode.AddNode(CreateFixedRowNode($"{FixedModuleEnum.Pass}", $"{FixedModuleEnum.Pass} Module"))
|
||||
HeadNode.AddNode(New RowNode()) '添加一个空的子节点
|
||||
HeadNode.AddNode(CreateFixedRowNode($"{FixedModuleEnum.Fail}", $"{FixedModuleEnum.Fail} Module"))
|
||||
HeadNode.AddNode(New RowNode()) '添加一个空的子节点
|
||||
HeadNode.AddNode(CreateFixedRowNode($"{FixedModuleEnum.Cleanup}", $"{FixedModuleEnum.Cleanup} Module"))
|
||||
HeadNode.AddNode(New RowNode()) '添加一个空的子节点
|
||||
HeadNode.AddNode(CreateFixedRowNode($"{FixedModuleEnum.Custom}", $"{FixedModuleEnum.Custom} Module"))
|
||||
HeadNode.AddNode(New RowNode()) '添加一个空的子节点
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 保存为Xml文件
|
||||
''' </summary>
|
||||
''' <param name="path"></param>
|
||||
Public Overrides Sub SaveFile(path As String)
|
||||
Dim xws As New XmlWriterSettings
|
||||
With xws
|
||||
.Indent = True
|
||||
.NewLineOnAttributes = False
|
||||
.Encoding = New UTF8Encoding(False)
|
||||
End With
|
||||
|
||||
Using xw As XmlWriter = XmlWriter.Create(path, xws)
|
||||
xw.WriteStartDocument()
|
||||
xw.WriteStartElement($"UtsStationPlan") '创建跟节点
|
||||
|
||||
xw.WriteStartElement($"Properties") '创建表属性节点
|
||||
'测试流程的属性
|
||||
xw.WriteEndElement()
|
||||
|
||||
RowNode.SaveRowNodes(xw, HeadNode.RowNodes)
|
||||
|
||||
xw.WriteEndElement()
|
||||
xw.WriteEndDocument()
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 读取测试站属性
|
||||
''' </summary>
|
||||
''' <param name="nodeList"></param>
|
||||
Private Sub LoadProperties(nodeList As XmlNodeList)
|
||||
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 从Xml文件加载
|
||||
''' </summary>
|
||||
''' <param name="path"></param>
|
||||
Public Overrides Sub LoadFile(path As String)
|
||||
Dim xd As New XmlDocument()
|
||||
xd.Load(path)
|
||||
|
||||
Dim xe As XmlElement
|
||||
Dim nodeList As XmlNodeList = xd.SelectSingleNode($"UtsStationPlan").ChildNodes
|
||||
For Each node As XmlNode In nodeList
|
||||
xe = CType(node, XmlElement)
|
||||
Select Case xe.LocalName
|
||||
Case "Properties"
|
||||
LoadProperties(xe.ChildNodes)
|
||||
Case "RowNodes"
|
||||
HeadNode.Clear()
|
||||
RowNode.LoadRowNodes(xe.ChildNodes, HeadNode.RowNodes)
|
||||
Case Else
|
||||
Throw New Exception($"LoadXml Unknown LocalName:{xe.LocalName}")
|
||||
End Select
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' 测试流程固定模块
|
||||
''' </summary>
|
||||
Enum FixedModuleEnum
|
||||
''' <summary>
|
||||
''' 空模块,无测试时默认值
|
||||
''' </summary>
|
||||
None
|
||||
|
||||
''' <summary>
|
||||
''' 主模块,测试起始模块
|
||||
''' </summary>
|
||||
Main
|
||||
|
||||
''' <summary>
|
||||
''' 测试通过执行模块
|
||||
''' </summary>
|
||||
Pass
|
||||
|
||||
''' <summary>
|
||||
''' 测试失败执行模块
|
||||
''' </summary>
|
||||
Fail
|
||||
|
||||
''' <summary>
|
||||
''' 测试卸载执行模块
|
||||
''' </summary>
|
||||
Cleanup
|
||||
|
||||
''' <summary>
|
||||
''' 测试设置执行模块
|
||||
''' </summary>
|
||||
Setup
|
||||
|
||||
''' <summary>
|
||||
''' 自定义模块
|
||||
''' </summary>
|
||||
Custom
|
||||
End Enum
|
||||
|
||||
'czh 2022、10、04 新加字段
|
||||
''' <summary>
|
||||
''' 模板文件名
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property TemplateFile As String
|
||||
''' <summary>
|
||||
''' 公司Logo文件
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Property CompanyLogo As String
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
28
UTS_Core/UTSModule/Station/TreeViewEx.vb
Normal file
28
UTS_Core/UTSModule/Station/TreeViewEx.vb
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
Imports System.Drawing
|
||||
Imports System.Windows.Forms
|
||||
|
||||
Namespace UTSModule.Station
|
||||
|
||||
Public Class TreeViewEx
|
||||
Inherits TreeView
|
||||
Protected Overrides Sub WndProc(ByRef m As Message)
|
||||
If m.Msg = &H203 Then
|
||||
Dim tvhti As TreeViewHitTestInfo = HitTest(New Point(CType(m.LParam, Integer)))
|
||||
If tvhti IsNot Nothing AndAlso tvhti.Location = TreeViewHitTestLocations.StateImage Then
|
||||
m.Result = IntPtr.Zero
|
||||
tvhti.Node.Checked = Not tvhti.Node.Checked
|
||||
Return
|
||||
End If
|
||||
ElseIf m.Msg = &H204 Then
|
||||
Dim tvhti As TreeViewHitTestInfo = HitTest(New Point(CType(m.LParam, Integer)))
|
||||
If tvhti IsNot Nothing Then
|
||||
SelectedNode = tvhti.Node
|
||||
End If
|
||||
End If
|
||||
MyBase.WndProc(m)
|
||||
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
End NameSpace
|
||||
Reference in New Issue
Block a user