📄 platecomparedelete.~pas
字号:
unit PlateCompareDelete;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ComCtrls, ExtCtrls, SjfyFrm,DBGrids,Printers,Grids;
type
TfrmPlateCompareDelete = class(TForm)
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
dtStart: TDateTimePicker;
dtEnd: TDateTimePicker;
CheckBox3: TCheckBox;
cobEquipID: TComboBox;
btnSearch: TButton;
CheckBox4: TCheckBox;
cobIsCompared: TComboBox;
CheckBox5: TCheckBox;
cobIsSaveList: TComboBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
dtCompStart: TDateTimePicker;
dtCompEnd: TDateTimePicker;
CheckBox8: TCheckBox;
cobIsAvailably: TComboBox;
GroupBox2: TGroupBox;
TFrmSjfy1: TFrmSjfy;
GroupBox3: TGroupBox;
img3: TImage;
img2: TImage;
img1: TImage;
Label1: TLabel;
Label2: TLabel;
sbBar: TStatusBar;
edtHbody: TEdit;
cobHead: TComboBox;
cobHpzl: TComboBox;
btnCompare: TBitBtn;
btnPrint: TBitBtn;
btnAvailably: TBitBtn;
CheckBox9: TCheckBox;
cobOpeater: TComboBox;
GroupBox4: TGroupBox;
btnDelOne: TBitBtn;
GroupBox5: TGroupBox;
GroupBox6: TGroupBox;
btnDelTwo: TBitBtn;
GroupBox7: TGroupBox;
btnDelThree: TBitBtn;
btnDelAll: TBitBtn;
btnDelAllPhoto: TBitBtn;
GroupBox8: TGroupBox;
btnExportCurrentPhoto: TBitBtn;
btnExportAllPhoto: TBitBtn;
procedure FormActivate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TFrmSjfy1DBGridCellClick(Column: TColumn);
procedure btnPrintClick(Sender: TObject);
procedure TFrmSjfy1DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure btnAvailablyClick(Sender: TObject);
procedure btnCompareClick(Sender: TObject);
procedure btnSearchClick(Sender: TObject);
procedure btnDelOneClick(Sender: TObject);
procedure btnDelTwoClick(Sender: TObject);
procedure btnDelThreeClick(Sender: TObject);
procedure btnDelAllClick(Sender: TObject);
procedure btnDelAllPhotoClick(Sender: TObject);
procedure btnExportCurrentPhotoClick(Sender: TObject);
procedure btnExportAllPhotoClick(Sender: TObject);
private
{ Private declarations }
public
function GetSQL(bz:boolean):string;
{ Public declarations }
end;
var
frmPlateCompareDelete: TfrmPlateCompareDelete;
implementation
uses dbConn, CommUnit;
var
onlyID:String; //组合的唯一标识
zpsj: TDateTime; //抓拍时间
compareDate:TDateTime; //比对时间
compareUserID:String; //比对人
zpdd:String;
isSaveList,isCompare,isAvailably:String; //是否受保护,是否已比对
rsGroup:Integer; // 3个一组
rsGroupID:Integer;
rsMod:Integer; //剩余的张数
rowNum:Integer; //记录行数
rsCount:Integer;//该次查询的总条数
{$R *.dfm}
procedure TfrmPlateCompareDelete.FormActivate(Sender: TObject);
begin
TFrmSjfy1.ADODataSet1.Connection := cn_public;
end;
procedure TfrmPlateCompareDelete.FormShow(Sender: TObject);
var
sqlsql:String;
begin
sqlsql:='';
sqlsql:='SELECT COMPUTERID,CROSSNAME FROM photocheck.P_CROSSING'; //将路口信息表进行显示
dbConn.loadComboxEquip(cobEquipID,sqlsql,3);
cobEquipID.ItemIndex := 1;
cobIsCompared.Items.Add('0:未比对');
cobIsCompared.Items.Add('1:已比对');
cobIsCompared.ItemIndex:=0;
cobIsSaveList.Items.Add('0:非保护');
cobIsSaveList.Items.Add('1:受保护');
cobIsSaveList.ItemIndex:=0;
cobIsAvailably.Items.Add('0:无效'); //是否有效
cobIsAvailably.Items.Add('1:有效');
cobIsAvailably.ItemIndex:=0;
sqlsql:='';
sqlsql:='SELECT USERID,USERNAME FROM photocheck.P_USER';
dbconn.loadCombox(cobOpeater,sqlsql,false);
cobOpeater.ItemIndex := 1;
//
//load data
dbConn.LoadCombobox(cobHpzl,'1'); //hpzl
sqlsql:='';
sqlsql:='SELECT DMZ FROM photocheck.P_CODE where dmlb=''2''';
dbconn.loadCombox(cobHead,sqlsql,true);
cobHead.ItemIndex := 1;
//删除按钮不可用
btnDelOne.Enabled := false;
btnDelTwo.Enabled := false;
btnDelThree.Enabled := false;
btnDelAll.Enabled := false;
btnDelAllPhoto.Enabled := false; //删除所选条件内的照片
//相关按钮的状态
self.btnCompare.Enabled := false; //比对
self.btnPrint.Enabled := false; //打印
self.btnAvailably.Enabled := false; //是否有效
self.btnExportCurrentPhoto.Enabled := false; //导出当前的
self.btnExportAllPhoto.Enabled := false; //导出全部
end;
function TfrmPlateCompareDelete.GetSQL(bz:boolean):string;
var
sql : String;
begin
if bz=true then
begin //p.ISCOMPARE=''0'' and
sql := 'select p.XH 图片序号,p.WHOLENAME 图片全称,p.ZPSJ 抓拍时间,c.CROSSNAME 抓拍地点,p.ISSAVELIST 保护名单,p.ISCOMPARE 是否已比对,p.ISAVAILABLY 是否有效,p.ZPSERIAL 抓拍序号,p.ONLYID 组合唯一标识,p.COMPAREDATE 比对时间,p.USERID 比对人ID, rownum ';
sql := sql + ' from photocheck.P_PICINFO p,photocheck.P_CROSSING c where p.EQUIPID=c.COMPUTERID AND p.ISDELETE=''0'' AND '; ///ISDELETE =''0'' 表示未删除的
end;
if CheckBox1.Checked then
begin
sql := sql + ' ZPSJ >= to_date(''' + FormatDateTime('yyyy-mm-dd 00:00:00',dtStart.DateTime ) + ''',''yyyy-mm-dd HH24:mi:ss'') and ';
end;
if CheckBox2.Checked then
begin
sql := sql + ' ZPSJ <= to_date(''' + FormatDateTime('yyyy-mm-dd 23:59:59',dtEnd.datetime ) + ''',''yyyy-mm-dd HH24:mi:ss'') and ';
end;
if CheckBox3.Checked then //机器编号
begin
sql := sql + ' EQUIPID= ''' + getdm(cobEquipID.Text) + ''' and ';
end;
if CheckBox4.Checked then //是否已经比对过了
begin
sql := sql + ' ISCOMPARE= ''' + getdm(cobIsCompared.Text) + ''' and ';
end;
if CheckBox5.Checked then //是否受保护
begin
sql := sql + ' ISSAVELIST= ''' + getdm(cobIsSaveList.Text) + ''' and ';
end;
if CheckBox8.Checked then //该照片是否有效
begin
sql := sql + ' ISAVAILABLY= ''' + getdm(cobIsAvailably.Text) + ''' and ';
end;
if CheckBox6.Checked then //比对时间开始
begin
sql := sql + ' COMPAREDATE >= to_date(''' + FormatDateTime('yyyy-mm-dd 00:00:00',dtCompStart.DateTime ) + ''',''yyyy-mm-dd HH24:mi:ss'') and ';
end;
if CheckBox7.Checked then //比对时间段 内
begin
sql := sql + ' COMPAREDATE <= to_date(''' + FormatDateTime('yyyy-mm-dd 23:59:59',dtCompEnd.datetime ) + ''',''yyyy-mm-dd HH24:mi:ss'') and ';
end;
if CheckBox9.Checked then //该照片是否有效
begin
sql := sql + ' USERID= ''' + getdm(cobOpeater.Text) + ''' and ';
end;
if bz=true then
begin
sql := sql + ' 1 = 1 order by 图片序号';
end;
result := sql;
end;
procedure TfrmPlateCompareDelete.TFrmSjfy1DBGridCellClick(Column: TColumn);
var
photoXH:String; //组合的唯一标识
begin
//显示相互关联的3张图片
//其中可能会出现1,2,3的不全情况
//TFrmSjfy1.DBGrid.Fields[0].asstri
photoXH:=TFrmSjfy1.DBGrid.Fields[0].AsString ; //图片序号
zpsj:=TFrmSjfy1.DBGrid.Fields[2].AsDateTime ; //抓拍时间
zpdd:=TFrmSjfy1.DBGrid.Fields[3].AsString ; //抓拍地点
isSaveList:= TFrmSjfy1.DBGrid.Fields[4].AsString ; //是否受保护
isCompare:= TFrmSjfy1.DBGrid.Fields[5].AsString ; //是否已比对
isAvailably:= TFrmSjfy1.DBGrid.Fields[6].AsString ; //是否有效
onlyID:=TFrmSjfy1.DBGrid.Fields[8].AsString ; //通过onlyID,最多可查询出3张图片
compareDate:=TFrmSjfy1.DBGrid.Fields[9].AsDateTime ; //比对时间
compareUserID:=TFrmSjfy1.DBGrid.Fields[10].AsString ; //比对人
rowNum:= TFrmSjfy1.DBGrid.Fields[11].AsInteger ; //查询结果的序号
dbConn.DisplayPicPhoto(onlyID,photoXH,img1,img2,img3,'1');
if isCompare='1' then
begin
if isSaveList='1' then
begin
if isAvailably='1' then
begin
sbBar.SimpleText := ' 当前照片抓拍时间:'+datetimetostr(zpsj) + ' 比对结果:受保护!' + ' 比对时间:'+datetimetostr(CompareDate)+' 比对人ID:'+CompareUserID + ' 该照片有效!';
end
else
begin
sbBar.SimpleText := ' 当前照片抓拍时间:'+datetimetostr(zpsj) + ' 比对结果:受保护!' + ' 比对时间:'+datetimetostr(CompareDate)+' 比对人ID:'+CompareUserID + ' 该照片已为被作废,视为无效!';
end;
end
else
begin
if isAvailably='1' then
begin
sbBar.SimpleText := ' 当前照片抓拍时间:'+datetimetostr(zpsj) + ' 比对结果:非保护!' + ' 比对时间:'+datetimetostr(CompareDate)+' 比对人ID:'+CompareUserID + ' 该照片有效!';
end
else
begin
sbBar.SimpleText := ' 当前照片抓拍时间:'+datetimetostr(zpsj) + ' 比对结果:非保护!' + ' 比对时间:'+datetimetostr(CompareDate)+' 比对人ID:'+CompareUserID + ' 该照片已为被作废,视为无效!';
end;
// sbBar.SimpleText := ' 当前照片抓拍时间:'+datetimetostr(zpsj)+ ' 比对结果: 非保护!' + ' 比对时间:'+datetimetostr(CompareDate)+' 比对人ID:'+CompareUserID;
end;
end
else
begin
sbBar.SimpleText := ' 当前照片抓拍时间:'+datetimetostr(zpsj)+ ' 未比对!';
end;
end;
procedure TfrmPlateCompareDelete.btnPrintClick(Sender: TObject);
var
px,py:integer; //屏幕分辨率
rect1,rect2,rect3:TRect; //使用三个来分别对其 控制
picnamewpath:string;
fileNames:String; //将要显示的抓拍地点和抓拍时间
begin
///处理无图片情况
if img1.Picture.Bitmap.Empty and img2.Picture.Bitmap.Empty and img3.Picture.Bitmap.Empty then
begin
messageBox(self.Handle, '您当前无照片,无法实现打印!','提示',MB_OK+MB_ICONINFORMATION);
exit;
end;
try
//获得打印机的分辨率
px:=getdevicecaps(printer.Handle,logpixelsx) div PixelsPerInch;
py:=getdevicecaps(printer.Handle,logpixelsy) div PixelsPerInch;
//横向方向的 ,长度不能够满足
with rect1 do //rect1第一张图片
begin
left:=150;
top:=250;
right:=trunc(img1.Picture.Width*px*0.95)+left;
bottom:=trunc(img1.Picture.Height*py*0.95)+top;
end;
with rect2 do //rect2第二张图片
begin
left:=rect1.Right+1;
top:=250 ;
right:=trunc(img1.Picture.Width*px*0.95)+left;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -