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