📄 add_class_pas.~pas
字号:
unit add_class_pas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, DBCtrls, RXCtrls, Buttons, ExtCtrls, Mask, ToolEdit,db;
type
Tadd_class = class(TForm)
Panel1: TPanel;
BitBtn5: TBitBtn;
BitBtn2: TBitBtn;
DBLookupComboBox1: TDBLookupComboBox;
Edit2: TEdit;
Edit1: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label5: TLabel;
Label8: TLabel;
Label10: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label11: TLabel;
e_time: TEdit;
Label12: TLabel;
Label13: TLabel;
procedure FormShow(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DateTimePicker1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DateTimePicker2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit6KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit5KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit6Exit(Sender: TObject);
procedure Edit5Exit(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure DateTimePicker2Exit(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_timeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure e_timeKeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
e_linename,e_shifts:string;
function dectime(time1,time2:Tdatetime):integer;
end;
var
add_class: Tadd_class;
implementation
uses clsss_pas,menu,password_unit,dm_class_pas;
{$R *.DFM}
function tadd_class.dectime(time1,time2:Tdatetime):integer;
begin
if time2>time1 then
result:=round(1440*(frac(time2)-frac(time1)))
else
if time2<time1 then
result:= 1440-round(1440*(frac(time1)-frac(time2)))
else if time2=time1 then
result:=1440 ;
end;
procedure Tadd_class.FormShow(Sender: TObject);
begin
if (screen.Height<600) and( screen.Width<800) then
begin
scaled:=true;
height:=298;//round//(height*longint(screen.height)*96 / 600/screen.pixelsperinch);
width :=224;//round//( width *longint(screen.width)*96 / 800/screen.pixelsperinch);
left:=194;//round//((screen.Width-Width)/2);
top:=111;//round//((screen.height-self.height)/2);
//ScaleControls(screen.width, 800);
//ScaleControls(96,screen.pixelsperinch);
end
else
begin
self.Height:=291;
self.Width:=230;
end;
dblookupcombobox1.setfocus;
dm_class_form.q_class_ls.close;
dm_class_form.q_class_ls.Open;
end;
procedure Tadd_class.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure Tadd_class.DBLookupComboBox1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key =vk_return then
edit2.SetFocus ;
end;
procedure Tadd_class.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key =vk_return then
datetimepicker1.SetFocus ;
end;
procedure Tadd_class.DateTimePicker1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key =vk_return then
datetimepicker2.SetFocus ;
end;
procedure Tadd_class.DateTimePicker2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key =vk_return then
edit6.SetFocus ;
end;
procedure Tadd_class.Edit6KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key =vk_return then
begin
e_time.SetFocus ;
exit;
end;
end;
procedure Tadd_class.Edit5KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key =vk_return then
edit1.SetFocus ;
end;
procedure Tadd_class.Edit6Exit(Sender: TObject);
var _chkcycl:integer;
begin
{IF trim(EDIT5.Text)='' THEN
edit5.Text:='0';
if trim(edit1.Text)='' then
edit1.Text:='0';
}if trim(edit6.text)<>'' then
begin
try //try
_chkcycl:=strtoint(edit6.text);
if _chkcycl<=0 then
begin
Application.MessageBox('請輸入大於零的巡更周期!','消息',MB_ICONINFORMATION);
edit6.text:='';
edit6.SetFocus;
exit;
end;
except
on E: EConvertError do
begin
Application.MessageBox('請輸入準確地巡更周期!','消息',MB_ICONINFORMATION);
edit6.text:='';
edit6.SetFocus;
exit;
end;
end; //try
if _chkcycl>dectime(datetimepicker1.Time,datetimepicker2.Time ) then
begin
Application.MessageBox('巡更周期不能大於班次的下班時間與上班時間之差!','消息',MB_ICONINFORMATION);
edit6.Text:='';
edit6.SetFocus;
exit;
end;
e_time.Text:=inttostr((dectime(datetimepicker1.time,datetimepicker2.time))div strtoint(edit6.text)) ;
end;
end;
procedure Tadd_class.Edit5Exit(Sender: TObject);
begin
IF trim(EDIT1.Text)='' THEN
edit1.Text:='0';
if trim(edit5.Text)<>'' then
begin
try//try
if strtoint(edit5.text)<0 then
begin
Application.MessageBox('請輸入大於零的數位','消息',MB_ICONINFORMATION);
edit5.SetFocus ;
edit5.Text:='';
exit;
end;
except
on E: EConvertError do
begin
Application.MessageBox('請輸入整數!','消息',MB_ICONINFORMATION);
edit5.text:='';
edit5.SetFocus;
exit;
end;
end;//try
end;
end;
procedure Tadd_class.Edit1Exit(Sender: TObject);
begin
IF trim(EDIT5.Text)='' THEN
edit5.Text:='0';
if trim(edit1.Text)<>'' then
begin
try//try
if strtoint(edit1.text)<0 then
begin
Application.MessageBox('請輸入大於零的數位','消息',MB_ICONINFORMATION);
edit1.SetFocus ;
edit1.Text:='';
exit;
end;
except
on E: EConvertError do
begin
Application.MessageBox('請輸入整數!','消息',MB_ICONINFORMATION);
edit1.text:='';
edit1.SetFocus;
exit;
end;
end;//try
end;
end;
procedure Tadd_class.DateTimePicker2Exit(Sender: TObject);
begin
if edit6.Text='' then
begin
edit6.Text:=inttostr(dectime(datetimepicker1.time,datetimepicker2.time));
e_time.Text:='1';
end
else
begin
if strtoint(edit6.text)>dectime(datetimepicker1.Time,datetimepicker2.Time ) then
begin
e_time.Text:='1';
edit6.Text:=inttostr(dectime(datetimepicker1.time,datetimepicker2.time));
end;
end;
end;
procedure Tadd_class.BitBtn5Click(Sender: TObject);
var
bookmark1:tbookmark ;
recno1,recno2:integer;
begin
dm_class_form.Q_FIND.close;
dm_class_form.q_find.open;
if dblookupcombobox1.KeyValue =null then
begin
Application.MessageBox('請輸入線路!','消息',MB_ICONINFORMATION);
dblookupcombobox1.SetFocus;
exit;
end;
if edit2.Text='' then
begin
Application.MessageBox('請輸入班次!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
exit;
end ;
if edit6.Text='' then
begin
Application.MessageBox('請輸入周期!','消息',MB_ICONINFORMATION);
edit6.SetFocus ;
//gotobookmark(bookmark1);
//freebookmark(bookmark1);
exit;
end
else
begin
if strtoint(edit6.text)>dectime(datetimepicker1.Time,datetimepicker2.Time ) then
begin
Application.MessageBox('巡更周期不能大於班次的下班時間與上班時間之差!','消息',MB_ICONINFORMATION);
edit6.Text:='';
edit6.SetFocus;
exit;
end;
end;
if edit5.Text='' then
begin
Application.MessageBox('請輸入偏差上限!','消息',MB_ICONINFORMATION);
edit5.SetFocus ;
exit;
end;
if edit1.Text='' then
begin
Application.MessageBox('請輸入偏差下限!','消息',MB_ICONINFORMATION);
edit6.SetFocus ;
exit;
end;
with dm_class_form.q_class_ls do
begin
if add_class.Caption='增加巡更班次資訊' then
begin //增加
try //try
if dm_class_form.q_find.Locate('linename;shifts',vararrayOf([dblookupcombobox1.KeyValue ,edit2.text]),[loCaseInsensitive]) then
begin
Application.MessageBox('該線路上已有相同的班次,請重新選擇班次!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
edit2.Text:='';
exit;
end;
append;
edit;
fieldbyname('linename').asstring:=uppercase(dblookupcombobox1.Text);
fieldbyname('shifts').asstring:=uppercase(edit2.Text);
fieldbyname('firstp').asdatetime:=datetimepicker1.Time ;
fieldbyname('lastp').asdatetime:=datetimepicker2.Time;
fieldbyname('chkcycl').asinteger:=strtoint(edit6.Text);
fieldbyname('dgpcsx').asinteger:=strtoint(edit5.text);
fieldbyname('dgpcxx').asinteger:=strtoint(edit1.Text);
fieldbyname('times').asinteger:=strtoint(e_time.text);
post;
add_class.Close;
except
Application.MessageBox('資料錄入有誤,請重新錄入!','消息',MB_ICONINFORMATION);
exit;
end; //try
end //增加
else
begin //修改
bookmark1:=dm_class_form.q_class.GetBookmark;
recno1:=dm_class_form.q_class.RecNo;
try
if dm_class_form.q_class.Locate('linename;shifts',vararrayOf([dblookupcombobox1.KeyValue ,edit2.text]),[loCaseInsensitive]) then
begin
recno2:=dm_class_form.q_class.RecNo;
if recno1<>recno2 then
begin
Application.MessageBox('該線路上已有相同的次序號!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
dm_class_form.q_class.gotobookmark(bookmark1);
exit;
end;
end;
Locate('id',(dm_class_form.q_class.fieldbyname('id').asinteger),[loCaseInsensitive]);
edit;
fieldbyname('linename').asstring:=uppercase(dblookupcombobox1.Text);
fieldbyname('shifts').asstring:=uppercase(edit2.Text);
fieldbyname('firstp').asdatetime:=datetimepicker1.Time ;
fieldbyname('lastp').asdatetime:=datetimepicker2.Time;
fieldbyname('chkcycl').asinteger:=strtoint(edit6.Text);
fieldbyname('dgpcsx').asinteger:=strtoint(edit5.text);
fieldbyname('dgpcxx').asinteger:=strtoint(edit1.Text);
fieldbyname('times').asinteger:=strtoint(e_time.text);
post;
with dm_class_form.q_edit do
begin
close;
sql.Clear ;
sql.Add('update fpxl set shift='''+uppercase(edit2.Text)+''',linename='''+uppercase(dblookupcombobox1.Text)+'''where linename='''+e_linename+''' and shift='''+e_shifts+''' ') ;
execsql;
end;
add_class.Close;
except
Application.MessageBox('資料錄入有誤,請重新錄入!','消息',MB_ICONINFORMATION);
exit;
end;
end;//修改
end;
end;
procedure Tadd_class.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dm_class_form.q_class.close;
dm_class_form.q_class.open;
dm_class_form.q_class.Locate('id',(dm_class_form.q_class_ls.fieldbyname('id').asinteger),[loCaseInsensitive]);
end;
procedure Tadd_class.Button1Click(Sender: TObject);
begin
Application.MessageBox(Pchar('width='+inttostr(self.width)+'--'+'height='+inttostr(self.height)+'--'+'left='+inttostr(self.left)+'--top='+inttostr(self.top)),'消息',MB_ICONINFORMATION);
end;
procedure Tadd_class.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
BitBtn5click(self);
end;
procedure Tadd_class.e_timeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key =vk_return then
begin
edit5.SetFocus ;
exit;
end;
end;
procedure Tadd_class.e_timeKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) and (ord(key)<>8) then
begin
key:=#0;
exit;
end;
end;
procedure Tadd_class.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) and (ord(key)<>8) then
begin
key:=#0;
exit;
end;
end;
procedure Tadd_class.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) and (ord(key)<>8) then
begin
key:=#0;
exit;
end;
end;
procedure Tadd_class.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) and (ord(key)<>8) then
begin
key:=#0;
exit;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -