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

📄 drillrelay_unt.pas

📁 煤矿行业采掘接替计划自动生成系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit DrillRelay_Unt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Relay_BaseUnt, DB, DBCtrls, Grids, DBGrids, StdCtrls, Buttons,
  ExtCtrls, ComCtrls, ADODB, Menus;

type
  TDrillInterval=record
    Technic:string;
    IntervalTime:integer;
  end;
  TWorkGroup=record
   Id:integer;
   Name:string;
   BelongedArea:string;
  end;
  TMDPrior=record
    ArrayId:integer;
    Sequence:integer;
    Project_Id:integer;
    Relay_Route:integer;
    Relay_Id:integer;
    Face_Lane:integer;
    Face_LaneName:string;
    Area:integer;
    AreaName:string;
    WorkGroup:integer;
    WorkGroupName:string;
    B_Date:TDate;
    E_Date:TDate;
    TaskTime:integer;
    TaskType:string;
  end;
  TMDRelay=record
    Sequence:integer;
    Project_Id:integer;
    Relay_Route:integer;
    Relay_Id:integer;
    Face_Lane:integer;
    Face_LaneName:string;
    Area:integer;
    AreaName:string;
    FaceName:string;
    WorkGroup:integer;
    WorkGroupName:string;
    B_Date:TDate;
    E_Date:TDate;
    TechnicType:integer;
    TechnicTypeName:string;
    TaskTime:integer;
    ArrayId:integer;
    MDPrior:TMDPrior;
    TaskType:string;
  end;
  TDrillRelay_Frm = class(TRelay_BaseFrm)
    BitBtn13: TBitBtn;
    DrillGroup_AdoQ: TADOQuery;
    DrillGroup_DataS: TDataSource;
    Project_AdoQ: TADOQuery;
    DrillProject_DataS: TDataSource;
    Area_AdoQ: TADOQuery;
    Area_DataS: TDataSource;
    DrillTask_AdoQ: TADOQuery;
    DrillTask_DataS: TDataSource;
    Face_AdoQ: TADOQuery;
    BitBtn14: TBitBtn;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    BitBtn15: TBitBtn;
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure DBLookupComboBox3Click(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure DBLookupListBox1DblClick(Sender: TObject);
    procedure DBLookupListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
    procedure BitBtn13Click(Sender: TObject);
    procedure BitBtn14Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure BitBtn15Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    DrillRelayIntervT:array of TDrillInterval;
    MDRelay:array of TMDRelay;
    ParaHaveEnsured:boolean;
    procedure DrillRelay_StripGraph; //掘进接替计划导入Project
    procedure DrillRelayTrace;//将掘进生产的实际情况导入到Project,以进行掘进计划的跟踪管理
    procedure MineDrillRelay_StripGraph; //采掘接替计划导入Project
    procedure DrillTask_StripGraph; //掘进任务导入Project,显示最迟开、完工时间
    procedure WorkGroupRelay_StripGraph(WorkGroupId:integer); //把采煤队(编号为WorkGroupId)相关的接替导入Project
    procedure DrillRelay_Report; //将掘进接替计划按照要求写入Excel形成报表
    procedure AddDrillRelay;
    procedure InsertDrillRelay;
  end;

var
  DrillRelay_Frm: TDrillRelay_Frm;

implementation
uses Data_Unt, DrillRelayIntervT_Unt, TimePara_Unt,CAD_Pro_Exc_Unt,LaneInfo_Unt,
      Main_Unt,DrillTask_Unt, ReportCondition_Unt,MineStatistic_Unt,
  Hint_Unt;
{$R *.dfm}

procedure TDrillRelay_Frm.FormResize(Sender: TObject);
begin
  inherited;

  BitBtn14.Left:=DBLookUpListBox1.Left+DBLookUpListBox1.Width+10;
  BitBtn14.Top:=DBLookUpListBox1.Top+round(DBLookUpListBox1.Height/10);
  BitBtn14.Height:=round(DBLookUpListBox1.Height/4);
  BitBtn14.Width:=round(Panel2.Width-(DBLookUpListBox1.Left+DBLookUpListBox1.Width))-20;

  BitBtn13.Left:=DBLookUpListBox1.Left+DBLookUpListBox1.Width+10;
  BitBtn13.Top:=DBLookUpListBox1.Top+round(2*DBLookUpListBox1.Height/5);
  BitBtn13.Height:=round(DBLookUpListBox1.Height/4);
  BitBtn13.Width:=round(Panel2.Width-(DBLookUpListBox1.Left+DBLookUpListBox1.Width))-20;

  BitBtn15.Left:=DBLookUpListBox1.Left+DBLookUpListBox1.Width+10;
  BitBtn15.Top:=DBLookUpListBox1.Top+round(7*DBLookUpListBox1.Height/10);
  BitBtn15.Height:=round(DBLookUpListBox1.Height/4);
  BitBtn15.Width:=round(Panel2.Width-(DBLookUpListBox1.Left+DBLookUpListBox1.Width))-20;
end;

procedure TDrillRelay_Frm.FormCreate(Sender: TObject);
var
str:string;
i,n:integer;
begin
  DrillRelay_FrmCreated:=true;
  
  inherited;

  //从掘进任务中(Lane_AdoTab)找到所有的方案,并列入DBLookUpComboBox1控件的列表中
  with Project_AdoQ do
    begin
      close;
      sql.Clear;
      sql.Add('select distinct Project_Id from 巷道f');
      ExecSQL;
      open;
    end;
  DBLookUpComboBox1.ListSource:=DrillProject_DataS;
  DBLookUpComboBox1.ListField:='Project_Id';
  DBLookUpComboBox1.KeyField:='Project_Id';
  DBLookUpComboBox1.DataSource:=Base_DataS;
  DBLookUpComboBox1.DataField:='Project_Id';

  //从施工队中查找掘进队
  with DrillGroup_AdoQ do
    begin
      close;
      sql.Clear;
      sql.Add('select WorkGroup_Type,WorkGroup_Name,WorkGroup_Id from 施工队f');
      sql.Add('where (WorkGroup_Type=:r1)or(WorkGroup_Type=:r2)');
      str:='掘进';
      parameters.ParamByName('r1').Value:=str;
      str:='开拓';
      parameters.ParamByName('r2').Value:=str;
      ExecSQL;
      open;
    end;
  DBLookUpComboBox2.ListSource:=DrillGroup_DataS;
  DBLookUpComboBox2.ListField:='WorkGroup_Name';
  DBLookUpComboBox2.KeyField:='WorkGroup_Id';
  DBLookUpComboBox2.DataSource:=Base_DataS;
  DBLookUpComboBox2.DataField:='WorkGroup';

  //从掘进任务中(Lane_AdoTab)找到所有的采区,并列入DBLookUpComboBox3控件的列表中
  with Area_AdoQ do
    begin
      close;
      sql.Clear;
      sql.Add('select distinct 巷道f.Area,采区f.Area_Name,采区f.Area_Id from 巷道f,采区f');
      sql.Add('where 巷道f.Area=采区f.Area_Name');
      ExecSQL;
      open;
    end;
  DBLookUpComboBox3.ListSource:=Area_DataS;
  DBLookUpComboBox3.ListField:='Area';
  DBLookUpComboBox3.KeyField:='Area_Id';
  DBLookUpComboBox3.DataSource:=Base_DataS;
  DBLookUpComboBox3.DataField:='Area';

  {//确定掘进接替间隔时间,机掘和炮掘分别确定间隔天数
  DrillRelayIntervT_Frm:=TDrillRelayIntervT_Frm.Create(self);
  DrillRelayIntervT_Frm.ShowModal;
  with DrillRelayIntervT_Frm.DataSource1.DataSet do
    begin
      n:=recordcount;
      setlength(DrillRelayIntervT,n+1);
      first;
      i:=1;
      while not eof do
        begin
          DrillRelayIntervT[i].Technic:=FieldByName('TechnicType').AsString;
          DrillRelayIntervT[i].IntervalTime:=FieldByName('IntervT').AsInteger;
          next;
          i:=i+1;
        end;
    end;
  DrillRelayIntervT_Frm.Free;
  DrillRelayIntervT_Frm:=nil;}
  ParaHaveEnsured:=false;

end;

procedure TDrillRelay_Frm.BitBtn3Click(Sender: TObject);
var
i,j,Pro_Id:integer;
Inf,Inf1:Variant;
EditFace_Lane:integer;
EditFace_LaneName:string;
EditBeginDate,EditEndDate:TDate;
BeginDay:integer;
//Remain,DayOutput:single;
AddTaskTime:integer;
DelT:integer;//计算当前记录修改后的结束时间与原结束时间之间的差
BK:TBookMark;

begin
  if EditMode then
    begin
      //若没有做任何修改,则退出,并做相关处理
      if(not FaceIsEdit)and(not BeginDateChange)and(not EndDateChange)then
        begin
           showmessage('没有做任何修改!');
           Base_DataS.DataSet.Cancel; //取消表的添加操作
           EditMode:=false;
           BitBtn3.Enabled:=false;

           DBGrid1.ReadOnly:=true;
           DBGrid1.Enabled:=true;
           BitBtn1.Enabled:=true;
           BitBtn2.Enabled:=true;
           BitBtn4.Enabled:=true;
           BitBtn5.Enabled:=true;
           BitBtn6.Enabled:=true;
           BitBtn7.Enabled:=true;
           BitBtn8.Enabled:=true;
           BitBtn9.Enabled:=true;
           BitBtn11.Enabled:=true;
           BitBtn12.Enabled:=true;
           BitBtn13.Enabled:=true;

           DBLookUpComboBox2.Enabled:=false;
           DBLookUpComboBox3.Enabled:=false;
           ComboBox1.Enabled:=false;
           DBLookUpListBox1.Enabled:=false;
           Label6.Visible:=false;
           Label7.Visible:=false;
           DateTimePicker1.Visible:=false;
           DateTimePicker2.Visible:=false;
           exit;
        end;

      //对修改的掘进任务的开始时间和结束时间进行判断
      EditBeginDate:=trunc(DateTimePicker1.Date);
      EditEndDate:=trunc(DateTimePicker2.Date);
      if BeginDateChange and EndDateChange then //开始时间和结束时间均修改了
        begin
          if EditBeginDate>=EditEndDate then
            begin
              showmessage('结束时间应该在开始时间之后!');
              DateTimePicker2.SetFocus;
              exit;
            end;
        end;
      if BeginDateChange then //仅仅修改了开始时间,或者开始与结束时间都修改了
        begin
          if Current.Sequence<>1 then
            begin
              if Current.Relay_Id<>1 then
                begin
                  if EditBeginDate<=CurrentPriorRelay.E_Date then
                    begin
                      showmessage('本掘进任务的开始时间应该在上一个掘进任务结束以后!');
                      DateTimePicker1.SetFocus;
                      exit;
                    end;
                end;

⌨️ 快捷键说明

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