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) { } } }