📄 minerelay_unt.pas
字号:
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
BitBtn4.Enabled:=true;
BitBtn5.Enabled:=true;
BitBtn6.Enabled:=true;
BitBtn7.Enabled:=true;
BitBtn8.Enabled:=true;
BitBtn9.Enabled:=true;
BitBtn10.Enabled:=true;
BitBtn11.Enabled:=true;
BitBtn12.Enabled:=true;
DBLookUpComboBox2.Enabled:=false;
DBLookUpComboBox3.Enabled:=false;
DBLookUpListBox1.Enabled:=false;
Label6.Visible:=false;
Label7.Visible:=false;
DateTimePicker1.Visible:=false;
DateTimePicker2.Visible:=false;
exit;
end;
DBLookUpListBox1.SetFocus;
exit;
end;
end;
Base_DataS.DataSet.FieldByName('Face_Lane').AsInteger:=EditFace;
end; //end:if DBLookUpListBox1.SelectedItem<>''
//处理时间修改的问题
if (BeginDateChange)and(not EndDateChange)then//仅仅修改开始时间
begin
Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EditBeginDate;
Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditBeginDate+Current.TaskTime;
end;
if (not BeginDateChange)and(EndDateChange)then//仅仅修改结束时间
begin
Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditEndDate;
end;
if (BeginDateChange)and(EndDateChange)then //开始和结束时间都修改了
begin
Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=EditBeginDate;
Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=EditEndDate;
end;
try
Base_DataS.DataSet.Post;
if(BeginDateChange)or(EndDateChange)then
begin
//计算修改后的结束时间与原结束时间之间的差
DelT:=trunc(Base_DataS.DataSet.FieldByName('End_Date').AsDateTime-Current.E_Date);
//根据当前记录的日期修改,对其后的记录的日期进行相应修改,
//对于前面的记录则无需修改,因为当前记录的起始日期变化不会影响到前面的工序
BK:=Base_DataS.DataSet.GetBookmark;
if not IsLast then
begin
Base_DataS.DataSet.Next;
with Base_DataS.DataSet do
begin
for i:=2 to High(BehindRelay) do //i从2开始是被修改记录的后面的记录
begin
if (BehindRelay[i].Project_Id=Current.Project_Id)and(BehindRelay[i].Relay_Route=Current.Relay_Route)
then
begin
Edit;
FieldByName('Begin_Date').AsDateTime:=BehindRelay[i].B_Date+DelT;
FieldByName('End_Date').AsDateTime:=BehindRelay[i].E_Date+DelT;
Post;
end;
next;
end;
end;
end;//end:if not IsLast then
Base_DataS.DataSet.GotoBookmark(BK);
Base_DataS.DataSet.FreeBookmark(BK);
end;
except
Base_DataS.DataSet.Cancel;
showmessage('数据更新没有成功!');
end;
end;
if Inf=mrno
then
begin
Base_DataS.DataSet.Cancel;
end;
EditMode:=false;
//设置相应按钮的状态
BitBtn1.Enabled:=true;
BitBtn2.Enabled:=true;
BitBtn4.Enabled:=true;
BitBtn5.Enabled:=true;
BitBtn6.Enabled:=true;
BitBtn7.Enabled:=true;
BitBtn8.Enabled:=true;
BitBtn9.Enabled:=true;
BitBtn10.Enabled:=true;
BitBtn11.Enabled:=true;
BitBtn12.Enabled:=true;
BitBtn3.Enabled:=false;
DBLookUpComboBox2.Enabled:=false;
DBLookUpComboBox3.Enabled:=false;
DBLookUpListBox1.Enabled:=false;
Label6.Visible:=false;
Label7.Visible:=false;
DateTimePicker1.Visible:=false;
DateTimePicker2.Visible:=false;
//修改完毕后退出
Exit;
end;
//处理添加方案
if VarIsNull(Base_DataS.DataSet.fieldbyname('Project_Id').Value) then
begin
showmessage('请选择一个方案!');
DBLookUpComboBox1.SetFocus;
exit;
end;
Pro_Id:=Project_DataS.DataSet.fieldbyname('Project_Id').AsInteger;
for j:=1 to High(Relay) do
begin
if Pro_Id=Relay[j].Project_Id then
begin
showmessage('该方案已经存在,请按"添加"或者"插入"对该方案安排接替!');
Base_DataS.DataSet.Cancel;
BitBtn3.Enabled:=false;
DBGrid1.ReadOnly:=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;
BitBtn10.Enabled:=true;
BitBtn11.Enabled:=true;
BitBtn12.Enabled:=true;
for i:=1 to Panel2.ControlCount do
begin
if Panel2.Controls[i-1].Tag>=0 then
Panel2.Controls[i-1].Enabled:=false;
end;
exit;
end;
end;
if VarIsNull(Base_DataS.DataSet.fieldbyname('WorkGroup').Value) then
begin
showmessage('请选择一个施工队!');
DBLookUpComboBox2.SetFocus;
exit;
end;
if VarIsNull(Base_DataS.DataSet.fieldbyname('Area').Value) then
begin
showmessage('请选择一个接替任务范围!');
DBLookUpComboBox3.SetFocus;
exit;
end;
Base_DataS.DataSet.fieldbyname('Face_Lane').AsInteger:=Face_DataS.DataSet.fieldbyname('Face_Id').AsInteger;
if VarIsNull(Base_DataS.DataSet.fieldbyname('Face_Lane').Value) then
begin
showmessage('请选择一个回采面或者巷道!');
DBLookUpListBox1.SetFocus;
exit;
end;
//计算添加的回采面的工期AddTaskTime
Remain:=Face_DataS.DataSet.FieldByName('Remain_Reserve').AsFloat;
DayOutput:=Face_DataS.DataSet.FieldByName('Day_Output').AsFloat;
AddTaskTime:=Face_DataS.DataSet.FieldByName('TaskTime').AsInteger;
{if DayOutput>10E-5
then AddTaskTime:=round(10000*Remain/DayOutput)
else
begin
AddTaskTime:=1;
showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
end;}
if AddTaskTime<=0 then
begin
AddTaskTime:=1;
showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
end;
//调试用
//showmessage('剩余储量为:'+floattostr(10000*Remain)+',日产量为:'+floattostr(DayOutput)+',预计工期为:'+inttostr(AddTaskTime));
Base_DataS.DataSet.fieldbyname('Relay_Route').AsInteger:=1;
Base_DataS.DataSet.fieldbyname('Relay_Id').AsInteger:=1;
Base_DataS.DataSet.fieldbyname('TaskTime').AsInteger:=AddTaskTime;
//确定该回采面的开始时间
//通过界面输入该采煤队的第一个回采面的开始时间
TimePara_Frm:=TTimePara_Frm.Create(self);
TimePara_Frm.ShowModal;
BeginDay:=TimePara_Frm.BeginTime;
TimePara_Frm.Free;
TimePara_Frm:=nil;
Base_DataS.DataSet.FieldByName('Begin_Date').AsDateTime:=BeginDay;
Base_DataS.DataSet.FieldByName('End_Date').AsDateTime:=BeginDay+AddTaskTime;
inherited;
BitBtn9.Enabled:=true;
BitBtn10.Enabled:=true;
BitBtn11.Enabled:=true;
BitBtn12.Enabled:=true;
BitBtn1.SetFocus;
end;
procedure TMineRelay_Frm.AddPost_NewRelayTask;
var
i,r:integer;
Inf1:variant;
AddWorkGroup,AddFace:integer; //新添加的记录的施工队和工作面的编号
AddWorkGroupName,AddFaceName:string; //新添加的记录的施工队和工作面的名称
Remain,DayOutput:single; //新添加的记录的回采面的剩余储量和日产量
AddTaskTime,Interv,BeginDay,EndDay:integer;//新添加的记录的回采面工期,接替间隔时间,开始时间,结束时间
AddTechnicType:integer;//添加的记录的回采面的回采工艺
begin
if varisnull(Base_DataS.DataSet.FieldByName('WorkGroup').Value) then
begin
showmessage('请选择相应的施工队!');
exit;
end;
if varisnull(Base_DataS.DataSet.FieldByName('Area').Value) then
begin
showmessage('请选择相应的采区!');
exit;
end;
//读取界面给新添加记录指定的值,这些值可能不符合要求,需要进行调整
AddWorkGroup:=MineGroup_DataS.DataSet.FieldByName('WorkGroup_Id').AsInteger;
AddWorkGroupName:=MineGroup_DataS.DataSet.FieldByName('WorkGroup_Name').AsString;
AddFace:=Face_DataS.DataSet.FieldByName('Face_Id').AsInteger;
AddFaceName:=Face_DataS.DataSet.FieldByName('Name').AsString;
//计算添加的回采面的工期AddTaskTime
Remain:=Face_DataS.DataSet.FieldByName('Remain_Reserve').AsFloat;
DayOutput:=Face_DataS.DataSet.FieldByName('Day_Output').AsFloat;
AddTaskTime:=Face_DataS.DataSet.FieldByName('TaskTime').AsInteger;
{if DayOutput>10E-5
then AddTaskTime:=round(10000*Remain/DayOutput)
else
begin
AddTaskTime:=1;
showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
end;}
if AddTaskTime<=0 then
begin
AddTaskTime:=1;
showmessage('预计回采面工期有问题,暂时指定工期为1天,请到回采面参数输入界面进行修改!');
end;
//找到添加的这个接替面的回采工艺,并得到在这个回采工艺下,接替下一个面时需要间隔的时间
AllFace_DataS.DataSet.Locate('Face_Id',AddFace,[LoCaseInsensitive]);
AddTechnicType:=AllFace_DataS.DataSet.fieldbyname('Technic_Type').AsInteger;
for r:=1 to High(IntervalPara) do
begin
if IntervalPara[r].MineTechnic=AddTechnicType then
begin
Interv:=IntervalPara[r].IntervalTime;
break;
end;
end;
//最终确定新添加记录的各个字段值
Base_DataS.DataSet.FieldByName('Sequence').AsInteger:=LastRelay.Sequence+1;
Base_DataS.DataSet.FieldByName('Project_Id').AsInteger:=LastRelay.Project_Id;
//判断同一个方案中的接替面是否有重复,若有重复,则退出添加过程,重新指定接替面
for i:=1 to High(Relay) do
begin
if(Relay[i].Project_Id=LastRelay.Project_Id)and(Relay[i].Face_Lane=AddFace)
then
begin
Inf1:=messagedlg('该方案中不能重复接替 "'+AddFaceName+'",请重新选择回采面!继续请按"yes"!',mtconfirmation,[mbyes,mbno],0);
if Inf1=mrno then
begin
Base_DataS.DataSet.Cancel; //取消添加操作
AddMode:=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;
BitBtn10.Enabled:=true;
BitBtn11.Enabled:=true;
BitBtn12.Enabled:=true;
DBLookUpComboBox2.Enabled:=false;
DBLookUpComboBox3.Enabled:=false;
DBLookUpListBox1.Enabled:=false;
Label5.Caption:='';
exit;
end;
DBLookUpListBox1.SetFocus;
exit;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -