📄 eqparam.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "EQParam.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDGrid"
#pragma link "SDEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmEQParam *frmEQParam;
extern AnsiString SDTrim(AnsiString TrimString);
//---------------------------------------------------------------------------
__fastcall TfrmEQParam::TfrmEQParam(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::ClearControl(bool BringToNext)
{
if(BringToNext)
{
return;
}
lbParaUpperCode->Caption= "";
seParaItem->Text = "";
seParaName->Text = "";
memParaDesc->Text = "";
scParaType->ItemIndex =-1;
seParaValue->Text = "0";
scParaValueType->ItemIndex =-1;
memParaValueDesc->Text = "";
m_ParameterLevel++;
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::GetDataFromComObject()
{
if(GetFieldValue("ParameterLevel").Trim() =="")
m_ParameterLevel = 0;
else
m_ParameterLevel=AnsiString(GetFieldValue("ParameterLevel")).ToInt();
lbParaUpperCode->Caption= GetFieldValue("ParameterUpperCode");
seParaItem->Text = GetFieldValue("ParameterItem");
seParaName->Text = GetFieldValue("ParameterName");
memParaDesc->Text = GetFieldValue("ParameterDesc");
scParaType->LocateKey(GetFieldValue("ParameterType"));
scParaType->Text=scParaType->ItemData[0];
seParaValue->Text = GetFieldValue("ParameterValue");
scParaValueType->LocateKey(GetFieldValue("ParameterValueType"));
scParaValueType->Text=scParaValueType->ItemData[0];
memParaValueDesc->Text = GetFieldValue("ParameterValueDesc");
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::SendDataToComObject()
{
if(scParaType->Text.IsEmpty())
throw Exception("参数类型不能为空");
if(scParaType->Text=="参数")
{
if(scParaValueType->Text.IsEmpty())
throw Exception("参数值类型不能为空");
if(seParaValue->Text.IsEmpty()&&scParaValueType->Text=="数字")
throw Exception("数字类参数值不能为空");
}
SetFieldValue("ParameterUpperCode",Trim(lbParaUpperCode->Caption)) ;
SetFieldValue("ParameterCode",Trim(lbParaUpperCode->Caption)+Trim(seParaItem->Text)) ;
SetFieldValue("ParameterItem",WideString(seParaItem->Text)); // ParameterItem
SetFieldValue("ParameterName",WideString(seParaName->Text)); // ParameterName
SetFieldValue("ParameterLevel",AnsiString(m_ParameterLevel)); // ParameterName
SetFieldValue("ParameterDesc",WideString(memParaDesc->Text)); // ParameterDesc
SetFieldValue("ParameterType",WideString(scParaType->ItemData[1])); // ParameterType
SetFieldValue("ParameterValue",WideString(seParaValue->Text)); // ParameterValue
if(scParaValueType->Text.IsEmpty())
SetFieldValue("ParameterValueType",WideString("1")); // ParameterValueType
else
SetFieldValue("ParameterValueType",WideString(scParaValueType->ItemData[1])); // ParameterValueType
SetFieldValue("ParameterValueDesc",WideString(memParaValueDesc->Text)); // ParameterValueDesc
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::WaitUserInput()
{
seParaItem->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::RefreshGridData(int mAction)
{
AnsiString tempText;
if (mAction == 0)
{
if(tvParameter->Selected)
{
tempText = "(" + GetFieldValue("ParameterCode") + ")" + GetFieldValue("ParameterName");
tvParameter->Items->AddChild(tvParameter->Selected,tempText);
tvParameter->Selected->Expanded = true;
}
}
else if(mAction == 1)
{
tvParameter->Selected->Text = "(" + GetFieldValue("ParameterCode") + ")"
+ GetFieldValue("ParameterName");
}
else if(mAction == 2)
{
tvParameter->Items->Delete(tvParameter->Selected);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::FillGridWithData()
{
AnsiString tempText;
TTreeNode* TempNode[7];
int mLevel;
tvParameter->Items->Clear();
TempNode[0]=tvParameter->Items->Add(NULL,"设备管理参数");
comServer->MoveFirst();
while (comServer->Eof == 0)
{
mLevel = StrToInt(GetFieldValue("ParameterLevel"));
if( (mLevel <= 0) || (mLevel > 7))
{
::MessageBox(Handle,"参数层级的级别不能大于7。","错误",MB_OK|MB_ICONSTOP);
comServer->MoveNext();
continue;
}
for(int i=0;i<8;i++)
{
if(TempNode[mLevel-1]->Text=="")
mLevel--;
}
tempText = "(" + GetFieldValue("ParameterCode") + ")" + GetFieldValue("ParameterName");
TempNode[mLevel] = tvParameter->Items->AddChild(TempNode[mLevel-1],tempText);
comServer->MoveNext();
}
tvParameter->Selected=TempNode[0];
//展开所有的节点。
if (tvParameter->Items->Count > 0)
{
TempNode[0]->Expand(false);
comServer->MoveFirst();
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::InitEditControl()
{
ClientGroup->AddComponent(2,true,true,false, Panel1,Panel1->Name);
ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
scParaType->AddItems("分组","1");
scParaType->AddItems("参数","2");
scParaValueType->AddItems("字符","1");
scParaValueType->AddItems("数字","2");
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::TreeViewLocation()
{
AnsiString s,c;
s = GetFieldValue("ParameterCode");
for(int i = 1 ; i < tvParameter->Items->Count ; i ++)
{
c = tvParameter->Items->Item[i]->Text; //取关键字
c = c.SubString(2,c.AnsiPos(")")-2);
if(s == c)
{
tvParameter->Selected = tvParameter->Items->Item[i];
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::FormShow(TObject *Sender)
{
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::tvParameterChange(TObject *Sender,
TTreeNode *Node)
{
AnsiString s;
if(Node == tvParameter->Items->Item[0])
{
return;
}
if((CurrentState==caAddDetail)||(CurrentState==caEditDetail))
{
CancelChange();
}
s = Node->Text;
s = s.SubString(2,s.AnsiPos(")")-2);
comServer->LocateByKey(WideString(s));
if (comServer->Eof == 0)
{
scParaType->LocateKey(GetFieldValue("ParameterType"));
if(scParaType->ItemData[0]=="参数")
ParaFlag="Tparamter";
else
ParaFlag="Fparamter";
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muAddDetailClick(TObject *Sender)
{
int tempLevel = tvParameter->Selected->Level;
if(tempLevel < 1)
{
MessageBox(Handle, "不能在这一级添加参数!", "操作错误", MB_OK+MB_ICONSTOP);
return;
}
AnsiString s;
if(ParaFlag=="Tparamter")
throw Exception("参数级不能增加下一级");
TRecBaseForm::muAddDetailClick(Sender);
if(tempLevel == 0)
{
SetFieldValue("ParameterUpperCode","");
SetFieldValue("ParameterLevel",AnsiString(tempLevel+1));
lbParaUpperCode->Caption = "";
}
else
{
s = tvParameter->Selected->Text;
s = s.SubString(2,s.AnsiPos(")")-2);
lbParaUpperCode->Caption=s;
SetFieldValue("ParameterUpperCode",s);
SetFieldValue("ParameterLevel",AnsiString(tempLevel+1));
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muEditDetailClick(TObject *Sender)
{
AnsiString s;
if(tvParameter->Selected->HasChildren)
{
::MessageBox(Handle,"当前是分类节点,不能修改.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
TRecBaseForm::muEditDetailClick(Sender);
s = tvParameter->Selected->Parent->Text;
if (tvParameter->Selected->Parent->Level == 0)
//当选择的节点的父节点是根节点时
s = "";
else
s = s.SubString(2,s.AnsiPos(")")-2);
SetFieldValue("ParameterUpperCode",s);
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muDeleteDetailClick(TObject *Sender)
{
if(tvParameter->Selected->Level == 0)
{
::MessageBox(Handle,"当前是根节点,不能删除.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
if(tvParameter->Selected->HasChildren)
{
if(::MessageBox(Handle,"该参数分类码下包含有子参数分类码,\n本操作将会删除它的全部子参数分类码。",
"注意", MB_YESNO|MB_ICONQUESTION) == IDYES)
{
TRecBaseForm::muDeleteDetailClick(Sender);
//如果删除根节点下的所有参数分类节点
if (tvParameter->Items->Count > 1)
{
comServer->Query();
FillGridWithData();
comServer->MoveFirst();
GetDataFromComObject();
}
else
ClearControl(false);
return;
}
}
TRecBaseForm::muDeleteDetailClick(Sender);
//如果删除根节点下的所有分类节点
if (tvParameter->Items->Count == 1)
{
ClearControl(false);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muFirstClick(TObject *Sender)
{
TRecBaseForm::muFirstClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muPreviousClick(TObject *Sender)
{
TRecBaseForm::muPreviousClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muNextClick(TObject *Sender)
{
TRecBaseForm::muNextClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muLastClick(TObject *Sender)
{
TRecBaseForm::muLastClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::muSaveClick(TObject *Sender)
{
AnsiString tempst;
tempst= lbParaUpperCode->Caption+seParaItem->Text;
if(tempst.Length()>18)
{
::MessageBox(Handle,"上级编码长度将超过18.","操作错误",MB_OK|MB_ICONSTOP);
}
else
{
TRecBaseForm::muSaveClick(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmEQParam::tvParameterClick(TObject *Sender)
{
if(tvParameter->Selected==NULL)
return ;
m_ParameterLevel=tvParameter->Selected->Level;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -