📄 drillrelay_unt.pas
字号:
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 + -