📄 relay_baseunt.pas
字号:
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 + -