📄 rank.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 + -