📄 platecompare.~pas
字号:
unit PlateCompare;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, SjfyFrm, Buttons,DBGrids,Printers,Grids;
type
TfrmPlateCompare = class(TForm)
GroupBox1: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
dtStart: TDateTimePicker;
dtEnd: TDateTimePicker;
CheckBox3: TCheckBox;
cobEquipID: TComboBox;
btnSearch: TButton;
GroupBox2: TGroupBox;
TFrmSjfy1: TFrmSjfy;
GroupBox3: TGroupBox;
img3: TImage;
img2: TImage;
img1: TImage;
sbBar: TStatusBar;
edtHbody: TEdit;
cobHead: TComboBox;
cobHpzl: TComboBox;
Label1: TLabel;
Label2: TLabel;
btnCompare: TBitBtn;
btnPrint: TBitBtn;
btnAvailably: TBitBtn;
CheckBox4: TCheckBox;
cobIsCompared: TComboBox;
CheckBox5: TCheckBox;
cobIsSaveList: TComboBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
dtCompStart: TDateTimePicker;
dtCompEnd: TDateTimePicker;
CheckBox8: TCheckBox;
cobIsAvailably: TComboBox;
GroupBox4: TGroupBox;
btnExportCurrentPhoto: TBitBtn;
btnExportAllPhoto: TBitBtn;
procedure FormShow(Sender: TObject);
procedure btnSearchClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure TFrmSjfy1DBGridCellClick(Column: TColumn);
procedure btnCompareClick(Sender: TObject);
procedure TFrmSjfy1btnPriorClick(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure TFrmSjfy1DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure btnAvailablyClick(Sender: TObject);
procedure btnExportCurrentPhotoClick(Sender: TObject);
procedure btnExportAllPhotoClick(Sender: TObject);
private
{ Private declarations }
public
function GetSQL(bz:boolean):string;
{ Public declarations }
end;
var
frmPlateCompare: TfrmPlateCompare;
implementation
uses CommUnit, dbConn;
var
onlyID:String; //组合的唯一标识
zpsj: TDateTime; //抓拍时间
zpdd:String;
isSaveList,isCompare,isAvailably:String; //是否受保护,是否已比对,是否有效
rsGroup:Integer; // 3个一组
rsGroupID:Integer;
rsMod:Integer; //剩余的张数
rowNum:Integer; //记录行数
rsCount:Integer;//该次查询的总条数
{$R *.dfm}
procedure TfrmPlateCompare.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;
//
//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;
//相关按钮的状态
self.btnCompare.Enabled := false; //比对
self.btnPrint.Enabled := false; //打印
self.btnAvailably.Enabled := false; //是否有效
self.btnExportCurrentPhoto.Enabled := false; //导出当前的
self.btnExportAllPhoto.Enabled := false; //导出全部
end;
procedure TfrmPlateCompare.btnSearchClick(Sender: TObject);
var
rowCount,i:Integer;
sql:String;
begin
if not ((CheckBox1.Checked) or (CheckBox2.Checked) or (CheckBox3.Checked) or (CheckBox4.Checked) or (CheckBox5.Checked) or (CheckBox6.Checked) or (CheckBox7.Checked) or (CheckBox8.Checked)) then
begin
MessageBox(0,'请选定查询条件进行查询', '号牌比对', 64);
sql := 'select p.XH 图片序号,p.WHOLENAME 图片全称,p.ZPSJ 抓拍时间,c.CROSSNAME 抓拍地点,p.ISSAVELIST 保护名单,p.ISCOMPARE 是否已比对,p.ISAVAILABLY 是否有效,p.ZPSERIAL 抓拍序号,p.ONLYID 组合唯一标识,rownum ';
sql := sql + ' from photocheck.P_PICINFO p,photocheck.P_CROSSING c where p.ISDELETE=''0'' AND p.EQUIPID=c.COMPUTERID AND 1=2';
TFrmSjfy1.beginQuery(sql,9);
img1.Picture := nil;
img2.Picture := nil;
img3.Picture := nil;
btnPrint.Enabled := false;
btnAvailably.Enabled := false;
btnCompare.Enabled := false; //比对操作
btnExportAllPhoto.Enabled := false; //导出所有照片
btnExportCurrentPhoto.Enabled := false; //导出当前照片
TFrmSjfy1.DBGrid.Enabled:= false; //数据分页的可用性为false
exit;
end;
img1.Picture := nil;
img2.Picture := nil;
img3.Picture := nil;
TFrmSjfy1.beginQuery(GetSQL(true),9);
rsCount:= TFrmSjfy1.DBGrid.DataSource.DataSet.RecordCount ;
if rsCount<=0 then
begin
btnPrint.Enabled := false;
btnAvailably.Enabled := false;
btnCompare.Enabled := false; //比对操作
btnExportAllPhoto.Enabled := false; //导出所有照片
btnExportCurrentPhoto.Enabled := false; //导出当前照片
TFrmSjfy1.DBGrid.Enabled:= false; //数据分页的可用性为false
end
else
begin
//相关按钮的状态
self.btnCompare.Enabled := true; //比对
self.btnPrint.Enabled := true; //打印
self.btnAvailably.Enabled := true; //是否有效
self.btnExportCurrentPhoto.Enabled := true; //导出当前的
self.btnExportAllPhoto.Enabled := true; //导出全部
TFrmSjfy1.DBGrid.Enabled := true;
end;
//rsGroup:=TFrmSjfy1.DBGrid.DataSource.DataSet.RecordCount div 3 ; //按照3个进行分组
// rsMod:=TFrmSjfy1.DBGrid.DataSource.DataSet.RecordCount mod 3 ; //余数
rowCount:=TFrmSjfy1.DBGrid.DataSource.DataSet.FieldCount -1 ; //只得到9条,是当前页面显示的数据行
for i:=0 to rowCount do
begin
TFrmSjfy1.DBGrid.Columns.Items [i].Width := 70;
end;
//上一组、下一组
if (rsCount mod 3 >0) then
rsGroup:= rsCount div 3 +1
else
rsGroup := rsCount div 3;
rsGroupID:=0;
end;
procedure TfrmPlateCompare.FormActivate(Sender: TObject);
begin
TFrmSjfy1.ADODataSet1.Connection := cn_public;
end;
function TfrmPlateCompare.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 组合唯一标识,rownum ';
sql := sql + ' from photocheck.P_PICINFO p,photocheck.P_CROSSING c where p.ISDELETE=''0'' AND p.EQUIPID=c.COMPUTERID AND ';
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 bz=true then
begin
sql := sql + ' 1 = 1 order by 图片序号'; // 组合唯一标识
end;
result := sql;
end;
procedure TfrmPlateCompare.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 ; //抓拍地点
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -