📄 query.cpp
字号:
//---------------------------------------------------------------------------
#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;
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmQuery::GetFieldValue(int FieldIndex)
{
AnsiString S;
S = ReadFieldValue(comServer,FieldIndex);
return(S);
}
//---------------------------------------------------------------------------
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(fiQueryCode);
seQueryType->Text=GetFieldValue(fiQueryType);
scQueryFormName->LocateKey(GetFieldValue(fiQueryFormName));
seQueryName->Text=GetFieldValue(fiQueryName);
seQueryDesc->Text=GetFieldValue(fiQueryDesc);
seQueryCaption->Text=GetFieldValue(fiQueryCaption);
seQueryFormID->Text=GetFieldValue(fiQueryFormID);
seQueryTimes->Text=GetFieldValue(fiQueryTimes);
seQueryNearNo->Text=GetFieldValue(fiQueryNearNo);
seQueryUser->Text=GetFieldValue(fiQueryUser);
seQuerySysDate->Text=GetFieldValue(fiQuerySysDate);
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuery::SendDataToComObject()
{
WriteFieldValue(comServer,fiQueryCode,seQueryCode->Text);
WriteFieldValue(comServer,fiQueryType,seQueryType->Text);
WriteFieldValue(comServer,fiQueryName,seQueryName->Text);
WriteFieldValue(comServer,fiQueryDesc,seQueryDesc->Text);
WriteFieldValue(comServer,fiQueryCaption,seQueryCaption->Text);
WriteFieldValue(comServer,fiQueryFormID,seQueryFormID->Text);
WriteFieldValue(comServer,fiQueryFormName,scQueryFormName->Text);
WriteFieldValue(comServer,fiQueryTimes,seQueryTimes->Text);
WriteFieldValue(comServer,fiQueryNearNo,seQueryNearNo->Text);
WriteFieldValue(comServer,fiQueryUser,seQueryUser->Text);
WriteFieldValue(comServer,fiQuerySysDate,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(fiQueryCode)
+ ")" + GetFieldValue(fiQueryName);
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(fiQueryCode) + ")" + GetFieldValue(fiQueryName);
}
}
// 删除
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=NewResultSet();
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(fiQueryType);
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(fiQueryCode) + ")" +GetFieldValue(fiQueryName));
TempNode->StateIndex = 1;
TempNode->SelectedIndex = 1;
TempNode->Text="(" + GetFieldValue(fiQueryCode) + ")" + GetFieldValue(fiQueryName);
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(scQueryFormName,"select FormName,FormID,FormCaption,FormDesc from sdForm where Formtype=2",
"FormName","FormID","FormCaption","FormDesc");
}
//---------------------------------------------------------------------------
__fastcall TfrmQuery::TfrmQuery(TComponent* Owner)
: TRecBaseForm(Owner,euSdQuery,"")
{
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(fiQueryCode);
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -