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

📄 laneinfo_unt.pas

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

  if CurrentPriorRec.Project_Id<>CurrentRec.Project_Id then exit; //不是同一个方案不能移动
  if CurrentPriorRec.Propty<>CurrentRec.Propty then exit; //不是同一个掘进任务性质不能移动
  //把当前记录变为当前记录的前一条记录
  With Base_DataS.DataSet do
    begin
      Edit;
      FieldByName('Property').AsString:=CurrentPriorRec.Propty;
      FieldByName('Name').AsString:=CurrentPriorRec.Name;
      //FieldByName('Lane_Type').AsInteger:=CurrentPriorRec.Lane_Type;
      FieldByName('Section_Area').AsFloat:=CurrentPriorRec.Section_Area;
      FieldByName('Section_Type').AsString:=CurrentPriorRec.Section_Type;
      FieldByName('Technic_Type').AsString:=CurrentPriorRec.TechnicType;
      FieldByName('Rock_Property').AsString:=CurrentPriorRec.Rock_Property;
      //FieldByName('Rigidity').AsFloat:=CurrentPriorRec.Rigidity;
      FieldByName('State').AsString:=CurrentPriorRec.State;
      FieldByName('WorkQuantity').AsFloat:=CurrentPriorRec.WorkQuantity;
      FieldByName('DayProgress').AsFloat:=CurrentPriorRec.DayProgress;
      FieldByName('TaskTime').AsInteger:=CurrentPriorRec.TaskT;
      FieldByName('Disposed').AsInteger:=CurrentPriorRec.Disposed;

      Post;
    end;
  Base_DataS.DataSet.Prior; //到当前记录的前一条记录
  //把当前记录的前一条记录变为当前记录
  With Base_DataS.DataSet do
    begin
      Edit;
      FieldByName('Property').AsString:=CurrentRec.Propty;
      FieldByName('Name').AsString:=CurrentRec.Name;
      //FieldByName('Lane_Type').AsInteger:=CurrentRec.Lane_Type;
      FieldByName('Section_Area').AsFloat:=CurrentRec.Section_Area;
      FieldByName('Section_Type').AsString:=CurrentRec.Section_Type;
      FieldByName('Technic_Type').AsString:=CurrentRec.TechnicType;
      FieldByName('Rock_Property').AsString:=CurrentRec.Rock_Property;
      //FieldByName('Rigidity').AsFloat:=CurrentRec.Rigidity;
      FieldByName('State').AsString:=CurrentRec.State;
      FieldByName('WorkQuantity').AsFloat:=CurrentRec.WorkQuantity;
      FieldByName('DayProgress').AsFloat:=CurrentRec.DayProgress;
      FieldByName('TaskTime').AsInteger:=CurrentRec.TaskT;
      FieldByName('Disposed').AsInteger:=CurrentRec.Disposed;
      Post;
    end;
end;

procedure TLaneInfo_Frm.DBEdit4KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_RETURN then DBEdit5.SetFocus;

end;

procedure TLaneInfo_Frm.DBEdit5KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
remain:integer;
dayoutput:single;
begin
  if key=VK_RETURN then
    begin
      if DBEdit4.Text='' then
         begin
           showmessage('请确定剩余工程量!');
           DBEdit4.SetFocus;
           exit;
         end;
      if DBEdit4.Text='0' then
         begin
           DBEdit3.Field.AsInteger:=0;
           DBEdit3.SetFocus;
           exit;
         end;
      if DBEdit5.Text='' then
         begin
           showmessage('请确定日进度!');
           exit;
         end;
      if DBEdit5.Text='0' then
         begin
           DBEdit3.Field.AsInteger:=0;
           DBEdit3.SetFocus;
           exit;
         end;
      remain:=strtoint(DBEdit4.Text);
      dayoutput:=strtofloat(DBEdit5.Text);
      DBEdit3.Field.AsInteger:=round(remain/dayoutput);
      DBEdit3.SetFocus;
    end;

end;

procedure TLaneInfo_Frm.BitBtn11Click(Sender: TObject);
var
CurrentRec,CurrentNextRec:TLaneRecInfo;
CurrentRecNo,LastRecNo:integer;
MK:Tbookmark;
begin
  if Base_DataS.DataSet.RecordCount=0 then exit;

  CurrentRecNo:=Base_DataS.DataSet.RecNo;
  MK:=Base_DataS.DataSet.GetBookmark;
  Base_DataS.DataSet.Last;
  LastRecNo:=Base_DataS.DataSet.RecNo;
  Base_DataS.DataSet.GotoBookmark(MK);
  if CurrentRecNo=LastRecNo then exit;//如果是最后一条记录
  //读取当前记录的信息
  with Base_DataS.DataSet do
    begin
      CurrentRec.Project_Id:=FieldByName('Project_Id').AsInteger;
      CurrentRec.Lane_Id:=FieldByName('Lane_Id').AsInteger;
      CurrentRec.Propty:=FieldByName('Property').AsString;
      CurrentRec.Name:=FieldByName('Name').AsString;
      //CurrentRec.Lane_Type:=FieldByName('Lane_Type').AsInteger;
      CurrentRec.Section_Area:=FieldByName('Section_Area').AsFloat;
      CurrentRec.Section_Type:=FieldByName('Section_Type').AsString;
      CurrentRec.TechnicType:=FieldByName('Technic_Type').AsString;
      CurrentRec.Rock_Property:=FieldByName('Rock_Property').AsString;
      //CurrentRec.Rigidity:=FieldByName('Rigidity').AsFloat;
      CurrentRec.WorkQuantity:=FieldByName('WorkQuantity').AsFloat;
      CurrentRec.DayProgress:=FieldByName('DayProgress').AsFloat;
      CurrentRec.State:=FieldByName('State').AsString;
      CurrentRec.TaskT:=FieldByName('TaskTime').AsInteger;
      CurrentRec.Disposed:=FieldByName('Disposed').AsInteger;
      
    end;
  Base_DataS.DataSet.Next;
  //读取当前记录的下一条记录的信息
  with Base_DataS.DataSet do
    begin
      CurrentNextRec.Project_Id:=FieldByName('Project_Id').AsInteger;
      CurrentNextRec.Lane_Id:=FieldByName('Lane_Id').AsInteger;
      CurrentNextRec.Propty:=FieldByName('Property').AsString;
      CurrentNextRec.Name:=FieldByName('Name').AsString;
      //CurrentNextRec.Lane_Type:=FieldByName('Lane_Type').AsInteger;
      CurrentNextRec.Section_Area:=FieldByName('Section_Area').AsFloat;
      CurrentNextRec.Section_Type:=FieldByName('Section_Type').AsString;
      CurrentNextRec.TechnicType:=FieldByName('Technic_Type').AsString;
      CurrentNextRec.Rock_Property:=FieldByName('Rock_Property').AsString;
      //CurrentNextRec.Rigidity:=FieldByName('Rigidity').AsFloat;
      CurrentNextRec.WorkQuantity:=FieldByName('WorkQuantity').AsFloat;
      CurrentNextRec.DayProgress:=FieldByName('DayProgress').AsFloat;
      CurrentNextRec.State:=FieldByName('State').AsString;
      CurrentNextRec.TaskT:=FieldByName('TaskTime').AsInteger;
      CurrentNextRec.Disposed:=FieldByName('Disposed').AsInteger;
    end;
  Base_DataS.DataSet.Prior;//返回原位置
  if CurrentNextRec.Project_Id<>CurrentRec.Project_Id then exit;
  if CurrentNextRec.Propty<>CurrentRec.Propty then exit;
  //把当前记录变为当前记录的下一条记录
  With Base_DataS.DataSet do
    begin
      Edit;
      FieldByName('Property').AsString:=CurrentNextRec.Propty;
      FieldByName('Name').AsString:=CurrentNextRec.Name;
      //FieldByName('Lane_Type').AsInteger:=CurrentNextRec.Lane_Type;
      FieldByName('Section_Area').AsFloat:=CurrentNextRec.Section_Area;
      FieldByName('Section_Type').AsString:=CurrentNextRec.Section_Type;
      FieldByName('Technic_Type').AsString:=CurrentNextRec.TechnicType;
      FieldByName('Rock_Property').AsString:=CurrentNextRec.Rock_Property;
      //FieldByName('Rigidity').AsFloat:=CurrentNextRec.Rigidity;
      FieldByName('State').AsString:=CurrentNextRec.State;
      FieldByName('WorkQuantity').AsFloat:=CurrentNextRec.WorkQuantity;
      FieldByName('DayProgress').AsFloat:=CurrentNextRec.DayProgress;
      FieldByName('TaskTime').AsInteger:=CurrentNextRec.TaskT;
      FieldByName('Disposed').AsInteger:=CurrentNextRec.Disposed;
      Post;
    end;
  Base_DataS.DataSet.Next;
  //把当前记录的下一条记录变为当前记录
  With Base_DataS.DataSet do
    begin
      Edit;
      FieldByName('Property').AsString:=CurrentRec.Propty;
      FieldByName('Name').AsString:=CurrentRec.Name;
      //FieldByName('Lane_Type').AsInteger:=CurrentRec.Lane_Type;
      FieldByName('Section_Area').AsFloat:=CurrentRec.Section_Area;
      FieldByName('Section_Type').AsString:=CurrentRec.Section_Type;
      FieldByName('Technic_Type').AsString:=CurrentRec.TechnicType;
      FieldByName('Rock_Property').AsString:=CurrentRec.Rock_Property;
      //FieldByName('Rigidity').AsFloat:=CurrentRec.Rigidity;
      FieldByName('State').AsString:=CurrentRec.State;
      FieldByName('WorkQuantity').AsFloat:=CurrentRec.WorkQuantity;
      FieldByName('DayProgress').AsFloat:=CurrentRec.DayProgress;
      FieldByName('TaskTime').AsInteger:=CurrentRec.TaskT;
      FieldByName('Disposed').AsInteger:=CurrentRec.Disposed;
      Post;
    end;
  
end;

procedure TLaneInfo_Frm.DBComboBox6KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_RETURN then
  begin
    if DBComboBox6.Text='待开工' then DBEdit4.SetFocus;
    if DBComboBox6.Text='已完工' then
       begin
         DBEdit4.Text:='0';
         DBEdit3.Text:='0';
         BitBtn3.SetFocus;
       end;
  end;

end;

procedure TLaneInfo_Frm.BitBtn12Click(Sender: TObject);
type
  TProject=record
    Count:integer;
    Id:integer;
  end;
  TEarly=record
    BeginDate:TDate;
    Seq:integer;
  end;
var
i,j,k,t,n,ProjectCount:integer;
BeginDate,LatestDate:TDate;
Proj:array of TProject;
Early:TEarly;
str,Task_Type:string;
begin
  BitBtn2.Enabled:=true;
  BitBtn8.Enabled:=true;
  BitBtn9.Enabled:=true;
  BitBtn10.Enabled:=true;
  BitBtn11.Enabled:=true;

  //程序产生掘进任务(产生Lane_AdoTab表中的数据)
  if not MineRelay_Frm.FaceArrayFinished then
    begin
      Relay_Frm.PageControl1.Pages[0].Show;
      exit;
    end;
  if Base_DataS.DataSet.RecordCount<>0 then
    begin
      if messagedlg('已经形成了掘进任务,保留原有掘进任务继续吗?重新确定掘进任务请按‘no’,注意:如果重新确定掘进任务,以前输入的关于掘进任务的日进度和工程量等信息将被删除,需要用户在重新产生掘进任务时重新输入!',mtconfirmation,[mbyes,mbno],0)=mryes then
        begin
          //激活相应按钮
          //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;
          BitBtn13.Enabled:=true;
          exit;
        end;
    end;
  //若重新形成掘进任务,则删除原掘进接替表中的已有记录
  with Data_Frm.DrillRelay_AdoTab do
    begin
      if RecordCount>0 then
        begin
          first;
          while not eof do
            begin
              delete;
            end;
        end;
    end;
  //删除“前置工序”表中的记录
  with Data_Frm.PriorTask_AdoTab do
    begin
      if RecordCount>0 then
        begin
          first;
          while not eof do
            begin
              delete;
            end;
        end;
    end;
  //修改确定安装准备时间和掘进提前时间
  MineRelayInterval_Frm:=TMineRelayInterval_Frm.Create(self);
  MineRelayInterval_Frm.ShowModal;
  MineRelayInterval_Frm.Free;
  MineRelayInterval_Frm:=nil;

  //根据采煤工作面接替计划形成掘进任务

//1、读取采煤工作面接替计划,
//获取各个采煤工作面的时间信息,包括开始时间,结束时间,安准时间,提前时间
//检查各个接替回采面所在采区,是否是首采面:过程调用ReadRelayFace来实现
  if Data_Frm.MineRelay_AdoTab.RecordCount=0 then
    begin
      showmessage('请先安排采煤工作面接替计划!');
      //激活相应按钮
      //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;
      BitBtn13.Enabled:=true;
      exit;
    end;
  //确定掘进任务的内容
  DrillTask_Frm:=TDrillTask_Frm.Create(self);
  DrillTask_Frm.ShowModal;
  //读取掘进工作任务内容
  setlength(DrillTask,DrillTask_Frm.Base_DataS.DataSet.RecordCount+1);
  with DrillTask_Frm.Base_DataS.DataSet do //对应于“掘进工作任务”表
    begin
      i:=1;
      First;
      while not eof do
        begin
          DrillTask[i].Id:=FieldByName('Id').AsInteger;
          DrillTask[i].Name:=FieldByName('Name').AsString;
          DrillTask[i].Task_Type:=FieldByName('Type').AsString;
          DrillTask[i].PriorTask_Count:=0;
          DrillTask[i].FirstFaceDrillPrior_Count:=0;
          DrillTask[i].tag:=1; //为PriorTask读取前工序的辅助变量
          DrillTask[i].IsLastTask:=false;
          DrillTask[i].SpecialLastTask:=false;
          next;
          i:=i+1;
        end;
    end;
  //判断各类掘进任务的最后任务
  for i:=1 to High(DrillTask)-1 do
    begin
      if DrillTask[i].Task_Type<>DrillTask[i+1].Task_Type then
        DrillTask[i].IsLastTask:=true;
    end;
  DrillTask[High(DrillTask)].IsLastTask:=true;

  DrillTask_Frm.Free;
  DrillTask_Frm:=nil;

  //指定掘进工作任务的前工序情况
  DrillWorkPriorTask_Frm:=TDrillWorkPriorTask_Frm.Create(self);
  DrillWorkPriorTask_Frm.ShowModal;
  //把各掘进工作任务的前工序情况读取到数组DrillTask中的PriorTask中去,
  //以便在后面的WriteIntoLaneTab()过程中进行相关处理
  with DrillWorkPriorTask_Frm.Base_DataS.DataSet do //对应于“掘进工作任务前工序”表
    begin

⌨️ 快捷键说明

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