init lserp cs 5.0
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using CommonLib;
|
||||
using System.Windows.Forms;
|
||||
using DevExpress.XtraTab;
|
||||
using DevExpress.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
using CommonLib.utils;
|
||||
|
||||
namespace Lskj.Main
|
||||
{
|
||||
public class ModuleManager
|
||||
{
|
||||
#region C#DLL相关调用
|
||||
/// <summary>
|
||||
/// 添加到选项卡
|
||||
/// </summary>
|
||||
/// <param name="TabMain"></param>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="args"></param>
|
||||
/// <param name="IsShowClose"></param>
|
||||
public static void AddModuleToTab(XtraTabControl TabMain, DllModule module, string[] obj, bool IsShowClose)
|
||||
{
|
||||
//if (PubUtil.ModuleForms.ContainsKey(module.Id))
|
||||
//{
|
||||
// foreach (XtraTabPage item in TabMain.TabPages)
|
||||
// {
|
||||
// string id = item.Tag + "";
|
||||
// if (id == module.Id)
|
||||
// {
|
||||
// TabMain.SelectedTabPage = item;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
try
|
||||
{
|
||||
IForm iform = PubUtil.LoadDllForm(module.DllName, obj);
|
||||
Form form = iform.SubForm;
|
||||
module.ModuleForm = form;
|
||||
|
||||
string guid = Guid.NewGuid().ToString();
|
||||
|
||||
XtraTabPage tp = new XtraTabPage();
|
||||
tp.Text = module.Name;
|
||||
//tp.Tag = module.Id;
|
||||
tp.Tag = guid;
|
||||
|
||||
form.FormBorderStyle = FormBorderStyle.None;
|
||||
|
||||
//这个必须有不然会提示:"不能向tabControl中添加顶级控件"
|
||||
form.TopLevel = false;
|
||||
form.Dock = DockStyle.Fill;
|
||||
//这个必须有,不然显示不出来
|
||||
tp.Controls.Add(form);
|
||||
if (IsShowClose)
|
||||
tp.ShowCloseButton = DefaultBoolean.True;
|
||||
TabMain.TabPages.Add(tp);
|
||||
TabMain.SelectedTabPage = tp;
|
||||
module.Tag = "1";
|
||||
form.Show();
|
||||
PubUtil.ModuleForms.Add(guid, module);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Show模式打开
|
||||
/// </summary>
|
||||
/// <param name="module">模块信息</param>
|
||||
/// <param name="args">参数</param>
|
||||
public static void AddModuleToShow(DllModule module, string[] args)
|
||||
{
|
||||
if (PubUtil.ModuleForms.ContainsKey(module.Id))
|
||||
{
|
||||
Form form = PubUtil.ModuleForms[module.Id].ModuleForm;
|
||||
if (form == null)
|
||||
return;
|
||||
form.Text = module.Name;
|
||||
form.WindowState = FormWindowState.Normal;
|
||||
form.Activate();
|
||||
form.BringToFront();
|
||||
form.Focus();
|
||||
form.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
IForm iform = PubUtil.LoadDllForm(module.DllName, args);
|
||||
if (iform == null)
|
||||
return;
|
||||
Form form = iform.SubForm;
|
||||
module.Tag = "1";
|
||||
module.ModuleForm = form;
|
||||
form.Show();
|
||||
PubUtil.ModuleForms.Add(module.Id, module);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Delphi相关调用
|
||||
/// <summary>
|
||||
/// Delphi-Show模式打开
|
||||
/// </summary>
|
||||
/// <param name="module"></param>
|
||||
public static void AddModuleDelphiToShow(DllModule module)
|
||||
{
|
||||
if (PubUtil.ModuleForms.ContainsKey(module.Id))
|
||||
{
|
||||
Form iform = PubUtil.ModuleForms[module.Id].ModuleForm;
|
||||
iform.Text = module.Name;
|
||||
iform.Activate();
|
||||
iform.BringToFront();
|
||||
iform.Focus();
|
||||
iform.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
// StringBuilder result = PubUtil.LoadDelphiDllEx(module.DllName);
|
||||
// if (result.ToString().IndexOf('@') != -1)
|
||||
// {
|
||||
// string[] str = result.ToString().Split('@');
|
||||
// module.ModuleInPtr = new IntPtr(Convert.ToInt32(str[1]));
|
||||
// module.Result = result;
|
||||
// FrmWindow frm = new FrmWindow();
|
||||
// frm.Text = module.Name;
|
||||
// frm.ModuleIntPtr = module.ModuleInPtr;
|
||||
// PubUtil.SetParent(module.ModuleInPtr, frm.Handle);
|
||||
// frm.DModule = module;
|
||||
// module.ModuleForm = frm;
|
||||
// frm.Show();
|
||||
// PubUtil.SetWindowPos(module.ModuleInPtr, 0, 0, 0, frm.Width, frm.Height - 36, 0);
|
||||
// PubUtil.ModuleForms.Add(module.Id, module);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delphi-添加到选项卡
|
||||
/// </summary>
|
||||
/// <param name="TabMain"></param>
|
||||
/// <param name="module"></param>
|
||||
/// <param name="IsShowClose"></param>
|
||||
public static void AddModuleDelphiToTab(XtraTabControl TabMain, DllModule module, bool IsShowClose)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (PubUtil.ModuleForms.ContainsKey(module.Id))
|
||||
{
|
||||
foreach (XtraTabPage item in TabMain.TabPages)
|
||||
{
|
||||
string id = item.Tag.ToString();
|
||||
if (id == module.Id)
|
||||
{
|
||||
TabMain.SelectedTabPage = item;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
XtraTabPage tp1 = TabMain.TabPages[0];
|
||||
XtraTabPage tp2 = new XtraTabPage();
|
||||
tp2.Text = module.Name;
|
||||
tp2.Tag = module.Id;
|
||||
//StringBuilder result = PubUtil.LoadDelphiDllEx(module.DllName);
|
||||
//if (result.ToString().IndexOf('@') != -1)
|
||||
//{
|
||||
// string[] str = result.ToString().Split('@');
|
||||
// module.ModuleInPtr = new IntPtr(Convert.ToInt32(str[1]));
|
||||
// module.Result = result;
|
||||
// module.Tag = "2";
|
||||
// if (!string.IsNullOrEmpty(result + ""))
|
||||
// {
|
||||
// TabMain.TabPages.Add(tp2);
|
||||
// PubUtil.SetParent(module.ModuleInPtr, tp2.Handle);
|
||||
// PubUtil.SetWindowPos(module.ModuleInPtr, 0, 0, 0, tp1.Width, tp1.Height, 0);
|
||||
// if (IsShowClose)
|
||||
// tp2.ShowCloseButton = DefaultBoolean.True;
|
||||
// TabMain.SelectedTabPage = tp2;
|
||||
// PubUtil.ModuleForms.Add(module.Id, module);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 释放Delphi资源
|
||||
/// </summary>
|
||||
/// <param name="m"></param>
|
||||
public static void FreeDll(DllModule m)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (m != null)
|
||||
{
|
||||
PubUtil.FreeDll(m.Result);
|
||||
m.ModuleForm = null;
|
||||
PubUtil.ModuleForms.Remove(m.Id);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user