Commit 16ec6fd9 刘韬

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

1 个父辈 1f318621
......@@ -393,7 +393,7 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>rem copy "$(TargetPath)" "C:\Neotel\DLL\$(ProjectName)\$(TargetFileName)"
rem copy "$(TargetDir)$(TargetName).pdb" "C:\Neotel\DLL\$(ProjectName)\$(TargetName).pdb"</PostBuildEvent>
<PostBuildEvent>copy "$(TargetPath)" "D:\rick\vs\NS100\SharedDll\"
copy "$(TargetDir)$(TargetName).pdb" "D:\rick\vs\NS100\SharedDll\"</PostBuildEvent>
</PropertyGroup>
</Project>
\ 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
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
......@@ -5,6 +5,11 @@ using System.Collections.Generic;
using System.Drawing;
using System.Diagnostics;
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
{
......@@ -16,13 +21,14 @@ namespace Asa.FaceControl
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();
//private static readonly Dictionary<string,Dictionary<string, string>> dialogText = new();
private static readonly Dictionary<string, Dictionary<string, ClsLangText>> langForm = new();
/// <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
/// <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");
var filePath = System.IO.Directory.GetFiles(path, "*.lngres");
xmlDoc = new XmlDocument();
Name = new string[filePath.Length];
for (int i = 0; i < filePath.Length; i++)
foreach (var file in filePath)
{
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>
......@@ -51,13 +85,17 @@ namespace Asa.FaceControl
/// <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)
switch (name)
{
if (frm is FormBase @base)
SetLanguage(@base);
case "简体中文":
CurrentLng = "zh-CN";
break;
case "English":
CurrentLng = "en-US";
break;
default:
CurrentLng = "zh-CN";
break;
}
}
......@@ -68,9 +106,10 @@ namespace Asa.FaceControl
/// <returns></returns>
public static string Dialog(string key,string defaulttxt="")
{
if (nameIndex == -1) return "";
if (dialogText.TryGetValue(key, out string value))
return value;
if (!langForm.ContainsKey(CurrentLng)) return "";
var dk = "Dialog_" + key;
if (langForm[CurrentLng].TryGetValue(dk, out var value))
return value.Text;
else
{
SetNoLangXML("Dialog", key, defaulttxt);
......@@ -84,12 +123,11 @@ namespace Asa.FaceControl
/// <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);
if (!langForm.ContainsKey(CurrentLng) || !langForm[CurrentLng].ContainsKey(frm.Name + "_" + frm.Name))
return;
frm.Text = langForm[CurrentLng][frm.Name+"_"+ frm.Name].Text;
frm.TitleFont = langForm[CurrentLng][frm.Name + "_" + frm.Name].Font;
SetLang(frm.Name, frm);
}
/// <summary>
......@@ -98,16 +136,9 @@ namespace Asa.FaceControl
/// <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);
SetLang(ctl.Name, ctl);
}
///// <summary>
///// 语言索引
///// </summary>
......@@ -160,69 +191,24 @@ namespace Asa.FaceControl
//}
private static void LoadLanguage()
private static void SetLang(string frmname, Control ctl)
{
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);
}
}
}
if (!langForm.ContainsKey(CurrentLng))
return;
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)
var fn = frmname+"_"+cc.Name;
var idx = langForm[CurrentLng].ContainsKey(fn);
if (idx)
{
//Debugger.Break();
cc.Text = langForm[langIndex].ControlLang[idx].Text;
cc.Text = langForm[CurrentLng][fn].Text;
if (cc is FacePanel)
((FacePanel)cc).TitleFont = langForm[langIndex].ControlLang[idx].Font;
((FacePanel)cc).TitleFont = langForm[CurrentLng][fn].Font;
else
cc.Font = langForm[langIndex].ControlLang[idx].Font;
cc.Font = langForm[CurrentLng][fn].Font;
//cc.Tag = langForm[langIndex].ControlLang[idx].Tag;
}
else {
......@@ -230,15 +216,16 @@ namespace Asa.FaceControl
{
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)
SetLang(langIndex, cc);
SetLang(frmname,cc);
}
}
static void SetNoLangXML(string formname,string controlname,string text) {
return;
xmlDoc.Load(filePath[nameIndex]);
XmlNode root = xmlDoc.LastChild;
var n=root.SelectSingleNode(formname);
......@@ -275,6 +262,8 @@ namespace Asa.FaceControl
/// <returns></returns>
private static Font ConvFont(string s)
{
if (string.IsNullOrWhiteSpace(s))
return null;
string[] t = s.Split(',');
float emSize = Convert.ToSingle(t[1]);
FontStyle style = FontStyle.Regular;
......@@ -284,20 +273,22 @@ namespace Asa.FaceControl
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);
//}
/// <summary>
/// 转换字体
/// </summary>
/// <param name="f">字体</param>
/// <returns></returns>
private static string ConvFont(Font f)
{
if (f == null)
return "";
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
{
......
eaa0a95c58af428639588208ab7a5e0b92ed1ff4
2f1470bbe825420f40edc7b41de2d5e60240fa72
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
</configuration>
\ 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!