using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace Dongke.WinForm.Controls.InvoiceLayout
{
internal partial class GridItemSetting : Setting
{
#region 成员变量
private bool _isTransparent = false; // 背景是否透明
private Color _fillColor = Color.Black; // 背景颜色
private bool _isColChanged = false;
#endregion 成员变量
#region 属性
///
/// 列属性是否改变
///
public bool ColumnsChanged
{
get
{
return _isColChanged;
}
}
///
/// X(mm)
///
public float ShapeLocationX
{
get
{
return System.Convert.ToSingle(numLoctionX.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numLoctionX.Minimum)
{
d = numLoctionX.Minimum;
}
else if (numLoctionX.Maximum < d)
{
d = numLoctionX.Maximum;
}
numLoctionX.Value = d;
}
}
///
/// Y(mm)
///
public float ShapeLocationY
{
get
{
return System.Convert.ToSingle(numLoctionY.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numLoctionY.Minimum)
{
d = numLoctionY.Minimum;
}
else if (numLoctionY.Maximum < d)
{
d = numLoctionY.Maximum;
}
numLoctionY.Value = d;
}
}
///
/// 宽(mm)
///
public float ShapeWidth
{
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;
}
}
///
/// 高(mm)
///
public float ShapeHeight
{
get
{
return System.Convert.ToSingle(numHeight.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numHeight.Minimum)
{
d = numHeight.Minimum;
}
else if (numHeight.Maximum < d)
{
d = numHeight.Maximum;
}
numHeight.Value = d;
}
}
///
/// 列头行高
///
public float HeadRowsHeight
{
get
{
return System.Convert.ToSingle(numHeadRowsHeight.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numHeadRowsHeight.Minimum)
{
d = numHeadRowsHeight.Minimum;
}
else if (numHeadRowsHeight.Maximum < d)
{
d = numHeadRowsHeight.Maximum;
}
numHeadRowsHeight.Value = d;
}
}
///
/// 线的颜色
///
public Color LineColor
{
get
{
return lblLineColor.BackColor;
}
set
{
lblLineColor.BackColor = value;
if (lblLineColor.BackColor != Color.White)
{
lblLineBColor.BackColor = lblLineColor.BackColor;
}
else
{
lblLineBColor.BackColor = Color.Black;
}
}
}
///
/// 背景颜色
///
public Color FillColor
{
get
{
return _fillColor;
}
set
{
_fillColor = value;
SetFillColor();
}
}
///
/// 线宽
///
public float LineWidth
{
get
{
return System.Convert.ToSingle(numLineWidth.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numLineWidth.Minimum)
{
d = numLineWidth.Minimum;
}
else if (numLineWidth.Maximum < d)
{
d = numLineWidth.Maximum;
}
numLineWidth.Value = d;
}
}
///
/// 背景是否透明
///
public bool Transparent
{
get
{
return _isTransparent;
}
set
{
_isTransparent = value;
SetFillColor();
}
}
///
/// 是否显示列标题
///
public bool TitleVisible
{
get
{
return cbxTitleVisible.Checked;
}
set
{
cbxTitleVisible.Checked = value;
}
}
///
/// 是否每页都显示列标题
///
public bool AlwaysTitleVisible
{
get
{
return cbxAlwaysTitleVisible.Checked;
}
set
{
cbxAlwaysTitleVisible.Checked = value;
}
}
///
/// 行高
///
public float RowsHeight
{
get
{
return System.Convert.ToSingle(numRowsHeight.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numRowsHeight.Minimum)
{
d = numRowsHeight.Minimum;
}
else if (numRowsHeight.Maximum < d)
{
d = numRowsHeight.Maximum;
}
numRowsHeight.Value = d;
}
}
///
/// 一页显示的行数
///
public int RowsCount
{
get
{
return System.Convert.ToInt32(numRowsCount.Value);
}
set
{
decimal d = System.Convert.ToDecimal(value);
if (d < numRowsCount.Minimum)
{
d = numRowsCount.Minimum;
}
else if (numRowsCount.Maximum < d)
{
d = numRowsCount.Maximum;
}
numRowsCount.Value = d;
}
}
public GridItemColumnCollection Columns
{
get;
set;
}
#endregion 属性
#region 构造函数
///
/// 构造函数
///
public GridItemSetting()
{
InitializeComponent();
}
#endregion 构造函数
#region 函数
///
/// 设置背景颜色
///
private void SetFillColor()
{
if (_isTransparent)
{
lblFillColor.BackColor = Color.Empty;
lblFillBColor.BackColor = Color.Empty;
}
else
{
lblFillColor.BackColor = _fillColor;
if (_fillColor != Color.White)
{
lblFillBColor.BackColor = _fillColor;
}
else
{
lblFillBColor.BackColor = Color.Black;
}
}
}
#endregion 函数
#region 事件处理
///
/// Shown
///
/// 指定的对象
/// 提供的事件数据
private void GridItemSetting_Shown(object sender, System.EventArgs e)
{
this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember;
this.lisCols.DataSource = Columns;
}
///
/// 设置线的颜色
///
/// 指定的对象
/// 提供的事件数据
private void btnSelectLineColor_Click(object sender, System.EventArgs e)
{
colorDialog.Color = (lblLineColor.BackColor == Color.Transparent) ? Color.Empty : lblLineColor.BackColor;
if (colorDialog.ShowDialog() == DialogResult.OK)
{
LineColor = colorDialog.Color;
}
}
///
/// 设置背景颜色
///
/// 指定的对象
/// 提供的事件数据
private void btnSelectFillColor_Click(object sender, System.EventArgs e)
{
colorDialog.Color = _isTransparent ? Color.Empty : _fillColor;
if (colorDialog.ShowDialog() == DialogResult.OK)
{
_fillColor = colorDialog.Color;
Transparent = false;
}
}
///
/// 设置线段是否透明
///
/// 指定的对象
/// 提供的事件数据
private void btnSelectLineTransparent_Click(object sender, System.EventArgs e)
{
lblLineColor.BackColor = Color.Transparent;
lblLineBColor.BackColor = Color.Transparent;
}
///
/// 设置背景是否透明
///
/// 指定的对象
/// 提供的事件数据
private void btnFillTransparent_Click(object sender, System.EventArgs e)
{
Transparent = true;
}
#region 表格列编辑
///
/// 上移列
///
///
///
private void btnColUp_Click(object sender, System.EventArgs e)
{
if (lisCols.SelectedIndex < 1)
{
return;
}
int index = lisCols.SelectedIndex - 1;
GridItemColumn gic = (lisCols.SelectedItem as GridItemColumn);
gic.DisplayIndexInternal = index;
gic = (lisCols.Items[index] as GridItemColumn);
gic.DisplayIndexInternal = lisCols.SelectedIndex;
Columns.UpdateColumnsOrder();
lisCols.DataSource = null;
this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember;
this.lisCols.DataSource = Columns;
lisCols.SelectedIndex = index;
_isColChanged = true;
}
///
/// 下移列
///
///
///
private void btnColDown_Click(object sender, System.EventArgs e)
{
if (lisCols.SelectedIndex < 0 || lisCols.SelectedIndex == Columns.Count - 1)
{
return;
}
int index = lisCols.SelectedIndex + 1;
GridItemColumn gic = (lisCols.SelectedItem as GridItemColumn);
gic.DisplayIndexInternal = index;
gic = (lisCols.Items[index] as GridItemColumn);
gic.DisplayIndexInternal = lisCols.SelectedIndex;
Columns.UpdateColumnsOrder();
lisCols.DataSource = null;
this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember;
this.lisCols.DataSource = Columns;
lisCols.SelectedIndex = index;
_isColChanged = true;
}
///
/// 编辑列
///
///
///
private void btnColEdit_Click(object sender, System.EventArgs e)
{
if (lisCols.SelectedIndex < 0)
{
return;
}
int index = lisCols.SelectedIndex;
GridItemColumn gic = (lisCols.SelectedItem as GridItemColumn);
using (GridItemColumnSetting itemPropertySetting = new GridItemColumnSetting())
{
itemPropertySetting.IsNew = false;
itemPropertySetting.TextWidth = gic.Width;
itemPropertySetting.Culture = gic.Culture;
itemPropertySetting.LineSpaceHead = gic.LineSpaceHead;
itemPropertySetting.CharacterSpaceHead = gic.CharacterSpaceHead;
itemPropertySetting.CharacterCountHead = gic.CharacterCountHead;
itemPropertySetting.TextAlignHead = gic.TextAlignHead;
itemPropertySetting.TextAlignVerticalHead = gic.TextAlignVerticalHead;
itemPropertySetting.TextColorHead = gic.TextColorHead;
itemPropertySetting.TextFontHead = gic.FontHead;
itemPropertySetting.WrapHead = gic.WrapHead;
itemPropertySetting.LineSpace = gic.LineSpace;
itemPropertySetting.CharacterSpace = gic.CharacterSpace;
itemPropertySetting.CharacterCount = gic.CharacterCount;
itemPropertySetting.TextAlign = gic.TextAlign;
itemPropertySetting.TextAlignVertical = gic.TextAlignVertical;
itemPropertySetting.TextPreview = gic.DisplayValue;
itemPropertySetting.TextColor = gic.TextColor;
itemPropertySetting.ItemStyle = gic.ItemStyle;
itemPropertySetting.ColName = gic.Name;
itemPropertySetting.HeaderText = gic.HeaderText;
itemPropertySetting.TextFormat = gic.Format;
itemPropertySetting.TextFont = gic.Font;
itemPropertySetting.Wrap = gic.Wrap;
itemPropertySetting.DefaultValue = gic.DefaultValue;
itemPropertySetting.IsDataBinding = gic.IsDataBinding;
itemPropertySetting.chkFixedRatio.Checked = gic.FixedRatio;
itemPropertySetting.chkM.Checked = gic.PicMargin;
itemPropertySetting.chkPic.Checked = gic.PicColumn;
itemPropertySetting.chkFixedRatio.Enabled = gic.PicColumn;
itemPropertySetting.chkM.Enabled = gic.PicColumn;
DialogResult result = itemPropertySetting.ShowDialog();
if (result == DialogResult.OK)
{
gic.Width = itemPropertySetting.TextWidth;
gic.LineSpaceHead = itemPropertySetting.LineSpaceHead;
gic.CharacterSpaceHead = itemPropertySetting.CharacterSpaceHead;
gic.CharacterCountHead = itemPropertySetting.CharacterCountHead;
gic.TextAlignHead = itemPropertySetting.TextAlignHead;
gic.TextAlignVerticalHead = itemPropertySetting.TextAlignVerticalHead;
gic.TextColorHead = itemPropertySetting.TextColorHead;
gic.FontHead = itemPropertySetting.TextFontHead;
gic.WrapHead = itemPropertySetting.WrapHead;
gic.LineSpace = itemPropertySetting.LineSpace;
gic.CharacterSpace = itemPropertySetting.CharacterSpace;
gic.CharacterCount = itemPropertySetting.CharacterCount;
gic.Font = itemPropertySetting.TextFont;
gic.Wrap = itemPropertySetting.Wrap;
gic.TextAlign = itemPropertySetting.TextAlign;
gic.TextAlignVertical = itemPropertySetting.TextAlignVertical;
gic.TextColor = itemPropertySetting.TextColor;
gic.DisplayValue = itemPropertySetting.TextPreview;
gic.ItemStyle = itemPropertySetting.ItemStyle;
gic.Name = itemPropertySetting.ColName;
gic.HeaderText = itemPropertySetting.HeaderText;
gic.Format = itemPropertySetting.TextFormat;
gic.Culture = itemPropertySetting.Culture;
gic.DefaultValue = itemPropertySetting.DefaultValue;
gic.FixedRatio = itemPropertySetting.chkFixedRatio.Checked;
gic.PicMargin = itemPropertySetting.chkM.Checked;
gic.PicColumn = itemPropertySetting.chkPic.Checked;
lisCols.DataSource = null;
this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember;
this.lisCols.DataSource = Columns;
lisCols.SelectedIndex = index;
_isColChanged = true;
}
}
}
///
/// 添加列
///
///
///
private void btnColAdd_Click(object sender, System.EventArgs e)
{
// 生成列名
string colName = Columns.GeNewColumnName();
Columns.Add(colName, colName);
lisCols.DataSource = null;
this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember;
this.lisCols.DataSource = Columns;
lisCols.SelectedIndex = lisCols.Items.Count - 1;
_isColChanged = true;
}
///
/// 移除列
///
///
///
private void btnColRemove_Click(object sender, System.EventArgs e)
{
if (lisCols.SelectedIndex < 0)
{
return;
}
int index = lisCols.SelectedIndex;
lisCols.SelectedIndex = (index < Columns.Count - 1) ? index : index - 1;
Columns.RemoveAtInternal(index, false);
lisCols.DataSource = null;
this.lisCols.DisplayMember = GridItemColumnCollection.DisplayMember;
this.lisCols.DataSource = Columns;
lisCols.SelectedIndex = (index < Columns.Count) ? index : index - 1;
_isColChanged = true;
}
#endregion 表格列编辑
private void cbxTitleVisible_CheckedChanged(object sender, System.EventArgs e)
{
cbxAlwaysTitleVisible.Enabled = cbxTitleVisible.Checked;
}
#endregion 事件处理
}
}