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

📄 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;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmRank::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
      memUpperCode->Text="";
      seRankItem->Text  ="";
      seRankName-> Text = "";
      memRankDesc->Text = "";
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::GetDataFromComObject()
{
    memUpperCode->Text =  GetFieldValue("RankUpperCode");
    seRankItem->Text   =  GetFieldValue("RankItem");
    seRankName->Text   =  GetFieldValue("RankName");
    memRankDesc->Text  =  GetFieldValue("RankDesc");
    TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::SendDataToComObject()
{
    AnsiString RankCode=memUpperCode->Text.Trim()+seRankItem->Text.Trim();
    SetFieldValue("RankUpperCode",memUpperCode->Text);   // RankItem
    SetFieldValue("RankItem",seRankItem->Text);   // RankItem
    SetFieldValue("RankCode",RankCode);   // RankItem
    SetFieldValue("RankName",seRankName->Text);   // RankName
    SetFieldValue("RankDesc",memRankDesc->Text);   // RankDesc
}
//---------------------------------------------------------------------------
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("RankCode") + ")" + GetFieldValue("RankName");
          tvRank->Items->AddChild(tvRank->Selected,tempText);
       }
    }
    else if(mAction == 1)
    {
       if(tvRank->Selected->HasChildren)
       {  //如果有子节点,则刷新一次.
          comServer->Query();
          FillGridWithData();
       }
       else
          tvRank->Selected->Text = "(" + GetFieldValue("RankCode") + ")"
             + GetFieldValue("RankName");
    }
    else if(mAction == 2)
    {
       tvRank->Items->Delete(tvRank->Selected);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::FillGridWithData()
{
    AnsiString  tempText;
    TTreeNode* TempNode[18];
    int mLevel;
    tvRank->Items->Clear();
    TempNode[0] = tvRank->Items->Add(NULL,"所有职务");
    comServer->MoveFirst();
    while(comServer->Eof == 0)
    {
      mLevel = StrToInt(GetFieldValue("RankLevel"));
      if((mLevel <= 0) || (mLevel > 18))
      {
         ::MessageBox(Handle,"职务层级的级别不能大于18","错误",MB_OK|MB_ICONSTOP);
         comServer->MoveNext();
         continue;
      }
      tempText = "(" + GetFieldValue("RankCode") + ")" + GetFieldValue("RankName");
      TempNode[mLevel] = tvRank->Items->AddChild(TempNode[mLevel-1],tempText);
      comServer->MoveNext();
    }
    tvRank->Selected=TempNode[0];
    //展开所有的节点。
    if(tvRank->Items->Count > 0)
    {
      TempNode[0]->Expand(true);
      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,true,true,true,memUpperCode,memUpperCode->Name);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::TreeViewLocation()
{
    AnsiString s,c;
    s = GetFieldValue("RankCode");
    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, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
       : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
}
//---------------------------------------------------------------------------

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 > 18)
    {
      ::MessageBox(Handle,"职务资料的层级码不能大于18","操作错误",MB_OK);
      SetObjedtToBrowseState();
      ClearControl(false);
      SetControlState(caSave);
      GetDataFromComObject();
      return;
    }
    TRecBaseForm::muAddDetailClick(Sender);
    if(tempLevel == 0)
    {
      SetFieldValue("RankUpperCode","");
      SetFieldValue("RankLevel",AnsiString(tempLevel+1));
    }
    else
    {
      s = tvRank->Selected->Text;
      s = s.SubString(2,s.AnsiPos(")")-2);
      memUpperCode->Text=s;
      SetFieldValue("RankUpperCode",s);
      SetFieldValue("RankLevel",AnsiString(tempLevel+1));
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::muEditDetailClick(TObject *Sender)
{
    AnsiString  s;
    if(tvRank->Selected->Level == 0)
    {
       ::MessageBox(Handle,"当前是根节点,不能修改.","操作错误",MB_OK|MB_ICONSTOP);
       return;
    }
    s=GetFieldValue("RankLevel");
    TRecBaseForm::muEditDetailClick(Sender);
    SetFieldValue("RankLevel",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)
       {
          TRecBaseForm::muDeleteDetailClick(Sender);
          //如果删除根节点下的所有分类节点
          if(tvRank->Items->Count > 1)
          {
             comServer->Query();
             FillGridWithData();
             comServer->MoveFirst();
             GetDataFromComObject();
          }
          else
             ClearControl(false);
          return;
       }
    }
    else
    {
       TRecBaseForm::muDeleteDetailClick(Sender);
       GetDataFromComObject();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRank::muSaveClick(TObject *Sender)
{
    AnsiString tempst;
    tempst = memUpperCode->Text + seRankItem->Text;
    if(tempst.Length()>18)
    {
       ::MessageBox(Handle,"职务编码的长度不能大于18","操作错误",MB_OK|MB_ICONSTOP);
    }
    else
    {
       TRecBaseForm::muSaveClick(Sender);
       comServer->LocateByKey(WideString(tempst));
       GetDataFromComObject();
    }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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