📄 rpttype.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "RptType.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "RecBaseForm"
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmRptType *frmRptType;
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmRptType::GetFieldValue(int FieldIndex)
{
WideString S;
S = ReadFieldValue(comServer,FieldIndex);
return(S);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::ClearControl(bool BringToNext)
{
if(!BringToNext)
{
lblUpperCode->Caption="";
lbRptTypeLevel->Caption="";
seRptTypeItem-> Text = "";
seRptTypeName-> Text = "";
memRptTypeDesc->Text = "";
seRptTypeEnd->Checked = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::GetDataFromComObject()
{
lblUpperCode->Caption=GetFieldValue(fiRptTypeUpperCode);
lbRptTypeLevel->Caption=GetFieldValue(fiRptTypeLevel);
seRptTypeItem->Text = GetFieldValue(fiRptTypeItem);
seRptTypeName->Text = GetFieldValue(fiRptTypeName);
memRptTypeDesc->Text = GetFieldValue(fiRptTypeDesc);
seRptTypeEnd->Checked= GetFieldValue(fiRptTypeEnd) == "1";
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::SendDataToComObject()
{
WriteFieldValue(comServer,fiRptTypeUpperCode,lblUpperCode->Caption);
WriteFieldValue(comServer,fiRptTypeLevel,lbRptTypeLevel->Caption);
WriteFieldValue(comServer,fiRptTypeItem,seRptTypeItem->Text); // RptTypeItem
WriteFieldValue(comServer,fiRptTypeName,seRptTypeName->Text); // RptTypeName
WriteFieldValue(comServer,fiRptTypeDesc,memRptTypeDesc->Text); // RptTypeDesc
WriteFieldValue(comServer,fiRptTypeEnd,WideString(seRptTypeEnd->Checked ? "1":"0"));
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::WaitUserInput()
{
if(seRptTypeItem->Enabled)
seRptTypeItem->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::RefreshGridData(int mAction)
{
AnsiString tempText;
if (mAction == 0)
{
if(tvRptType->Selected)
{
tempText = "(" + GetFieldValue(fiRptTypeCode) + ")" + GetFieldValue(fiRptTypeName);
tvRptType->Items->AddChild(tvRptType->Selected,tempText);
tvRptType->Selected->Expanded = true;
}
}
else if(mAction == 1)
{
if(tvRptType->Selected->HasChildren)
{ //如果有子节点,则刷新一次.
comServer->Query();
FillGridWithData();
}
else
tvRptType->Selected->Text = "(" + GetFieldValue(fiRptTypeCode) + ")"
+ GetFieldValue(fiRptTypeName);
}
else if(mAction == 2)
{
tvRptType->Items->Delete(tvRptType->Selected);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::FillGridWithData()
{
AnsiString tempText;
TTreeNode* TempNode[7];
int mLevel;
tvRptType->Items->Clear();
TempNode[0]=tvRptType->Items->Add(NULL,"所有报表分类");
comServer->MoveFirst();
while (comServer->Eof == 0)
{
mLevel = StrToInt(GetFieldValue(fiRptTypeLevel));
if( (mLevel <= 0) || (mLevel > 7))
{
::MessageBox(Handle,"区域层级的级别不能大于7。","错误",MB_OK|MB_ICONSTOP);
comServer->MoveNext();
continue;
}
tempText = "(" + GetFieldValue(fiRptTypeCode) + ")" + GetFieldValue(fiRptTypeName);
TempNode[mLevel] = tvRptType->Items->AddChild(TempNode[mLevel-1],tempText);
comServer->MoveNext();
}
tvRptType->Selected=TempNode[0];
//展开所有的节点。
if (tvRptType->Items->Count > 0)
{
tvRptType->FullExpand();
comServer->MoveFirst();
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::InitEditControl()
{
ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(2,true,true,false, Panel1,Panel1->Name);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::TreeViewLocation()
{
AnsiString s,c;
s = GetFieldValue(fiRptTypeCode);
for(int i = 1 ; i < tvRptType->Items->Count ; i ++)
{
c = tvRptType->Items->Item[i]->Text; //取关键字
c = c.SubString(2,c.AnsiPos(")")-2);
if(s == c)
{
tvRptType->Selected = tvRptType->Items->Item[i];
break;
}
}
}
//---------------------------------------------------------------------------
__fastcall TfrmRptType::TfrmRptType(TComponent* Owner)
: TRecBaseForm(Owner,euSdRptType,"")
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::FormShow(TObject *Sender)
{
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::tvRptTypeChange(TObject *Sender,
TTreeNode *Node)
{
AnsiString s;
if(Node == tvRptType->Items->Item[0])
{
return;
}
s = Node->Text;
s = s.SubString(2,s.AnsiPos(")")-2);
comServer->LocateByKey(WideString(s));
if (comServer->Eof == 0)
{
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::FormClose(TObject *Sender,
TCloseAction &Action)
{
TRecBaseForm::FormClose(Sender,Action);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::muAddDetailClick(TObject *Sender)
{
AnsiString s;
if(seRptTypeEnd->Checked==true)
{
::MessageBox(Handle,"当前是末级,不能增加下一级.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
else
{
TRecBaseForm::muAddDetailClick(Sender);
int tempLevel = tvRptType->Selected->Level;
if(tempLevel == 0)
{
WriteFieldValue(comServer,fiRptTypeUpperCode,"");
// WriteFieldValue(comServer,fiRptTypeLevel,AnsiString(tempLevel+1));
lblUpperCode->Caption = "";
lbRptTypeLevel->Caption=AnsiString(tempLevel+1);
}
else
{
s = tvRptType->Selected->Text;
s = s.SubString(2,s.AnsiPos(")")-2);
lblUpperCode->Caption=s;
lbRptTypeLevel->Caption=IntToStr(tvRptType->Selected->Level+1);
WriteFieldValue(comServer,fiRptTypeUpperCode,s);
// WriteFieldValue(comServer,fiRptTypeLevel,AnsiString(tempLevel+1));
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::muEditDetailClick(TObject *Sender)
{
AnsiString s;
if(tvRptType->Selected->Level == 0)
{
::MessageBox(Handle,"当前是根节点,不能修改.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
TRecBaseForm::muEditDetailClick(Sender);
s = tvRptType->Selected->Parent->Text;
if (tvRptType->Selected->Parent->Level == 0)
//当选择的节点的父节点是根节点时
s = "";
else
s = s.SubString(2,s.AnsiPos(")")-2);
WriteFieldValue(comServer,fiRptTypeUpperCode,s);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::muDeleteDetailClick(TObject *Sender)
{
if(tvRptType->Selected->Level == 0)
{
::MessageBox(Handle,"当前是根节点,不能删除.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
if(tvRptType->Selected->HasChildren)
{
if(::MessageBox(Handle,"该分类码下包含有子分类码,\n本操作将会删除它的全部子分类码。",
"注意", MB_YESNO|MB_ICONQUESTION) == IDYES)
{
TRecBaseForm::muDeleteDetailClick(Sender);
//如果删除根节点下的所有分类节点
if (tvRptType->Items->Count > 1)
{
comServer->Query();
FillGridWithData();
comServer->MoveFirst();
GetDataFromComObject();
}
else
ClearControl(false);
return;
}
}
TRecBaseForm::muDeleteDetailClick(Sender);
//如果删除根节点下的所有分类节点
if (tvRptType->Items->Count == 1)
{
ClearControl(false);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::muCancelDetailClick(TObject *Sender)
{
TRecBaseForm::muCancelClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptType::muSaveClick(TObject *Sender)
{
AnsiString tempst;
tempst= lblUpperCode->Caption+seRptTypeItem->Text;
if(tempst.Length()>18)
{
::MessageBox(Handle,"上级编码长度将超过18.","操作错误",MB_OK|MB_ICONSTOP);
}
else
{
TRecBaseForm::muSaveClick(Sender);
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -