📄 main_unt.pas
字号:
begin
if MineRelay_FrmCreated
then MineRelay_Frm.MineRelay_Report
else
begin
MineRelay_Frm:=TMineRelay_Frm.Create(self);
MineRelay_Frm.MineRelay_Report;
end;
end;
procedure TMain_Frm.N24Click(Sender: TObject);
begin
if DrillRelay_FrmCreated
then DrillRelay_Frm.DrillRelay_Report
else
begin
DrillRelay_Frm:=TDrillRelay_Frm.Create(self);
DrillRelay_Frm.DrillRelay_Report;
end;
end;
//调整回采面的工期后,调整回采接替计划的开、完工时间;掘进任务的开、完工时间;掘进接替计划的开、完工时间
procedure TMain_Frm.N17Click(Sender: TObject);
var
FaceTaskT:array of TFaceTask;
i,j,m,n,Id:integer;
//d:Tdate;
//BookM:TBookMark;
FaceN:string;
begin
if HaveForm then
begin
showmessage('请先关闭工作区内的窗体!');
exit;
end;
FaceInfo_Frm:=TFaceInfo_Frm.Create(self);
FaceInfo_Frm.BorderStyle:=bsSizeable;
FaceInfo_Frm.Align:=alNone;
FaceInfo_Frm.BorderIcons:=[biSystemMenu,biMinimize,biMaximize];
FaceInfo_Frm.Caption:='工作面参数修改';
FaceParaAdjust:=true;//使处于回采面参数调整状态
FaceInfo_Frm.ShowModal;
if Data_Frm.MineRelay_AdoTab.RecordCount=0 then
begin
//showmessage('');
exit; //若还没有安排回采接替,则退出时间调整
end;
m:=Data_Frm.MineRelay_AdoTab.RecordCount;
setlength(FaceTaskT,m+1);
//记录工期变化之差,在回采接替表中(MineRelay_AdoTab)存有回采面的原工期,
//修改了回采面表中的工期后,就可以用修改了的工期减去回采接替表中的原工期,
//得出工期变化量
Data_Frm.MineRelay_AdoTab.First;
for i:=1 to m do
begin
FaceTaskT[i].FaceId:=Data_Frm.MineRelay_AdoTab.FieldByName('Face_Lane').AsInteger;
Data_Frm.Face_AdoTab.Locate('Face_Id',FaceTaskT[i].FaceId,[locaseinsensitive]);
//计算修改工作面工期参数后,已经制订的回采计划中的回采面工期与修改后的回采面的工期之差
FaceTaskT[i].DeltaT:=Data_Frm.Face_AdoTab.FieldByName('TaskTime').AsInteger-
Data_Frm.MineRelay_AdoTab.FieldByName('TaskTime').AsInteger;
FaceTaskT[i].FaceName:=Data_Frm.Face_AdoTab.FieldByName('Name').AsString;
Data_Frm.MineRelay_AdoTab.Next;
end;
//调整回采接替计划中的工期和开、完工时间
for i:=1 to m do
begin
if FaceTaskT[i].DeltaT<>0 then //若回采面的工期发生改变
begin
AdjustMineRelayTime(FaceTaskT[i]);
end;
end;
if Data_Frm.Lane_AdoTab.RecordCount=0 then
begin
//showmessage('');
exit;//若没有形成掘进任务,则退出
end;
with Data_Frm.Lane_AdoTab do
begin
first;
while not eof do
begin
if (FieldByName('State').AsString='待开工')
and((FieldByName('LST').AsDateTime=null)or(FieldByName('LFT').AsDateTime=null))
then
begin
showmessage('请先进入“掘进方案-掘进任务”界面计算掘进任务的最迟开、完工时间');
exit;
end;
next;
end;
end;
//调整掘进任务中的开、完工时间
for i:=1 to High(FaceTaskT) do
begin
if FaceTaskT[i].DeltaT<>0 then
begin
//Data_Frm.MineRelay_AdoTab.Locate('Face_Lane',FaceTaskT[i].FaceId,[locaseinsensitive]);
with Data_Frm.MineRelay_AdoTab do
begin
Locate('Face_Lane',FaceTaskT[i].FaceId,[locaseinsensitive]);
next; //寻找改变工期的回采面的所有接替面,以便修改接替面的掘进准备开、完工时间
while(FieldByName('Relay_Id').AsInteger<>1)and(not eof)do
begin
Id:=FieldByName('Face_Lane').AsInteger;
Data_Frm.Face_AdoTab.Locate('Face_Id',Id,[locaseinsensitive]);
FaceN:=Data_Frm.Face_AdoTab.FieldByName('Name').AsString;
AdjustDrillTaskTime(FaceN,FaceTaskT[i]);
next;
end;
end;
end;
end; //end: for i:=1 to High(FaceTaskT) do
//调整掘进接替计划中的开、完工时间,较复杂,暂时放在这里
end;
procedure TMain_Frm.AdjustDrillTaskTime(FaceName:string;FaceTask:TFaceTask);
var
BookM:TBookMark;
Face:string;
d:TDate;
begin
with Data_Frm.Lane_AdoTab do
begin
first;
while not eof do
begin
Face:=FieldByName('Face').AsString;
if(Face=FaceName)then
begin
while (not eof)and(Face=FaceName) do
begin
next;
Face:=FieldByName('Face').AsString;
end;
if not eof then Prior;
BookM:=GetBookMark;
Face:=FieldByName('Face').AsString;
while(not bof)and((Face=FaceName)or((Face=null)or(Face='')))
and(FieldByName('State').AsString<>'已完工')do
begin
edit;
d:=FieldByName('LST').AsDateTime;
d:=d+FaceTask.DeltaT;
FieldByName('LST').AsDateTime:=d;
post;
edit;
d:=FieldByName('LFT').AsDateTime;
d:=d+FaceTask.DeltaT;
FieldByName('LFT').AsDateTime:=d;
post;
Prior;
Face:=FieldByName('Face').AsString;
end;
GotoBookMark(BookM);
end; //end: if(FaceN=FaceName)then
next;
end;
end; //end: with Data_Frm.Lane_AdoTab do
end;
procedure TMain_Frm.AdjustMineRelayTime(FaceTask:TFaceTask);
var
BookM:TBookMark;
Id:integer;
d:TDate;
begin
With Data_Frm.MineRelay_AdoTab do
begin
first;
Id:=FieldByName('Face_Lane').AsInteger;
while(not eof)and(Id<>FaceTask.FaceId)do
begin
next;
Id:=FieldByName('Face_Lane').AsInteger;
end;
if Id<>FaceTask.FaceId then
begin
showmessage('回采接替计划中没有涉及到被修改的回采面“'+FaceTask.FaceName+'”');
exit;
end;
edit;
FieldByName('TaskTime').AsInteger:=FieldByName('TaskTime').AsInteger+FaceTask.DeltaT;
post;
//被修改工期的回采面,只改变它的完工日期,即,认定改变工期时,开工时间没有变化
d:=FieldByName('End_Date').AsDateTime;
d:=d+FaceTask.DeltaT;
edit;
FieldByName('End_Date').AsDateTime:=d;
Post;
next;
while (not eof)and(FieldByName('Relay_Id').AsInteger<>1) do
begin
d:=FieldByName('Begin_Date').AsDateTime;
d:=d+FaceTask.DeltaT;
edit;
FieldByName('Begin_Date').AsDateTime:=d;
post;
d:=FieldByName('End_Date').AsDateTime;
d:=d+FaceTask.DeltaT;
edit;
FieldByName('End_Date').AsDateTime:=d;
post;
next;
end;
end; //end: With Data_Frm.MineRelay_AdoTab do //调整回采接替计划中的工期和开、完工时间
end;
procedure TMain_Frm.N27Click(Sender: TObject);
begin
MineStatistic_Frm:=TMineStatistic_Frm.Create(self);
MineStatistic_Frm.ShowModal;
end;
procedure TMain_Frm.N2Click(Sender: TObject);
begin
DrillStatistic_Frm:=TDrillStatistic_Frm.Create(self);
DrillStatistic_Frm.ShowModal;
end;
procedure TMain_Frm.N35Click(Sender: TObject);
begin
Frm_Gra:=TFrm_Gra.Create(self);
Frm_Gra.ShowModal;
Frm_Gra.Free;
Frm_Gra:=nil;
end;
procedure TMain_Frm.N36Click(Sender: TObject);
begin
Frm_Project:=TFrm_Project.Create(self);
Frm_Project.ShowModal;
Frm_Project.Free;
Frm_Project:=nil;
end;
procedure TMain_Frm.N26Click(Sender: TObject);
begin
if HaveForm then exit;
MineRelayEdit_Frm:=TMineRelayEdit_Frm.Create(Panel2);
MineRelayEdit_Frm.Parent:=Panel2;
MineRelayEdit_Frm.Show;
HaveForm:=true;
StatusBar1.Panels[0].Text:='回采工作统计......';
end;
procedure TMain_Frm.N30Click(Sender: TObject);
begin
if HaveForm then exit;
DrillRelayEdit_Frm:=TDrillRelayEdit_Frm.Create(Panel2);
DrillRelayEdit_Frm.Parent:=Panel2;
DrillRelayEdit_Frm.Show;
HaveForm:=true;
StatusBar1.Panels[0].Text:='掘进工作统计......';
end;
procedure TMain_Frm.N32Click(Sender: TObject);
begin
Hint_Frm:=THint_Frm.Create(self);
try
MineRelay_Frm.MineRelayTrace;
except
end;
Hint_Frm.Free;
Hint_Frm:=nil;
end;
procedure TMain_Frm.ToolButton13Click(Sender: TObject);
begin
close;
end;
procedure TMain_Frm.N33Click(Sender: TObject);
begin
try
DrillRelay_Frm.DrillRelayTrace;
except
end;
end;
procedure TMain_Frm.FormActivate(Sender: TObject);
begin
//Main_Frm.Refresh;
end;
procedure TMain_Frm.Button1Click(Sender: TObject);
var
i,j,k,m,n:integer;
begin
if Data_Frm.Lane_AdoTab.RecordCount=0 then
begin
showmessage('没有掘进任务记录!');
exit;
end;
m:=Data_Frm.Lane_AdoTab.RecordCount;
setlength(DT_Prog,m+1);
//读取
with Data_Frm.Lane_AdoTab do
begin
if not active then open;
first;
i:=1;
while not eof do
begin
DT_Prog[i].Lane_Id:=FieldByName('Lane_Id').AsInteger;
DT_Prog[i].Project_Id:=FieldByName('Project_Id').AsInteger;
DT_Prog[i].Name:=FieldByName('Name').AsString;
DT_Prog[i].Section_Type:=FieldByName('Section_Type').AsString;
DT_Prog[i].WorkQuantity:=FieldByName('WorkQuantity').AsFloat;
DT_Prog[i].DayProgress:=FieldByName('DayProgress').AsFloat;
DT_Prog[i].TaskTime:=FieldByName('TaskTime').AsInteger;
next;
i:=i+1;
end;
end;
//写入
with Data_Frm.DrillTask_DayProgress do
begin
for i:=1 to High(DT_Prog) do
begin
if not active then open;
append;
FieldByName('Lane_Id').AsInteger:=DT_Prog[i].Lane_Id;
FieldByName('Project_Id').AsInteger:=DT_Prog[i].Project_Id;
FieldByName('Name').AsString:=DT_Prog[i].Name;
FieldByName('Section_Type').AsString:=DT_Prog[i].Section_Type;
FieldByName('WorkQuantity').AsFloat:=DT_Prog[i].WorkQuantity;
FieldByName('DayProgress').AsFloat:=DT_Prog[i].DayProgress;
FieldByName('TaskTime').AsInteger:=DT_Prog[i].TaskTime;
post;
end;
end;
end;
procedure TMain_Frm.Button2Click(Sender: TObject);
var
i,j,k,m,n:integer;
NameStr:string;
begin
if not Data_Frm.DrillTask_DayProgress.Active then Data_Frm.DrillTask_DayProgress.open;
if Data_Frm.DrillTask_DayProgress.RecordCount=0 then
begin
showmessage('没有掘进任务日进度信息记录!');
exit;
end;
m:=Data_Frm.DrillTask_DayProgress.RecordCount;
setlength(DT_Prog,m+1);
//读取
with Data_Frm.DrillTask_DayProgress do
begin
if not active then open;
first;
i:=1;
while not eof do
begin
DT_Prog[i].Lane_Id:=FieldByName('Lane_Id').AsInteger;
DT_Prog[i].Project_Id:=FieldByName('Project_Id').AsInteger;
DT_Prog[i].Name:=FieldByName('Name').AsString;
DT_Prog[i].Section_Type:=FieldByName('Section_Type').AsString;
DT_Prog[i].WorkQuantity:=FieldByName('WorkQuantity').AsFloat;
DT_Prog[i].DayProgress:=FieldByName('DayProgress').AsFloat;
DT_Prog[i].TaskTime:=FieldByName('TaskTime').AsInteger;
next;
i:=i+1;
end;
end;
//写入
with Data_Frm.Lane_AdoTab do
begin
if not active then open;
first;
while not eof do
begin
NameStr:=FieldByName('Name').AsString;
for i:=1 to High(DT_Prog) do
begin
if DT_Prog[i].Name=NameStr then
begin
edit;
//FieldByName('Lane_Id').AsInteger:=DT_Prog[i].Lane_Id;
//FieldByName('Project_Id').AsInteger:=DT_Prog[i].Project_Id;
//FieldByName('Name').AsString:=DT_Prog[i].Name;
FieldByName('Section_Type').AsString:=DT_Prog[i].Section_Type;
FieldByName('WorkQuantity').AsFloat:=DT_Prog[i].WorkQuantity;
FieldByName('DayProgress').AsFloat:=DT_Prog[i].DayProgress;
FieldByName('TaskTime').AsInteger:=DT_Prog[i].TaskTime;
post;
break;
end;
end;
next;
end;
end;
showmessage('导入完毕,请查看!');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -