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

📄 main.pas

📁 这是用DELPHI制作的一个简单的闭路电视收费
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  if EndYear < StartYear then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else if (EndYear = StartYear) and (EndMonth < StartMonth) then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else
  begin
    Fee:=((EndYear-StartYear)*12+EndMonth-StartMonth)*IntegrateRate;
    EdtFee1.Text:=IntToStr(Fee);
  end;
end;

procedure TFormMain.DateNew22Exit(Sender: TObject);
var
  StartYear,StartMonth,StartDay:Word;
  EndYear,EndMonth,EndDay:Word;
  Fee:Word;
begin
  DecodeDate(DateNew21.Date,StartYear,StartMonth,StartDay);
  DecodeDate(DateNew22.Date,EndYear,EndMonth,EndDay);
  if EndYear < StartYear then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else if (EndYear = StartYear) and (EndMonth < StartMonth) then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else
  begin
    Fee:=((EndYear-StartYear)*12+EndMonth-StartMonth)*StockRate;
    EdtFee2.Text:=IntToStr(Fee);
  end;
end;

procedure TFormMain.DateNew32Exit(Sender: TObject);
var
  StartYear,StartMonth,StartDay:Word;
  EndYear,EndMonth,EndDay:Word;
  Fee:Word;
begin
  DecodeDate(DateNew31.Date,StartYear,StartMonth,StartDay);
  DecodeDate(DateNew32.Date,EndYear,EndMonth,EndDay);
  if EndYear < StartYear then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else if (EndYear = StartYear) and (EndMonth < StartMonth) then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else
  begin
    Fee:=((EndYear-StartYear)*12+EndMonth-StartMonth)*EducationRate;
    EdtFee3.Text:=IntToStr(Fee);
  end;
end;

procedure TFormMain.DateNew42Exit(Sender: TObject);
var
  StartYear,StartMonth,StartDay:Word;
  EndYear,EndMonth,EndDay:Word;
  Fee:Word;
begin
  DecodeDate(DateNew41.Date,StartYear,StartMonth,StartDay);
  DecodeDate(DateNew42.Date,EndYear,EndMonth,EndDay);
  if EndYear < StartYear then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else if (EndYear = StartYear) and (EndMonth < StartMonth) then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else
  begin
    Fee:=((EndYear-StartYear)*12+EndMonth-StartMonth)*VideoRate;
    EdtFee4.Text:=IntToStr(Fee);
  end;
end;

procedure TFormMain.EdtFee1Change(Sender: TObject);
var
  t:Integer;
begin
  if (Sender as TEdit).Text <> '' then
  begin
    t:=StrToInt(EdtFee1.Text)+StrToInt(EdtFee2.Text)+StrToInt(EdtFee3.Text)+StrToInt(EdtFee4.Text);
    EdtNew8.Text:=IntToStr(t);
  end
  else
    (Sender as TEdit).Text:='0';
end;

procedure TFormMain.BtnNew1Click(Sender: TObject);
var
  i:Integer;
  y,m,d,y1,m1,d1,y2,m2,d2:Word;
  TmpDate1,TmpDate2:TwwDBDateTimePicker;
begin
  if (EdtNew1.Text='') or (EdtNew5.Text='') or (EdtNew6.Text='') then
  begin
    MessageDlg('用户名、用户证、卡号不能为空!',mtWarning,[mbOK],0);
    Exit;
  end;
  for i:=1 to 4 do
  begin
    TmpDate1:=FindComponent('DateNew'+IntToStr(i)+'1') as TwwDBDateTimePicker;
    TmpDate2:=FindComponent('DateNew'+IntToStr(i)+'2') as TwwDBDateTimePicker;
    DecodeDate(TmpDate1.Date,y1,m1,d1);
    DecodeDate(TmpDate2.Date,y2,m2,d2);
    if y2 < y1 then
    begin
      MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0);
      Exit;
    end
    else if (y2 = y1) and (m2 < m1) then
    begin
      MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0);
      Exit;
    end;
  end;
  DecodeDate(Date(),y,m,d);
  StatusBar.Panels[3].Text:='新增用户...';
  AddUser(y,m,d);
  BtnNew1.Enabled:=False;
  BtnNew2.Enabled:=False;
  BtnNew3.Enabled:=True;
end;

procedure TFormMain.AddUser(Year,Month,Day:Integer);
var
  TmpID,i:Integer;
begin
  with DataM.TableUser do
  begin
    Close;
    TableName:='Userinfo';
    Open;
    Append;
    FieldByName('Name').AsString:=EdtNew1.Text;
    FieldByName('IDcard').AsString:=EdtNew2.Text;
    FieldByName('Address').AsString:=EdtNew3.Text;
    FieldByName('Phone').AsString:=EdtNew4.Text;
    FieldByName('UserCardNo').AsString:=EdtNew5.Text;
    FieldByName('CardNo').AsString:=EdtNew6.Text;
    FieldByName('ResistYear').AsInteger:=Year;
    FieldByName('ResistMonth').AsInteger:=Month;
    FieldByName('ResistDay').AsInteger:=Day;
    FieldByName('UserZIP').AsString:=EdtNew7.Text;
    FieldByName('AgentID').AsInteger:=
        AgentIDCreate(ComboNew1.Items.IndexOf(ComboNew1.Text));
    FieldByName('UserRemark').AsVariant:=MemoNew1.Lines.Text;
    Post;
    Last;
    TmpID:=FieldByName('UserID').AsInteger;
    Close;

    //增加用户服务信息
    CalcServ;
    TableName:='Service';
    Open;
    for i:=0 to Length(TmpArray)-1 do
    begin
      Append;
      FieldByName('UserID').AsInteger:=TmpID;
      FieldByName('ServName').AsString:=TmpArray[i].SName;
      FieldByName('ServTypeID').AsString:=TmpArray[i].SID;
      FieldByName('StartYear').AsInteger:=TmpArray[i].SYear;
      FieldByName('StartMonth').AsInteger:=TmpArray[i].SMonth;
      FieldByName('StartDay').AsInteger:=TmpArray[i].SDay;
      FieldByName('ServTime').AsInteger:=TmpArray[i].Stime;
      FieldByName('Fee').AsInteger:=TmpArray[i].SFee;
      Post;
    end;
    Close;

    //增加用户打印标记
    TableName:='PrintNo';
    Open;
    Append;
    FieldByName('UserID').AsInteger:=TmpID;
    FieldByName('CardNo').AsString:=EdtNew6.Text;
    Post;
    Close;
  end;
  StatusBar.Panels[3].Text:='新增成功';
end;

function TFormMain.ServNumber: Integer;
var
  i,j:Integer;
begin
  j:=0;
  for i:=1 to 4 do
    if (FindComponent('CheckNew'+IntToStr(i)) as TCheckBox).Checked then
      j:=j+1;
  Result:=j;
end;

procedure TFormMain.CalcServ;
var
  i,j,k:Integer;
  y1,m1,d1,y2,m2,d2:Word;
  Temp:TCheckBox;
  TmpDate1,TmpDate2:TwwDBDateTimePicker;
begin
  j:=ServNumber;
  k:=0;
  SetLength(TmpArray,j);
  for i:=1 to 4 do
  begin
    Temp:=FindComponent('CheckNew'+IntToStr(i)) as TCheckBox;
    if Temp.Checked then
    begin
      TmpArray[k].SName:=Temp.Caption;
      case i of
        1:TmpArray[k].SID:='528';
        2:TmpArray[k].SID:='544';
        3:TmpArray[k].SID:='560';
        4:TmpArray[k].SID:='576';
      end;
      TmpDate1:=FindComponent('DateNew'+IntToStr(i)+'1') as TwwDBDateTimePicker;
      TmpDate2:=FindComponent('DateNew'+IntToStr(i)+'2') as TwwDBDateTimePicker;
      DecodeDate(TmpDate1.Date,y1,m1,d1);
      DecodeDate(TmpDate2.Date,y2,m2,d2);
      TmpArray[k].SYear:=y1;
      TmpArray[k].SMonth:=m1;
      TmpArray[k].SDay:=d1;
      TmpArray[k].Stime:=(y2-y1)*12+m2-m1;
      TmpArray[k].SFee:=StrToInt((FindComponent('EdtFee'+IntToStr(i)) as Tedit).Text);
      k:=k+1;
    end;
  end;
end;

function TFormMain.AgentIDCreate(i: Integer): Integer;
begin
  Result:=i+48;
end;

procedure TFormMain.BtnNew2Click(Sender: TObject);//取消
var
  i:Integer;
begin
  if BtnNew1.Enabled then
  begin
    for i:=1 to 7 do
      (FindComponent('EdtNew'+IntToStr(i)) as TEdit).Text:='';
    ComboNew1.Text:='';
    EdtNew8.Text:='0';
    EdtFee1.Text:='0';
    EdtFee2.Text:='0';
    EdtFee3.Text:='0';
    EdtFee4.Text:='0';
    MemoNew1.Lines.Clear;
    for i:=1 to 4 do
      (FindComponent('CheckNew'+IntToStr(i)) as TCheckBox).Checked:=False;
    TabSheet3Show(self);
  end;
end;

procedure TFormMain.BtnNew4Click(Sender: TObject); //新增页面“下一条”
var
  i:Integer;
begin
  for i:=1 to 7 do
    (FindComponent('EdtNew'+IntToStr(i)) as TEdit).Text:='';
  ComboNew1.Text:='';
  EdtNew8.Text:='0';
  EdtFee1.Text:='0';
  EdtFee2.Text:='0';
  EdtFee3.Text:='0';
  EdtFee4.Text:='0';
  MemoNew1.Lines.Clear;
  for i:=1 to 4 do
    (FindComponent('CheckNew'+IntToStr(i)) as TCheckBox).Checked:=False;
  TabSheet3Show(self);
end;

procedure TFormMain.BtnLookupTOKClick(Sender: TObject);
var
  Sel:Integer;
  Str:String;
begin
  if RadioButton1.Checked then
  begin
    Sel:=1;
    Str:=LookupT1.Text;
  end
  else if RadioButton2.Checked then
  begin
    Sel:=2;
    Str:=LookupT2.Text;
  end
  else
  begin
    Sel:=3;
    Str:=LookupT3.Text;
  end;
  if (Findcomponent('LookupT'+IntToStr(Sel)) as TEdit).Text = '' then
    MessageDlg('请输入参数!',mtConfirmation,[mbOK],0)
  else
  begin
    if ExtendFee(Sel,Str) then
      PageControl.ActivePage:=TabSheet9
    else
      MessageDlg('没有此用户!',mtConfirmation,[mbOK],0)
  end;
end;

procedure TFormMain.BtnLookupTCancelClick(Sender: TObject);
begin
  LookupT1.Text:='';
  LookupT2.Text:='';
  LookupT3.Text:='';
end;

function TFormMain.ExtendFee(i: Integer; s: String):Boolean;
begin
  Result:=False;
  with DataM.QueryUser do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT UserID, Name, IDcard, Phone, Address, CardNo, UserCardNo,UserZIP, AgentID,UserRemark');
    SQL.Add('FROM "Userinfo.DB" Userinfo');
    if i =1 then
      SQL.Add('WHERE CardNo = "' +s+'"')
    else if i = 2 then
      SQL.Add('WHERE UserCardNo = "' +s+'"')
    else if i = 3 then
      SQL.Add('WHERE Name = "' +s+'"');
    Open;
  end;
  if DataM.QueryUser.RecordCount = 1 then
    Result:=True
  else if DataM.QueryUser.RecordCount > 1 then
  begin
    Result:=True;
    MessageDlg('有多个同名用户!'+#13+'按“卡号”或“用户证”查询,'+#13+
               '可唯一定位' ,mtConfirmation,[mbOK],0);
  end;
  with DataM.QueryAgent do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT AgentName, AgentID');
    SQL.Add('FROM "Agent.DB" Agent');
    SQL.Add('WHERE Agent.AgentID=:"AgentID"');
    Open;
  end;
end;

procedure TFormMain.Delay(Seconds, Millisec: Word);
var
  TimeOut:TDateTime;
begin
  TimeOut:=Now + EncodeTime(0,Seconds div 60,Seconds mod 60,MilliSec);
  while Now < TimeOut do
    Application.ProcessMessages;
end;

//续费处理
procedure TFormMain.CheckEx1Click(Sender: TObject);
var
  i,t,f:Integer;
begin
  for i:=1 to 3 do
    (FindComponent('LblEx'+IntToStr((Sender as TCheckBox).Tag)+IntToStr(i)) as TLabel).Enabled:=
        (Sender as TCheckBox).Checked;
  for i:=1 to 2 do
    (FindComponent('DateEx'+IntToStr((Sender as TCheckBox).Tag)+IntToStr(i)) as TwwDBDateTimePicker).Enabled:=
        (Sender as TCheckBox).Checked;
  (FindComponent('EdtExFee'+IntToStr((Sender as TCheckBox).Tag)) as TEdit).Enabled:=
      (Sender as TCheckBox).Checked;
  if not((Sender as TCheckBox).Checked) then
  begin
    (FindComponent('DateEx'+IntToStr((Sender as TCheckBox).Tag)+'1') as TwwDBDateTimePicker).Date:=Date();
    (FindComponent('DateEx'+IntToStr((Sender as TCheckBox).Tag)+'2') as TwwDBDateTimePicker).Date:=Date();
    t:=StrToInt(EdtEx9.Text);
    f:=StrToInt((FindComponent('EdtExFee'+IntToStr((Sender as TCheckBox).Tag)) as TEdit).Text);
    t:=t-f;
    EdtEx9.Text:=IntToStr(t);
    (FindComponent('EdtExFee'+IntToStr((Sender as TCheckBox).Tag)) as TEdit).Text:='0';
  end
  else
    (FindComponent('DateEx'+IntToStr((Sender as TCheckBox).Tag)+'2') as TwwDBDateTimePicker).Date:=
        (FindComponent('DateEx'+IntToStr((Sender as TCheckBox).Tag)+'1') as TwwDBDateTimePicker).Date;
  for i:=1 to 4 do
    if (FindComponent('CheckEx'+IntToStr(i)) as TCheckBox).Checked then
    begin
      BtnEx1.Enabled:=True;
      BtnEx2.Enabled:=True;
      Break;
    end
    else
    begin
      BtnEx1.Enabled:=False;
      BtnEx2.Enabled:=False;
    end;
end;

procedure TFormMain.TabSheet9Show(Sender: TObject);
var
  i,j:Integer;
  Temp:TCheckBox;
  TmpDate:TwwDBDateTimePicker;
begin
  for i:=1 to 4 do
  begin
    Temp:=FindComponent('CheckEx'+IntToStr(i)) as TCheckBox;
    Temp.Checked:=False;
    for j:=1 to 3 do
      (FindComponent('LblEx'+IntToStr(Temp.Tag)+IntToStr(j)) as TLabel).Enabled:=
          False;
    for j:=1 to 2 do
    begin
      TmpDate:=FindComponent('DateEx'+IntToStr(Temp.Tag)+IntToStr(j)) as TwwDBDateTimePicker;
      TmpDate.Enabled:=False;
      TmpDate.Date:=Date();
    end;
    (FindComponent('EdtExFee'+IntToStr(Temp.Tag)) as TEdit).Enabled:=False;
    (FindComponent('EdtExFee'+IntToStr(Temp.Tag)) as TEdit).Text:='0';
  end;
  BtnEx1.Enabled:=False;
  BtnEx2.Enabled:=False;
  BtnEx3.Enabled:=False;
end;

procedure TFormMain.DateEx12CloseUp(Sender: TObject);
var
  StartYear,StartMonth,StartDay:Word;
  EndYear,EndMonth,EndDay:Word;
  Fee:Word;
begin
  DecodeDate(DateEx11.Date,StartYear,StartMonth,StartDay);
  DecodeDate(DateEx12.Date,EndYear,EndMonth,EndDay);
  if EndYear < StartYear then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else if (EndYear = StartYear) and (EndMonth < StartMonth) then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else
  begin
    Fee:=((EndYear-StartYear)*12+EndMonth-StartMonth)*IntegrateRate;
    EdtExFee1.Text:=IntToStr(Fee);
  end;
end;

procedure TFormMain.DateEx22CloseUp(Sender: TObject);
var
  StartYear,StartMonth,StartDay:Word;
  EndYear,EndMonth,EndDay:Word;
  Fee:Word;
begin
  DecodeDate(DateEx21.Date,StartYear,StartMonth,StartDay);
  DecodeDate(DateEx22.Date,EndYear,EndMonth,EndDay);
  if EndYear < StartYear then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else if (EndYear = StartYear) and (EndMonth < StartMonth) then
    MessageDlg('时限日期不能小于起始日期!',mtWarning,[mbOK],0)
  else
  begin
    Fee:=((EndYear-StartYear)*12+EndMonth-StartMonth)*StockRate;
    EdtExFee2.Text:=IntToStr(Fee);
  end;
end;

⌨️ 快捷键说明

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