📄 inqpark.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "InqPark.h"
#include "datetool.h"
#include "dido.h"
#include "dynamic.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
typedef struct tagPARKINQ{
char szCarTag[17];
char szUserName[40];
DWORD nCardNo1,nCardNo2;
BYTE nUserType;
WORD nInRoadNo,nOutRoadNo;
DWORD nInDate1,nInDate2;
DWORD nOutDate1,nOutDate2;
WORD nStatus;
}PARKINQ, *PPARKINQ;
//获取编辑框内容
static void GetEditText(TInqParkForm *te,PARKINQ *lParam);
//设置编辑框内容(nParkrec==0 =>查询入场车辆,否则查询外出车辆)
static void SetEditText(TInqParkForm *te,PARKINQ *lParam,int nParkrec);
//设置编辑框
static void SetEditBox(TInqParkForm *te,PARKINQ *lParam);
//设置车道组合框
static void SetRoadwayCoBox(TComboBox *pBox,int nRoadNo);
//设置用户类型组合框
static void SetUserTypeCoBox(TComboBox *pBox,int nUserType);
//获取卡片多条件查询(nParkrec==0 =>查询入场车辆,否则查询外出车辆)
static int GetInqParkStr(PARKINQ *t,char *pszStr,int nSize,int nParkrec);
#define PARKINQ_CARDNO 0x01
#define PARKINQ_USERTYPE 0x02
#define PARKINQ_INROAD 0x04
#define PARKINQ_OUTROAD 0x08
#define PARKINQ_INDATE 0x10
#define PARKINQ_OUTDATE 0x20
static PARKINQ InqPark;
//---------------------------------------------------------------------------
__fastcall TInqParkForm::TInqParkForm(TComponent* Owner)
: TForm(Owner)
{
}
//输入多条件查询停车记录
int ReworkInqParkrec(TComponent* Owner,char *pszStr,int nSize)
{
TInqParkForm *te;
int rc;
rc=FALSE;
te = new TInqParkForm(Owner);
if(te!=NULL){
SetEditText(te,(PARKINQ *)&InqPark,TRUE);
if(te->ShowModal()==mrOk){
GetEditText(te,(PARKINQ *)&InqPark);
rc=TRUE;
}
delete te;
}
if(rc)//获取卡片多条件查询
GetInqParkStr(&InqPark,pszStr,nSize,TRUE);
return(rc);
}
//输入多条件查询入场记录
int ReworkInqParkin(TComponent* Owner,char *pszStr,int nSize)
{
TInqParkForm *te;
int rc;
rc=FALSE;
te = new TInqParkForm(Owner);
if(te!=NULL){
SetEditText(te,(PARKINQ *)&InqPark,FALSE);
if(te->ShowModal()==mrOk){
GetEditText(te,(PARKINQ *)&InqPark);
rc=TRUE;
}
delete te;
}
if(rc)//获取卡片多条件查询
GetInqParkStr(&InqPark,pszStr,nSize,FALSE);
return(rc);
}
//设置编辑框内容(nParkrec==0 =>查询入场车辆,否则查询外出车辆)
void SetEditText(TInqParkForm *te,PARKINQ *lParam,int nParkrec)
{
SetEditBox(te,lParam);
te->m_InDateCHBoxClick(te->m_InDateCHBox);
te->m_OutDateCHBoxClick(te->m_OutDateCHBox);
te->m_InRoadCHBoxClick(te->m_InRoadCHBox);
te->m_OutRoadCHBoxClick(te->m_OutRoadCHBox);
te->m_UserTypeCHBoxClick(te->m_UserTypeCHBox);
te->m_CardNoCHBoxClick(te->m_CardNoCHBox);
if(nParkrec==0){//(nParkrec==0 =>查询入场车辆)
te->m_OutRoadCHBox->Enabled=nParkrec;
te->m_OutRoadCoBox->Enabled=nParkrec;
te->m_OutDateCHBox->Enabled=nParkrec;
te->m_OutDate1Label->Enabled=nParkrec;
te->m_OutDate1DTP->Enabled=nParkrec;
te->m_OutDate2Label->Enabled=nParkrec;
te->m_OutDate2DTP->Enabled=nParkrec;
}
}
//设置编辑框
void SetEditBox(TInqParkForm *te,PARKINQ *lParam)
{
int n,nDate1,nDate2;
te->m_CarTagEdit->SetTextBuf(lParam->szCarTag);
te->m_UserEdit->SetTextBuf(lParam->szUserName);
//设置卡片号码编辑框
te->m_CardNo1UpDown->Position=lParam->nCardNo1;
te->m_CardNo2UpDown->Position=lParam->nCardNo2;
te->m_CardNoCHBox->Checked=lParam->nStatus & PARKINQ_CARDNO;
//设置入场日期组合框
nDate1 = lParam->nInDate1;
nDate2 = lParam->nInDate2;
if(nDate1==0)nDate1=GetDateOnNow();
if(nDate2==0)nDate2=nDate1;
te->m_InDate1DTP->Date=DWORDToTDate(nDate1);
te->m_InDate2DTP->Date=DWORDToTDate(nDate2);
te->m_InDateCHBox->Checked = lParam->nStatus & PARKINQ_INDATE;
//设置外出日期组合框
nDate1 = lParam->nOutDate1;
nDate2 = lParam->nOutDate2;
if(nDate1==0)nDate1=GetDateOnNow();
if(nDate2==0)nDate2=nDate1;
te->m_OutDate1DTP->Date=DWORDToTDate(nDate1);
te->m_OutDate2DTP->Date=DWORDToTDate(nDate2);
te->m_OutDateCHBox->Checked = lParam->nStatus & PARKINQ_OUTDATE;
//入场车道
SetRoadwayCoBox(te->m_InRoadCoBox,lParam->nInRoadNo);
te->m_InRoadCHBox->Checked = lParam->nStatus & PARKINQ_INROAD;
//外出车道
SetRoadwayCoBox(te->m_OutRoadCoBox,lParam->nOutRoadNo);
te->m_OutRoadCHBox->Checked = lParam->nStatus & PARKINQ_OUTROAD;
//用户类型
SetUserTypeCoBox(te->m_UserTypeCoBox,lParam->nUserType);
te->m_UserTypeCHBox->Checked = lParam->nStatus & PARKINQ_USERTYPE;
}
//设置车道组合框
void SetRoadwayCoBox(TComboBox *pBox,int nRoadNo)
{
int i,m,n;
void *pHead,*pCur;
ROADWAY *pRoad;
char szBuf[50];
pBox->Clear();
pHead = GetRoadwayList();
for(i=m=0;;i++){
pCur = GetDotOnTList(pHead,i);
if(pCur==NULL)break;
pRoad = LookRoadway(pCur);
n = pRoad->nNo;
wsprintf(szBuf,"%d: %s",n,pRoad->szName);
pBox->Items->Add(szBuf);
if(n==nRoadNo)m=i;
}
pBox->ItemIndex=m;
}
//设置用户类型组合框
void SetUserTypeCoBox(TComboBox *pBox,int nUserType)
{
int i,m,n;
void *pHead,*pCur;
PRICEDATA *pPrice;
char szBuf[50];
pBox->Clear();
pHead = GetPriceList();
for(i=m=0;;i++){
pCur = GetDotOnTList(pHead,i);
if(pCur==NULL)break;
pPrice = LookPrice(pCur);
n = pPrice->nID;
wsprintf(szBuf,"%d: %s",n,pPrice->szUserType);
pBox->Items->Add(szBuf);
if(n==nUserType)m=i;
}
pBox->ItemIndex=m;
}
void __fastcall TInqParkForm::m_CardNoCHBoxClick(TObject *Sender)
{
int n;
n=m_CardNoCHBox->Checked;
m_CardNo1Label->Enabled=n;
m_CardNo1Edit->Enabled=n;
m_CardNo2Label->Enabled=n;
m_CardNo2Edit->Enabled=n;
m_CardNo1UpDown->Enabled=n;
m_CardNo2UpDown->Enabled=n;
if(n && this->Showing)
m_CardNo1Edit->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInqParkForm::m_InDateCHBoxClick(TObject *Sender)
{
int n;
n=m_InDateCHBox->Checked;
m_InDate1Label->Enabled=n;
m_InDate1DTP->Enabled=n;
m_InDate2Label->Enabled=n;
m_InDate2DTP->Enabled=n;
if(n && this->Showing)
m_InDate1DTP->SetFocus();
}
void __fastcall TInqParkForm::m_OutDateCHBoxClick(TObject *Sender)
{
int n;
n=m_OutDateCHBox->Checked;
m_OutDate1Label->Enabled=n;
m_OutDate1DTP->Enabled=n;
m_OutDate2Label->Enabled=n;
m_OutDate2DTP->Enabled=n;
if(n && this->Showing)
m_OutDate1DTP->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInqParkForm::m_InRoadCHBoxClick(TObject *Sender)
{
int n;
n=m_InRoadCHBox->Checked;
m_InRoadCoBox->Enabled=n;
if(n && this->Showing)
m_InRoadCoBox->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInqParkForm::m_OutRoadCHBoxClick(TObject *Sender)
{
int n;
n=m_OutRoadCHBox->Checked;
m_OutRoadCoBox->Enabled=n;
if(n && this->Showing)
m_OutRoadCoBox->SetFocus();
}
void __fastcall TInqParkForm::m_UserTypeCHBoxClick(TObject *Sender)
{
int n;
n=m_UserTypeCHBox->Checked;
m_UserTypeCoBox->Enabled=n;
if(n && this->Showing)
m_UserTypeCoBox->SetFocus();
}
//---------------------------------------------------------------------------
//获取编辑框内容
void GetEditText(TInqParkForm *te,PARKINQ *lParam)
{
int n;
DWORD nFrom,nTo;
ZeroMemory(lParam,sizeof(PARKINQ));
nFrom = TDateToDWORD(te->m_InDate1DTP->Date);
nTo = TDateToDWORD(te->m_InDate2DTP->Date);
if(nFrom>nTo)nTo=nFrom;
lParam->nInDate1 = nFrom; lParam->nInDate2 = nTo;
nFrom = TDateToDWORD(te->m_OutDate1DTP->Date);
nTo = TDateToDWORD(te->m_OutDate2DTP->Date);
if(nFrom>nTo)nTo=nFrom;
lParam->nOutDate1 = nFrom; lParam->nOutDate2 = nTo;
nFrom = atoi(te->m_CardNo1Edit->Text.c_str());
nTo = atoi(te->m_CardNo2Edit->Text.c_str());
if(nFrom>nTo)nTo=nFrom;
lParam->nCardNo1 = nFrom; lParam->nCardNo2 = nTo;
lParam->nInRoadNo = atoi(te->m_InRoadCoBox->Text.c_str());
lParam->nOutRoadNo = atoi(te->m_OutRoadCoBox->Text.c_str());
lParam->nUserType = atoi(te->m_UserTypeCoBox->Text.c_str());
te->m_CarTagEdit->GetTextBuf(lParam->szCarTag,sizeof(lParam->szCarTag));
te->m_UserEdit->GetTextBuf(lParam->szUserName,sizeof(lParam->szUserName));
if(te->m_CardNoCHBox->Checked)
lParam->nStatus |= PARKINQ_CARDNO;
if(te->m_InDateCHBox->Checked)
lParam->nStatus |= PARKINQ_INDATE;
if(te->m_OutDateCHBox->Checked)
lParam->nStatus |= PARKINQ_OUTDATE;
if(te->m_InRoadCHBox->Checked)
lParam->nStatus |= PARKINQ_INROAD;
if(te->m_OutRoadCHBox->Checked)
lParam->nStatus |= PARKINQ_OUTROAD;
if(te->m_UserTypeCHBox->Checked)
lParam->nStatus |= PARKINQ_USERTYPE;
}
//获取卡片多条件查询
int GetInqParkStr(PARKINQ *t,char *pszStr,int nSize,int nParkrec)
{
static char pszAnd[]=" AND ";
int m,n,nLen,nAnd;
TDateTime t1,t2;
pszStr[0]=0; nLen=0; nAnd=lstrlen(pszAnd);
if((t->nStatus & PARKINQ_INDATE) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nInDate1; n=t->nInDate2;
t1 = DWORDToTDate(m); t2 = DWORDToTDate(n)+1;
nLen +=wsprintf(pszStr,
"INTIME>=%d AND INTIME<%d",int(t1),int(t2));
}
if((t->nStatus & PARKINQ_CARDNO) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nCardNo1; n=t->nCardNo2;
if(m!=n)
nLen +=wsprintf(pszStr+nLen,"CARDNO>=%d AND CARDNO<=%d",m,n);
else
nLen +=wsprintf(pszStr+nLen,"CARDNO=%d",m);
}
if((t->nStatus & PARKINQ_INROAD) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nInRoadNo;
nLen +=wsprintf(pszStr+nLen,"INROADNO=%d",m);
}
if((t->nStatus & PARKINQ_OUTROAD) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nInRoadNo;
nLen +=wsprintf(pszStr+nLen,"OUTROADNO=%d",m);
}
if((t->nStatus & PARKINQ_USERTYPE) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nUserType;
nLen +=wsprintf(pszStr+nLen,"USERTYPE=%d",m);
}
if(t->szCarTag[0]!=0 && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
nLen+=wsprintf(pszStr+nLen,"CARTAG=\'%s\'",t->szCarTag);
}
if(t->szUserName[0]!=0 && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
nLen+=wsprintf(pszStr+nLen,"USERNAME=\'%s\'",t->szUserName);
}
if(nParkrec){
if((t->nStatus & PARKINQ_OUTDATE) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nOutDate1; n=t->nOutDate2;
t1 = DWORDToTDate(m); t2 = DWORDToTDate(n)+1;
nLen +=wsprintf(pszStr,
"OUTTIME>=%d AND OUTTIME<%d",int(t1),int(t2));
}
if((t->nStatus & PARKINQ_OUTROAD) && nLen+50<nSize){
if(nLen>0){ lstrcat(pszStr,pszAnd); nLen+=nAnd;}
m = t->nInRoadNo;
nLen +=wsprintf(pszStr+nLen,"OUTROADNO=%d",m);
}
}
return(nLen);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -