110 lines
2.9 KiB
C#
110 lines
2.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Reflection;
|
|
|
|
namespace DataLoader
|
|
{
|
|
public partial class frmPG : Form
|
|
{
|
|
private object _SelectedObject;
|
|
public object SelectedObject
|
|
{
|
|
get { return _SelectedObject; }
|
|
set { _SelectedObject = value; }
|
|
}
|
|
|
|
public frmPG(string title, object selectedObject)
|
|
{
|
|
InitializeComponent();
|
|
this.Text = title;
|
|
_SelectedObject = selectedObject;
|
|
}
|
|
private void CheckValidity()
|
|
{
|
|
if (SelectedObject.GetType().Name == "DataLoaderSettings")
|
|
{
|
|
DataLoaderSettings myDls = (DataLoaderSettings)SelectedObject;
|
|
string validity = myDls.ValidityCheck;
|
|
pg.SelectedObject = SelectedObject;
|
|
tbError.Text = validity;
|
|
if (validity == "")
|
|
tbError.Visible = false;
|
|
else
|
|
{
|
|
using (Graphics gr = tbError.CreateGraphics())
|
|
{
|
|
SizeF sf = gr.MeasureString(validity, tbError.Font,tbError.ClientRectangle.Width-10);
|
|
tbError.Height = (int)(tbError.Font.GetHeight(gr.DpiY) + sf.Height);
|
|
}
|
|
tbError.Visible = true;
|
|
}
|
|
}
|
|
else
|
|
tbError.Visible = false;
|
|
btnOK.Enabled = !tbError.Visible;
|
|
}
|
|
private void frmPG_Load(object sender, EventArgs e)
|
|
{
|
|
pg.PropertyValueChanged += new PropertyValueChangedEventHandler(pg_PropertyValueChanged);
|
|
pg.SelectedObject = SelectedObject;
|
|
Resize += new EventHandler(frmPG_Resize);
|
|
CheckValidity();
|
|
MoveSplitterTo(pg, SplitterWidth);
|
|
}
|
|
void pg_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
|
{
|
|
if (e.ChangedItem.Label == "VEProms Exe Folder")
|
|
{
|
|
DataLoaderSettings dls = SelectedObject as DataLoaderSettings;
|
|
if (dls != null)
|
|
dls.VESamFile = dls.VEPromsPath + "\\vesam.opt";
|
|
}
|
|
//if (e.ChangedItem.Label == "Procedure Folder")
|
|
//{
|
|
// DataLoaderSettings dls = SelectedObject as DataLoaderSettings;
|
|
// //if (dls != null)
|
|
// // dls.PDFFolder = "";
|
|
//}
|
|
CheckValidity();
|
|
}
|
|
void frmPG_Resize(object sender, EventArgs e)
|
|
{
|
|
MoveSplitterTo(pg, SplitterWidth);
|
|
}
|
|
private int _SplitterWidth = 0;
|
|
public int SplitterWidth
|
|
{
|
|
get
|
|
{
|
|
if (_SplitterWidth == 0)
|
|
{
|
|
using (Graphics gr = this.CreateGraphics())
|
|
_SplitterWidth = 180 * ((int)gr.DpiX) / 96;
|
|
}
|
|
return _SplitterWidth;
|
|
}
|
|
}
|
|
static void MoveSplitterTo(PropertyGrid grid, int x)
|
|
{
|
|
// HEALTH WARNING: reflection can be brittle...
|
|
FieldInfo field = typeof(PropertyGrid)
|
|
.GetField("gridView",
|
|
BindingFlags.NonPublic | BindingFlags.Instance);
|
|
field.FieldType
|
|
.GetMethod("MoveSplitterTo",
|
|
BindingFlags.NonPublic | BindingFlags.Instance)
|
|
.Invoke(field.GetValue(grid), new object[] { x });
|
|
}
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
PropertyDescriptor pd = pg.SelectedGridItem.PropertyDescriptor;
|
|
pd.ResetValue(pg.SelectedObject);
|
|
}
|
|
}
|
|
} |