• 分时间片计算包间费演示程序


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, ExtCtrls, DateUtils;

    type
      TForm1 = class(TForm)
        DTPStartDate: TDateTimePicker;
        DTPStartTime: TDateTimePicker;
        Label1: TLabel;
        Label2: TLabel;
        Button1: TButton;
        Memo1: TMemo;
        DTPEndTime: TDateTimePicker;
        DTPEndDate: TDateTimePicker;
        DTP01A: TDateTimePicker;
        DTP01B: TDateTimePicker;
        Label3: TLabel;
        DTP02A: TDateTimePicker;
        Timer1: TTimer;
        DTP02B: TDateTimePicker;
        DTP03A: TDateTimePicker;
        DTP03B: TDateTimePicker;
        DTP04A: TDateTimePicker;
        DTP04B: TDateTimePicker;
        DTP05A: TDateTimePicker;
        DTP05B: TDateTimePicker;
        DTP06A: TDateTimePicker;
        DTP06B: TDateTimePicker;
        Label4: TLabel;
        procedure DTP01BChange(Sender: TObject);
        procedure DTP02BChange(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure DTP03BChange(Sender: TObject);
        procedure DTP04BChange(Sender: TObject);
        procedure DTP05BChange(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.DTP01BChange(Sender: TObject);
    begin
      if DTP01B.Time < DTP01A.Time then begin DTP01B.Time := DTP01A.Time; exit; end;
      if SecondsBetween(DTP01B.Time, strtodatetime(formatDatetime('yyyy-MM-dd', DTP01B.date) + ' 23:59:59.99')) = 0 then
      begin
        DTP02A.Visible := false; DTP02B.Visible := false; DTP03A.Visible := false; DTP03B.Visible := false; DTP04A.Visible := false; DTP04B.Visible := false; DTP05A.Visible := false; DTP05B.Visible := false; DTP06A.Visible := false; DTP06B.Visible := false;
      end else
      begin
        DTP02A.Visible := true; DTP02B.Visible := true; DTP02B.Time := strtodatetime(formatDatetime('yyyy-MM-dd', DTP01B.date) + ' 23:59:59.99');
        DTP02A.Time := IncSecond(DTP01B.Time, 1);
      end;
    end;

    procedure TForm1.DTP02BChange(Sender: TObject);
    begin
      if DTP02B.Time < DTP02A.Time then begin DTP02B.Time := DTP02A.Time; exit; end;
      if SecondsBetween(DTP02B.Time, strtodatetime(formatDatetime('yyyy-MM-dd', DTP02B.date) + ' 23:59:59.99')) = 0 then
      begin
        DTP03A.Visible := false; DTP03B.Visible := false; DTP04A.Visible := false; DTP04B.Visible := false; DTP05A.Visible := false; DTP05B.Visible := false; DTP06A.Visible := false; DTP06B.Visible := false;
      end else
      begin
        DTP03A.Visible := true; DTP03B.Visible := true; DTP03B.Time := strtodatetime(formatDatetime('yyyy-MM-dd', DTP01B.date) + ' 23:59:59.99');
        DTP03A.Time := IncSecond(DTP02B.Time, 1);
      end;
    end;

    procedure TForm1.FormShow(Sender: TObject);
    begin
      DTP01B.Time := strtodatetime(formatDatetime(' hh:mm:ss', strtodatetime(' 23:59:59.99')));
    end;

    procedure TForm1.DTP03BChange(Sender: TObject);
    begin
      if DTP03B.Time < DTP03A.Time then begin DTP03B.Time := DTP03A.Time; exit; end;
      if SecondsBetween(DTP03B.Time, strtodatetime(formatDatetime('yyyy-MM-dd', DTP03B.date) + ' 23:59:59.99')) = 0 then
      begin
        DTP04A.Visible := false; DTP04B.Visible := false; DTP05A.Visible := false; DTP05B.Visible := false; DTP06A.Visible := false; DTP06B.Visible := false;
      end else
      begin
        DTP04A.Visible := true; DTP04B.Visible := true; DTP04B.Time := strtodatetime(formatDatetime('yyyy-MM-dd', DTP01B.date) + ' 23:59:59.99');
        DTP04A.Time := IncSecond(DTP03B.Time, 1);
      end;
    end;

    procedure TForm1.DTP04BChange(Sender: TObject);
    begin
      if DTP04B.Time < DTP04A.Time then begin DTP04B.Time := DTP04A.Time; exit; end;
      if SecondsBetween(DTP04B.Time, strtodatetime(formatDatetime('yyyy-MM-dd', DTP03B.date) + ' 23:59:59.99')) = 0 then
      begin
        DTP05A.Visible := false; DTP05B.Visible := false; DTP06A.Visible := false; DTP06B.Visible := false;
      end else
      begin
        DTP05A.Visible := true; DTP05B.Visible := true; DTP05B.Time := strtodatetime(formatDatetime('yyyy-MM-dd', DTP01B.date) + ' 23:59:59.99');
        DTP05A.Time := IncSecond(DTP04B.Time, 1);
      end;
    end;

    procedure TForm1.DTP05BChange(Sender: TObject);
    begin
      if DTP05B.Time < DTP05A.Time then begin DTP05B.Time := DTP05A.Time; exit; end;
      if SecondsBetween(DTP05B.Time, strtodatetime(formatDatetime('yyyy-MM-dd', DTP05B.date) + ' 23:59:59.99')) = 0 then
      begin
        DTP06A.Visible := false; DTP06B.Visible := false;
      end else
      begin
        DTP06A.Visible := true; DTP06B.Visible := true; DTP06B.Time := strtodatetime(formatDatetime('yyyy-MM-dd', DTP01B.date) + ' 23:59:59.99');
        DTP06A.Time := IncSecond(DTP05B.Time, 1); DTP06B.Enabled := false;
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      tempCurrDate, tempbegin, tempend: Tdatetime;
      tempTotNum, i: integer;
      YorN: boolean; //判断是不是计算完成的标志
    begin
      YorN := true; i := 1; 
      if DTP06A.Visible then tempTotNum := 6 else if DTP05A.Visible then tempTotNum := 5 else if DTP04A.Visible then tempTotNum := 4 else if DTP03A.Visible then tempTotNum := 3 else if DTP02A.Visible then tempTotNum := 2 else if DTP01A.Visible then tempTotNum := 1;
      tempCurrDate := strtodatetime(formatDatetime('yyyy-MM-dd', DTPStartDate.date) + formatDatetime(' hh:mm:ss', DTPStartTime.Time));
      while YorN do
      begin
        for i := 1 to tempTotNum do
        begin
          // TDateTimePicker(FindComponent('DTP0' + trim(inttostr(i)) + 'A')).Time;
          tempbegin := strtodatetime(formatDatetime('yyyy-MM-dd', tempCurrDate) + formatDatetime(' hh:mm:ss', (TDateTimePicker(FindComponent('DTP0' + trim(inttostr(i)) + 'A')).Time)));
          tempend := strtodatetime(formatDatetime('yyyy-MM-dd', tempCurrDate) + formatDatetime(' hh:mm:ss', (TDateTimePicker(FindComponent('DTP0' + trim(inttostr(i)) + 'B')).Time)));
          if (tempCurrDate >= tempbegin) and (tempCurrDate <= tempend) then
          begin
            if strtodatetime(formatDatetime('yyyy-MM-dd', DTPEndDate.date) + formatDatetime(' hh:mm:ss', DTPEndTime.Time)) <= (strtodatetime(formatDatetime('yyyy-MM-dd', tempCurrDate) + formatDatetime(' hh:mm:ss', (TDateTimePicker(FindComponent('DTP0' + trim(inttostr(i)) + 'B')).Time)))) then
            begin
              Memo1.Lines.Add(formatDatetime('yyyy-MM-dd hh:mm:ss', tempCurrDate) + '--->' + formatDatetime('yyyy-MM-dd', DTPEndDate.date) + formatDatetime(' hh:mm:ss', DTPEndTime.Time));
              exit;
            end
            else
            begin
              Memo1.Lines.Add(formatDatetime('yyyy-MM-dd hh:mm:ss', tempCurrDate) + '--->' + formatDatetime('yyyy-MM-dd', tempCurrDate) + formatDatetime(' hh:mm:ss', (TDateTimePicker(FindComponent('DTP0' + trim(inttostr(i)) + 'B')).Time)));
              tempCurrDate := IncSecond(strtodatetime(formatDatetime('yyyy-MM-dd', tempCurrDate) + formatDatetime(' hh:mm:ss', (TDateTimePicker(FindComponent('DTP0' + trim(inttostr(i)) + 'B')).Time))));
            end;
          end;
        end;
        //如果超过一天了话再循环计算:tempCurrDate是已经加了一秒后的时间。
        //tempCurrDate := strtodatetime(formatDatetime('yyyy-MM-dd', tempCurrDate) + formatDatetime(' hh:mm:ss', tempCurrDate));
        if tempCurrDate >= strtodatetime(formatDatetime('yyyy-MM-dd', DTPEndDate.date) + formatDatetime(' hh:mm:ss', DTPEndTime.Time)) then YorN := false else YorN := true;
      end;
    end;


    end.

  • 相关阅读:
    第六周作业
    2019第四周作业(基础作业+挑战作业)
    第三周作业
    2019第二周基础作业
    求最大值及下标值
    查找整数
    学期总结
    打印沙漏
    币值转换
    远程连接centos7的mysql5.7+ 更改iptables方法
  • 原文地址:https://www.cnblogs.com/bingege/p/2531512.html
Copyright © 2020-2023  润新知