📄 add_point_pas.pas
字号:
unit add_point_pas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, RXCtrls,Db;
type
Tadd_point = class(TForm)
Panel1: TPanel;
BitBtn5: TBitBtn;
edit1: TComboBox;
Edit2: TEdit;
Edit3: TEdit;
Edit5: TEdit;
Edit4: TEdit;
Edit6: TEdit;
BitBtn2: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure BitBtn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit5KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit6KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn5Click(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit6Exit(Sender: TObject);
procedure Edit5Exit(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edit1Exit(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormActivate(Sender: TObject);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
_mode:string;
public
{ Public declarations }
end;
var
add_point: Tadd_point;
implementation
uses point_pas,menu,dm_point_pas, FileCtrl,IniFiles;
{$R *.DFM}
procedure Tadd_point.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure Tadd_point.FormShow(Sender: TObject);
begin
if (screen.Height<600) and( screen.Width<800) then
begin
scaled:=true;
//height:=round(height*longint(screen.height)*96 / 600/screen.pixelsperinch);
//width :=round( width *longint(screen.width)*96 / 800/screen.pixelsperinch);
//left:=round((screen.Width-Width)/2);
//top:=round((screen.height-self.height)/2);
height:=311;
width:=293;
left:=158;
top:=101;
//ScaleControls(screen.width, 800);
//ScaleControls(96,screen.pixelsperinch);
end
else
begin
self.Height:=318;
self.Width:=280;
end;
edit1.SetFocus;
with dm_point.q_line do
begin
close;
open;
first;
//edit1.Clear ;
while not eof do
begin
edit1.Items.Add(fieldbyname('linename').asstring);
next;
end;
end;
end;
procedure Tadd_point.edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
edit2.SetFocus ;
end;
procedure Tadd_point.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
edit5.SetFocus ;
end;
procedure Tadd_point.Edit5KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
edit6.SetFocus ;
end;
procedure Tadd_point.Edit6KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
edit3.SetFocus ;
end;
procedure Tadd_point.Edit3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
edit4.SetFocus ;
end;
procedure Tadd_point.BitBtn5Click(Sender: TObject);
var bookmark1:tbookmark ;
recno1,recno2:integer;
begin
dm_point.q_find.Close;
dm_POINT.Q_FIND.OPEN;
dm_POINT.Q_FIND.First;
with dm_point.q_point_ls do
begin
close;
open;
if add_point.Caption='增加巡更點資訊' then
begin //增加巡更信息
try
if edit1.Text='' then
begin
Application.MessageBox('請輸入線路!','消息',MB_ICONINFORMATION);
edit1.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 ;
exit;
end;
if dm_point.q_find.Locate('linename;node',vararrayOf([edit1.text,edit2.text]),[loCaseInsensitive]) then
begin
Application.MessageBox('該線路上已有相同的鈕號!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
edit2.Text:='';
exit;
end;
if dm_point.q_find.Locate('linename;lseq',vararrayOf([edit1.text,strtoint(edit6.text)]),[loCaseInsensitive]) then
begin
Application.MessageBox('該線路上已有相同的次序號!','消息',MB_ICONINFORMATION);
edit6.SetFocus;
edit6.text:='';
exit;
end;
//open;
append;
//gotobookmark(bookmark1);
//freebookmark(bookmark1);
edit;
fieldbyname('linename').asstring:=uppercase(edit1.Text) ;
fieldbyname('node').asstring:=uppercase(edit2.Text);
fieldbyname('name').asstring:=uppercase(edit3.Text);
fieldbyname('nodeplace').asstring:=uppercase(edit4.Text);
fieldbyname('ntime').asinteger:=strtoint(edit5.text);
fieldbyname('lseq').asinteger:=strtoint(edit6.text);
post;
add_point.Close ;
except
begin
Application.MessageBox('資料錄入有誤,請重新輸入','消息',MB_ICONINFORMATION);
exit;
end;
end;
end //增加巡更信息
else
begin // 修改信息
bookmark1:=dm_point.q_point.GetBookmark;
recno1:=dm_point.q_point.RecNo;
try
if edit1.Text='' then
begin
Application.MessageBox('請輸入線路!','消息',MB_ICONINFORMATION);
//gotobookmark(bookmark1);
//freebookmark(bookmark1);
exit;
end;
if edit2.Text='' then
begin
Application.MessageBox('請輸入鈕號!','消息',MB_ICONINFORMATION);
exit;
end;
if edit6.Text='' then
begin
Application.MessageBox('請輸入次序號!','消息',MB_ICONINFORMATION);
//gotobookmark(bookmark1);
//freebookmark(bookmark1);
exit;
end;
if dm_point.q_point.Locate('linename;node',vararrayOf([edit1.text,edit2.text]),[loCaseInsensitive]) then
begin
recno2:=dm_point.q_point.RecNo;
if recno1<>recno2 then
begin
Application.MessageBox('該線路上已有相同的鈕號!','消息',MB_ICONINFORMATION);
dm_point.q_point.gotobookmark(bookmark1);
exit;
end;
end;
if dm_point.q_point.Locate('linename;lseq',vararrayOf([edit1.text,strtoint(edit6.text)]),[loCaseInsensitive]) then
begin
recno2:=dm_point.q_point.RecNo;
if recno1<>recno2 then
begin
Application.MessageBox('該線路上已有相同的次序號!','消息',MB_ICONINFORMATION);
dm_point.q_point.gotobookmark(bookmark1);
exit;
end;
end;
Locate('id',(dm_point.q_point.fieldbyname('id').asinteger),[loCaseInsensitive]);
edit;
fieldbyname('linename').asstring:=uppercase(edit1.Text) ;
fieldbyname('node').asstring:=uppercase(edit2.Text);
fieldbyname('name').asstring:=uppercase(edit3.Text);
fieldbyname('nodeplace').asstring:=uppercase(edit4.Text);
fieldbyname('ntime').asinteger:=strtoint(edit5.text);
fieldbyname('lseq').asinteger:=strtoint(edit6.text);
post;
self.close;
except
begin
Application.MessageBox('資料錄入有誤,請重新輸入','消息',MB_ICONINFORMATION);
exit;
end;
end; // end try
end; // 修改信息
end;
end;
procedure Tadd_point.Edit2Exit(Sender: TObject);
var ch:string;
s1,s2,s3,s4:string;
//s:string;
begin
edit5.Text:=inttostr(10);
if edit2.text<>'' then
begin
ch:=uppercase(trim(edit2.Text)) ;
//s1:=((uppercase(trim(ch))<'0000') or (uppercase(trim(ch))>'000f'));
//s2:=((uppercase(trim(ch))<'0000') or (uppercase(trim(ch))>'00ff'));
//s3:=((uppercase(trim(ch))<'0000') or (uppercase(trim(ch))>'0fff'));
try//try
if (length(trim(ch)))<>4 then
begin
if _mode='0' then
Application.MessageBox('請輸入資訊鈕序列號的後4位!','消息',MB_ICONINFORMATION)
else
Application.MessageBox('請輸入4位號碼!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
edit2.Text :='';
exit;
end;
s1:=uppercase(copy(ch,1,1));
s2:=uppercase(copy(ch,2,1));
s3:=uppercase(copy(ch,3,1));
s4:=uppercase(copy(ch,4,1));
{if _mode='0' then
begin
if (((uppercase(s1)<'0')or(uppercase(s1)>'F'))or((uppercase(s2)<'0')or(uppercase(s2)>'F'))or((uppercase(s3)<'0')or(uppercase(S3)>'F'))or((uppercase(s4)<'4')or(uppercase(s4)>'F'))) then
begin
Application.MessageBox('請輸入資訊鈕序列號的後4位!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
edit2.Text :='';
exit;
end;
end
else
begin}
if (((uppercase(s1)<'0')or(uppercase(s1)>'F'))or((uppercase(s2)<'0')or(uppercase(s2)>'F'))or((uppercase(s3)<'0')or(uppercase(S3)>'F'))or((uppercase(s4)<'0')or(uppercase(s4)>'F'))) then
begin
Application.MessageBox('請輸入4位號碼!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
edit2.Text :='';
exit;
end;
// end;
except
begin
if _mode='0' then
Application.MessageBox('請輸入資訊鈕序列號的後4位!','消息',MB_ICONINFORMATION)
else
Application.MessageBox('請輸入4位號碼!','消息',MB_ICONINFORMATION);
edit2.SetFocus ;
edit2.Text :='';
exit;
end;
end;//try
end;
end;
procedure Tadd_point.Edit6Exit(Sender: TObject);
var
_lseq:integer;
begin
IF trim(EDIT5.Text)='' THEN
edit5.Text:='0';
if trim(edit6.text)<>'' then
begin
try
_lseq:=strtoint(edit6.text);
if _lseq<=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;
end;
end;
procedure Tadd_point.Edit5Exit(Sender: TObject);
var _ntime:integer;
begin
if trim(edit5.text)<>'' then
begin
try
_ntime:=strtoint(edit5.text);
if _ntime<0 then
begin
Application.MessageBox('向前間隔時間必須輸入大於或等於零的整數!','消息',MB_ICONINFORMATION);
edit5.text:='';
edit5.SetFocus;
exit;
end;
except
on E: EConvertError do
begin
Application.MessageBox('向前間隔時間必須輸入大於或等於零的整數!','消息',MB_ICONINFORMATION);
edit5.text:='';
edit5.SetFocus;
exit;
end;
end;
end;
end;
procedure Tadd_point.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dm_point.q_point.close;
dm_point.q_point.open;
dm_point.q_point.Locate('id',(dm_point.q_point_ls.fieldbyname('id').asinteger),[loCaseInsensitive]);
end;
procedure Tadd_point.edit1Exit(Sender: TObject);
begin
if add_point.caption='增加巡更點資訊' then
begin
with dm_point.q_lseq do
begin
close;
sql.Clear;
sql.add('select distinct linename,lseq');
sql.add('from point');
sql.add('where linename=:linename');
sql.add('order by lseq');
parambyname('linename').asstring:=edit1.Text ;
open;
if recordcount=0 then
edit6.Text:='1'
else
begin
last;
edit6.Text:=inttostr(fieldbyname('lseq').asinteger+1);
end;
end;
end;
end;
procedure Tadd_point.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_point.Edit4KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=vk_return then
BitBtn5click(self);
end;
procedure Tadd_point.FormActivate(Sender: TObject);
var
inif:tinifile;
temp,path,filename:string;
begin
filename:=ExtractFiledir(APPLICATION.EXENAME)+'\'+ExtractFilename(APPLICATION.EXENAME);//+'\hdxgxt.ini';
if not fileexists(filename) then
filename:=ExtractFileDir(APPLICATION.EXENAME)+'hdxgxt.ini'
else filename:=extractfiledir(application.exename)+'\hdxgxt.ini';
inif:=TInifile.Create(filename);
_mode:=inif.readstring('penmode','mode',temp);
end;
procedure Tadd_point.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_point.Edit6KeyPress(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 + -