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

📄 inqpark.cpp

📁 停车场用
💻 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 + -