You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/UCDraw/SigmaDrawerWellElement/FrmTrackCommonDataSetData.cs

528 lines
20 KiB
C#

1 month ago
using GeoSigma.SigmaDrawerStyle;
using SigmaDrawerElement;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing;
using System.Drawing.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using WorkData;
using WorkData.Entity;
namespace GeoSigma.SigmaDrawerElement
{
public partial class FrmTrackCommonDataSetData : Form
{
public DataItems m_trackDataItems = new DataItems();
class CTableInfo
{
public string chsTable { get; set; }
public string engTable { get; set; }
}
List<CTableInfo> m_tablesList = new List<CTableInfo>();
class CColumnInfo
{
public string chsName { get; set; }
public string engName { get; set; }
}
BindingList<CColumnInfo> m_columnInfoList = new BindingList<CColumnInfo>();
class CShowMode
{
public string chsName { get; set; }
public string engName { get; set; }
}
List<CShowMode> m_showModeList = new List<CShowMode>();
class CDepthMode
{
public string chsName { get; set; }
public string engName { get; set; }
}
BindingList<CDepthMode> m_DepthModeList = new BindingList<CDepthMode>();
class CSymbolShowAreaType
{
public string chsName { get; set; }
public string engName { get; set; }
}
List<CSymbolShowAreaType> m_SymbolAreaList = new List<CSymbolShowAreaType>();
class CColorShowAreaType
{
public string chsName { get; set; }
public string engName { get; set; }
}
List<CColorShowAreaType> m_ColorAreaList = new List<CColorShowAreaType>();
public class CFontInfo
{
public string fontName { get; set; }
public float size { get; set; }
public System.Drawing.Color color { get; set; }
public string Display => $"{fontName},{size:F1}pt,{color.Name}";
}
public class CDataItemProp : INotifyPropertyChanged
{
private bool _bSel;
private string _name;
private string _showContent;
private string _symbolRect;
private string _width;
private CFontInfo _fontInfo;
private int sn = 0;
//private string _colorRect;
public bool Sel
{
get => _bSel;
set { _bSel = value; OnPropertyChanged(); }
}
public string Name
{
get => _name;
set { _name = value;OnPropertyChanged(); }
}
public int Sn
{
get => sn;
set { sn = value; OnPropertyChanged(); }
}
public string ShowContent
{
get => _showContent;
set { _showContent = value; OnPropertyChanged(); }
}
public string SymbolRect
{
get => _symbolRect;
set { _symbolRect = value; OnPropertyChanged(); }
}
//public string ColorRect
//{
// get => _colorRect;
// set { _colorRect = value; OnPropertyChanged(); }
//}
public string width
{
get => _width;
set { _width = value; OnPropertyChanged(); }
}
public CFontInfo fontInfo
{
get => _fontInfo;
set { _fontInfo = value; OnPropertyChanged(); }
}
public string FontDisplay => fontInfo?.Display ?? "未设置";
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
BindingList<CDataItemProp> m_dataList = new BindingList<CDataItemProp>();
public FrmTrackCommonDataSetData(DataItems tDataItems)
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = false;
DataGridViewCheckBoxColumn colSelect = new DataGridViewCheckBoxColumn();
colSelect.HeaderText = "选择";
colSelect.Name = "Sel";
colSelect.DataPropertyName = "Sel";
colSelect.Width = 50;
this.dataGridView1.Columns.Add(colSelect);
this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
HeaderText = "位置顺序",
Name = "Sn",
DataPropertyName = "Sn",
Width = 80
}
);
this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
HeaderText = "字段名",
Name = "Name",
DataPropertyName = "Name",
Width = 80
}
);
m_showModeList = new List<CShowMode>
{
new CShowMode{ chsName ="文本",engName = "Text"},
new CShowMode{ chsName ="符号",engName = "Symbol"},
new CShowMode{ chsName ="符号+文本",engName = "Symbol+Text"},
new CShowMode{ chsName ="颜色",engName = "Color"},
new CShowMode{ chsName ="颜色+文本",engName = "Color+Text"},
};
DataGridViewComboBoxColumn colShow = new DataGridViewComboBoxColumn();
colShow.HeaderText = "显示样式";
colShow.Name = "ShowContent";
colShow.DataPropertyName = "ShowContent";
colShow.Width = 110;
colShow.DataSource = m_showModeList; // 下拉选项
colShow.DisplayMember = "chsName";
colShow.ValueMember = "engName";
dataGridView1.Columns.Add(colShow);
m_SymbolAreaList = new List<CSymbolShowAreaType>
{
new CSymbolShowAreaType{ chsName="行宽度", engName="Row"},
new CSymbolShowAreaType{ chsName="列宽度", engName="Column"},
new CSymbolShowAreaType{chsName ="符号在左" ,engName="Left"},
new CSymbolShowAreaType{chsName ="符号在右" ,engName="Right"},
};
DataGridViewComboBoxColumn SymbolAreaShow = new DataGridViewComboBoxColumn();
SymbolAreaShow.HeaderText = "符号颜色区域";
SymbolAreaShow.Name = "SymbolRect";
SymbolAreaShow.DataPropertyName = "SymbolRect";
SymbolAreaShow.Width = 100;
SymbolAreaShow.DataSource = m_SymbolAreaList; // 下拉选项
SymbolAreaShow.DisplayMember = "chsName";
SymbolAreaShow.ValueMember = "engName";
dataGridView1.Columns.Add(SymbolAreaShow);
//m_ColorAreaList = new List<CColorShowAreaType>
//{
// new CColorShowAreaType{ chsName="", engName=""},
// new CColorShowAreaType{ chsName="行宽度", engName="Row"},
// new CColorShowAreaType{ chsName="列宽度", engName="Column"},
//};
//DataGridViewComboBoxColumn ColorAreaShow = new DataGridViewComboBoxColumn();
//ColorAreaShow.HeaderText = "颜色区域";
//ColorAreaShow.Name = "ColorRect";
//ColorAreaShow.DataPropertyName = "ColorRect";
//ColorAreaShow.Width = 90;
//ColorAreaShow.DataSource = m_ColorAreaList; // 下拉选项
//ColorAreaShow.DisplayMember = "chsName";
//ColorAreaShow.ValueMember = "engName";
//dataGridView1.Columns.Add(ColorAreaShow);
this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
HeaderText = "宽度",
Name = "width",
DataPropertyName="width",
Width = 70
}
);
var buttonColumn = new DataGridViewButtonColumn
{
Name = "btnSetFont",
HeaderText = "设置字体",
Text = "选择字体",
UseColumnTextForButtonValue = true,
Width = 80
};
dataGridView1.Columns.Add(buttonColumn);
var fontDisplayColumn = new DataGridViewTextBoxColumn
{
Name = "colFontDisplay",
HeaderText = "字体",
DataPropertyName = "FontDisplay",
ReadOnly = true,
Width = 200
};
dataGridView1.Columns.Add(fontDisplayColumn);
dataGridView1.DataSource = m_dataList;
// CTableInfo tTableInfo = null;
foreach (var(engName,chsName) in tableInfoQuery.TableDescriptionMap)
{
CTableInfo tTableInfo = new CTableInfo();
tTableInfo.chsTable = chsName;
tTableInfo.engTable = engName;
m_tablesList.Add(tTableInfo);
}
/* CTableInfo tTableInfo = new CTableInfo();
tTableInfo.chsTable = DBHelp.GetTableDescription<WellReservesLayer>();
tTableInfo.engTable = DBHelp.GetTableName<WellReservesLayer>();
m_tablesList.Add(tTableInfo);
tTableInfo = new CTableInfo();
tTableInfo.chsTable = DBHelp.GetTableDescription<WellPerforation>();
tTableInfo.engTable = DBHelp.GetTableName<WellPerforation>();
m_tablesList.Add(tTableInfo);
tTableInfo = new CTableInfo();
tTableInfo.chsTable = DBHelp.GetTableDescription<InterpretDrillWellLayered>();
tTableInfo.engTable = DBHelp.GetTableName<InterpretDrillWellLayered>();
m_tablesList.Add(tTableInfo);
tTableInfo = new CTableInfo();
tTableInfo.chsTable = DBHelp.GetTableDescription<WellInnerLayer>();
tTableInfo.engTable = DBHelp.GetTableName<WellInnerLayer>();
m_tablesList.Add(tTableInfo);
tTableInfo = new CTableInfo();
tTableInfo.chsTable = DBHelp.GetTableDescription<WellLithology>();
tTableInfo.engTable = DBHelp.GetTableName<WellLithology>();
m_tablesList.Add(tTableInfo);
*/
comboBoxTable.DataSource = m_tablesList;
comboBoxTable.DisplayMember = "chsTable";
comboBoxTable.ValueMember = "engTable";
comboBoxDepthMode.DataSource = m_DepthModeList;
comboBoxDepthMode.ValueMember = "engName";
comboBoxDepthMode.DisplayMember = "chsName";
m_trackDataItems.SetValue(tDataItems);
var selitem = m_tablesList.FirstOrDefault(t => t.engTable == m_trackDataItems.RefTableId);
if (selitem != null)
{
comboBoxTable.SelectedItem = selitem;
ListTableColumn(selitem.engTable);
}
}
private void comboBoxTable_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBoxTable.SelectedItem is CTableInfo tabinfo)
{
if (tabinfo.engTable == DBHelp.GetTableName<WellReservesLayer>())
{
m_DepthModeList.Clear();
CDepthMode tdepthMode = new CDepthMode();
tdepthMode.chsName = "一类砂岩顶底";
tdepthMode.engName = "FirstTopBottom";
m_DepthModeList.Add(tdepthMode);
tdepthMode = new CDepthMode();
tdepthMode.chsName = "二类砂岩顶底";
tdepthMode.engName = "SecondTopBottom";
m_DepthModeList.Add(tdepthMode);
tdepthMode = new CDepthMode();
tdepthMode.chsName = "纯有效顶底";
tdepthMode.engName = "PureEffectiveTopBottom";
m_DepthModeList.Add(tdepthMode);
tdepthMode = new CDepthMode();
tdepthMode.chsName = "视有效顶底";
tdepthMode.engName = "ViewEffectiveTopBottom";
m_DepthModeList.Add(tdepthMode);
}
else
{
m_DepthModeList.Clear();
CDepthMode tdepthMode = new CDepthMode();
tdepthMode.chsName = "顶底深";
tdepthMode.engName = "TopBottom";
m_DepthModeList.Add(tdepthMode);
}
ListTableColumn(tabinfo.engTable);
}
}
void ListTableColumn(string tableName)
{
List<EntityColumnInfo> colList = tableInfoQuery.getListTableColumn(tableName);
if (colList != null)
{
// dataGridView1.Rows.Clear();
m_dataList.Clear();
bool bSelectInit = false;
if (tableName == m_trackDataItems.RefTableId)
{
bSelectInit = true; // 选中了原有的井就设置,根据传入参数设置选择列
comboBoxDepthMode.SelectedValue = m_trackDataItems.DepthSegmentMode;
}
for (int i = 0; i < colList.Count; i++)
{
if (colList[i].ColumnDescription == "" || colList[i].ColumnDescription == null)
continue;
if (colList[i].DbColumnName == "ID" || colList[i].DbColumnName == "XHID"
|| colList[i].DbColumnName == null || colList[i].DbColumnName == "CWID" || colList[i].DbColumnName == "Well")
continue;
bool bSel = false;
string show = "Text";
string strSymbolRect = "Column";
string strWidth = "1";
string colorRect = "";
CFontInfo fontInfo = new CFontInfo();
fontInfo.size = 40;
fontInfo.fontName = "Times New Roman";
fontInfo.color = Color.Black;
int sn = 0;
if (bSelectInit)
{
for (int j = 0; j < m_trackDataItems.DataItem.Count; j++)
{
if (colList[i].DbColumnName == m_trackDataItems.DataItem[j].RefColId)
{
bSel = true;
show = m_trackDataItems.DataItem[j].ShowContent;
strSymbolRect = m_trackDataItems.DataItem[j].SymbolRect;
strWidth = m_trackDataItems.DataItem[j].WidthAllocation.ToString("F2");
//colorRect = m_trackDataItems.DataItem[j].ColorRect;
fontInfo.size = m_trackDataItems.DataItem[j].TextSize;
fontInfo.fontName = m_trackDataItems.DataItem[j].TextFace;
fontInfo.color = ColorTranslator2.FromHtml(m_trackDataItems.DataItem[j].TextColor);
sn = m_trackDataItems.DataItem[j].sn;
break;
}
}
}
CDataItemProp dataItemProp = new CDataItemProp { Sel = bSel,Name = colList[i].ColumnDescription ,ShowContent = show
,SymbolRect =strSymbolRect,/*ColorRect= colorRect,*/width = strWidth, fontInfo = fontInfo, Sn =sn };
m_dataList.Add(dataItemProp);
//dataItemProp.Sel = bSel;
// bSel,colList[i].ColumnDescription,show,strSymbolRect,strWidth,fontInfo});
// dataGridView1.Rows.Add(bSel, colList[i].ColumnDescription, show, strSymbolRect, strWidth,fontInfo);
}
}
}
private void btnOK_Click(object sender, EventArgs e)
{
string selTable = "";
string selDepthMode = "";
if (comboBoxTable.SelectedItem != null)
{
if (comboBoxTable.SelectedItem is CTableInfo tableinfo)
{
selTable = tableinfo.engTable;
}
}
if (comboBoxDepthMode.SelectedItem != null)
{
if (comboBoxDepthMode.SelectedItem is CDepthMode tMode)
{
selDepthMode = tMode.engName;
}
}
m_trackDataItems.RefTableId = selTable;
m_trackDataItems.DepthSegmentMode = selDepthMode;
m_trackDataItems.DataItem.Clear();
foreach(CDataItemProp itemprop in m_dataList)
{
if(itemprop.Sel == true)
{
DataItem titem = new DataItem();
titem.ColType = "Text";
titem.TextRect = "Full";
titem.RefColId = tableInfoQuery.getColumnNameFromChsName(selTable, itemprop.Name);
titem.ShowContent = itemprop.ShowContent;
titem.SymbolRect = itemprop.SymbolRect;
titem.TextFace = itemprop.fontInfo.fontName;
titem.TextSize = itemprop.fontInfo.size;
titem.TextColor = ColorTranslator2.ToHtml(itemprop.fontInfo.color);
titem.sn = itemprop.Sn;
// titem.ColorRect = itemprop.ColorRect;
if (!Double.TryParse(itemprop.width, out double width))
{
width = 1.0;
}
titem.WidthAllocation = width;
int i = 0;
for( i = 0; i< m_trackDataItems.DataItem.Count; i++)
{
if(titem.sn < m_trackDataItems.DataItem[i].sn)
{
m_trackDataItems.DataItem.Insert(i,titem);
break;
}
}
if(i >= m_trackDataItems.DataItem.Count)
m_trackDataItems.DataItem.Add(titem);
}
}
}
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0) return;
if (dataGridView1.Columns[e.ColumnIndex].Name == "btnSetFont")
{
var item = (CDataItemProp)dataGridView1.Rows[e.RowIndex].DataBoundItem;
var currentFontInfo = item.fontInfo;
using (var fontDialog = new FontDialog())
{
try
{
var Font = new Font(currentFontInfo.fontName, currentFontInfo.size/2.8f);
fontDialog.Font = Font;
}
catch
{
// 防止无效字体名
fontDialog.Font = new Font("宋体", 40/2.8f);
}
//if (currentFont != null)
// fontDialog.Font = font;
fontDialog.Color = currentFontInfo.color;
fontDialog.ShowColor = true;
if (fontDialog.ShowDialog() == DialogResult.OK)
{
// 更新数据源
//var item = (CFontInfo)dataGridView1.Rows[e.RowIndex].DataBoundItem;
currentFontInfo.fontName = fontDialog.Font.Name;
currentFontInfo.size = fontDialog.Font.Size*2.8f;
currentFontInfo.color = fontDialog.Color;
// 触发界面刷新BindingList 会自动更新,如果没更新可手动 Refresh
dataGridView1.InvalidateRow(e.RowIndex);
}
}
}
}
}
}