📄 dbconfiginfounit.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "DBConfigInfoUnit.h"
#include <msxmldom.hpp>
#include <XMLDoc.hpp>
#include <xmldom.hpp>
//---------------------------------------------------------------------------
TConfigInfoXML::TConfigInfoXML(const AnsiString iConfigFile)
{
FConfigFile = iConfigFile; //配置文件名
if (!FileExists(FConfigFile)) //文件不存在
{
pCurXML = LoadXMLDocument("");
pCurXML->Active = true;
}
else
{
memset(&FConfigInfo,0,sizeof(DBConfigInfo_T));
pCurXML = LoadXMLDocument(FConfigFile);
pCurXML->Active = true;
GetConfigInfo(FConfigInfo);
}
}
//--------------------------------------
TConfigInfoXML::~TConfigInfoXML()
{
if (pCurXML->Active)
pCurXML->Active = false;
}
//--------------------------------------
bool TConfigInfoXML::GetDefaultConfigInfo(SystemConfig_T& oConfigInfo)
{
memset(&oConfigInfo,0,sizeof(DBConfigInfo_T));
memcpy(oConfigInfo.CompanyName,"MIAXIS",6);
oConfigInfo.ViewConfig.fvWarningEventColor = (int)clBlack;
oConfigInfo.ViewConfig.fvUncloseEventColor = (int)clBlack;
oConfigInfo.ViewConfig.fvDangerEventColor = (int)clBlack;
oConfigInfo.ViewConfig.fvDeviceErrorColor = (int)clBlack;
oConfigInfo.ViewConfig.fvOtherColor = (int)clBlack;
oConfigInfo.ViewConfig.WarningPanelStyle = 0;
oConfigInfo.ViewConfig.ShowMaxCount = 35;
return true;
}
//--------------------------------------
bool TConfigInfoXML::GetConfigInfo(SystemConfig_T& oConfigInfo)
{
if (FileExists(FConfigFile)) //文件是否存在
{
pCurXML = LoadXMLDocument(FConfigFile);
_di_IXMLNode lRootNode = pCurXML->ChildNodes->FindNode("ConfigInfo");
if (!lRootNode)
return false;
_di_IXMLNode lDBNode,lFormNode,lSubNode;
AnsiString lTransValue;
memset(&oConfigInfo,0,sizeof(DBConfigInfo_T));
oConfigInfo.ViewConfig.fvWarningEventColor = (int)clBlack;
oConfigInfo.ViewConfig.fvUncloseEventColor = (int)clBlack;
oConfigInfo.ViewConfig.fvDangerEventColor = (int)clBlack;
oConfigInfo.ViewConfig.fvDeviceErrorColor = (int)clBlack;
oConfigInfo.ViewConfig.fvOtherColor = (int)clBlack;
oConfigInfo.ViewConfig.WarningPanelStyle = 0;
oConfigInfo.ViewConfig.ShowMaxCount = 35;
//读公司名称
lSubNode = lRootNode->ChildNodes->FindNode("CompanyName");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.CompanyName,lTransValue.c_str(),lTransValue.Length());
}
//读数据库配置
lDBNode = lRootNode->ChildNodes->FindNode("DBConfig");
if (lDBNode)
{
//读数据库类型
lSubNode = lDBNode->ChildNodes->FindNode("DBType");
if (lSubNode)
{
lTransValue = lSubNode->Text;
oConfigInfo.DBConfig.DBType = AnsiString(lTransValue).Trim().ToInt();
}
//读数据库提供者
lSubNode = lDBNode->ChildNodes->FindNode("dbProvider");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbProvider,lTransValue.c_str(),lTransValue.Length());
}
if (oConfigInfo.DBConfig.DBType == FileDB_T)
{
//读 文件数据库名
lSubNode = lDBNode->ChildNodes->FindNode("dbAccessFile");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbAccessFile,lTransValue.c_str(),lTransValue.Length());
}
}
else if (oConfigInfo.DBConfig.DBType == RelationDB_T)
{
//读数据库主机名
lSubNode = lDBNode->ChildNodes->FindNode("dbHostName");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbHostName,lTransValue.c_str(),lTransValue.Length());
}
//读数据库主机名
lSubNode = lDBNode->ChildNodes->FindNode("dbHostName");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbHostName,lTransValue.c_str(),lTransValue.Length());
}
//读数据库名
lSubNode = lDBNode->ChildNodes->FindNode("dbDatabaseName");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbDatabaseName,lTransValue.c_str(),lTransValue.Length());
}
//读用户名
lSubNode = lDBNode->ChildNodes->FindNode("dbUserName");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbUserName,lTransValue.c_str(),lTransValue.Length());
}
//读用户密码
lSubNode = lDBNode->ChildNodes->FindNode("dbPassword");
if (lSubNode)
{
lTransValue = lSubNode->Text;
memcpy(oConfigInfo.DBConfig.dbPassword,lTransValue.c_str(),lTransValue.Length());
}
//读标识位
lSubNode = lDBNode->ChildNodes->FindNode("dbFlag");
if (lSubNode)
{
lTransValue = lSubNode->Text;
oConfigInfo.DBConfig.dbFlag = StrToInt(lTransValue);
}
}
}
//读界面配置信息
lFormNode = lRootNode->ChildNodes->FindNode("FormConfig");
if (lFormNode)
{
//读警告事件颜色
lSubNode = lFormNode->ChildNodes->FindNode("fvWarningEventColor");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.fvWarningEventColor = StrToInt(lTransValue);
}
//读门未关好颜色
lSubNode = lFormNode->ChildNodes->FindNode("fvUncloseEventColor");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.fvUncloseEventColor = StrToInt(lTransValue);
}
//读胁迫事件颜色
lSubNode = lFormNode->ChildNodes->FindNode("fvDangerEventColor");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.fvDangerEventColor = StrToInt(lTransValue);
}
//读设备异常颜色
lSubNode = lFormNode->ChildNodes->FindNode("fvDeviceErrorColor");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.fvDeviceErrorColor = StrToInt(lTransValue);
}
//读其它事件颜色
lSubNode = lFormNode->ChildNodes->FindNode("fvOtherColor");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.fvOtherColor = StrToInt(lTransValue);
}
//读警告事件面板右边或下面
lSubNode = lFormNode->ChildNodes->FindNode("WarningPanelStyle");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.WarningPanelStyle = StrToInt(lTransValue);
}
//显示最大记录数
lSubNode = lFormNode->ChildNodes->FindNode("ShowMaxCount");
if (lSubNode)
{
lTransValue = lSubNode->Text;
if (!lTransValue.IsEmpty())
oConfigInfo.ViewConfig.ShowMaxCount = StrToInt(lTransValue);
}
}
return true;
}
return false;
}
//--------------------------------------
bool TConfigInfoXML::SetConfigInfo(SystemConfig_T iConfigInfo)
{
pCurXML->ChildNodes->Clear();
pCurXML->Version = "1.0";
pCurXML->Encoding = "UTF-8";
_di_IXMLNode RootNode = pCurXML->CreateElement("ConfigInfo","");
pCurXML->DocumentElement = RootNode;
_di_IXMLNode lNewNode;
//写 公司名称
lNewNode = RootNode->AddChild("CompanyName");
lNewNode->Text = AnsiString(iConfigInfo.CompanyName);
_di_IXMLNode lDBNode = RootNode->AddChild("DBConfig");
if (lDBNode)
{
//写 数据库类型
lNewNode = lDBNode->AddChild("DBType");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.DBType);
//写 数据库文件
lNewNode = lDBNode->AddChild("dbAccessFile");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbAccessFile).Trim();
//写 数据库提供者
lNewNode = lDBNode->AddChild("dbProvider");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbProvider).Trim();
//写 数据库主机名
lNewNode = lDBNode->AddChild("dbHostName");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbHostName);
//写 数据库名
lNewNode = lDBNode->AddChild("dbDatabaseName");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbDatabaseName);
//写 用户名
lNewNode = lDBNode->AddChild("dbUserName");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbUserName);
//写 用户密码
lNewNode = lDBNode->AddChild("dbPassword");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbPassword);
//写 标识位
lNewNode = lDBNode->AddChild("dbFlag");
lNewNode->Text = AnsiString(iConfigInfo.DBConfig.dbFlag);
}
_di_IXMLNode lFormNode = RootNode->AddChild("FormConfig");
if (lFormNode)
{
//写 警告事件颜色
lNewNode = lFormNode->AddChild("fvWarningEventColor");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvWarningEventColor);
//写 门未关好颜色
lNewNode = lFormNode->AddChild("fvUncloseEventColor");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvUncloseEventColor);
//写 胁迫事件颜色
lNewNode = lFormNode->AddChild("fvDangerEventColor");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvDangerEventColor);
//写 设备异常颜色
lNewNode = lFormNode->AddChild("fvDeviceErrorColor");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvDeviceErrorColor);
//写 其它事件颜色
lNewNode = lFormNode->AddChild("fvOtherColor");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.fvOtherColor);
//写 警告事件面板右边或下面
lNewNode = lFormNode->AddChild("WarningPanelStyle");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.WarningPanelStyle);
//写 显示最大记录数
lNewNode = lFormNode->AddChild("ShowMaxCount");
lNewNode->Text = AnsiString(iConfigInfo.ViewConfig.ShowMaxCount);
}
return true;
}
//--------------------------------------
bool TConfigInfoXML::SaveConfigInfo(AnsiString iConfigFileName)
{
try
{
pCurXML->SaveToFile(iConfigFileName);
}
catch(...)
{
return false;
}
return true;
}
//--------------------------------------
bool TConfigInfoXML::SaveConfigInfo()
{
return SaveConfigInfo(FConfigFile);
}
//--------------------------------------
#pragma package(smart_init)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -