using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace Dongke.WinForm.Controls.InvoiceLayout
{
internal partial class GridItemColumnSetting : Setting
{
#region 成员变量
// 表头属性
private TextAlignment _textAlignHead = TextAlignment.LeftOrTop; // 文本对齐方式
private TextAlignment _textAlignVerticalHead = TextAlignment.LeftOrTop; // 文本垂直对齐
// 文本属性
private TextAlignment _textAlign = TextAlignment.LeftOrTop; // 文本对齐方式
private TextAlignment _textAlignVertical = TextAlignment.LeftOrTop; // 文本垂直对齐
private ItemStyle _itemStyle = ItemStyle.Text; // 项目类别
private string _defaultValue = string.Empty; // 默认值
private string _textFormat = string.Empty; // 文本格式
private string _culture = string.Empty; // culture
private bool _isInit = true;
private bool _isNew = false;
private DataTable _sysFormat;
private DataTable _sysDefaultValue;
#endregion
#region 属性
///
/// 是否自动表头文本换行
///
public bool WrapHead
{
get
{
return this.ckbWrapHead.Checked;
}
set
{
this.ckbWrapHead.Checked = value;
}
}
///
/// 表头文本字体
///
public Font TextFontHead
{
get
{
return txtHeaderText.Font;
}
set
{
txtHeaderText.Font = value;
}
}
///
/// 表头文本颜色
///
public Color TextColorHead
{
get
{
return txtHeaderText.ForeColor;
}
set
{
txtHeaderText.ForeColor = value;
}
}
///
/// 表头文本对齐方式
///
public TextAlignment TextAlignHead
{
get
{
return _textAlignHead;
}
set
{
_textAlignHead = value;
}
}
///
/// 表头文本垂直对齐方式
///
public TextAlignment TextAlignVerticalHead
{
get
{
return _textAlignVerticalHead;
}
set
{
if (_textAlignVerticalHead != value)
{
_textAlignVerticalHead = value;
}
}
}
///
/// 表头行距
///
public float LineSpaceHead
{
get
{
return System.Convert.ToSingle(numLineSpaceHead.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numLineSpaceHead.Minimum)
{
d = numLineSpaceHead.Minimum;
}
else if (numLineSpaceHead.Maximum < d)
{
d = numLineSpaceHead.Maximum;
}
numLineSpaceHead.Value = d;
}
}
///
/// 表头字间距
///
public float CharacterSpaceHead
{
get
{
return System.Convert.ToSingle(numCharSpaceHead.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numCharSpaceHead.Minimum)
{
d = numCharSpaceHead.Minimum;
}
else if (numCharSpaceHead.Maximum < d)
{
d = numCharSpaceHead.Maximum;
}
numCharSpaceHead.Value = d;
}
}
///
/// 表头单行文字数
///
public int CharacterCountHead
{
get
{
return System.Convert.ToInt32(numCharCount.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numCharCountHead.Minimum)
{
d = numCharCountHead.Minimum;
}
else if (numCharCountHead.Maximum < d)
{
d = numCharCountHead.Maximum;
}
numCharCountHead.Value = d;
}
}
///
/// 是否自动文本换行
///
public bool Wrap
{
get
{
return this.ckbWrap.Checked;
}
set
{
this.ckbWrap.Checked = value;
}
}
///
/// 文本字体
///
public Font TextFont
{
get
{
return txtPreview.Font;
}
set
{
txtPreview.Font = value;
}
}
///
/// 文本颜色
///
public Color TextColor
{
get
{
return txtPreview.ForeColor;
}
set
{
txtPreview.ForeColor = value;
}
}
///
/// 文本内容
///
public string TextPreview
{
get
{
return txtPreview.Text;
}
set
{
txtPreview.Text = value;
}
}
///
/// 文本对齐方式
///
public TextAlignment TextAlign
{
get
{
return _textAlign;
}
set
{
_textAlign = value;
}
}
///
/// 文本垂直对齐方式
///
public TextAlignment TextAlignVertical
{
get
{
return _textAlignVertical;
}
set
{
if (_textAlignVertical != value)
{
_textAlignVertical = value;
}
}
}
///
/// 行距
///
public float LineSpace
{
get
{
return System.Convert.ToSingle(numLineSpace.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numLineSpace.Minimum)
{
d = numLineSpace.Minimum;
}
else if (numLineSpace.Maximum < d)
{
d = numLineSpace.Maximum;
}
numLineSpace.Value = d;
}
}
///
/// 字间距
///
public float CharacterSpace
{
get
{
return System.Convert.ToSingle(numCharSpace.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numCharSpace.Minimum)
{
d = numCharSpace.Minimum;
}
else if (numCharSpace.Maximum < d)
{
d = numCharSpace.Maximum;
}
numCharSpace.Value = d;
}
}
///
/// 宽
///
public float TextWidth
{
get
{
return System.Convert.ToSingle(numWidth.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numWidth.Minimum)
{
d = numWidth.Minimum;
}
else if (numWidth.Maximum < d)
{
d = numWidth.Maximum;
}
numWidth.Value = d;
}
}
///
/// 单行文字数
///
public int CharacterCount
{
get
{
return System.Convert.ToInt32(numCharCount.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numCharCount.Minimum)
{
d = numCharCount.Minimum;
}
else if (numCharCount.Maximum < d)
{
d = numCharCount.Maximum;
}
numCharCount.Value = d;
}
}
///
/// 文本默认值
///
public string DefaultValue
{
get
{
return ddlDefaultValue.Text;
}
set
{
_defaultValue = value;
}
}
///
/// 文本格式
///
public string TextFormat
{
get
{
return this.ddlTextFormat.Text;
}
set
{
if (!string.IsNullOrEmpty(value))
{
_textFormat = value;
}
}
}
///
/// Culture
///
public string Culture
{
get
{
return _culture;
}
set
{
_culture = value;
}
}
///
/// 项目类别
///
public ItemStyle ItemStyle
{
get
{
return _itemStyle;
}
set
{
_itemStyle = value;
}
}
///
/// 新建
///
public bool IsNew
{
get
{
return _isNew;
}
set
{
_isNew = value;
}
}
///
/// 列名
///
public string ColName
{
get
{
return txtColName.Text;
}
set
{
txtColName.Text = value;
}
}
///
/// 标题文本
///
public string HeaderText
{
get
{
return txtHeaderText.Text;
}
set
{
txtHeaderText.Text = value;
}
}
///
/// 来源绑定
///
public bool IsDataBinding
{
get
{
return this.ddlDefaultValue.Enabled;
}
set
{
this.ddlDefaultValue.Enabled = value;
this.ddlTextFormat.Enabled = value;
}
}
#endregion
#region 构造函数
///
/// 构造函数
///
public GridItemColumnSetting()
{
InitializeComponent();
InitializeDDL();
TextWidth = LayoutCommon.DefaultTextItemSizeWidth;
}
#endregion
#region 事件处理
///
/// 文本设置
///
/// 指定的对象
/// 提供的事件数据
private void TextItemSetting_Shown(object sender, System.EventArgs e)
{
try
{
// 条码文本时,才显示条码属性
if (_itemStyle == ItemStyle.Barcode)
{
this.chkPic.Checked = true;
this.chkM.Visible = true;
this.chkFixedRatio.Visible = true;
}
else
{
this.chkPic.Checked = false;
this.chkM.Visible = false;
this.chkFixedRatio.Visible = false;
}
if (_textAlignHead == TextAlignment.Evenness)
{
numCharSpaceHead.Enabled = false;
numCharSpaceHead.Value = 0;
numCharCountHead.Enabled = false;
numCharCountHead.Value = 0;
}
else
{
if (0 < numCharCountHead.Value)
{
rbtnLeftHead.Checked = true;
grbTextAlignmentHead.Enabled = false;
numCharSpaceHead.Enabled = false;
decimal characterSpace = LayoutCommon.EqualityChars(numWidth.Value,
numCharCountHead.Value,
txtHeaderText.Font);
if (characterSpace < numCharSpaceHead.Minimum)
{
characterSpace = numCharSpaceHead.Minimum;
}
else if (numCharSpaceHead.Maximum < characterSpace)
{
characterSpace = numCharSpaceHead.Maximum;
}
numCharSpaceHead.Value = LayoutCommon.Truncate(characterSpace,
numCharSpaceHead.DecimalPlaces);
}
}
if (_textAlign == TextAlignment.Evenness)
{
numCharSpace.Enabled = false;
numCharSpace.Value = 0;
numCharCount.Enabled = false;
numCharCount.Value = 0;
}
else
{
if (0 < numCharCount.Value)
{
rbtnLeft.Checked = true;
grbTextAlignment.Enabled = false;
numCharSpace.Enabled = false;
decimal characterSpace = LayoutCommon.EqualityChars(numWidth.Value,
numCharCount.Value,
txtPreview.Font);
if (characterSpace < numCharSpace.Minimum)
{
characterSpace = numCharSpace.Minimum;
}
else if (numCharSpace.Maximum < characterSpace)
{
characterSpace = numCharSpace.Maximum;
}
numCharSpace.Value = LayoutCommon.Truncate(characterSpace,
numCharSpace.DecimalPlaces);
}
}
if (_sysFormat != null)
{
if (_itemStyle == ItemStyle.Date)
{
_sysFormat.DefaultView.RowFilter = "SignDispNo = 0";
}
else if (_itemStyle == ItemStyle.Sign)
{
_sysFormat.DefaultView.RowFilter = "DateDispNo = 0";
}
else
{
_sysFormat.DefaultView.RowFilter = string.Empty;
}
}
if (grbTextAlignmentHead.Enabled)
{
switch (_textAlignHead)
{
case TextAlignment.LeftOrTop:
rbtnLeftHead.Checked = true;
txtHeaderText.TextAlign = HorizontalAlignment.Left;
break;
case TextAlignment.RightOrBottom:
rbtnRightHead.Checked = true;
txtHeaderText.TextAlign = HorizontalAlignment.Right;
break;
case TextAlignment.Center:
rbtnCenterHead.Checked = true;
txtHeaderText.TextAlign = HorizontalAlignment.Center;
break;
case TextAlignment.Evenness:
rbtnEvennessHead.Checked = true;
txtHeaderText.TextAlign = HorizontalAlignment.Left;
break;
}
}
if (grbTextAlignment.Enabled)
{
switch (_textAlign)
{
case TextAlignment.LeftOrTop:
rbtnLeft.Checked = true;
txtPreview.TextAlign = HorizontalAlignment.Left;
break;
case TextAlignment.RightOrBottom:
rbtnRight.Checked = true;
txtPreview.TextAlign = HorizontalAlignment.Right;
break;
case TextAlignment.Center:
rbtnCenter.Checked = true;
txtPreview.TextAlign = HorizontalAlignment.Center;
break;
case TextAlignment.Evenness:
rbtnEvenness.Checked = true;
txtPreview.TextAlign = HorizontalAlignment.Left;
break;
}
}
if (grbTextAlignmentVHead.Enabled)
{
switch (_textAlignVerticalHead)
{
case TextAlignment.LeftOrTop:
rbtnTopHead.Checked = true;
break;
case TextAlignment.RightOrBottom:
rbtnBottomHead.Checked = true;
break;
case TextAlignment.Center:
rbtnCenterVHead.Checked = true;
break;
default:
rbtnTopHead.Checked = true;
break;
}
}
if (grbTextAlignmentV.Enabled)
{
switch (_textAlignVertical)
{
case TextAlignment.LeftOrTop:
rbtnTop.Checked = true;
break;
case TextAlignment.RightOrBottom:
rbtnBottom.Checked = true;
break;
case TextAlignment.Center:
rbtnCenterV.Checked = true;
break;
default:
rbtnTop.Checked = true;
break;
}
}
if (IsNew || !IsDataBinding)
{
if (_sysFormat != null)
{
ddlTextFormat.SelectedIndex = 0;
}
if (_sysDefaultValue != null)
{
ddlDefaultValue.SelectedIndex = 0;
}
}
else
{
if (_sysFormat != null)
{
if (_itemStyle == ItemStyle.Date)
{
// 日期
DataRow[] drs = _sysFormat.Select
(string.Format("Format = '{0}' AND ('{1}' = '' OR Culture = '{1}') AND DateDispNo <> 0",
_textFormat,
_culture));
if (drs != null && 0 < drs.Length)
{
ddlTextFormat.SelectedValue = drs[0]["FormatID"];
}
else
{
ddlTextFormat.Text = _textFormat;
}
}
else if (_itemStyle == ItemStyle.Sign)
{
// 符号
ddlTextFormat.ValueMember = "FormatName";
ddlTextFormat.SelectedValue = _textFormat;
if (ddlTextFormat.SelectedIndex < 0)
{
ddlTextFormat.Text = _textFormat;
}
}
else
{
ddlTextFormat.ValueMember = "Format";
ddlTextFormat.SelectedValue = _textFormat;
if (ddlTextFormat.SelectedIndex < 0)
{
ddlTextFormat.Text = _textFormat;
}
}
}
ddlDefaultValue.Text = _defaultValue;
}
}
finally
{
_isInit = false;
}
}
///
/// 设置文本颜色
///
/// 指定的对象
/// 提供的事件数据
private void btnSelectColor_Click(object sender, System.EventArgs e)
{
colorDialog.Color = txtPreview.ForeColor;
if (colorDialog.ShowDialog() == DialogResult.OK)
{
txtPreview.ForeColor = colorDialog.Color;
}
}
///
/// 设置表头文本颜色
///
/// 指定的对象
/// 提供的事件数据
private void btnSelectColorHead_Click(object sender, System.EventArgs e)
{
colorDialog.Color = txtHeaderText.ForeColor;
if (colorDialog.ShowDialog() == DialogResult.OK)
{
txtHeaderText.ForeColor = colorDialog.Color;
}
}
///
/// 设置文本格式
///
/// 指定的对象
/// 提供的事件数据
private void ddlTextFormat_SelectedIndexChanged(object sender, System.EventArgs e)
{
_culture = string.Empty;
DataRowView dataRow = ddlTextFormat.SelectedItem as DataRowView;
if (dataRow != null)
{
if (0 != System.Convert.ToInt32(dataRow["DateDispNo"]))
{
_itemStyle = ItemStyle.Date;
_textFormat = dataRow["Format"].ToString();
_culture = dataRow["Culture"].ToString();
}
else if (0 != System.Convert.ToInt32(dataRow["SignDispNo"]))
{
_itemStyle = ItemStyle.Sign;
_textFormat = dataRow["FormatName"].ToString();
}
else
{
_itemStyle = ItemStyle.Text;
_textFormat = dataRow["Format"].ToString();
}
}
else
{
//if (_itemStyle != ItemStyle.Barcode)
//{
// _itemStyle = ItemStyle.Other;
//}
_textFormat = ddlTextFormat.Text;
_culture = null;
}
}
///
/// 设置文本对齐方式
///
/// 指定的对象
/// 提供的事件数据
private void rbtnTextAlignment_CheckedChanged(object sender, System.EventArgs e)
{
if (_isInit)
{
return;
}
if (rbtnLeft.Checked)
{
txtPreview.TextAlign = HorizontalAlignment.Left;
_textAlign = TextAlignment.LeftOrTop;
}
else if (rbtnRight.Checked)
{
txtPreview.TextAlign = HorizontalAlignment.Right;
_textAlign = TextAlignment.RightOrBottom;
}
else if (rbtnCenter.Checked)
{
txtPreview.TextAlign = HorizontalAlignment.Center;
_textAlign = TextAlignment.Center;
}
else
{
txtPreview.TextAlign = HorizontalAlignment.Left;
_textAlign = TextAlignment.Evenness;
}
if (rbtnTop.Checked)
{
_textAlignVertical = TextAlignment.LeftOrTop;
}
else if (rbtnBottom.Checked)
{
_textAlignVertical = TextAlignment.RightOrBottom;
}
else if (rbtnCenterV.Checked)
{
_textAlignVertical = TextAlignment.Center;
}
else
{
_textAlignVertical = TextAlignment.LeftOrTop;
}
if (rbtnEvenness.Checked)
{
numCharSpace.Enabled = false;
numCharSpace.Value = 0;
numCharCount.Enabled = false;
numCharCount.Value = 0;
}
else
{
numCharSpace.Enabled = true;
numCharCount.Enabled = true;
}
}
///
/// 设置表头文本对齐方式
///
/// 指定的对象
/// 提供的事件数据
private void rbtnTextAlignmentHead_CheckedChanged(object sender, System.EventArgs e)
{
if (_isInit)
{
return;
}
if (rbtnLeftHead.Checked)
{
txtHeaderText.TextAlign = HorizontalAlignment.Left;
_textAlignHead = TextAlignment.LeftOrTop;
}
else if (rbtnRightHead.Checked)
{
txtHeaderText.TextAlign = HorizontalAlignment.Right;
_textAlignHead = TextAlignment.RightOrBottom;
}
else if (rbtnCenterHead.Checked)
{
txtHeaderText.TextAlign = HorizontalAlignment.Center;
_textAlignHead = TextAlignment.Center;
}
else
{
txtHeaderText.TextAlign = HorizontalAlignment.Left;
_textAlignHead = TextAlignment.Evenness;
}
if (rbtnTopHead.Checked)
{
_textAlignVerticalHead = TextAlignment.LeftOrTop;
}
else if (rbtnBottomHead.Checked)
{
_textAlignVerticalHead = TextAlignment.RightOrBottom;
}
else if (rbtnCenterVHead.Checked)
{
_textAlignVerticalHead = TextAlignment.Center;
}
else
{
_textAlignVerticalHead = TextAlignment.LeftOrTop;
}
if (rbtnEvennessHead.Checked)
{
numCharSpaceHead.Enabled = false;
numCharSpaceHead.Value = 0;
numCharCountHead.Enabled = false;
numCharCountHead.Value = 0;
}
else
{
numCharSpaceHead.Enabled = true;
numCharCountHead.Enabled = true;
}
}
///
/// 设置单行文字数
///
/// 指定的对象
/// 提供的事件数据
private void numCharCount_ValueChanged(object sender, System.EventArgs e)
{
if (_isInit)
{
return;
}
if (0 < numCharCount.Value)
{
rbtnLeft.Checked = true;
grbTextAlignment.Enabled = false;
numCharSpace.Enabled = false;
decimal characterSpace = LayoutCommon.EqualityChars(
numWidth.Value,
numCharCount.Value,
txtPreview.Font);
if (characterSpace < numCharSpace.Minimum)
{
characterSpace = numCharSpace.Minimum;
}
else if (numCharSpace.Maximum < characterSpace)
{
characterSpace = numCharSpace.Maximum;
}
numCharSpace.Value = LayoutCommon.Truncate(characterSpace, numCharSpace.DecimalPlaces);
}
else
{
grbTextAlignment.Enabled = true;
if (!rbtnEvenness.Checked)
{
numCharSpace.Enabled = true;
}
}
if (0 < numCharCountHead.Value)
{
rbtnLeftHead.Checked = true;
grbTextAlignmentHead.Enabled = false;
numCharSpaceHead.Enabled = false;
decimal characterSpace = LayoutCommon.EqualityChars(
numWidth.Value,
numCharCountHead.Value,
txtHeaderText.Font);
if (characterSpace < numCharSpaceHead.Minimum)
{
characterSpace = numCharSpaceHead.Minimum;
}
else if (numCharSpaceHead.Maximum < characterSpace)
{
characterSpace = numCharSpaceHead.Maximum;
}
numCharSpaceHead.Value = LayoutCommon.Truncate(characterSpace, numCharSpaceHead.DecimalPlaces);
}
else
{
grbTextAlignmentHead.Enabled = true;
if (!rbtnEvennessHead.Checked)
{
numCharSpaceHead.Enabled = true;
}
}
}
///
/// 设置文本字体。
///
/// 指定的对象
/// 提供的事件数据
private void txtPreview_FontChanged(object sender, System.EventArgs e)
{
if (_isInit)
{
return;
}
if (0 < numCharCount.Value)
{
decimal characterSpace = LayoutCommon.EqualityChars(
numWidth.Value,
numCharCount.Value,
txtPreview.Font);
if (characterSpace < numCharSpace.Minimum)
{
characterSpace = numCharSpace.Minimum;
}
else if (numCharSpace.Maximum < characterSpace)
{
characterSpace = numCharSpace.Maximum;
}
numCharSpace.Value = LayoutCommon.Truncate(characterSpace,
numCharSpace.DecimalPlaces);
}
}
///
/// 设置表头字体。
///
/// 指定的对象
/// 提供的事件数据
private void txtHeaderText_FontChanged(object sender, System.EventArgs e)
{
if (_isInit)
{
return;
}
if (0 < numCharCountHead.Value)
{
decimal characterSpace = LayoutCommon.EqualityChars(
numWidth.Value,
numCharCountHead.Value,
txtHeaderText.Font);
if (characterSpace < numCharSpaceHead.Minimum)
{
characterSpace = numCharSpaceHead.Minimum;
}
else if (numCharSpaceHead.Maximum < characterSpace)
{
characterSpace = numCharSpaceHead.Maximum;
}
numCharSpaceHead.Value = LayoutCommon.Truncate(characterSpace,
numCharSpaceHead.DecimalPlaces);
}
}
///
/// 设置文本字体。
///
/// 指定的对象
/// 提供的事件数据
private void btnFont_Click(object sender, System.EventArgs e)
{
fontDialog.Font = TextFont;
if (fontDialog.ShowDialog() == DialogResult.OK)
{
TextFont = fontDialog.Font;
}
}
///
/// 设置表头文本字体。
///
/// 指定的对象
/// 提供的事件数据
private void btnFontHead_Click(object sender, System.EventArgs e)
{
fontDialog.Font = TextFontHead;
if (fontDialog.ShowDialog() == DialogResult.OK)
{
TextFontHead = fontDialog.Font;
}
}
#endregion 事件处理
#region 私有函数/方法
///
/// 获取系统字体
///
private void InitializeDDL()
{
_sysFormat = LayoutCommon.SYSFormat.Copy();
_sysDefaultValue = LayoutCommon.SYSDefaultValue.Copy();
ddlDefaultValue.DisplayMember = "InitialValueName";
ddlDefaultValue.ValueMember = "InitialValueName";
ddlDefaultValue.DataSource = _sysDefaultValue;
ddlTextFormat.DisplayMember = "FormatName";
ddlTextFormat.ValueMember = "FormatID";
ddlTextFormat.DataSource = _sysFormat;
}
///
/// 图片列的时候,余白和固定比例可用
///
///
///
private void chkPic_CheckedChanged(object sender, System.EventArgs e)
{
chkM.Enabled = chkPic.Checked;
chkFixedRatio.Enabled = chkPic.Checked;
}
#endregion 函数
private void ckbWrapHead_CheckedChanged(object sender, System.EventArgs e)
{
}
}
}