query.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 375 行
CPP
375 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Query.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "RecBaseForm"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmQuery *frmQuery;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::ClearControl(bool BringToNext)
{
if (!BringToNext)
{
seQueryCode->Text="";
seQueryType->Text="";
seQueryName->Text="";
seQueryDesc->Text="";
seQueryCaption->Text="";
seQueryFormID->Text="";
scQueryFormName->ItemIndex=-1;
seQueryTimes->Text="0";
seQueryNearNo->Text="0";
seQueryUser->Text=g_sdUserCode;
seQuerySysDate->Text="";
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::GetDataFromComObject()
{
seQueryCode->Text=GetFieldValue("QueryCode");
seQueryType->Text=GetFieldValue("QueryType");
scQueryFormName->LocateKey(GetFieldValue("QueryFormName"));
seQueryName->Text=GetFieldValue("QueryName");
seQueryDesc->Text=GetFieldValue("QueryDesc");
seQueryCaption->Text=GetFieldValue("QueryCaption");
seQueryFormID->Text=GetFieldValue("QueryFormID");
seQueryTimes->Text=GetFieldValue("QueryTimes");
seQueryNearNo->Text=GetFieldValue("QueryNearNo");
seQueryUser->Text=GetFieldValue("QueryUser");
seQuerySysDate->Text=GetFieldValue("QuerySysDate");
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::SendDataToComObject()
{
SetFieldValue("QueryCode",seQueryCode->Text);
SetFieldValue("QueryType",seQueryType->Text);
SetFieldValue("QueryName",seQueryName->Text);
SetFieldValue("QueryDesc",seQueryDesc->Text);
SetFieldValue("QueryCaption",seQueryCaption->Text);
SetFieldValue("QueryFormID",seQueryFormID->Text);
SetFieldValue("QueryFormName",scQueryFormName->Text);
SetFieldValue("QueryTimes",seQueryTimes->Text);
SetFieldValue("QueryNearNo",seQueryNearNo->Text);
SetFieldValue("QueryUser",seQueryUser->Text);
SetFieldValue("QuerySysDate",seQuerySysDate->Text);
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::WaitUserInput()
{
seQueryCode->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::RefreshGridData(int mAction)
{
AnsiString TempText;
TTreeNode *TempNode;
// 新增
if (mAction == 0)
{
if(tvQuery->Selected)
{
if (tvQuery->Selected->StateIndex == 1)
{
ShowMessage("当前选择的不是分类节点,不能进行增加操作.");
return;
}
TempText = "(" + GetFieldValue("QueryCode")
+ ")" + GetFieldValue("QueryName");
TempNode = tvQuery->Selected;
TempNode = tvQuery->Items->AddChild(TempNode,TempText);
TempNode->StateIndex = 1;
TempNode->Text = TempText;
}
}
// 修改
else if(mAction == 1)
{
if(tvQuery->Selected)
{
if (tvQuery->Selected->StateIndex == 0)
{
ShowMessage("当前选择的是分类节点,不能进行修改操作.");
return;
}
TempNode=tvQuery->Selected;
TempNode->StateIndex = 1;
TempNode->Text = "(" + GetFieldValue("QueryCode") + ")" + GetFieldValue("QueryName");
}
}
// 删除
else if(mAction == 2)
{
if (tvQuery->Selected->StateIndex == 0)
{
ShowMessage("当前选择的是分类节点,不能进行删除操作.");
return;
}
tvQuery->Items->Delete(tvQuery->Selected);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::FillTreeWithType()
{
TTreeNode *TempNode[7];
int mLevel;
TComResultSet *RsQuType=new TComResultSet(Handle,g_ClientHandle);
tvQuery->Items->Clear();
TempNode[0]=tvQuery->Items->Add(NULL,"所有查询");
RsQuType->Open("select QuTypeCode,QuTypeName,QuTypeLevel,QuTypeEnd from sdQuType order by QuTypeCode,QuTypeLevel","");
RsQuType->MoveFirst();
while( RsQuType->Eof == 0 )
{
mLevel=RsQuType->FieldByName("QuTypeLevel").ToInt();
TempNode[mLevel] = tvQuery->Items->AddChild(TempNode[mLevel-1],"(" + RsQuType->FieldByName("QuTypeCode") + ")" +RsQuType->FieldByName("QuTypeName"));
if(RsQuType->FieldByName("QuTypeEnd")=="0")
TempNode[mLevel]->StateIndex = -1; //非末级节点
else
TempNode[mLevel]->StateIndex = 0; //末级节点
TempNode[mLevel]->Text= "(" + RsQuType->FieldByName("QuTypeCode") + ")"+RsQuType->FieldByName("QuTypeName");
RsQuType->MoveNext();
}
RsQuType->Close();
if (tvQuery->Items->Count > 0)
tvQuery->FullExpand();
delete RsQuType;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::FillGridWithData()
{
FillTreeWithType();
TTreeNode *TempNode;
comServer->MoveFirst();
while (comServer->Eof == 0)
{
AnsiString s,m;
s = GetFieldValue("QueryType");
for(int i = 1 ; i < tvQuery->Items->Count ; i ++)
{
m = tvQuery->Items->Item[i]->Text;
m = m.SubString(2,m.AnsiPos(")")-2);
if(s == m)
{
TempNode = tvQuery->Items->Item[i];
break;
}
}
TempNode= tvQuery->Items->AddChild(TempNode,"(" + GetFieldValue("QueryCode") + ")" +GetFieldValue("QueryName"));
TempNode->StateIndex = 1;
TempNode->SelectedIndex = 1;
TempNode->Text="(" + GetFieldValue("QueryCode") + ")" + GetFieldValue("QueryName");
comServer->MoveNext();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::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,seQueryType,seQueryType->Name);
ClientGroup->AddComponent(2,true,true,true,seQueryFormID,seQueryFormID->Name);
ClientGroup->AddComponent(2,true,true,true,seQueryNearNo,seQueryNearNo->Name);
ClientGroup->AddComponent(2,true,true,true,seQueryTimes,seQueryTimes->Name);
ClientGroup->AddComponent(2,true,true,true,seQueryUser,seQueryUser->Name);
ClientGroup->AddComponent(2,true,true,true,seQuerySysDate,seQuerySysDate->Name);
FillComboBox(Handle,scQueryFormName,"select FormName,FormID,FormCaption,FormDesc from sdForm where Formtype=2",
"FormName","FormID","FormCaption","FormDesc");
}
//---------------------------------------------------------------------------
__fastcall TfrmQuery::TfrmQuery(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
FillGridWithData();
ClearControl(false);
comServer->MoveFirst();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::tvQueryChange(TObject *Sender,
TTreeNode *Node)
{
AnsiString m;
if(Node == tvQuery->Items->Item[0])
return;
if(tvQuery->Selected==NULL)
return;
if(tvQuery->Selected->StateIndex == 0 )
return;
m = Node->Text;
m = m.SubString(2,m.AnsiPos(")")-2);
comServer->LocateByKey(WideString(m));
if (comServer->Eof == 0)
{
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::FormClose(TObject *Sender,
TCloseAction &Action)
{
TRecBaseForm::FormClose(Sender,Action);
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muAddDetailClick(TObject *Sender)
{
if(tvQuery->Selected==NULL)
return;
if(tvQuery->Selected->StateIndex != 0 )
{
::MessageBox(Handle,"只能在末级分类节点下增加查询","操作错误",MB_OK|MB_ICONSTOP);
return;
}
TRecBaseForm::muAddDetailClick(Sender);
//取分类码
AnsiString s;
s=tvQuery->Selected->Text;
s=s.SubString(2,s.Pos(")")-2);
seQueryType->Text=s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muEditDetailClick(TObject *Sender)
{
if(tvQuery->Selected==NULL)
return;
if(tvQuery->Selected->StateIndex != 1)
{
::MessageBox(Handle,"该节点是分类节点,不能修改.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
TRecBaseForm::muEditDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muDeleteDetailClick(TObject *Sender)
{
if(tvQuery->Selected==NULL)
return;
if(tvQuery->Selected->StateIndex != 1)
{
::MessageBox(Handle,"该节点是分类节点,不能删除.","操作错误",MB_OK|MB_ICONSTOP);
return;
}
if(::MessageBox(Handle,
"你真的要删除该物料编码吗?",
"注意",
MB_YESNO|MB_ICONQUESTION) == IDNO)
return;
TRecBaseForm::muDeleteDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muFirstClick(TObject *Sender)
{
TRecBaseForm::muFirstClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muPreviousClick(TObject *Sender)
{
TRecBaseForm::muPreviousClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muNextClick(TObject *Sender)
{
TRecBaseForm::muNextClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::muLastClick(TObject *Sender)
{
TRecBaseForm::muLastClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::FormCreate(TObject *Sender)
{
// FillGridWithData();
// ClearControl(false);
// comServer->MoveFirst();
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::scQueryFormNameClick(TObject *Sender)
{
if(scQueryFormName->ItemIndex > -1)
{
seQueryFormID->Text=scQueryFormName->ItemData[1];
seQueryName->Text=scQueryFormName->ItemData[2];
seQueryCaption->Text=scQueryFormName->ItemData[2];
seQueryDesc->Text=scQueryFormName->ItemData[3];
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::TreeViewLocation()
{
AnsiString s,c;
s = GetFieldValue("QueryCode");
for(int i = 0 ; i < tvQuery->Items->Count ; i ++)
{
if(tvQuery->Items->Item[i]->StateIndex == 1)
{
c = tvQuery->Items->Item[i]->Text; //取关键字
c = c.SubString(2,c.AnsiPos(")")-2);
if(s == c)
{
tvQuery->Selected = tvQuery->Items->Item[i];
break;
}
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?