📄 qurpt.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "QuRpt.h"
#include "sdenumtype.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDGrid"
#pragma link "SDEdit"
#pragma link "StdBaseForm"
#pragma resource "*.dfm"
TfrmQuRpt *frmQuRpt;
//---------------------------------------------------------------------------
__fastcall TfrmQuRpt::TfrmQuRpt(TComponent* Owner)
: TStdBaseForm(Owner)
{
RptFilter=NewDcomAppSvr(euSdRptFilter);
temRow=1;
m_CreateSqlString="";
scBool->Text ="";
scQuery->Text="";
seQuery->Text="";
sgQuery->Row=-1;
sgQuery->Cells[0][0] = "查询关系";
sgQuery->Cells[1][0] = "查询项目";
sgQuery->Cells[2][0] = "查询条件";
scQuery->AddItems("等于","=");
scQuery->AddItems("大于",">");
scQuery->AddItems("小于","<");
scQuery->AddItems("不大于","=>");
scQuery->AddItems("不小于",">=");
scQuery->AddItems("不等于","<>");
scQuery->ItemIndex=0;
}
__fastcall TfrmQuRpt::TfrmQuRpt(TComponent* Owner,AnsiString RptTemplet)
: TStdBaseForm(Owner)
{
FRptTemplet=RptTemplet;
RptFilter=NewDcomAppSvr(euSdRptFilter);
temRow=1;
m_CreateSqlString="";
scBool->Text ="";
seQuery->Text="";
sgQuery->Cells[0][0] = "查询关系";
sgQuery->Cells[1][0] = "查询项目";
sgQuery->Cells[2][0] = "查询条件";
scBool->AddItems(" 是","1");
scBool->AddItems(" 否","0");
scQuery->AddItems("等于","=");
scQuery->AddItems("大于",">");
scQuery->AddItems("小于","<");
scQuery->AddItems("不大于","<=");
scQuery->AddItems("不小于",">=");
scQuery->AddItems("不等于","<>");
scQuery->ItemIndex=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::FormCreate(TObject *Sender)
{
AnsiString m_Sql;
RptFilter->FilterString=WideString("RptFilterTemplet='"+FRptTemplet+"'");
RptFilter->OrderString=WideString("RptFilterField");
RptFilter->Query();
for(int i=0;i<RptFilter->RecordCount;i++)
{
RptFilter->LocateByIndex(i);
ListItem->Items->Strings[i]=ReadFieldValue(RptFilter,fiRptFilterName);
}
if(RptFilter->RecordCount>0)
{
RptFilter->MoveFirst();
ListItem->ItemIndex=0;
if(ReadFieldValue(RptFilter,fiRptFilterType)=="3")
{
scQuery->ItemIndex=0;
scQuery->Enabled=false;
seQuery->Visible=false;
Panel1->Visible=true;
scBool->ItemIndex=0;
}
else
{
Panel1->Visible=false;
scQuery->ItemIndex=0;
scQuery->Enabled=true;
seQuery->Visible=true;
if(ReadFieldValue(RptFilter,fiRptFilterBtn)=="1")
seQuery->ButtonVisible=true;
else
seQuery->ButtonVisible=false;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::btRemoveClick(TObject *Sender)
{
int i;
i=sgQuery->Row;
if(temRow==1)
return ;
for(;i<sgQuery->RowCount;i++)
{
if(i==1)
sgQuery->Cells[0][i]="";
else
sgQuery->Cells[0][i]=sgQuery->Cells[0][1+i];
sgQuery->Cells[1][i]=sgQuery->Cells[1][1+i];
sgQuery->Cells[2][i]=sgQuery->Cells[2][1+i];
}
temRow--;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::btReSetClick(TObject *Sender)
{
for(int i=1;i<sgQuery->RowCount;i++)
{
sgQuery->Cells[0][i]="";
sgQuery->Cells[1][i]="";
sgQuery->Cells[2][i]="";
}
scQuery->ItemIndex=0;
temRow=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::btOkClick(TObject *Sender)
{
for(int i=1;i<temRow;i++)
m_CreateSqlString=m_CreateSqlString+sgQuery->Cells[0][i]+sgQuery->Cells[1][i]+sgQuery->Cells[2][i];
m_CancelQuery=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::btCacelClick(TObject *Sender)
{
m_CancelQuery=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::btAddClick(TObject *Sender)
{
AnsiString YesNo;
if(ListItem->ItemIndex==-1)
return;
if(temRow==1&&RadioNull->Checked==false)
{
::MessageBox(Handle,"不能选择—或者、并且。","错误",MB_OK|MB_ICONSTOP);
return;
}
if(temRow!=1&&RadioNull->Checked==true)
{
::MessageBox(Handle,"请选择—或者、并且。","错误",MB_OK|MB_ICONSTOP);
return;
}
if(RadioNull->Checked==true)
YesNo=" ";
else if(RadioAnd->Checked==true)
YesNo=" and ";
else if(RadioOr->Checked==true)
YesNo=" or ";
sgQuery->Cells[0][temRow]=" "+YesNo+" ";
RptFilter->LocateByIndex(ListItem->ItemIndex);
sgQuery->Cells[1][temRow]=ReadFieldValue(RptFilter,fiRptFilterField);
if(ReadFieldValue(RptFilter,fiRptFilterType)=="3")
sgQuery->Cells[2][temRow]=scQuery->ItemData[1]+scBool->ItemData[1];
else
{
if(ReadFieldValue(RptFilter,fiRptFilterType)=="2")
sgQuery->Cells[2][temRow]=scQuery->ItemData[1]+seQuery->Text;
else
sgQuery->Cells[2][temRow]=scQuery->ItemData[1]+"'"+seQuery->Text+"'";
}
temRow++;
}
//---------------------------------------------------------------------------
void __fastcall TfrmQuRpt::ListItemClick(TObject *Sender)
{
RptFilter->LocateByIndex(ListItem->ItemIndex);
scQuery->ItemIndex=-1;
seQuery->Text="";
if(ReadFieldValue(RptFilter,fiRptFilterType)=="3")
{
scQuery->ItemIndex=0;
scQuery->Enabled=false;
seQuery->Visible=false;
Panel1->Visible=true;
scBool->ItemIndex=0;
}
else
{
Panel1->Visible=false;
scQuery->ItemIndex=0;
scQuery->Enabled=true;
seQuery->Visible=true;
if(ReadFieldValue(RptFilter,fiRptFilterType)=="2")
{
seQuery->DataType=dtNumber;
seQuery->CharType=ctNumeric;
}
else
{
seQuery->DataType=dtChar;
seQuery->CharType=ctNormal;
}
if(ReadFieldValue(RptFilter,fiRptFilterBtn)=="1")
seQuery->ButtonVisible=true;
else
seQuery->ButtonVisible=false;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -