📄 minerelay_unt.pas
字号:
BitBtn11.Enabled:=true;
BitBtn12.Enabled:=true;
DBLookUpComboBox2.Enabled:=false;
DBLookUpComboBox3.Enabled:=false;
DBLookUpListBox1.Enabled:=false;
Label5.Caption:='';
BitBtn1.SetFocus;
end;
procedure TMineRelay_Frm.BitBtn8Click(Sender: TObject);
var
i,r:integer;
begin
inherited;
//找到被修改的当前记录及其后的接替面的回采工艺,并得到在这个回采工艺下需要间隔的时间,
for i:=1 to High(BehindRelay) do
begin
AllFace_DataS.DataSet.Locate('Face_Id',BehindRelay[i].Face_Lane,[LoCaseInsensitive]);
BehindRelay[i].TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
for r:=1 to High(IntervalPara) do
begin
if IntervalPara[r].MineTechnic=BehindRelay[i].TechnicType then
begin
BehindRelay[i].Interval:=IntervalPara[r].IntervalTime;
break;
end;
end;
end;
Base_DataS.DataSet.Edit;
DBLookUpComboBox1.Enabled:=false;
DBLookUpComboBox2.Enabled:=false;
DBLookUpComboBox3.SetFocus;
showmessage('修改完成后请按"确定"!');
end;
procedure TMineRelay_Frm.BitBtn9Click(Sender: TObject);
var
i,j,m,n,FaceId:integer;
DayOutput,Remain:single;
begin
inherited;
//读取接替面对应的回采工艺,以及接替面回采所需时间
FaceId:=Current.Face_Lane;
AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
Current.TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
//Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
//DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
//if DayOutput>10E-5 then Current.TaskTime:=round(10000*Remain/DayOutPut);
FaceId:=CurrentPriorRelay.Face_Lane;
AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
CurrentPriorRelay.TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
//Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
//DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
//if DayOutput>10E-5 then CurrentPriorRelay.TaskTime:=round(10000*Remain/DayOutPut);
for i:=1 to High(BehindRelay) do
begin
FaceId:=BehindRelay[i].Face_Lane;
AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
BehindRelay[i].TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
//Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
//DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
//if DayOutput>10E-5 then BehindRelay[i].TaskTime:=round(10000*Remain/DayOutPut);
end;
for i:=1 to High(Relay) do
begin
FaceId:=Relay[i].Face_Lane;
AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
Relay[i].TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
//Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
//DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
//if DayOutput>10E-5 then Relay[i].TaskTime:=round(10000*Remain/DayOutPut);
end;
end;
procedure TMineRelay_Frm.BitBtn1Click(Sender: TObject);
var
FaceId:integer;
Remain,DayOutput:single;
begin
inherited;
//读取接替面对应的回采工艺,以及接替面回采所需时间
FaceId:=LastRelay.Face_Lane;
AllFace_DataS.DataSet.Locate('Face_Id',FaceId,[LoCaseInsensitive]);
LastRelay.TechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
//Remain:=AllFace_DataS.DataSet.fieldbyname('Remain_Reserve').AsFloat;
//DayOutput:=AllFace_DataS.DataSet.fieldbyname('Day_Output').AsFloat;
//if DayOutput>10E-5 then LastRelay.TaskTime:=round(10000*Remain/DayOutPut);
end;
procedure TMineRelay_Frm.N1Click(Sender: TObject);
var
i,n:integer;
begin
MineRelayInterval_Frm:=TMineRelayInterval_Frm.Create(self);
MineRelayInterval_Frm.ShowModal;
n:=MineRelayInterval_Frm.Base_DataS.DataSet.RecordCount;
SetLength(IntervalPara,n+1);
with MineRelayInterval_Frm.Base_DataS.DataSet do
begin
first;
for i:=1 to n do
begin
IntervalPara[i].MineTechnic:=FieldByName('Technic_Type').AsInteger;
IntervalPara[i].FixPrepareTime:=FieldByName('FixPrepare_Time').AsInteger;
IntervalPara[i].IntervalTime:=FieldByName('Interval_Time').AsInteger;
next;
end;
end;
MineRelayInterval_Frm.Free;
MineRelayInterval_Frm:=nil;
end;
procedure TMineRelay_Frm.N2Click(Sender: TObject);
var
str1:string;
Tech:integer;
begin
if not FaceIsEdit then
begin
showmessage('请首先选择采区!');
exit;
end;
MineTechPopup_Frm:=TMineTechPopup_Frm.Create(self);
if DBLookUpListBox1.SelectedItem<>'' then
begin
str1:=DBLookUpListBox1.SelectedItem;
if AllFace_DataS.DataSet.Locate('Name',str1,[locaseinsensitive]) then
begin
Tech:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
if Data_Frm.MineTech_AdoTab.Locate('MineType_Id',Tech,[locaseinsensitive]) then
MineTechPopup_Frm.Edit1.Text:=Data_Frm.MineTech_AdoTab.FieldByName('Mine_TypeName').AsString;
end;
end;
MineTechPopup_Frm.ShowModal;
MineTechPopup_Frm.Free;
MineTechPopup_Frm:=nil;
end;
procedure TMineRelay_Frm.N3Click(Sender: TObject);
begin
DrillAssurance_Frm:=TDrillAssurance_Frm.Create(self);
DrillAssurance_Frm.ShowModal;
DrillAssurance_Frm.Free;
DrillAssurance_Frm:=nil;
end;
procedure TMineRelay_Frm.N4Click(Sender: TObject);
begin
FaceInfo_Frm:=TFaceInfo_Frm.Create(self);
FaceInfo_Frm.BorderStyle:=bsSizeable;
FaceInfo_Frm.Align:=alNone;
FaceInfo_Frm.BorderIcons:=[biSystemMenu];
FaceInfo_Frm.ShowModal;
FaceInfo_Frm.Free;
FaceInfo_Frm:=nil;
end;
function TMineRelay_Frm.FaceArrayFinished;
Type
TProject=record
Id:integer;
FaceCount:integer;
end;
var
i,j,m,ArrayingFaceCount,ArrayedFaceCount,ProjectCount:integer;
ArrayedFace:array of TRelayFaceInfo;
ArrayingFace:array of TRelayFaceInfo;
ArrayedProject:array of TProject; //每个方案中已经安排的回采面个数
str:string;
begin
//判断待采回采面是否全部安排完毕
//读取已经安排的回采面,存入ArrayedFace数组中
//result:=false;
result:=true; //初始设置已经完成所有待采面的安排
if Base_DataS.DataSet.Active then Base_DataS.DataSet.Close;
Base_DataS.DataSet.Open;
if Base_DataS.DataSet.RecordCount=0 then
begin
showmessage('您还没有安排采煤工作面接替!');
result:=false;
exit;
end;
setlength(ArrayedFace,Base_DataS.DataSet.RecordCount+1);
with Base_DataS.DataSet do
begin
first;
i:=1;
while not eof do
begin
ArrayedFace[i].Project_Id:=FieldByName('Project_Id').AsInteger;
ArrayedFace[i].Id:=FieldByName('Face_Lane').AsInteger;
Data_Frm.Face_AdoTab.Locate('Face_Id',ArrayedFace[i].Id,[locaseinsensitive]);
ArrayedFace[i].Name:=Data_Frm.Face_AdoTab.FieldByName('Name').AsString;
next;
i:=i+1;
end;
end;
//读取所有待安排的回采面,存入ArrayingFace数组中
With Data_Frm.Face_AdoTab do
begin
if not active then open;
if RecordCount=0 then
begin
showmessage('您还没有输入设计的回采面的有关参数!');
result:=true; //若没有待采面,就不存在没有安排的待采面,所以设置已经全部安排(Result:=true)
exit;
end;
setlength(ArrayingFace,RecordCount+1);
first;
i:=1;
while not eof do
begin
if FieldByName('Mined').AsInteger<>0 then
begin
ArrayingFace[i].Id:=FieldByName('Face_Id').AsInteger;
ArrayingFace[i].Name:=FieldByName('Name').AsString;
end
else //若是已经回采完毕的工作面,则:ArrayingFace[i].Id:=-1;
begin
ArrayingFace[i].Id:=-1;
end;
next;
i:=i+1;
end;
end;
ArrayingFaceCount:=0;
for i:=1 to High(ArrayingFace) do
begin
if ArrayingFace[i].Id>0 then ArrayingFaceCount:=ArrayingFaceCount+1;
end;
//计算回采接替计划有几个方案
ProjectCount:=1;
for i:=1 to High(ArrayedFace)-1 do
begin
if ArrayedFace[i].Project_Id<>ArrayedFace[i+1].Project_Id
then ProjectCount:=ProjectCount+1;
end;
setlength(ArrayedProject,ProjectCount+1);
//计算各个方案安排的回采面个数
for i:=1 to ProjectCount do
begin
ArrayedProject[i].FaceCount:=0;
end;
ArrayedProject[1].Id:=ArrayedFace[1].Project_Id;
ArrayedProject[1].FaceCount:=1;
j:=1;
for i:=2 to High(ArrayedFace) do
begin
if ArrayedFace[i].Project_Id<>ArrayedProject[j].Id then
begin
ArrayedProject[j+1].Id:=ArrayedFace[i].Project_Id;
j:=j+1;
end;
if ArrayedFace[i].Project_Id=ArrayedProject[j].Id then
begin
ArrayedProject[j].FaceCount:=ArrayedProject[j].FaceCount+1;
end;
end;
//检查各个方案安排的回采面个数是否等于待安排的回采面个数
for m:=1 to ProjectCount do
begin
//每一个方案开始,都假设该方案没有安排任何待采工作面
for i:=1 to High(ArrayingFace) do
begin
ArrayingFace[i].Arrayed:=false;
end;
if ArrayedProject[m].FaceCount>ArrayingFaceCount then
begin
showmessage('有已经采完的回采面被安排进了第'+inttostr(ArrayedProject[m].Id)+'个方案的接替计划,请返回检查!');
result:=false;
exit;
end;
//检查是哪些待安排的回采面没有被安排
if ArrayedProject[m].FaceCount<ArrayingFaceCount then
begin
for i:=1 to High(ArrayingFace) do
begin
for j:=1 to High(ArrayedFace) do
begin
//若待采面已经安排,则将其数组ArrayingFace中的名称Name置为空
if (ArrayedProject[m].Id=ArrayedFace[j].Project_Id)and(ArrayingFace[i].Id=ArrayedFace[j].Id)
then ArrayingFace[i].Arrayed:=true;
end;
end;
Str:='';
for i:=1 to High(ArrayingFace) do
begin
if (not ArrayingFace[i].Arrayed)and(ArrayingFace[i].Id>0) then Str:=Str+ArrayingFace[i].Name+',';
end;
if messagedlg('请注意,第'+inttostr(ArrayedProject[m].Id)+'个方案没有安排回采面:'+Str+'要返回并修改采煤工作面接替计划请按‘yes’',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
result:=false;
exit;
end;
end;//end:if ArrayedProject[m].FaceCount<ArrayingFaceCount then
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -