dept.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 498 行 · 第 1/2 页

CPP
498
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Dept.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"

TfrmDept *frmDept;
//---------------------------------------------------------------------------

__fastcall TfrmDept::TfrmDept(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
       : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
   InitTierLen(MidCode);
   l_Level=0;
   l_UpperCode="";
   ClearControl(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDept::ClearControl(bool BringToNext)
{
    if(BringToNext)
       return;
    seDeptItem->Text = "";
    seDeptName->Text = "";
    seDeptLinkman->Text="";
    seDeptAddr->Text="";
    seDeptTel->Text="";
    seDeptFax->Text="";
    seDeptEmail->Text="";
    seDeptZip->Text="";
    memDeptDesc->Text= "";
    chkDeptEnd->Checked = false;
}
//---------------------------------------------------------------------------

void __fastcall TfrmDept::GetDataFromComObject()
{


  l_UpperCode=GetFieldValue("DeptUpperCode");
  seDeptItem->Text= GetFieldValue("DeptCode");
  seDeptName->Text= GetFieldValue("DeptName");
  seDeptLinkman->Text= GetFieldValue("DeptLinkman");
  seDeptAddr->Text= GetFieldValue("DeptAddr");
  seDeptTel->Text= GetFieldValue("DeptTel");
  seDeptFax->Text= GetFieldValue("DeptFax");
  seDeptEmail->Text= GetFieldValue("DeptEmail");
  seDeptZip->Text= GetFieldValue("DeptZip");
  memDeptDesc->Text= GetFieldValue("DeptDesc");
  chkDeptEnd->Checked=(GetFieldValue("DeptEnd")=="1"?true:false);

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

void __fastcall TfrmDept::SendDataToComObject()
{
    AnsiString strLevel, strErr,strTemp;
    int Level;
    l_Level= tvDept->Selected->Level;
    Level=l_Level.ToInt();
    if(CurrentState==4)
      Level++;
    //输入的代码长度必须等于设定长度
//    strTemp=seDeptItem->Text;
//    if (strTemp.Length() != TierLen[Level])
//    {
//     strErr="本级编码长度必须为:  "+AnsiString(TierLen[Level]);
//     throw Exception(strErr.c_str());
//    }
    GetDeptInsideCode();
    SetFieldValue("DeptCode",seDeptItem->Text);
    SetFieldValue("DeptCompose",l_UpperCode+l_Item);
    SetFieldValue("DeptUpperCode",l_UpperCode);
    SetFieldValue("DeptLevel",Trim(l_Level));
    SetFieldValue("DeptItem",Trim(l_Item));       // DeptItem

    SetFieldValue("DeptName",Trim(seDeptName->Text));       // DeptName
    SetFieldValue("DeptLinkman",Trim(seDeptLinkman->Text)); // DeptLinkman
    SetFieldValue("DeptAddr",Trim(seDeptAddr->Text));       // DeptAddr
    SetFieldValue("DeptTel",Trim(seDeptTel->Text));         // DeptTel
    SetFieldValue("DeptFax",Trim(seDeptFax->Text));         // DeptFax
    SetFieldValue("DeptEmail",Trim(seDeptEmail->Text));     // DeptEmail
    SetFieldValue("DeptZip",Trim(seDeptZip->Text));         // DeptLinkman
    SetFieldValue("DeptDesc",Trim(memDeptDesc->Text));      // DeptDesc
    SetFieldValue("DeptEnd",chkDeptEnd->Checked?"1":"0");
}
//---------------------------------------------------------------------------

void __fastcall TfrmDept::WaitUserInput()
{
    seDeptItem->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TfrmDept::RefreshGridData(int mAction)
{
    AnsiString  tempText;
    TTreeNode *TempNode;
    if (mAction == 0)
    {
        if(tvDept->Selected)
        {
          tempText = "(" + GetFieldValue("DeptCode") + ")" + GetFieldValue("DeptName");
          TempNode=tvDept->Items->AddChild(tvDept->Selected,tempText);
          tvDept->Selected=TempNode;

            if(GetFieldValue("DeptEnd")=="1")
            {
             TempNode->StateIndex=1;
             TempNode->SelectedIndex=1;
            }
            else
            {
             TempNode->StateIndex=-1;
             TempNode->SelectedIndex=-1;
            }
            tvDept->Selected->Expanded = true;
        }
    }
    else if(mAction == 1)
    {

        if(tvDept->Selected->HasChildren)
        {   //如果有子节点,则刷新一次.
            comServer->Query();
            FillGridWithData();
        }
        else
        {
            tvDept->Selected->Text = "(" + GetFieldValue("DeptCode") + ")"
                + GetFieldValue("DeptName");
            if(GetFieldValue("DeptEnd")=="1")
            {
             tvDept->Selected->StateIndex=1;
             tvDept->Selected->SelectedIndex=1;
            }
            else
            {
             tvDept->Selected->StateIndex=-1;
             tvDept->Selected->SelectedIndex=-1;
            }
        }


    }
    else if(mAction == 2)
    {
        tvDept->Items->Delete(tvDept->Selected);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmDept::FillGridWithData()
{
     AnsiString  tempText;
     static TTreeNode* TempNode[10];
     int mLevel;

     TreeFresh=true; //更新树,不执行Change事件
     tvDept->Items->Clear();
     TreeFresh=false;
     TempNode[0]=tvDept->Items->Add(NULL,"所有的部门");
     TempNode[0]->StateIndex=-1;
     TempNode[0]->SelectedIndex=-1;
       comServer->MoveFirst();

     while (comServer->Eof == 0)
     {
      mLevel = StrToInt(GetFieldValue("DeptLevel"));
        if(mLevel <= 0 || mLevel > 18)
        {
            ::MessageBox(Handle,"部门层级码的级别必须在1和18之间。","错误",MB_OK|MB_ICONSTOP);
            comServer->MoveNext();
            continue;
        }
        for(int i=0;i<8;i++)
        {
          if(TempNode[mLevel-1]->Text=="")
              mLevel--;
        }
      tempText = "(" + GetFieldValue("DeptCode") + ")" + GetFieldValue("DeptName");
        TempNode[mLevel] = tvDept->Items->AddChild(TempNode[mLevel-1],tempText);
        if(GetFieldValue("DeptEnd")=="1")
        {
         TempNode[mLevel]->StateIndex=1;
         TempNode[mLevel]->SelectedIndex=1;
        }
        else
        {
         TempNode[mLevel]->StateIndex=-1;
         TempNode[mLevel]->SelectedIndex=-1;
        }
        comServer->MoveNext();
     }
//     tvDept->Selected=TempNode[0];
//     TempNode[0]->Expand(false);
     //展开所有的节点。
     if (tvDept->Items->Count > 0)
     {
        tvDept->FullExpand();
        comServer->MoveFirst();
        if(comServer->RecordCount>0)
          GetDataFromComObject();
     }

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

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

void __fastcall TfrmDept::TreeViewLocation()
{
    AnsiString s,c;
    s = GetFieldValue("DeptCode");
    for(int i = 1 ; i < tvDept->Items->Count ; i ++)
    {
        c = tvDept->Items->Item[i]->Text;    //取关键字
        c = c.SubString(2,c.AnsiPos(")")-2);
        if(s == c)
        {
            tvDept->Selected = tvDept->Items->Item[i];
            break;
        }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmDept::FormShow(TObject *Sender)
{
    FillGridWithData();
    comServer->MoveFirst();

}
//---------------------------------------------------------------------------
void __fastcall TfrmDept::tvDeptChange(TObject *Sender,TTreeNode *Node)
{
    ClearControl(false);
    AnsiString s;
    if (TreeFresh)

⌨️ 快捷键说明

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