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

📄 rank.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Rank.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "RecBaseForm"
#pragma link "SDEdit"
#pragma resource "*.dfm"

TfrmRank *frmRank;
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmRank::GetFieldValue(int FieldIndex)
{
    WideString S;
    S = ReadFieldValue(comServer,FieldIndex);
    return(S);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
      lbRankUpperCode->Caption="";
      lblUpperCode->Caption="";
      seRankItem-> Text = "";
      seRankName-> Text = "";
      lbRankLevel->Caption="";
      memRankDesc->Text = "";
//      seRankEnd->Checked = false;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::GetDataFromComObject()
{
    lblUpperCode->Caption=GetFieldValue(fiRankUpperCode);
    lbRankUpperCode->Caption=GetFieldValue(fiRankUpperCode);
//    seRankCode->Text=GetFieldValue(fiRankCode);
    seRankItem->Text  =  GetFieldValue(fiRankItem);
    seRankName->Text  =  GetFieldValue(fiRankName);
    lbRankLevel->Caption =  GetFieldValue(fiRankLevel);
    memRankDesc->Text =  GetFieldValue(fiRankDesc);
    TreeViewLocation();
//  seRankEnd->Checked=   GetFieldValue(fiRankEnd) == "1";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::SendDataToComObject()
{
//   WriteFieldValue(comServer,fiRankCode,seRankCode->Text);
    WriteFieldValue(comServer,fiRankUpperCode,lblUpperCode->Caption);
    WriteFieldValue(comServer,fiRankLevel,lbRankLevel->Caption);
    WriteFieldValue(comServer,fiRankItem,seRankItem->Text);   // RankItem
    WriteFieldValue(comServer,fiRankName,seRankName->Text);   // RankName
    WriteFieldValue(comServer,fiRankDesc,memRankDesc->Text);  // RankDesc
//  WriteFieldValue(comServer,fiRankEnd,WideString(seRankEnd->Checked ? "1":"0"));
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::WaitUserInput()
{
    if(seRankItem->Enabled)
       seRankItem->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::RefreshGridData(int mAction)
{
    AnsiString  tempText;
    if (mAction == 0)
    {
        if(tvRank->Selected)
        {
            tempText = "(" + GetFieldValue(fiRankCode) + ")" + GetFieldValue(fiRankName);
            tvRank->Items->AddChild(tvRank->Selected,tempText);
            tvRank->Selected->Expanded = true;
        }
    }
    else if(mAction == 1)
    {
        if(tvRank->Selected->HasChildren)
        {   //如果有子节点,则刷新一次.
            comServer->Query();
            FillGridWithData();
        }
        else
            tvRank->Selected->Text = "(" + GetFieldValue(fiRankCode) + ")"
                + GetFieldValue(fiRankName);
    }
    else if(mAction == 2)
    {
        tvRank->Items->Delete(tvRank->Selected);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::FillGridWithData()
{
     AnsiString  tempText;
     TTreeNode* TempNode[7];
     int mLevel;

     tvRank->Items->Clear();
     TempNode[0]=tvRank->Items->Add(NULL,"所有职位");

     comServer->MoveFirst();
     while (comServer->Eof == 0)
     {
        mLevel  =   StrToInt(GetFieldValue(fiRankLevel));
        if( (mLevel <= 0) || (mLevel > 5))
        {
            ::MessageBox(Handle,"职务层级的级别不能大于5。","错误",MB_OK|MB_ICONSTOP);
            comServer->MoveNext();
            continue;
        }

        tempText = "(" + GetFieldValue(fiRankCode) + ")" + GetFieldValue(fiRankName);
        TempNode[mLevel] = tvRank->Items->AddChild(TempNode[mLevel-1],tempText);
        comServer->MoveNext();
     }
     tvRank->Selected=TempNode[0];
     //展开所有的节点。
     if (tvRank->Items->Count > 0)
     {
        tvRank->FullExpand();
        comServer->MoveFirst();
        GetDataFromComObject();
     }
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::InitEditControl()
{
    ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(2,true,true,false, Panel1,Panel1->Name);
//    ClientGroup->AddComponent(2,false,true,true,seRankItem,seRankItem->Name);
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::TreeViewLocation()
{
    AnsiString s,c;
    s = GetFieldValue(fiRankCode);
    for(int i = 1 ; i < tvRank->Items->Count ; i ++)
    {
        c = tvRank->Items->Item[i]->Text;    //取关键字
        c = c.SubString(2,c.AnsiPos(")")-2);
        if(s == c)
        {
            tvRank->Selected = tvRank->Items->Item[i];
            break;
        }
    }
}
//---------------------------------------------------------------------------

__fastcall TfrmRank::TfrmRank(TComponent* Owner)
       : TRecBaseForm(Owner,euSdRank,"")
{
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::FormShow(TObject *Sender)
{
    FillGridWithData();
    ClearControl(false);
    muFirstClick(Sender);    
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::tvRankChange(TObject *Sender,
      TTreeNode *Node)
{
    AnsiString s;
    if(Node == tvRank->Items->Item[0])
    {
        ClearControl(false);
        return;
    }
    s = Node->Text;
    s = s.SubString(2,s.AnsiPos(")")-2);
    comServer->LocateByKey(WideString(s));
    if (comServer->Eof == 0)
      {
        GetDataFromComObject();
      }
    else
    ClearControl(false);

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

void __fastcall TfrmRank::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    TRecBaseForm::FormClose(Sender,Action);
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::muAddDetailClick(TObject *Sender)
{
       AnsiString  s;
       int tempLevel = tvRank->Selected->Level;
       if(tempLevel>4)
       {
       ::MessageBox(Handle,"该级别下不能再加明细!","职别管理",MB_OK);
        SetObjedtToBrowseState();
        ClearControl(false);
        SetControlState(caSave);
        GetDataFromComObject();
       return;
       }
       TRecBaseForm::muAddDetailClick(Sender);
       if(tempLevel == 0)
       {
           WriteFieldValue(comServer,fiRankUpperCode,"");
           WriteFieldValue(comServer,fiRankLevel,AnsiString(tempLevel+1));
       }
       else
       {
           s = tvRank->Selected->Text;
           s = s.SubString(2,s.AnsiPos(")")-2);
           lblUpperCode->Caption=s;
           lbRankUpperCode->Caption=s;
           WriteFieldValue(comServer,fiRankUpperCode,s);
           WriteFieldValue(comServer,fiRankLevel,AnsiString(tempLevel+1));
        }
        lbRankLevel->Caption=GetFieldValue(fiRankLevel);


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

void __fastcall TfrmRank::muEditDetailClick(TObject *Sender)
{
    AnsiString  s;
    if(tvRank->Selected->Level == 0)
    {
        ::MessageBox(Handle,"当前是根节点,不能修改.","操作错误",MB_OK|MB_ICONSTOP);
        return;
    }
    TRecBaseForm::muEditDetailClick(Sender);
/*    s = tvRank->Selected->Parent->Text;
    if (tvRank->Selected->Parent->Level == 0)
       //当选择的节点的父节点是根节点时
       s = "";
    else
       s = s.SubString(2,s.AnsiPos(")")-2);
    WriteFieldValue(comServer,fiRankUpperCode,s);
 */
}
//---------------------------------------------------------------------------

void __fastcall TfrmRank::muDeleteDetailClick(TObject *Sender)
{
    if(tvRank->Selected->Level == 0)
    {
        ::MessageBox(Handle,"当前是根节点,不能删除.","操作错误",MB_OK|MB_ICONSTOP);
        return;
    }

    if(tvRank->Selected->HasChildren)
    {
        if(::MessageBox(Handle,"该分类码下包含有子分类码,\n本操作将会删除它的全部子分类码。",
                      "注意", MB_YESNO|MB_ICONQUESTION) == IDYES)
        {
              DeleteDetailRecord();
//             DeleteAllChildren(tvRank->Selected);
            //如果删除根节点下的所有分类节点
            if (tvRank->Items->Count > 1)
            {
               comServer->Query();
               FillGridWithData();
               comServer->MoveFirst();
               GetDataFromComObject();
            }
            else
               ClearControl(false);
            return;
        }
    }
    else
    TRecBaseForm::muDeleteDetailClick(Sender);
    //如果删除根节点下的所有分类节点
    if (tvRank->Items->Count == 1)
    {
       ClearControl(false);
    }
}
//---------------------------------------------------------------------------






void __fastcall TfrmRank::muSaveClick(TObject *Sender)
{
    AnsiString tempst;
    tempst= lblUpperCode->Caption+seRankItem->Text;
    if(tempst.Length()>18)
    {
       ::MessageBox(Handle,"上级编码长度将超过18.","操作错误",MB_OK|MB_ICONSTOP);
    }
    else
    {
      TRecBaseForm::muSaveClick(Sender);
       comServer->LocateByKey(WideString(tempst));
       GetDataFromComObject();
    }

}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::DeleteAllChildren(TTreeNode *Node)
{
 AnsiString s;
 if(Node->HasChildren)
  {
   for (int i=0;i<Node->Count;i++)  //删除子项  ;
      DeleteAllChildren(Node->Item[i]);
  }
 else
 {
  s = Node->Text;
  s = s.SubString(2,s.AnsiPos(")")-2);
  comServer->LocateByKey(WideString(s));
  comServer->Delete();
  Node->Delete();
 }
}

⌨️ 快捷键说明

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