Commit 16ec6fd9 刘韬

将读取语言文件从xml转为csv

1 个父辈 1f318621
...@@ -393,7 +393,7 @@ ...@@ -393,7 +393,7 @@
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>rem copy "$(TargetPath)" "C:\Neotel\DLL\$(ProjectName)\$(TargetFileName)" <PostBuildEvent>copy "$(TargetPath)" "D:\rick\vs\NS100\SharedDll\"
rem copy "$(TargetDir)$(TargetName).pdb" "C:\Neotel\DLL\$(ProjectName)\$(TargetName).pdb"</PostBuildEvent> copy "$(TargetDir)$(TargetName).pdb" "D:\rick\vs\NS100\SharedDll\"</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
</Project>
\ No newline at end of file \ No newline at end of file
using System;
using System.Xml;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Drawing;
using System.Diagnostics;
using System.Text.RegularExpressions;
namespace Asa.FaceControl
{
/// <summary>
/// 多语言类
/// </summary>
public static class Language
{
private static XmlDocument xmlDoc;
private static string[] filePath; //XML文件的路径
private static int nameIndex = -1;
private static readonly Dictionary<string, string> dialogText = new();
private static readonly List<ClsLangForm> langForm = new();
/// <summary>
/// 语言名称
/// </summary>
public static string[] Name { private set; get; } = null;
/// <summary>
/// 加载语言路径
/// </summary>
/// <param name="path"></param>
public static void LoadPath(string path)
{
if (!System.IO.Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
filePath = System.IO.Directory.GetFiles(path, "*.xml");
xmlDoc = new XmlDocument();
Name = new string[filePath.Length];
for (int i = 0; i < filePath.Length; i++)
{
xmlDoc.Load(filePath[i]);
Name[i] = xmlDoc.LastChild.Attributes["Name"].Value;
}
}
/// <summary>
/// 加载语言
/// </summary>
/// <param name="name"></param>
public static void LoadLanguage(string name)
{
nameIndex = Array.FindIndex(Name, s => s == name);
if (nameIndex == -1) return;
LoadLanguage();
foreach (Form frm in Application.OpenForms)
{
if (frm is FormBase @base)
SetLanguage(@base);
}
}
/// <summary>
/// 对话框
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string Dialog(string key,string defaulttxt="")
{
if (nameIndex == -1) return "";
if (dialogText.TryGetValue(key, out string value))
return value;
else
{
SetNoLangXML("Dialog", key, defaulttxt);
return defaulttxt;
}
}
/// <summary>
/// 设置语言
/// </summary>
/// <param name="frm"></param>
public static void SetLanguage(FormBase frm)
{
if (nameIndex == -1) return;
int langIdx = langForm.FindIndex(s => s.FormLang.Name == frm.Name);
if (langIdx == -1) return;
frm.Text = langForm[langIdx].FormLang.Text;
frm.TitleFont = langForm[langIdx].FormLang.Font;
SetLang(langIdx, frm);
}
/// <summary>
/// 设置语言
/// </summary>
/// <param name="ctl"></param>
public static void SetLanguage(Control ctl)
{
if (nameIndex == -1) return;
int langIdx = langForm.FindIndex(s => s.FormLang.Name == ctl.Name);
if (langIdx == -1) return;
SetLang(langIdx, ctl);
}
///// <summary>
///// 语言索引
///// </summary>
//public static int Index
//{
// set
// {
// if (value > -1 && value < _file.Length)
// {
// _index = value;
// LoadLanguage();
// foreach (Form frm in Application.OpenForms)
// {
// if (frm is FormBase)
// SetLanguage((FormBase)frm);
// }
// }
// }
// get
// {
// return _index;
// }
//}
///// <summary>
///// 加载语言
///// </summary>
///// <param name="name"></param>
//public static void Load(string name)
//{
// int idx = Array.FindIndex(Name, s => s == name);
// Index = idx;
//}
///// <summary>
///// 设置语言
///// </summary>
///// <param name="frm"></param>
//public static void SetLanguage(Form frm)
//{
// int langIdx = langForm.FindIndex(s => s.FormLang.Name == frm.Name);
// if (langIdx == -1) return;
// //frm.Text = langForm[langIdx].FormLang.Text;
// //frm.TitleFont = langForm[langIdx].FormLang.Font;
// SetLang(langIdx, frm);
//}
private static void LoadLanguage()
{
xmlDoc.Load(filePath[nameIndex]);
XmlNode root = xmlDoc.LastChild;
langForm.Clear();
dialogText.Clear();
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name == "Dialog")
{
foreach (XmlNode tt in node.ChildNodes)
{
if (!dialogText.ContainsKey(tt.Name))
dialogText.Add(tt.Name, tt.InnerText);
}
}
else
{
ClsLangForm lang = new();
lang.FormLang.Name = node.Name;
if (node.Attributes["Text"] != null) lang.FormLang.Text = node.Attributes["Text"].Value;
if (node.Attributes["Font"] != null) lang.FormLang.Font = ConvFont(node.Attributes["Font"].Value);
//if (node.Attributes["Tag"] != null) lang.FormLang.Tag = node.Attributes["Tag"].Value;
foreach (XmlNode tt in node.ChildNodes)
{
if (tt.NodeType != XmlNodeType.Element)
continue;
ClsLangText ll = new()
{
Name = tt.Name
};
if (tt.Attributes["Text"] != null) ll.Text = tt.Attributes["Text"].Value;
if (tt.Attributes["Font"] != null) ll.Font = ConvFont(tt.Attributes["Font"].Value);
//if (tt.Attributes["Tag"] != null) ll.Tag = tt.Attributes["Tag"].Value;
lang.ControlLang.Add(ll);
}
langForm.Add(lang);
}
}
}
private static void SetLang(int langIndex, Control ctl)
{
foreach (Control cc in ctl.Controls)
{
if (cc.Name == "") continue;
int idx = langForm[langIndex].ControlLang.FindIndex(s => s.Name == cc.Name);
if (idx > -1)
{
//Debugger.Break();
cc.Text = langForm[langIndex].ControlLang[idx].Text;
if (cc is FacePanel)
((FacePanel)cc).TitleFont = langForm[langIndex].ControlLang[idx].Font;
else
cc.Font = langForm[langIndex].ControlLang[idx].Font;
//cc.Tag = langForm[langIndex].ControlLang[idx].Tag;
}
else {
if (!string.IsNullOrWhiteSpace(cc.Text) && HasChinese(cc.Text))
{
if (cc.Tag == null || cc.Tag.ToString() != "not")
{
SetNoLangXML(langForm[langIndex].FormLang.Name, cc.Name, cc.Text);
}
}
}
if (cc.HasChildren)
SetLang(langIndex, cc);
}
}
static void SetNoLangXML(string formname,string controlname,string text) {
xmlDoc.Load(filePath[nameIndex]);
XmlNode root = xmlDoc.LastChild;
var n=root.SelectSingleNode(formname);
if (n.SelectSingleNode(controlname) != null)
return;
var cc = xmlDoc.CreateComment("原文:"+text);
var ln = xmlDoc.CreateElement(controlname);
if (formname == "Dialog") {
ln.InnerText = text;
}
else
{
ln.SetAttribute("Text", text);
ln.SetAttribute("Font", "微软雅黑,12,,");
}
n.AppendChild(cc);
n.AppendChild(ln);
xmlDoc.Save(filePath[nameIndex]);
}
static bool HasChinese(string txt)
{
//for (int i = 0; i < txt.Length; i++)
//{
if (Regex.IsMatch(txt.ToString(), @"[\u4E00-\u9FA5]+"))
return true;
//}
return false;
}
/// <summary>
/// 转换字体
/// </summary>
/// <param name="s">格式:字体,字号,粗体,斜体</param>
/// <returns></returns>
private static Font ConvFont(string s)
{
string[] t = s.Split(',');
float emSize = Convert.ToSingle(t[1]);
FontStyle style = FontStyle.Regular;
if (t[2] == "B") style |= FontStyle.Bold;
if (t[3] == "I") style |= FontStyle.Italic;
Font font = new(t[0], emSize, style);
return font;
}
///// <summary>
///// 转换字体
///// </summary>
///// <param name="f">字体</param>
///// <returns></returns>
//private static string ConvFont(Font f)
//{
// string[] s = new string[4];
// s[0] = f.Name;
// s[1] = f.Size.ToString();
// if (f.Bold) s[2] = "B";
// if (f.Italic) s[3] = "I";
// return string.Join(",", s);
//}
private class ClsLangForm
{
public ClsLangText FormLang;
public List<ClsLangText> ControlLang;
public ClsLangForm()
{
FormLang = new ClsLangText();
ControlLang = new List<ClsLangText>();
}
}
private class ClsLangText
{
public string Name = "";
public string Text = "";
public Font Font = null;
//public static string Tag = "";
}
}
}
\ No newline at end of file \ No newline at end of file
...@@ -5,6 +5,11 @@ using System.Collections.Generic; ...@@ -5,6 +5,11 @@ using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Diagnostics; using System.Diagnostics;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.IO;
using System.Data.SqlTypes;
using System.Resources;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Xml.Linq;
namespace Asa.FaceControl namespace Asa.FaceControl
{ {
...@@ -16,13 +21,14 @@ namespace Asa.FaceControl ...@@ -16,13 +21,14 @@ namespace Asa.FaceControl
private static XmlDocument xmlDoc; private static XmlDocument xmlDoc;
private static string[] filePath; //XML文件的路径 private static string[] filePath; //XML文件的路径
private static int nameIndex = -1; private static int nameIndex = -1;
private static readonly Dictionary<string, string> dialogText = new(); //private static readonly Dictionary<string,Dictionary<string, string>> dialogText = new();
private static readonly List<ClsLangForm> langForm = new(); private static readonly Dictionary<string, Dictionary<string, ClsLangText>> langForm = new();
/// <summary> /// <summary>
/// 语言名称 /// 语言名称
/// </summary> /// </summary>
public static string[] Name { private set; get; } = null; public static List<string> Name { private set; get; } = new();
public static string CurrentLng { private set; get; } = "zh-CN";
...@@ -32,17 +38,45 @@ namespace Asa.FaceControl ...@@ -32,17 +38,45 @@ namespace Asa.FaceControl
/// <param name="path"></param> /// <param name="path"></param>
public static void LoadPath(string path) public static void LoadPath(string path)
{ {
if (!System.IO.Directory.Exists(path)) var filePath = System.IO.Directory.GetFiles(path, "*.lngres");
System.IO.Directory.CreateDirectory(path);
filePath = System.IO.Directory.GetFiles(path, "*.xml");
xmlDoc = new XmlDocument(); foreach (var file in filePath)
Name = new string[filePath.Length];
for (int i = 0; i < filePath.Length; i++)
{ {
xmlDoc.Load(filePath[i]);
Name[i] = xmlDoc.LastChild.Attributes["Name"].Value; var lngid = Path.GetFileNameWithoutExtension(file);
if (lngid.ToLower() == "en-US".ToLower())
{
Name.Add("English");
}
else if (lngid.ToLower() == "zh-CN".ToLower())
{
Name.Add("简体中文");
}
if (!File.Exists(file))
return;
langForm.Add(lngid, new Dictionary<string, ClsLangText>());
var lngfs = File.ReadAllLines(file);
foreach (var lts in lngfs)
{
var lds = lts.Split('\t');
if (lds.Length < 3)
continue;
var key = lds[0];
var value = lds[2];
var fnt = lds.Length > 3 ? lds[3] : "";
ClsLangText clsLangText = new ClsLangText();
clsLangText.Font = ConvFont(fnt);
clsLangText.Name = key;
clsLangText.Text = value;
langForm[lngid].Add(key, clsLangText);
}
} }
LoadLanguage("zh-CN");
} }
/// <summary> /// <summary>
...@@ -51,13 +85,17 @@ namespace Asa.FaceControl ...@@ -51,13 +85,17 @@ namespace Asa.FaceControl
/// <param name="name"></param> /// <param name="name"></param>
public static void LoadLanguage(string name) public static void LoadLanguage(string name)
{ {
nameIndex = Array.FindIndex(Name, s => s == name); switch (name)
if (nameIndex == -1) return;
LoadLanguage();
foreach (Form frm in Application.OpenForms)
{ {
if (frm is FormBase @base) case "简体中文":
SetLanguage(@base); CurrentLng = "zh-CN";
break;
case "English":
CurrentLng = "en-US";
break;
default:
CurrentLng = "zh-CN";
break;
} }
} }
...@@ -68,9 +106,10 @@ namespace Asa.FaceControl ...@@ -68,9 +106,10 @@ namespace Asa.FaceControl
/// <returns></returns> /// <returns></returns>
public static string Dialog(string key,string defaulttxt="") public static string Dialog(string key,string defaulttxt="")
{ {
if (nameIndex == -1) return ""; if (!langForm.ContainsKey(CurrentLng)) return "";
if (dialogText.TryGetValue(key, out string value)) var dk = "Dialog_" + key;
return value; if (langForm[CurrentLng].TryGetValue(dk, out var value))
return value.Text;
else else
{ {
SetNoLangXML("Dialog", key, defaulttxt); SetNoLangXML("Dialog", key, defaulttxt);
...@@ -84,12 +123,11 @@ namespace Asa.FaceControl ...@@ -84,12 +123,11 @@ namespace Asa.FaceControl
/// <param name="frm"></param> /// <param name="frm"></param>
public static void SetLanguage(FormBase frm) public static void SetLanguage(FormBase frm)
{ {
if (nameIndex == -1) return; if (!langForm.ContainsKey(CurrentLng) || !langForm[CurrentLng].ContainsKey(frm.Name + "_" + frm.Name))
int langIdx = langForm.FindIndex(s => s.FormLang.Name == frm.Name); return;
if (langIdx == -1) return; frm.Text = langForm[CurrentLng][frm.Name+"_"+ frm.Name].Text;
frm.Text = langForm[langIdx].FormLang.Text; frm.TitleFont = langForm[CurrentLng][frm.Name + "_" + frm.Name].Font;
frm.TitleFont = langForm[langIdx].FormLang.Font; SetLang(frm.Name, frm);
SetLang(langIdx, frm);
} }
/// <summary> /// <summary>
...@@ -98,16 +136,9 @@ namespace Asa.FaceControl ...@@ -98,16 +136,9 @@ namespace Asa.FaceControl
/// <param name="ctl"></param> /// <param name="ctl"></param>
public static void SetLanguage(Control ctl) public static void SetLanguage(Control ctl)
{ {
if (nameIndex == -1) return; SetLang(ctl.Name, ctl);
int langIdx = langForm.FindIndex(s => s.FormLang.Name == ctl.Name);
if (langIdx == -1) return;
SetLang(langIdx, ctl);
} }
///// <summary> ///// <summary>
///// 语言索引 ///// 语言索引
///// </summary> ///// </summary>
...@@ -160,69 +191,24 @@ namespace Asa.FaceControl ...@@ -160,69 +191,24 @@ namespace Asa.FaceControl
//} //}
private static void SetLang(string frmname, Control ctl)
private static void LoadLanguage()
{ {
xmlDoc.Load(filePath[nameIndex]); if (!langForm.ContainsKey(CurrentLng))
XmlNode root = xmlDoc.LastChild; return;
langForm.Clear();
dialogText.Clear();
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name == "Dialog")
{
foreach (XmlNode tt in node.ChildNodes)
{
if (!dialogText.ContainsKey(tt.Name))
dialogText.Add(tt.Name, tt.InnerText);
}
}
else
{
ClsLangForm lang = new();
lang.FormLang.Name = node.Name;
if (node.Attributes["Text"] != null) lang.FormLang.Text = node.Attributes["Text"].Value;
if (node.Attributes["Font"] != null) lang.FormLang.Font = ConvFont(node.Attributes["Font"].Value);
//if (node.Attributes["Tag"] != null) lang.FormLang.Tag = node.Attributes["Tag"].Value;
foreach (XmlNode tt in node.ChildNodes)
{
if (tt.NodeType != XmlNodeType.Element)
continue;
ClsLangText ll = new()
{
Name = tt.Name
};
if (tt.Attributes["Text"] != null) ll.Text = tt.Attributes["Text"].Value;
if (tt.Attributes["Font"] != null) ll.Font = ConvFont(tt.Attributes["Font"].Value);
//if (tt.Attributes["Tag"] != null) ll.Tag = tt.Attributes["Tag"].Value;
lang.ControlLang.Add(ll);
}
langForm.Add(lang);
}
}
}
private static void SetLang(int langIndex, Control ctl)
{
foreach (Control cc in ctl.Controls) foreach (Control cc in ctl.Controls)
{ {
if (cc.Name == "") continue; if (cc.Name == "") continue;
var fn = frmname+"_"+cc.Name;
int idx = langForm[langIndex].ControlLang.FindIndex(s => s.Name == cc.Name); var idx = langForm[CurrentLng].ContainsKey(fn);
if (idx > -1) if (idx)
{ {
//Debugger.Break(); //Debugger.Break();
cc.Text = langForm[langIndex].ControlLang[idx].Text; cc.Text = langForm[CurrentLng][fn].Text;
if (cc is FacePanel) if (cc is FacePanel)
((FacePanel)cc).TitleFont = langForm[langIndex].ControlLang[idx].Font; ((FacePanel)cc).TitleFont = langForm[CurrentLng][fn].Font;
else else
cc.Font = langForm[langIndex].ControlLang[idx].Font; cc.Font = langForm[CurrentLng][fn].Font;
//cc.Tag = langForm[langIndex].ControlLang[idx].Tag; //cc.Tag = langForm[langIndex].ControlLang[idx].Tag;
} }
else { else {
...@@ -230,15 +216,16 @@ namespace Asa.FaceControl ...@@ -230,15 +216,16 @@ namespace Asa.FaceControl
{ {
if (cc.Tag == null || cc.Tag.ToString() != "not") if (cc.Tag == null || cc.Tag.ToString() != "not")
{ {
SetNoLangXML(langForm[langIndex].FormLang.Name, cc.Name, cc.Text); SetNoLangXML(fn, cc.Name, cc.Text);
} }
} }
} }
if (cc.HasChildren) if (cc.HasChildren)
SetLang(langIndex, cc); SetLang(frmname,cc);
} }
} }
static void SetNoLangXML(string formname,string controlname,string text) { static void SetNoLangXML(string formname,string controlname,string text) {
return;
xmlDoc.Load(filePath[nameIndex]); xmlDoc.Load(filePath[nameIndex]);
XmlNode root = xmlDoc.LastChild; XmlNode root = xmlDoc.LastChild;
var n=root.SelectSingleNode(formname); var n=root.SelectSingleNode(formname);
...@@ -275,6 +262,8 @@ namespace Asa.FaceControl ...@@ -275,6 +262,8 @@ namespace Asa.FaceControl
/// <returns></returns> /// <returns></returns>
private static Font ConvFont(string s) private static Font ConvFont(string s)
{ {
if (string.IsNullOrWhiteSpace(s))
return null;
string[] t = s.Split(','); string[] t = s.Split(',');
float emSize = Convert.ToSingle(t[1]); float emSize = Convert.ToSingle(t[1]);
FontStyle style = FontStyle.Regular; FontStyle style = FontStyle.Regular;
...@@ -284,20 +273,22 @@ namespace Asa.FaceControl ...@@ -284,20 +273,22 @@ namespace Asa.FaceControl
return font; return font;
} }
///// <summary> /// <summary>
///// 转换字体 /// 转换字体
///// </summary> /// </summary>
///// <param name="f">字体</param> /// <param name="f">字体</param>
///// <returns></returns> /// <returns></returns>
//private static string ConvFont(Font f) private static string ConvFont(Font f)
//{ {
// string[] s = new string[4]; if (f == null)
// s[0] = f.Name; return "";
// s[1] = f.Size.ToString(); string[] s = new string[4];
// if (f.Bold) s[2] = "B"; s[0] = f.Name;
// if (f.Italic) s[3] = "I"; s[1] = f.Size.ToString();
// return string.Join(",", s); if (f.Bold) s[2] = "B";
//} if (f.Italic) s[3] = "I";
return string.Join(",", s);
}
private class ClsLangForm private class ClsLangForm
{ {
......
eaa0a95c58af428639588208ab7a5e0b92ed1ff4 2f1470bbe825420f40edc7b41de2d5e60240fa72
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup> </startup>
</configuration>
\ No newline at end of file \ No newline at end of file
</configuration>
LoginWrong 登录密码错误。
SaveSucceed 保存成功
Error 错误
CodeCount 条码数量为0
SelectPrintContent 识别完成,选择打印内容
PrintTemplateAdd 输入新的打印标签模板名称
PrintTemplateDel 确定要删除打印标签模板 [name] 吗?
PrintTemplateRename 把模板 [name] 重命名为
MaterialTemplateAdd 输入新的物料模板名称
MaterialTemplateDel 确定要删除物料模板 [name] 吗?
MaterialTemplateRename 把模板 [name] 重命名为
MaterialTemplateNoMatch 没有匹配到物料模板
ServerReturn 服务端返回数据错误
ServerJson 服务端数据为空
LabelEmpty 打印标签内容有空内容,是否继续打印?
KeyExists [name],关键字已存在
KeyRepeat 重复关键字
NoMatchSelect 必须选择一个匹配模式
KeyEmpty 关键字为空
UnlockWrong 解锁密码错误
RepeatPrint 该料盘标签已打印
MaterialScanning 拍照识别...
MaterialTemplateMatching 模版匹配...
MaterialProcessing 计算结果...
PleaseWaiting 请稍后...
MatchType_max 匹配数量至多
MatchType_equals 匹配数量等于
MatchType_min 匹配数量至少
OcrNeedCodeSetKey Ocr的基准条码必须先匹配关键字
ThisMatchHasOcrCantdelete 该匹配规则下有Ocr规则,不能删除全部关键字
Form1_Form1 登录 [Font: Name=微软雅黑, Size=24, Units=3, GdiCharSet=1, GdiVerticalFont=False]
Form1_LblUser 登录 [Font: Name=微软雅黑, Size=11, Units=3, GdiCharSet=1, GdiVerticalFont=False]
Form1_TxtUser 登录 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
Form1_BtnCancel 登录 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
Form1_BtnLogin 登录 [Font: Name=微软雅黑, Size=15, Units=3, GdiCharSet=1, GdiVerticalFont=False]
Form1_faceButton1 登录 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_FrmMain 物料注册系统 [Font: Name=微软雅黑, Size=24, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_BtnStart 物料注册系统 [Font: Name=微软雅黑, Size=14, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_BtnRetrospect 物料注册系统 [Font: Name=微软雅黑, Size=14, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_BtnSet 物料注册系统 [Font: Name=微软雅黑, Size=14, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_BtnAbout 物料注册系统 [Font: Name=微软雅黑, Size=14, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_BtnTriggerIO 物料注册系统 [Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_LblCameraExist 物料注册系统 [Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_LblIOExist 物料注册系统 [Font: Name=微软雅黑, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmMain_PnlExtension 物料注册系统 [Font: Name=微软雅黑, Size=14, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_FrmSet 设置 [Font: Name=微软雅黑, Size=24, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnWorkMode 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnIdentify 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnLabel 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnMaterial 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnKeyword 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnOK 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnCancel 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSet_BtnApply 设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_FrmSetPlus 条码规则设置 [Font: Name=微软雅黑, Size=24, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnWorkMode 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnIdentify 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnLabel 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnMaterial 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnKeyword 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnOK 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnCancel 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
FrmSetPlus_BtnApply 条码规则设置 [Font: Name=微软雅黑, Size=12, Units=3, GdiCharSet=1, GdiVerticalFont=False]
106ab3f00013cfe6e14b7edb5b4f9a5eea6c7dd1 f0e181e820d8f01bfce224f33714c451e634448f
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!