#region
|
|
using System.Drawing;
|
using System.Windows.Forms;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using CSFrameworkV5.Interfaces.InterfaceModels;
|
using DevExpress.Utils;
|
using DevExpress.XtraEditors;
|
using DevExpress.XtraEditors.Controls;
|
using DevExpress.XtraEditors.Repository;
|
using DevExpress.XtraGrid;
|
using DevExpress.XtraGrid.Columns;
|
using DevExpress.XtraGrid.Views.Grid;
|
using DevExpress.XtraTreeList;
|
using CustomDrawEventArgs = DevExpress.XtraGrid.Views.Base.CustomDrawEventArgs;
|
|
#endregion
|
|
///*************************************************************************/
|
///*
|
///* 文件名 :DevStyle.cs
|
///* 程序说明 : 用于设置Dev控件的样式
|
///* 原创作者 :www.csframework.com
|
///*
|
///* Copyright 2006-2021 C/S框架网 www.csframework.com
|
///*
|
///**************************************************************************/
|
///
|
namespace CSFrameworkV5.Library.CommonClass
|
{
|
/// <summary>
|
/// 设置GridControl,GridView控件显示样式.
|
/// </summary>
|
public class DevStyle
|
{
|
private const int DEF_ROW_HEIGHT = 25;
|
private const int DEF_COLUMN_HEADER_HEIGHT = 25;
|
|
private const string DEF_EMPTY_DATA_PROMPT =
|
"* 没有查询到数据!\r\n* no data found!";
|
|
private const string DEF_EMPTY_DATA_FONT = "微软雅黑";
|
private const string DEF_LABEL_PREFIX = "lbl";
|
|
/// <summary>
|
/// 在表格导航按钮内增加一个自定义按钮
|
/// </summary>
|
/// <param name="grid">表格控件</param>
|
/// <param name="buttonID">按钮编号</param>
|
/// <param name="buttonImage">按钮图片</param>
|
/// <param name="buttonHint">按钮提示消息</param>
|
public static void AddCustomButton(GridControl grid, int buttonID,
|
Image buttonImage, string buttonHint)
|
{
|
grid.BeginInit();
|
var list = grid.EmbeddedNavigator.Buttons.ImageList as ImageList;
|
list.Images.Add(buttonImage);
|
var btn = new NavigatorCustomButton(buttonID, buttonHint);
|
grid.EmbeddedNavigator.Buttons.CustomButtons
|
.AddRange(new[] { btn });
|
grid.EndInit();
|
}
|
|
/// <summary>
|
/// 应用表格自定义样式
|
/// </summary>
|
/// <param name="gv">GridView</param>
|
/// <param name="tableName">资料表名</param>
|
public static void ApplyCustomGrid(GridView gv, string tableName)
|
{
|
var configs =
|
new AdvancedFormConfig().GetFormConfig(Loginer.CurrentUser.DBID,
|
tableName,
|
Loginer.CurrentUser.Account);
|
var current = FormConfig.GetCurrent(configs);
|
|
if (current == null) return;
|
|
string fieldName;
|
foreach (GridColumn c in gv.Columns)
|
{
|
fieldName = c.FieldName;
|
|
var config = current.GetFieldConfig(fieldName);
|
|
if (config != null &&
|
!string.IsNullOrEmpty(config.CaptionCustom))
|
{
|
c.Visible = config.Visible;
|
c.Caption = config.CaptionCustom;
|
c.Width = config.Width > 0 ? config.Width : c.Width;
|
c.OptionsColumn.ReadOnly = config.ReadOnly;
|
|
if (config.Point > 0)
|
{
|
c.DisplayFormat.FormatType = FormatType.Custom;
|
c.DisplayFormat.FormatString =
|
"N" + config.Point.ToStringEx();
|
}
|
}
|
}
|
}
|
|
/// <summary>
|
/// 应用标签标题自定义样式
|
/// </summary>
|
/// <param name="pnl">PanelControl组件</param>
|
/// <param name="tableName">资料表名</param>
|
public static void ApplyCustomLabel(PanelControl pnl, string tableName)
|
{
|
var configs =
|
new AdvancedFormConfig().GetFormConfig(Loginer.CurrentUser.DBID,
|
tableName,
|
Loginer.CurrentUser.Account);
|
var current = FormConfig.GetCurrent(configs);
|
|
if (current == null) return;
|
|
try
|
{
|
pnl.SuspendLayout();
|
|
string fieldName;
|
foreach (Control c in pnl.Controls)
|
if (c is LabelControl &&
|
c.Name.Substring(0, 3) == DEF_LABEL_PREFIX)
|
{
|
fieldName = c.Name.Substring(3, c.Name.Length - 3);
|
|
var config = current.GetFieldConfig(fieldName);
|
|
if (config != null &&
|
!string.IsNullOrEmpty(config.CaptionCustom))
|
{
|
c.Text = config.CaptionCustom;
|
c.Refresh();
|
}
|
}
|
}
|
finally
|
{
|
pnl.ResumeLayout();
|
}
|
}
|
|
/// <summary>
|
/// 给表格绘制背景字体
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private static void GridView_CustomDrawEmptyForeground(object sender,
|
CustomDrawEventArgs e)
|
{
|
if ((sender as GridView).RowCount == 0)
|
{
|
var width = 300;
|
var height = 60;
|
var font_size = 18;
|
var str = DEF_EMPTY_DATA_PROMPT;
|
|
using (var f = new Font(DEF_EMPTY_DATA_FONT, font_size,
|
FontStyle.Bold))
|
{
|
var r = new Rectangle((e.Bounds.Width - width) / 2,
|
(e.Bounds.Height - height) / 2, width, height);
|
e.Graphics.DrawString(str, f, Brushes.LightBlue, r);
|
e.Handled = true;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 批量设置表格内所有RepositoryItemCheckEdit属性
|
/// </summary>
|
/// <param name="columns">RepositoryItemCheckEdit所在的列数组</param>
|
public static void SetCheckEditColumnConfig(params GridColumn[] columns)
|
{
|
foreach (var col in columns)
|
if (col.ColumnEdit != null)
|
SetCheckEditLayout((RepositoryItemCheckEdit)col.ColumnEdit);
|
}
|
|
/// <summary>
|
/// 设置RepositoryItemCheckEdit组件的绑定样式.
|
/// </summary>
|
/// <param name="propCheckEdit">RepositoryItemCheckEdit</param>
|
private static void SetCheckEditLayout(
|
RepositoryItemCheckEdit propCheckEdit)
|
{
|
if (propCheckEdit == null) return;
|
|
propCheckEdit.ValueChecked = "Y"; //当值为Y勾选
|
propCheckEdit.ValueGrayed = ""; //当值为空变为灰色
|
propCheckEdit.ValueUnchecked = "N"; //当值为N取消勾选
|
propCheckEdit.NullStyle = StyleIndeterminate.Unchecked;
|
}
|
|
/// <summary>
|
/// 批量设置CheckEdit的绑定样式.
|
/// </summary>
|
/// <param name="checkEdits">CheckEdit数组</param>
|
public static void SetCheckEditLayout(params CheckEdit[] checkEdits)
|
{
|
foreach (var edit in checkEdits)
|
SetCheckEditLayout(edit.Properties);
|
}
|
|
/// <summary>
|
/// 设置栏位的过虑条件
|
/// </summary>
|
/// <param name="col">GridColumn</param>
|
/// <param name="filter">filter:过滤条件</param>
|
public static void SetDetailColumnFilter(GridColumn col, string filter)
|
{
|
var finfo = new ColumnFilterInfo(filter, "");
|
col.FilterInfo = finfo;
|
}
|
|
/// <summary>
|
/// 设置明细表格的显示样式
|
/// </summary>
|
/// <param name="gridView">明细表格</param>
|
/// <param name="useOddColor">奇偶行高亮显示</param>
|
public static void SetDetailGridViewLayout(GridView gridView,
|
bool useOddColor)
|
{
|
SetDetailGridViewLayout(gridView);
|
|
if (!useOddColor)
|
{
|
gridView.GridControl.BeginInit();
|
gridView.OptionsView.EnableAppearanceOddRow = false;
|
gridView.Appearance.OddRow.Options.UseBackColor = false;
|
gridView.Appearance.OddRow.BackColor = Color.Empty;
|
gridView.GridControl.EndInit();
|
}
|
}
|
|
/// <summary>
|
/// 设置明细表格布局. OptionsView,OptionsCustomization设置
|
/// </summary>
|
public static void SetDetailGridViewLayout(GridView gridView)
|
{
|
SetGridReadColumnStyle(gridView);
|
|
gridView.GridControl.BeginInit();
|
|
gridView.OptionsView.RowAutoHeight = false;
|
gridView.RowHeight = DEF_ROW_HEIGHT;
|
gridView.ColumnPanelRowHeight = DEF_COLUMN_HEADER_HEIGHT;
|
|
gridView.OptionsNavigation.EnterMoveNextColumn =
|
false; //注意: 禁止Grid管理Enter键
|
gridView.OptionsView.ShowGroupPanel = false;
|
gridView.OptionsView.ColumnAutoWidth = false;
|
gridView.OptionsView.NewItemRowPosition = NewItemRowPosition.None;
|
gridView.OptionsView.EnableAppearanceOddRow = true;
|
//gridView.Appearance.OddRow.BackColor = System.Drawing.Color.FromName(SystemConfig.CurrentConfig.GridOddColorName);
|
//gridView.Appearance.OddRow.Options.UseBackColor = SystemConfig.CurrentConfig.GridAllowOddColor;
|
gridView.OptionsCustomization.AllowFilter = false;
|
gridView.OptionsCustomization.AllowSort = false;
|
gridView.OptionsSelection.EnableAppearanceFocusedCell = true;
|
foreach (GridColumn col in gridView.Columns)
|
if (col.OptionsColumn.AllowEdit == false ||
|
col.OptionsColumn.ReadOnly)
|
col.AppearanceCell.BackColor = Color.Silver;
|
|
gridView.GridControl.EndInit();
|
|
gridView.CustomDrawEmptyForeground +=
|
GridView_CustomDrawEmptyForeground;
|
}
|
|
/// <summary>
|
/// 设置ButtonEdit的读写状态
|
/// </summary>
|
/// <param name="edit">ButtonEdit组件</param>
|
/// <param name="access">设置ReadOnly属性是否可访问</param>
|
public static void SetEditorStyle(ButtonEdit edit, bool access)
|
{
|
edit.Properties.Buttons[0].Enabled = access;
|
edit.Properties.ReadOnly = !access;
|
}
|
|
/// <summary>
|
/// 设置输入控件的读写状态,可读为白底黑字,不可读为灰底黑字
|
/// </summary>
|
/// <param name="edit">输入控件</param>
|
/// <param name="access">设置ReadOnly属性是否可访问</param>
|
public static void SetEditorStyle(BaseEdit edit, bool access)
|
{
|
edit.Properties.ReadOnly = !access;
|
|
if (access)
|
{
|
if (!(edit is CheckEdit))
|
{
|
edit.BackColor = Color.White;
|
edit.ForeColor = Color.Black;
|
}
|
}
|
else
|
{
|
if (!(edit is CheckEdit))
|
{
|
edit.BackColor = Color.AliceBlue;
|
edit.ForeColor = Color.Black;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 设置表格控件的布局. 比如按钮设置.
|
/// </summary>
|
public static void SetGridControlLayout(GridControl grid,
|
bool allowEdit)
|
{
|
var btns = grid.EmbeddedNavigator.Buttons;
|
|
grid.BeginInit();
|
grid.EmbeddedNavigator.ButtonStyle = BorderStyles.Office2003;
|
grid.UseEmbeddedNavigator = true;
|
btns.Append.Visible = false;
|
btns.CancelEdit.Visible = false;
|
btns.Edit.Visible = false;
|
btns.Remove.Visible = false;
|
btns.EndEdit.Visible = false;
|
btns.NextPage.Visible = false;
|
btns.PrevPage.Visible = false;
|
|
((GridView)grid.Views[0]).OptionsBehavior.Editable =
|
allowEdit; //允许编辑状态
|
|
if (allowEdit) //增加三个自定义按钮(ADD,INSERT,DELETE)
|
{
|
var img = new ImageList();
|
img.Images.Add(Globals.LoadImage("16_Add.ico"));
|
img.Images.Add(Globals.LoadImage("16_Insert.ico"));
|
img.Images.Add(Globals.LoadImage("16_Delete.ico"));
|
grid.EmbeddedNavigator.Buttons.ImageList = img;
|
|
btns.CustomButtons.Clear();
|
var btnDtlAdd =
|
new NavigatorCustomButton(DetailButtons.Add, "新增记录");
|
var btnDtlInsert =
|
new NavigatorCustomButton(DetailButtons.Insert, "插入记录");
|
var btnDtlDelete =
|
new NavigatorCustomButton(DetailButtons.Delete, "删除记录");
|
btns.CustomButtons.AddRange(new[]
|
{ btnDtlAdd, btnDtlInsert, btnDtlDelete });
|
}
|
|
grid.EndInit();
|
}
|
|
/// <summary>
|
/// 设置表格控件的布局. 比如按钮设置.
|
/// </summary>
|
public static void SetGridControlLayout(GridControl grid,
|
bool allowEdit, bool add, bool insert, bool delete)
|
{
|
var btns = grid.EmbeddedNavigator.Buttons;
|
|
grid.BeginInit();
|
grid.EmbeddedNavigator.ButtonStyle = BorderStyles.Office2003;
|
grid.UseEmbeddedNavigator = true;
|
btns.Append.Visible = false;
|
btns.CancelEdit.Visible = false;
|
btns.Edit.Visible = false;
|
btns.Remove.Visible = false;
|
btns.EndEdit.Visible = false;
|
btns.NextPage.Visible = false;
|
btns.PrevPage.Visible = false;
|
|
((GridView)grid.Views[0]).OptionsBehavior.Editable =
|
allowEdit; //允许编辑状态
|
|
if (allowEdit) //增加三个自定义按钮(ADD,INSERT,DELETE)
|
{
|
var img = new ImageList();
|
img.Images.Add(Globals.LoadImage("16_Add.ico"));
|
img.Images.Add(Globals.LoadImage("16_Insert.ico"));
|
img.Images.Add(Globals.LoadImage("16_Delete.ico"));
|
grid.EmbeddedNavigator.Buttons.ImageList = img;
|
|
btns.CustomButtons.Clear();
|
if (add)
|
{
|
var btnDtlAdd =
|
new NavigatorCustomButton(DetailButtons.Add, "新增记录");
|
btns.CustomButtons.AddRange(new[] { btnDtlAdd });
|
}
|
|
if (insert)
|
{
|
var btnDtlInsert =
|
new NavigatorCustomButton(DetailButtons.Insert, "插入记录");
|
btns.CustomButtons.AddRange(new[] { btnDtlInsert });
|
}
|
|
if (delete)
|
{
|
var btnDtlDelete =
|
new NavigatorCustomButton(DetailButtons.Delete, "删除记录");
|
btns.CustomButtons.AddRange(new[] { btnDtlDelete });
|
}
|
}
|
|
grid.EndInit();
|
}
|
|
/// <summary>
|
/// 设置所有只读栏位的显示样式
|
/// </summary>
|
/// <param name="view"></param>
|
public static void SetGridReadColumnStyle(GridView view)
|
{
|
foreach (GridColumn col in view.Columns)
|
{
|
if (col.OptionsColumn.AllowEdit) continue;
|
|
//col.AppearanceCell.BackColor = Color.FromName(SystemConfig.CurrentConfig.GridReadOnlyColorName);
|
col.AppearanceCell.ForeColor = Color.FromName("Black");
|
col.AppearanceCell.Options.UseBackColor = true;
|
col.AppearanceCell.Options.UseForeColor = true;
|
}
|
}
|
|
/// <summary>
|
/// 设置Column.LookupEdit(属性为ColumnEdit)控件参数
|
/// </summary>
|
/// <param name="propLookUpEdit">RepositoryItemLookUpEdit组件</param>
|
public static void SetLookupEditLayout(
|
RepositoryItemLookUpEdit propLookUpEdit)
|
{
|
if (propLookUpEdit == null) return;
|
|
propLookUpEdit.ImmediatePopup = false;
|
propLookUpEdit.ShowHeader = true;
|
propLookUpEdit.ShowPopupShadow = true;
|
propLookUpEdit.NullText = "";
|
propLookUpEdit.TextEditStyle = TextEditStyles.Standard;
|
}
|
|
/// <summary>
|
/// 设置明细表格布局. OptionsView,OptionsCustomization设置
|
/// </summary>
|
/// <param name="gridView">GridView</param>
|
/// <param name="editable">是否可编辑,控制OptionsBehavior.Editable属性</param>
|
public static void SetSummaryGridViewLayout(GridView gridView,
|
bool editable = false)
|
{
|
gridView.GridControl.BeginInit();
|
gridView.PaintStyleName = "Skin";
|
gridView.OptionsBehavior.Editable = editable;
|
gridView.OptionsSelection.EnableAppearanceFocusedRow = true;
|
gridView.OptionsSelection.EnableAppearanceFocusedCell = false;
|
gridView.OptionsView.ShowFooter = true;
|
gridView.OptionsView.ShowGroupPanel = true;
|
gridView.OptionsView.ColumnAutoWidth = false;
|
gridView.OptionsView.RowAutoHeight = false;
|
|
gridView.ColumnPanelRowHeight = DEF_COLUMN_HEADER_HEIGHT;
|
gridView.RowHeight = DEF_ROW_HEIGHT;
|
|
//gridView.Appearance.OddRow.Options.UseBackColor = SystemConfig.CurrentConfig.GridAllowOddColor;
|
//gridView.Appearance.OddRow.BackColor = System.Drawing.Color.FromName(SystemConfig.CurrentConfig.GridOddColorName);
|
gridView.GridControl.EndInit();
|
|
gridView.CustomDrawEmptyForeground +=
|
GridView_CustomDrawEmptyForeground;
|
}
|
|
/// <summary>
|
/// 设置TreeList组件为只读,用于选择资料
|
/// </summary>
|
/// <param name="tree">TreeList组件</param>
|
public static void SetTreeListSelectStyle(TreeList tree)
|
{
|
tree.Appearance.Empty.BackColor = Color.WhiteSmoke;
|
tree.Appearance.Empty.Options.UseBackColor = true;
|
tree.Appearance.Row.BackColor = Color.WhiteSmoke;
|
tree.Appearance.Row.Options.UseBackColor = true;
|
//Appearance.HideSelectionRow
|
tree.Appearance.HideSelectionRow.BackColor =
|
Color.FromArgb(255, 224, 192);
|
tree.Appearance.HideSelectionRow.ForeColor =
|
Color.FromArgb(192, 0, 0);
|
tree.Appearance.HideSelectionRow.Options.UseBackColor = true;
|
tree.Appearance.HideSelectionRow.Options.UseForeColor = true;
|
//Appearance.SelectedRow
|
tree.Appearance.SelectedRow.BackColor =
|
Color.FromArgb(255, 224, 192);
|
tree.Appearance.SelectedRow.ForeColor = Color.Red;
|
tree.Appearance.SelectedRow.Options.UseBackColor = true;
|
tree.Appearance.SelectedRow.Options.UseForeColor = true;
|
//Options
|
tree.OptionsBehavior.Editable = false;
|
tree.OptionsSelection.EnableAppearanceFocusedCell = false;
|
tree.OptionsView.ShowHorzLines = false;
|
tree.OptionsView.ShowVertLines = false;
|
tree.TreeLineStyle = LineStyle.Percent50;
|
tree.OptionsView.ShowRoot = true;
|
tree.LookAndFeel.UseDefaultLookAndFeel = false;
|
tree.LookAndFeel.UseWindowsXPTheme = true;
|
}
|
}
|
}
|