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

📄 laneinfo_unt.pas

📁 煤矿行业采掘接替计划自动生成系统
💻 PAS
📖 第 1 页 / 共 5 页
字号:
                  showmessage('不能在此处添加方案'+inttostr(AppendProject)+'的任务,请在前面的对应方案中插入任务!');
                  Base_DataS.DataSet.Cancel;
                  for j:=1 to Panel2.ControlCount do
                      begin
                        if (Panel2.Controls[j-1].Tag>=0)and(Panel2.Controls[j-1].ClassType<>TLabel)
                          and(Panel2.Controls[j-1].ClassType<>TDBGrid)and(Panel2.Controls[j-1].ClassType<>TBitBtn) then
                                              Panel2.Controls[j-1].Enabled:=false;
                      end;
                  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;
                  //BitBtn1.SetFocus;
                  exit;
                end;
            end;
        end;
    end;
  if DBEdit1.Text='' then
    begin
      showmessage('请输入任务名称后再确定!');
      BitBtn3.Enabled:=true;
      //DBEdit1.Enabled:=true;
      DBEdit1.SetFocus;
      exit;
    end;
  if VarIsNull(Base_DataS.DataSet.FieldByName('Section_Type').Value)
    then
      begin
        showmessage('请输入巷道的断面类型后再确定!');
        BitBtn3.Enabled:=true;
        //DBComboBox2.Enabled:=true;
        DBComboBox2.SetFocus;
        exit;
      end;
  if VarIsNull(Base_DataS.DataSet.FieldByName('Support_Type').Value)
    then
      begin
        showmessage('请输入巷道的支护方式后再确定!');
        BitBtn3.Enabled:=true;
        //DBComboBox3.Enabled:=true;
        DBComboBox3.SetFocus;
        exit;
      end;
  if VarIsNull(Base_DataS.DataSet.FieldByName('Technic_Type').Value)
    then
      begin
        showmessage('请输入掘进工艺后再确定!');
        BitBtn3.Enabled:=true;
        //DBComboBox4.Enabled:=true;
        DBComboBox4.SetFocus;
        exit;
      end;
  if VarIsNull(Base_DataS.DataSet.FieldByName('Rock_Property').Value)
    then
      begin
        showmessage('请输入巷道岩性后再确定!');
        BitBtn3.Enabled:=true;
        //DBComboBox5.Enabled:=true;
        DBComboBox5.SetFocus;
        exit;
      end;
  inherited;
  BKM:=Base_DataS.DataSet.GetBookmark;
  Base_DataS.DataSet.Close;
  Base_DataS.DataSet.Open;
  Base_DataS.DataSet.GotoBookmark(BKM);
  Base_DataS.DataSet.FreeBookmark(BKM);
  BitBtn1.Enabled:=false;
  BitBtn9.Enabled:=false;
  //if not BitBtn9.Enabled then BitBtn9.Enabled:=true;
  if not BitBtn10.Enabled then BitBtn10.Enabled:=true;
  if not BitBtn11.Enabled then BitBtn11.Enabled:=true;
end;

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

end;

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

end;

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

end;

procedure TLaneInfo_Frm.DBComboBox5KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_RETURN then
  begin
    //DBComboBox6.Text:='待开工';
    DBComboBox6.SetFocus;
  end;

end;

procedure TLaneInfo_Frm.BitBtn9Click(Sender: TObject);
var
BehindSequence:array of integer;
i,j:integer;
CurrentProject,CurrentRecNo,LastRecNo,InsertRecNo,m:integer;
BK:TBookMark;
begin
  AddMode:=false;
  if Base_DataS.DataSet.RecordCount=0 then exit;
  BK:=Base_DataS.DataSet.GetBookmark;
  //Base_DataS.DataSet.Next;
  //确定当前记录及其以后的记录数目
  CurrentProject:=Base_DataS.DataSet.FieldByName('Project_Id').AsInteger;
  CurrentRecNo:=Base_DataS.DataSet.RecNo;
  InsertRecNo:=CurrentRecNo;//记录插入记录的标号
  //Mark:=Base_DataS.DataSet.GetBookmark;
  Base_DataS.DataSet.Last;
  LastRecNo:=Base_DataS.DataSet.RecNo;
  m:=LastRecNo-CurrentRecNo+1;
  Setlength(BehindSequence,m+1);
  //读取当前记录及其以后的所有记录的序号信息Lane_Id
  Base_DataS.DataSet.GotoBookmark(BK); //返回原位置
  with Base_DataS.DataSet do
    begin
      i:=1;
      while not eof do
        begin
          BehindSequence[i]:=FieldByName('Lane_Id').AsInteger;
          next;
          i:=i+1;
        end;
    end;
  Base_DataS.DataSet.GotoBookmark(BK); //返回原位置
  //把插入位置以后的记录的序号暂时变为从-1开始的负值
  with Base_DataS.DataSet do
    begin
      //i:=1;
      j:=-1;
      while not eof do
        begin
          edit;
          FieldByName('Lane_Id').AsInteger:=j;
          post;
          next;
          //i:=i+1;
          j:=j-1;
        end;
    end;
  Base_DataS.DataSet.GotoBookmark(BK); //返回原位置
  Base_DataS.DataSet.Insert;
  //把插入记录的序号改为插入时的当前记录的序号
  Base_DataS.DataSet.FieldByName('Lane_Id').AsInteger:=BehindSequence[1];
  Base_DataS.DataSet.FieldByName('Project_Id').AsInteger:=CurrentProject;
  Base_DataS.DataSet.Post;//此时,这个插入的记录被更新到最后一个记录

  Base_DataS.DataSet.GotoBookmark(BK); //返回原位置
  //把插入位置以后的记录的暂时变为从-1开始的负值的序号再进行修正
  with Base_DataS.DataSet do
    begin
      i:=1;
      while RecNo<=LastRecNo do
        begin
          edit;
          FieldByName('Lane_Id').AsInteger:=BehindSequence[i]+1;
          post;
          next;
          i:=i+1;
          //j:=j-1;
        end;
    end;
  Base_DataS.DataSet.Close;
  Base_DataS.DataSet.Open;
  Base_DataS.DataSet.First;
  //找到新插入的记录,然后具体填写记录的信息
  while not Base_DataS.DataSet.Eof do
    begin
      if Base_DataS.DataSet.RecNo=InsertRecNo then break;
      Base_DataS.DataSet.Next;
    end;
  Base_DataS.DataSet.Edit;

  BitBtn3.Enabled:=true;
  DBGrid1.ReadOnly:=false;

  //DBGrid1.Enabled:=false;
  BitBtn1.Enabled:=false;
  BitBtn2.Enabled:=false;
  BitBtn4.Enabled:=false;
  BitBtn5.Enabled:=false;
  BitBtn6.Enabled:=false;
  BitBtn7.Enabled:=false;
  BitBtn8.Enabled:=false;
  BitBtn10.Enabled:=false;
  BitBtn11.Enabled:=false;
  //ModifyRec(Base_DataS.DataSet);
  for i:=1 to Panel2.ControlCount do
      begin                              
        if (Panel2.Controls[i-1].Tag>=0)and(Panel2.Controls[i-1].ClassType<>TLabel)
          and(Panel2.Controls[i-1].ClassType<>TDBGrid)and(Panel2.Controls[i-1].ClassType<>TBitBtn) then
                                         Panel2.Controls[i-1].Enabled:=true;
      end;
  //方案编号不允许修改,插入记录的方案编号必须和当前记录相同
  DBLookUpComboBox1.Enabled:=false;
  DBEdit1.SetFocus;

end;

procedure TLaneInfo_Frm.BitBtn2Click(Sender: TObject);
var
LastRecNo,CurrentRecNo,m,i:integer;
BK:TBookMark;
Sequence:array of integer;
Current_LST,Current_LFT:TDate;
begin
  CurrentRecNo:=Base_DataS.DataSet.RecNo;
  if Base_DataS.DataSet.FieldByName('LST').AsDateTime=null
    then Current_LST:=0
    else Current_LST:=Base_DataS.DataSet.FieldByName('LST').AsDateTime;
  if Base_DataS.DataSet.FieldByName('LFT').AsDateTime=null
    then Current_LFT:=0
    else Current_LFT:=Base_DataS.DataSet.FieldByName('LFT').AsDateTime;
  BK:=Base_DataS.DataSet.GetBookmark;
  Base_DataS.DataSet.Last;
  LastRecNo:=Base_DataS.DataSet.RecNo;
  Base_DataS.DataSet.GotoBookmark(BK);
  m:=LastRecNo-CurrentRecNo+1;
  if m>1 then //如果被删除的记录不是最后一条记录,则记录当前记录及其之后的序号信息
    begin
      SetLength(Sequence,m+1);
      i:=1;
      while not Base_DataS.DataSet.Eof do
        begin
          with Base_DataS.DataSet do
            begin
              Sequence[i]:=FieldByName('Lane_Id').AsInteger;
              next;
              i:=i+1;
            end;
        end;
    end;
  Base_DataS.DataSet.GotoBookmark(BK);
  Base_DataS.DataSet.FreeBookmark(BK);
  inherited;//删除当前记录后,若被删除的当前记录不是第一条记录,则当前指针指向上一条记录,如果是第一条记录,则指向下一条记录
  BK:=Base_DataS.DataSet.GetBookmark;
  if CurrentRecNo=1 then  //删除的记录是第一条记录,删除后指针指向第二条记录
    begin
      i:=2;
      With Base_DataS.DataSet do
        begin
          while not eof do
            begin
              edit;
              FieldByName('Lane_Id').AsInteger:=Sequence[i]-1;
              Post;
              next;
              i:=i+1;
            end;
        end;
    end;
  if m=1 then //删除的记录是最后一条记录,无需修改
    begin
    end;
  if (CurrentRecNo<>1)and(m>1)then //删除的记录既不是第一条记录,也不是最后一条记录,删除后指针指向被删除记录的前一条记录
    begin
      Base_DataS.DataSet.Next;//指向被删除记录的下一条记录
      i:=2;
      With Base_DataS.DataSet do
        begin
          while not eof do
            begin
              edit;
              FieldByName('Lane_Id').AsInteger:=Sequence[i]-1;
              post;
              next;
              i:=i+1;
            end;
        end;
    end;
  Base_DataS.DataSet.GotoBookmark(BK);
  if (Current_LST=0)and(Current_LFT>0)and(CurrentRecNo>1)then
    begin
      Base_DataS.DataSet.Edit;
      Base_DataS.DataSet.FieldByName('LFT').AsDateTime:=Current_LFT;
      Base_DataS.DataSet.Post;
    end;
  Base_DataS.DataSet.FreeBookmark(BK);
end;

procedure TLaneInfo_Frm.BitBtn10Click(Sender: TObject);
var
CurrentRec,CurrentPriorRec:TLaneRecInfo;
//CurrentRecNo,LastRecNo:integer;
begin
  if Base_DataS.DataSet.RecordCount=0 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;
  if CurrentRec.Lane_Id=1 then exit;
  Base_DataS.DataSet.Prior;
  With Base_DataS.DataSet do
    begin
      CurrentPriorRec.Project_Id:=FieldByName('Project_Id').AsInteger;
      CurrentPriorRec.Lane_Id:=FieldByName('Lane_Id').AsInteger;
      CurrentPriorRec.Propty:=FieldByName('Property').AsString;
      CurrentPriorRec.Name:=FieldByName('Name').AsString;
      //CurrentPriorRec.Lane_Type:=FieldByName('Lane_Type').AsInteger;
      CurrentPriorRec.Section_Area:=FieldByName('Section_Area').AsFloat;
      CurrentPriorRec.Section_Type:=FieldByName('Section_Type').AsString;
      CurrentPriorRec.TechnicType:=FieldByName('Technic_Type').AsString;
      CurrentPriorRec.Rock_Property:=FieldByName('Rock_Property').AsString;
      //CurrentPriorRec.Rigidity:=FieldByName('Rigidity').AsFloat;
      CurrentPriorRec.WorkQuantity:=FieldByName('WorkQuantity').AsFloat;
      CurrentPriorRec.DayProgress:=FieldByName('DayProgress').AsFloat;
      CurrentPriorRec.State:=FieldByName('State').AsString;
      CurrentPriorRec.TaskT:=FieldByName('TaskTime').AsInteger;
      CurrentPriorRec.Disposed:=FieldByName('Disposed').AsInteger;
    end;
  Base_DataS.DataSet.Next;//返回原位置

⌨️ 快捷键说明

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