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 + -
显示快捷键?