⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parameter.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Parameter.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDGrid"
#pragma link "SDEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmParameter *frmParameter;
extern AnsiString SDTrim(AnsiString TrimString);

//---------------------------------------------------------------------------
AnsiString __fastcall TfrmParameter::GetFieldValue(int FieldIndex)
{
    WideString S;
    S = ReadFieldValue(comServer,FieldIndex);
    return(S);
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::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   =   "";
}
//---------------------------------------------------------------------------
void __fastcall TfrmParameter::GetDataFromComObject()
{
    lbParaUpperCode->Caption=   GetFieldValue(fiParameterUpperCode);
    seParaItem->Text        =   GetFieldValue(fiParameterItem);
    seParaName->Text        =   GetFieldValue(fiParameterName);
    memParaDesc->Text       =   GetFieldValue(fiParameterDesc);
    scParaType->LocateKey(GetFieldValue(fiParameterType));
    scParaType->Text=scParaType->ItemData[0];
    seParaValue->Text       =   GetFieldValue(fiParameterValue);
    scParaValueType->LocateKey(GetFieldValue(fiParameterValueType));
    scParaValueType->Text=scParaValueType->ItemData[0];
    memParaValueDesc->Text   =   GetFieldValue(fiParameterValueDesc);
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::SendDataToComObject()
{
    if(scParaType->Text.IsEmpty())
         throw Exception("参数类型不能为空");
    if(scParaType->Text=="参数")
    {
       if(scParaValueType->Text.IsEmpty())
         throw Exception("参数值类型不能为空");
       if(seParaValue->Text.IsEmpty()&&scParaValueType->Text=="数字")
         throw Exception("数字类参数值不能为空");
    }
    WriteFieldValue(comServer,fiParameterItem,WideString(seParaItem->Text));                 // ParameterItem
    WriteFieldValue(comServer,fiParameterName,WideString(seParaName->Text));                 // ParameterName
    WriteFieldValue(comServer,fiParameterDesc,WideString(memParaDesc->Text));                // ParameterDesc
    WriteFieldValue(comServer,fiParameterType,WideString(scParaType->ItemData[1])); // ParameterType
    WriteFieldValue(comServer,fiParameterValue,WideString(seParaValue->Text));               // ParameterValue
    if(scParaValueType->Text.IsEmpty())
     WriteFieldValue(comServer,fiParameterValueType,WideString("1")); // ParameterValueType
    else
     WriteFieldValue(comServer,fiParameterValueType,WideString(scParaValueType->ItemData[1])); // ParameterValueType
    WriteFieldValue(comServer,fiParameterValueDesc,WideString(memParaValueDesc->Text));        // ParameterValueDesc
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::WaitUserInput()
{
    seParaItem->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::RefreshGridData(int mAction)
{
    AnsiString  tempText;
    if (mAction == 0)
    {
        if(tvParameter->Selected)
        {
            tempText = "(" + GetFieldValue(fiParameterCode) + ")" + GetFieldValue(fiParameterName);
            tvParameter->Items->AddChild(tvParameter->Selected,tempText);
            tvParameter->Selected->Expanded = true;
        }
    }
    else if(mAction == 1)
    {
            tvParameter->Selected->Text = "(" + GetFieldValue(fiParameterCode) + ")"
                + GetFieldValue(fiParameterName);
    }
    else if(mAction == 2)
    {
        tvParameter->Items->Delete(tvParameter->Selected);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::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(fiParameterLevel));
        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(fiParameterCode) + ")" + GetFieldValue(fiParameterName);
        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 TfrmParameter::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 TfrmParameter::TreeViewLocation()
{
    AnsiString s,c;
    s = GetFieldValue(fiParameterCode);
    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;
        }
    }
}
//---------------------------------------------------------------------------

__fastcall TfrmParameter::TfrmParameter(TComponent* Owner)
       : TRecBaseForm(Owner,euSdParameter,"")
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmParameter::FormShow(TObject *Sender)
{
    FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmParameter::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(fiParameterType));
      if(scParaType->ItemData[0]=="参数")
        ParaFlag="Tparamter";
      else
        ParaFlag="Fparamter";
      GetDataFromComObject();
    }
}
//---------------------------------------------------------------------------


void __fastcall TfrmParameter::muAddDetailClick(TObject *Sender)
{
    AnsiString  s;
    if(ParaFlag=="Tparamter")
       throw Exception("参数级不能增加下一级");
    TRecBaseForm::muAddDetailClick(Sender);
    int tempLevel = tvParameter->Selected->Level;
    if(tempLevel == 0)
    {
       WriteFieldValue(comServer,fiParameterUpperCode,"");
       WriteFieldValue(comServer,fiParameterLevel,AnsiString(tempLevel+1));
       lbParaUpperCode->Caption = "";
    }
    else
    {
        s = tvParameter->Selected->Text;
        s = s.SubString(2,s.AnsiPos(")")-2);
        lbParaUpperCode->Caption=s;
        WriteFieldValue(comServer,fiParameterUpperCode,s);
        WriteFieldValue(comServer,fiParameterLevel,AnsiString(tempLevel+1));
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::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);
    WriteFieldValue(comServer,fiParameterUpperCode,s);
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::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 TfrmParameter::muFirstClick(TObject *Sender)
{
    TRecBaseForm::muFirstClick(Sender);
    TreeViewLocation();
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::muPreviousClick(TObject *Sender)
{
    TRecBaseForm::muPreviousClick(Sender);
    TreeViewLocation();
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::muNextClick(TObject *Sender)
{
    TRecBaseForm::muNextClick(Sender);
    TreeViewLocation();
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::muLastClick(TObject *Sender)
{
    TRecBaseForm::muLastClick(Sender);
    TreeViewLocation();
}
//---------------------------------------------------------------------------

void __fastcall TfrmParameter::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);
    }

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -