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

📄 rptfilter.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "RptFilter.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "SDGrid"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmRptFilter *frmRptFilter;
#include "sdappserver_tlb.h"
//---------------------------------------------------------------------------
__fastcall TfrmRptFilter::TfrmRptFilter(TComponent* Owner)
        : TRecBaseForm(Owner,euSdRptFilter,"")
{
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmRptFilter::GetFieldValue(int FieldIndex)
{
    WideString S;
    S = ReadFieldValue(comServer,FieldIndex);
    return(S);
}

//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
//     FillComboBox(scRptFilterField,"select VField=VFieldName+space(18-len(VFieldName))+'|'+RTrim(VFieldDesc),VFieldName,RTrim(VFieldDesc)as VFieldDesc from sdVField where VFieldView='"+scRptFilterTemplet->ItemData[cbItem2]+"' order by VFieldName","VField","VFieldName","VFieldDesc");
      seRptFilterName->Text ="";
      scRptFilterField->ItemIndex=-1;
      scRptFilterType->Text    ="";
      seRptFilterNo->Text  ="0";
      chkRptFilterBtn->Checked =false;         //是否有Button
      scRptFilterFormID->ItemIndex=-1;     //查询Form ID
//      seRptFilterWhere->Text   ="";     //过滤条件
      chkRptFilterWait->Checked =false;     //是否需启动等待Form
    }
}

//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::GetDataFromComObject()
{
    scRptFilterField->LocateKey(GetFieldValue(fiRptFilterField));
    scRptFilterType->LocateKey(GetFieldValue(fiRptFilterType));
    seRptFilterName->Text =GetFieldValue(fiRptFilterName);
    seRptFilterNo->Text =GetFieldValue(fiRptFilterNo);
    chkRptFilterBtn->Checked=GetFieldValue(fiRptFilterBtn)=="1"? true:false;
    scRptFilterFormID->LocateKey(GetFieldValue(fiRptFilterFormID));
    chkRptFilterWait->Checked=GetFieldValue(fiRptFilterWait)=="1"? true:false;
    sgRptFilterType->LocateGrid(2,scRptFilterField->ItemData[cbItem2]);
}

//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::SendDataToComObject()
{
    if(seRptFilterNo->Text.IsEmpty()==true)
          throw Exception("行号不能为空");
    WriteFieldValue(comServer,fiRptFilterTemplet,WideString(scRptFilterTemplet->Text));
    WriteFieldValue(comServer,fiRptFilterName,WideString(seRptFilterName->Text));
    WriteFieldValue(comServer,fiRptFilterField,WideString(scRptFilterField->ItemData[cbItem2]));
    WriteFieldValue(comServer,fiRptFilterType,WideString(scRptFilterType->ItemData[1]));
    WriteFieldValue(comServer,fiRptFilterNo,WideString(seRptFilterNo->Text));
    WriteFieldValue(comServer,fiRptFilterBtn,chkRptFilterBtn->Checked ?"1":"0");
    WriteFieldValue(comServer,fiRptFilterFormID,WideString(scRptFilterFormID->ItemData[cbItem2]));
    WriteFieldValue(comServer,fiRptFilterWait,chkRptFilterWait->Checked ?"1":"0");
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::WaitUserInput()
{
    if(seRptFilterNo->Enabled)
    seRptFilterNo->SetFocus();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmRptFilter::GetDataToGrid()
{
    AnsiString  s;
    scRptFilterType->LocateKey(GetFieldValue(fiRptFilterType));
    s = "\t" + GetFieldValue(fiRptFilterNo) +
        "\t" + GetFieldValue(fiRptFilterField)+
        "\t" + GetFieldValue(fiRptFilterName) +
        "\t" + scRptFilterType->Text ;
    return(s);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::RefreshGridData(int mAction)
{
    AnsiString ItemStr;

    ItemStr = GetDataToGrid();
    // 新增
    if (mAction ==  0)
    {
        sgRptFilterType->AddItem(ItemStr);
    }
    // 修改
    else if(mAction == 1)
    {
        int i = sgRptFilterType->Row;
        sgRptFilterType->RemoveItem(i);
        sgRptFilterType->AddItem(ItemStr,i);
    }
    // 删除    0
    else if(mAction ==  2)
    {
        sgRptFilterType->RemoveItem(sgRptFilterType->Row);
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::FillGridWithData()
{
    AnsiString ItemStr;
    comServer->MoveFirst();
    sgRptFilterType->RowCount  = 1;
    while(comServer->Eof == 0)
    {
        ItemStr=GetDataToGrid();
        sgRptFilterType->AddItem(ItemStr);
        comServer->MoveNext();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRptFilter::InitEditControl()
{
//    ClientGroup->AddComponent(2,true,true,false, scRptFilterTemplet,scRptFilterTemplet->Name);
    ClientGroup->AddComponent(2,false,false,true,FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(2,true,true,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,true,true,false, sgRptFilterType,sgRptFilterType->Name);
    FillComboBox(scRptFilterTemplet,"select RptTemplethCode,RptTemplethView from sdRptTempleth order by RptTemplethCode","RptTemplethCode","RptTemplethView");
    FillComboBox(scRptFilterFormID,"select FormDesc=FormID+space(12-len(FormID))+'|'+FormName,FormID from sdForm  order by FormID","FormDesc","FormID");
    scRptFilterType->AddItems("字符型","1");
    scRptFilterType->AddItems("数字型","2");
    scRptFilterType->AddItems("布尔型","3");
    ClearControl(false);
}
//---------------------------------------------------------------------------void __fastcall TfrmRptFilter::scRptFilterTempletClick(TObject *Sender)
void __fastcall TfrmRptFilter::scRptFilterTempletClick(TObject *Sender)
{
    AnsiString s;
    s = Trim(scRptFilterTemplet->Text);
    if(s.IsEmpty())
      return;
    if(LastRptFilterName==s)
      return;
    LastRptFilterName=s;
    if(scRptFilterTemplet->ItemIndex==-1)
    {
      MessageDlg("模板名称 "+scRptFilterTemplet->Text+"不存在",mtWarning,TMsgDlgButtons()<<mbOK,0);
      scRptFilterTemplet->LocateKey(LastRptFilterName);
    }
    else
    {
      FillComboBox(scRptFilterField,"select VField=VFieldName+space(18-len(VFieldName))+'|'+RTrim(VFieldDesc),VFieldName,RTrim(VFieldDesc)as VFieldDesc from sdVField where VFieldView='"+scRptFilterTemplet->ItemData[cbItem2]+"' order by VFieldName","VField","VFieldName","VFieldDesc");
      scRptFilterTemplet->LocateKey(scRptFilterTemplet->Text);
      s = " RptFilterTemplet = '" + s + "'";
      comServer->FilterString = WideString(s);
      comServer->Query();
      FillGridWithData();
      comServer->MoveFirst();
      GetDataFromComObject();
     }

}
//---------------------------------------------------------------------------


void __fastcall TfrmRptFilter::sgRptFilterTypeClick(TObject *Sender)
{
     comServer->LocateByKey(WideString(sgRptFilterType->TextMatrix[sgRptFilterType->Row][2]));
    if (!comServer->Eof)
      GetDataFromComObject();

}
//---------------------------------------------------------------------------


void __fastcall TfrmRptFilter::FormShow(TObject *Sender)
{
  if(!FilterTemplet.IsEmpty())
     scRptFilterTemplet->LocateKey(FilterTemplet);
  scRptFilterTempletClick(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TfrmRptFilter::scRptFilterFieldClick(TObject *Sender)
{
 seRptFilterName->Text=scRptFilterField->ItemData[cbItem3];
}
//---------------------------------------------------------------------------


void __fastcall TfrmRptFilter::SetFilterTemplet(AnsiString value)
{
        if(FFilterTemplet != value) {
                FFilterTemplet = value;
        }
}
AnsiString __fastcall TfrmRptFilter::GetFilterTemplet()
{
        return FFilterTemplet;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -