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

📄 relay_baseunt.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DataEdit_BaseUnt, DB, Grids, DBGrids, StdCtrls, Buttons,
  ExtCtrls, DBCtrls, ComCtrls;

type
  TPriorRelay=record
    Sequence:integer;
    Project_Id:integer;
    Relay_Route:integer;
    Relay_Id:integer;
    Face_Lane:integer;
    Face_LaneName:string;
    Area:integer;
    AreaName:string;
    WorkGroup:integer;
    WorkGroupName:string;
    B_Date:TDate;
    E_Date:TDate;
    TaskTime:integer;
    ArrayId:integer;
  end;
  TRelay=record
    Sequence:integer;
    Project_Id:integer;
    Relay_Route:integer;
    Relay_Id:integer;
    Face_Lane:integer;
    Face_LaneName:string;
    Area:integer;
    AreaName:string;
    WorkGroup:integer;
    WorkGroupName:string;
    WorkGroupArea:string;
    B_Date:TDate;
    E_Date:TDate;
    TechnicType:integer;
    TechnicTypeName:string;
    Rock_Property:string;
    Support_Type:string;
    Lane_Property:string;
    TaskTime:integer;
    WorkQuantity:real;
    Interval:integer;
    PriorRelay:TPriorRelay;

  end;

  TRelay_BaseFrm = class(TDataEdit_BaseFrm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DBLookupComboBox2: TDBLookupComboBox;
    DBLookupComboBox3: TDBLookupComboBox;
    BitBtn9: TBitBtn;
    DBLookupListBox1: TDBLookupListBox;
    Label4: TLabel;
    Worker_DataS: TDataSource;
    DBLookupComboBox1: TDBLookupComboBox;
    Project_DataS: TDataSource;
    BitBtn10: TBitBtn;
    Label5: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    Label6: TLabel;
    Label7: TLabel;
    MineInterval_DataS: TDataSource;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    Label8: TLabel;
    ComboBox1: TComboBox;
    procedure FormResize(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure DBLookupComboBox2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBLookupComboBox3KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn10Click(Sender: TObject);
    procedure DateTimePicker1Change(Sender: TObject);
    procedure DateTimePicker2Change(Sender: TObject);
    procedure DBLookupListBox1Enter(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Mark:TBookMark;
    //在对数据表进行添加前,读取数据表中的所有数据存入Relay中
    Relay:array of TRelay;
    //在对数据表进行插入前,读取当前插入位置及之后的所有数据存入BehindRelay
    BehindRelay:array of TRelay;
    //接替表中最后一条记录的相关信息
    LastRelay:TRelay;
    //当前记录的相关信息
    Current:TRelay;
    //当前记录的前一条记录的相关信息
    CurrentPriorRelay:TRelay;
    //当前记录的后一条记录的相关信息
    CurrentNextRelay:TRelay;

    EditMode:boolean; //判断是否处于修改状态,以便进行修改处理
    InsertMode:boolean; //判断是否处于插入状态,以便进行修改处理
    AddMode:boolean; //判断是否处于添加状态,以便控制DBLookUpListBox1的OnDblClick和OnKeyPress两个事件执行的相应程序段,在处于添加方案状态时,要避免这两个事件对应的程序的执行
    //被修改记录的起始时间修改状态变量,用来判断是否对起始日期做了修改
    BeginDateChange,EndDateChange:boolean;
    FaceIsEdit:boolean;//判断是否对工作面做了修改
    //判断是否是最后一条记录
    IsLast:boolean;
    //判断是否删除了记录
    HaveDeleted:boolean;
    procedure SetControl;
    Procedure ReadRelayData;
    Procedure DeleteAndAdjust;

  end;


var
  Relay_BaseFrm: TRelay_BaseFrm;

implementation
uses Data_Unt,Tools_Unt;
{$R *.dfm}

{ TRelay_BaseFrm }

procedure TRelay_BaseFrm.SetControl;
var
H,W:integer;
Interval1,Interval2:integer;
begin
DBGrid1.Left:=Panel2.Left+4;
DBGrid1.Top:=Panel2.Top+round(Panel2.Height/3);
DBGrid1.Width:=Panel2.Width-8;
DBGrid1.Height:=round(Panel2.Height/3)-4;
H:=round(Panel2.Height*2/15)-8;
//W:=round(Panel2.Width/2)-8;

DBLookUpComboBox1.Left:=4+Label1.Width+2;
W:=Panel2.Left+round(Panel2.Width/2)-10-DBLookUpComboBox1.Left;
DBLookUpComboBox1.Width:=round(2*W/3);
DBLookUpComboBox1.Top:=Panel2.Top+10;
DBLookUpComboBox1.Height:=H;
Label1.Left:=DBLookUpComboBox1.Left-Label1.Width;

DBLookUpComboBox2.Left:=round(Panel2.Width/2)+4+Label2.Width+2;
W:=Panel2.Left+Panel2.Width-10-DBLookUpComboBox2.Left;
DBLookUpComboBox2.Width:=round(2*W/3);
DBLookUpComboBox2.Top:=Panel2.Top+10;
DBLookUpComboBox2.Height:=H;
Label2.Left:=DBLookUpComboBox2.Left-Label2.Width;

DBLookUpListBox1.Top:=Panel2.Top+H+16;
Label3.Top:=Panel2.Top+H+16;
Label4.Top:=Panel2.Top+H+16;
DBLookUpComboBox3.Top:=Panel2.Top+H+18;

DBLookUpComboBox3.Height:=H;
H:=round(Panel2.Height/2)-10;
DBLookUpListBox1.Height:=H;
DBLookUpListBox1.Left:=Panel2.Left+round(Panel2.Width/2)+Label4.Width+4;
Label4.Left:=DBLookUpListBox1.Left-Label4.Width-4;
W:=round(Panel2.Width/2)-20;
DBLookUpListBox1.Width:=round(W/2);

DBLookUpComboBox3.Left:=4+Label3.Width+2;
W:=Panel2.Left+round(Panel2.Width/2)-10-DBLookUpComboBox3.Left;
DBLookUpComboBox3.Width:=round(2*W/3);
Label3.Left:=DBLookUpComboBox3.Left-Label3.Width;

BitBtn10.Left:=Panel2.Left+round(Panel2.Width/14);
BitBtn10.Top:=DBLookUpComboBox3.Top+round(3*DBLookUpComboBox3.Height/2);//Label3.Top+round(Panel2.Height/5);
BitBtn11.Left:=BitBtn10.Left;
BitBtn11.Top:=BitBtn10.Top+round(3*BitBtn10.Height/2);
BitBtn12.Left:=BitBtn10.Left;
BitBtn12.Top:=BitBtn11.Top+round(3*BitBtn11.Height/2);
Label5.Top:=BitBtn12.Top+round(4*BitBtn12.Height/3);

Interval1:=round((DBLookUpListBox1.Left-(BitBtn10.Left+BitBtn10.Width))/15);
Interval2:=round((DBGrid1.Top-DBLookUpComboBox3.Top)/15);
Label8.Left:=BitBtn10.Left+BitBtn10.Width+Interval1;
Label8.Top:=DBLookUpComboBox3.Top+DBLookUpComboBox3.Height+Interval2;
ComboBox1.Left:=Label8.Left+Label8.Width+Interval1;
ComboBox1.Top:=Label8.Top;
ComboBox1.Width:=7*Interval1;

Label6.Left:=Label8.Left;
Label6.Top:=ComboBox1.Top+ComboBox1.Height+2*Interval2;
DateTimePicker1.Left:=Label6.Left+Label6.Width+Interval1;
DateTimePicker1.Top:=Label6.Top{+Label6.Height};
DateTimePicker1.Width:=7*Interval1;

Label7.Left:=Label6.Left;
Label7.Top:=DateTimePicker1.Top+DateTimePicker1.Height+Interval2;
DateTimePicker2.Left:=Label7.Left+Label7.Width+Interval1;
DateTimePicker2.Top:=Label7.Top{+Label7.Height};
DateTimePicker2.Width:=7*Interval1;
end;

procedure TRelay_BaseFrm.FormResize(Sender: TObject);
begin
  inherited;
  SetControl;
  BitBtn1.Width:=BitBtn2.Width+20;
  BitBtn1.Left:=BitBtn2.Left-BitBtn1.Width-10;
  self.Refresh;
end;

procedure TRelay_BaseFrm.BitBtn9Click(Sender: TObject);
var
CurrentRecNo,LastRecNo,m,i,j:integer;
begin
//..........................................................................
//在当前记录的前面插入一条新记录,
//只能在原有方案上进行添加,即插入的记录不能改变方案编号,只能根据插入位置的方案来确定方案编号
//..........................................................................

  if Base_DataS.DataSet.RecordCount=0 then
    begin
      showmessage('请先添加一个接替任务后再插入!');
      exit;
    end;

  InsertMode:=true;

  BitBtn1.Enabled:=false;
  BitBtn2.Enabled:=false;
  BitBtn3.Enabled:=false;
  BitBtn4.Enabled:=false;
  BitBtn5.Enabled:=false;
  BitBtn6.Enabled:=false;
  BitBtn7.Enabled:=false;
  BitBtn8.Enabled:=false;
  BitBtn9.Enabled:=false;
  BitBtn10.Enabled:=false;
  BitBtn11.Enabled:=false;
  BitBtn12.Enabled:=false;
  DBGrid1.ReadOnly:=true;
  DBGrid1.Enabled:=false;

  //读取当前记录的所有信息
  with Base_DataS.DataSet do
    begin
      Current.Sequence:=FieldByName('Sequence').AsInteger;
      Current.Project_Id:=FieldByName('Project_Id').AsInteger;
      Current.Relay_Route:=FieldByName('Relay_Route').AsInteger;
      Current.Relay_Id:=FieldByName('Relay_Id').AsInteger;
      Current.Face_Lane:=FieldByName('Face_Lane').AsInteger;
      Current.Area:=FieldByName('Area').AsInteger;
      Current.WorkGroup:=FieldByName('WorkGroup').AsInteger;
      Current.B_Date:=FieldByName('Begin_Date').AsDateTime;
      Current.E_Date:=FieldByName('End_Date').AsDateTime;
      Current.TaskTime:=trunc(Current.E_Date-Current.B_Date);
    end;
  if Current.Sequence=1 then
    begin
     showmessage('不能在第一条记录前插入记录,请重新选择插入位置!');

     Base_DataS.DataSet.Cancel; //取消插入操作
     InsertMode:=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;


     DBLookUpComboBox2.Enabled:=false;
     DBLookUpComboBox3.Enabled:=false;
     DBLookUpListBox1.Enabled:=false;
     Label5.Caption:='';
     exit;
    end;

  //读取当前记录的前面一条信息
  Base_DataS.DataSet.Prior;
  with Base_DataS.DataSet do

⌨️ 快捷键说明

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