⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 query.cpp

📁 速达开源ERP系统
💻 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 + -