zoukankan      html  css  js  c++  java
  • 分时间片计算包间费演示程序

    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.

  • 相关阅读:
    (一)Python入门-3序列:04列表-元素删除的3种方式-删除本质是数组元素拷贝
    (一)Python入门-3序列:05列表-元素的访问-元素出现次数统计-成员资格判断
    Java学习笔记_180704_final和static关键字
    Java学习笔记_180702_基本类型和引用类型作为参数传递特性
    Java学习笔记_180702_面向对象编程
    如何手动实现整型数值60的二进制到十六进制的转换
    Java学习笔记_180627_循环控制语句
    兔子生兔子问题(斐波那契数列)
    Java学习笔记_180625_基础语法
    ubuntu和win10双系统,用ubuntu引导win10启动
  • 原文地址:https://www.cnblogs.com/bingege/p/2531512.html
Copyright © 2011-2022 走看看