unit ErrList;
|
|
interface
|
|
uses
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
Dialogs, OleCtrls, Menus, StdCtrls, Buttons, ComCtrls, ExtCtrls,inifiles,
|
iisUnit,iis_ImageProcess, EnImgScr,mpsBarco,BarcodesFinder, EnMisc, EnDiGrph;
|
|
type
|
TErrlistForm = class(TForm)
|
Panel2: TPanel;
|
Splitter3: TSplitter;
|
Panel3: TPanel;
|
ErrReasonGB: TGroupBox;
|
ErrListLV: TListView;
|
Panel4: TPanel;
|
Panel5: TPanel;
|
Panel8: TPanel;
|
Label3: TLabel;
|
Panel6: TPanel;
|
Panel9: TPanel;
|
Label4: TLabel;
|
Splitter1: TSplitter;
|
SitePreBt: TBitBtn;
|
SiteNextBt: TBitBtn;
|
RelaPreBt: TBitBtn;
|
RelaNextBt: TBitBtn;
|
Panel1: TPanel;
|
ImmediateBt: TButton;
|
ExitBt: TButton;
|
Panel7: TPanel;
|
DeleteBt: TButton;
|
NoteBt: TButton;
|
Timer1: TTimer;
|
RejectBt: TButton;
|
EnforceBt: TButton;
|
ImageScrollBox1: TImageScrollBox;
|
ImageScrollBox2: TImageScrollBox;
|
ImageScrollBox3: TImageScrollBox;
|
Button1: TButton;
|
procedure ExitBtClick(Sender: TObject);
|
procedure ImmediateBtClick(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
procedure FormDestroy(Sender: TObject);
|
procedure SiteNextBtClick(Sender: TObject);
|
procedure SitePreBtClick(Sender: TObject);
|
procedure RelaPreBtClick(Sender: TObject);
|
procedure RelaNextBtClick(Sender: TObject);
|
procedure ErrListLVClick(Sender: TObject);
|
procedure ErrListLVMouseDown(Sender: TObject; Button: TMouseButton;
|
Shift: TShiftState; X, Y: Integer);
|
procedure DeleteBtClick(Sender: TObject);
|
procedure ErrListLVSelectItem(Sender: TObject; Item: TListItem;
|
Selected: Boolean);
|
procedure ErrListLVKeyUp(Sender: TObject; var Key: Word;
|
Shift: TShiftState);
|
procedure NoteBtClick(Sender: TObject);
|
procedure Splitter1Moved(Sender: TObject);
|
procedure Panel4Resize(Sender: TObject);
|
procedure Timer1Timer(Sender: TObject);
|
procedure RejectBtClick(Sender: TObject);
|
procedure EnforceBtClick(Sender: TObject);
|
procedure Button1Click(Sender: TObject);
|
private
|
{ Private declarations }
|
Siteidx : Integer;
|
SiteList : TStringlist;
|
RelaSiteidx : Integer;
|
RelaSiteList : TStringlist;
|
Ingnore : Boolean; //¥i¤£¥i§R°£
|
NowIndex : String; //²{¦bªº¯Á¤Þ
|
MyHotkeyid1:integer;
|
MpsBarcodeinf : TMpsBarcodeinf;
|
//********¤Q¦r©w¦ìÂI¸ê°T********
|
UpLPoint : Tpoint; //¥ª¤W¤èªº¤Q¦rÂI
|
UpRPoint : Tpoint; //¥k¤W¤èªº¤Q¦rÂI
|
DownLPoint : Tpoint; //¥ª¤U¤èªº¤Q¦rÂI
|
DownRPoint : Tpoint; //¥k¤U¤èªº¤Q¦rÂI
|
Point_Width : String; //¤Q¦rÂIªº¼e
|
Point_Height : String; //¤Q¦rÂIªº°ª
|
//********¤Q¦r©w¦ìÂI¸ê°T********
|
|
//********Ãö«Y¼v¹³¤Q¦r©w¦ìÂI¸ê°T********
|
UpLPoint_Rela : Tpoint; //¥ª¤W¤èªº¤Q¦rÂI
|
UpRPoint_Rela : Tpoint; //¥k¤W¤èªº¤Q¦rÂI
|
DownLPoint_Rela : Tpoint; //¥ª¤U¤èªº¤Q¦rÂI
|
DownRPoint_Rela : Tpoint; //¥k¤U¤èªº¤Q¦rÂI
|
//********¤Q¦r©w¦ìÂI¸ê°T********
|
|
ISB_BW: TImageScrollBox;
|
SP1:TShape;//20170630 ·s¥[
|
SP2:TShape;//20170630 ·s¥[
|
SP3:TShape;//20170630 ·s¥[
|
SP4:TShape;//20170630 ·s¥[
|
SP5:TShape;//20170630 ·s¥[
|
SP6:TShape;//20170630 ·s¥[
|
SP7:TShape;//20170630 ·s¥[
|
SP8:TShape;//20170630 ·s¥[
|
|
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
|
Procedure ShowOMRErr(Idx:Integer); //µe±¤W¨q¥XOMRÀˮ֥¢±Ñ
|
Procedure ShowRelaOMRErr(Relaidx:Integer); //µe±¤W¨q¥XÃö«YOMRÀˮ֥¢±Ñ
|
Procedure GetOMRErrini(Index:String); //¨úÀˮ֥¢±Ñini
|
Procedure InitialData;
|
procedure ImageScrollBox1NewGraphic(const Graphic: TDibGraphic); //«ì´_¦¨¥¼¿ï¨úª¬ºA
|
public
|
{ Public declarations }
|
iniPath : String;
|
end;
|
|
var
|
ErrlistForm: TErrlistForm;
|
|
implementation
|
uses CB_IMGPSScanImp;
|
|
{$R *.dfm}
|
|
procedure TErrlistForm.WMHotKey(var Msg: TWMHotKey);
|
begin
|
if (Msg.HotKey = MyHotkeyid1) and DeleteBt.Enabled then
|
DeleteBtClick(nil);
|
end;
|
|
procedure TErrlistForm.NoteBtClick(Sender: TObject);
|
begin
|
Ch_WriteNote := True;
|
ErrIndex := ErrListLV.ItemIndex;
|
ModalResult := mrCancel;
|
end;
|
|
procedure TErrlistForm.Panel4Resize(Sender: TObject);
|
begin
|
Timer1.Enabled := False;
|
ImageScrollBox1.FileName := '';
|
ImageScrollBox2.FileName := '';
|
Panel6.Width := Panel4.Width Div 2;
|
//ErrListLVClick(nil);
|
Timer1.Enabled := True;
|
end;
|
|
procedure TErrlistForm.RejectBtClick(Sender: TObject);
|
var
|
S : TStringlist;
|
i : Integer;
|
begin
|
if messagedlg(_Msg('¬O§_½T©w°h¥ó??'),mtConfirmation,[mbyes,mbcancel],0) = mrcancel then Exit;
|
S := TStringlist.Create;
|
try
|
if FileExists(iniPath+'RemoveMemo.dat') then
|
S.LoadFromFile(iniPath+'RemoveMemo.dat');
|
for i := 0 to ErrListLv.Items.Count - 1 do
|
begin
|
S.Add(ErrListLv.Items.Item[i].Caption);
|
end;
|
S.SaveToFile(iniPath+'RemoveMemo.dat');
|
Finally
|
S.Free;
|
end;
|
RejectCase := True;
|
ModalResult := mrOK;
|
end;
|
|
procedure TErrlistForm.Button1Click(Sender: TObject);
|
begin
|
ShowMessage('UpLPoint='+IntToStr(UpLPoint.X)+','+IntToStr(UpLPoint.Y)+#10#13+
|
'UpRPoint='+IntToStr(UpRPoint.X)+','+IntToStr(UpRPoint.Y)+#10#13+
|
'DownLPoint='+IntToStr(DownLPoint.X)+','+IntToStr(DownLPoint.Y)+#10#13+
|
'DownRPoint='+IntToStr(DownRPoint.X)+','+IntToStr(DownRPoint.Y));
|
end;
|
|
procedure TErrlistForm.DeleteBtClick(Sender: TObject);
|
var
|
ini : TiniFile;
|
S,S1 : TStringlist;
|
i : Integer;
|
begin
|
InitialData;
|
S := TStringlist.Create;
|
S1 := TStringlist.Create;
|
ini := Tinifile.Create(iniPath+'Checkerr.ini');
|
try
|
if FileExists(iniPath+'RemoveMemo.dat') then
|
S.LoadFromFile(iniPath+'RemoveMemo.dat');
|
ini.WriteBool(NowIndex,'Del',True);
|
S.Add(ini.ReadString(NowIndex,'Reason',''));
|
S.SaveToFile(iniPath+'RemoveMemo.dat');
|
i := ErrListLV.ItemIndex;
|
ErrListLV.Items.Delete(ErrListLV.ItemIndex);
|
if ErrListLV.Items.Count = 0 then
|
begin
|
ImmediateBt.Enabled := True;
|
S1.Add('Y');
|
S1.SaveToFile(iniPath+'OMRCheckOk.dat');
|
end
|
else
|
begin
|
if i <= ErrListLV.Items.Count -1 then
|
begin
|
ErrListLV.ItemIndex := i;
|
ErrListLVclick(nil);
|
end;
|
end;
|
|
finally
|
ini.Free;
|
S.Free;
|
S1.Free;
|
end;
|
|
end;
|
|
procedure TErrlistForm.EnforceBtClick(Sender: TObject);
|
var
|
ini : TiniFile;
|
S,S1 : TStringlist;
|
i : Integer;
|
idx : String;
|
Ingnore : Boolean;
|
begin
|
InitialData;
|
S := TStringlist.Create;
|
S1 := TStringlist.Create;
|
ini := Tinifile.Create(iniPath+'Checkerr.ini');
|
try
|
if FileExists(iniPath+'RemoveMemo.dat') then
|
S.LoadFromFile(iniPath+'RemoveMemo.dat');
|
|
for i := ErrListLV.Items.Count - 1 downto 0 do
|
begin
|
idx := ErrListLV.Items.Item[i].SubItems.Strings[0];
|
Ingnore := ini.ReadBool(idx,'Ingnore',False);
|
if Ingnore then //¥i©¿²¤ªº¤~¥i§R
|
begin
|
ini.WriteBool(idx,'Del',True);
|
S.Add(ini.ReadString(idx,'Reason',''));
|
S.SaveToFile(iniPath+'RemoveMemo.dat');
|
ErrListLV.Items.Delete(i);
|
if ErrListLV.Items.Count = 0 then
|
begin
|
//ImmediateBt.Enabled := True;
|
S1.Add('Y');
|
S1.SaveToFile(iniPath+'OMRCheckOk.dat');
|
end;
|
end
|
Else
|
begin
|
Showmessage(Format(_msg('%s¦³¤£¥i©¿²¤¶µ¥ØµLªk±j¢°e¥ó'),['']));
|
end;
|
end;
|
finally
|
ini.Free;
|
S.Free;
|
S1.Free;
|
end;
|
|
end;
|
|
procedure TErrlistForm.ErrListLVClick(Sender: TObject);
|
begin
|
|
InitialData;
|
if ErrListLV.Selected = nil then Exit;
|
NowIndex := ErrListLV.Items.Item[ErrListLV.Selected.Index].SubItems.Strings[0];
|
GetOMRErrini(NowIndex);
|
|
end;
|
|
procedure TErrlistForm.ErrListLVKeyUp(Sender: TObject; var Key: Word;
|
Shift: TShiftState);
|
begin
|
if (key = 38) or (key = 40) then
|
ErrListLVClick(Self);
|
end;
|
|
procedure TErrlistForm.ErrListLVMouseDown(Sender: TObject; Button: TMouseButton;
|
Shift: TShiftState; X, Y: Integer);
|
begin
|
if Button = TMouseButton(MbRight) then
|
begin
|
ErrListLVClick(Self);
|
end;
|
end;
|
|
procedure TErrlistForm.ErrListLVSelectItem(Sender: TObject; Item: TListItem;
|
Selected: Boolean);
|
begin
|
//ErrListLVClick(nil);
|
end;
|
|
procedure TErrlistForm.ExitBtClick(Sender: TObject);
|
begin
|
ModalResult := mrCancel;
|
end;
|
|
procedure TErrlistForm.FormCreate(Sender: TObject);
|
begin
|
MyHotkeyid1 := GlobalAddAtom('MyHotkeyid1')- $C000;
|
RegisterHotKey(Handle, MyHotkeyid1,MOD_CONTROL,Ord('D'));
|
PostMessage(Handle,WM_ACTIVATE,WA_CLICKACTIVE,0);
|
SiteList := TStringlist.Create;
|
RelaSiteList := TStringlist.Create;
|
ISB_BW:=TImageScrollBox.Create(Self);
|
SP1:= TShape.Create(self);
|
SP1.Name := 'SP1';
|
SP2:= TShape.Create(self);
|
SP2.Name := 'SP2';
|
SP3:= TShape.Create(self);
|
SP3.Name := 'SP3';
|
SP4:= TShape.Create(self);
|
SP4.Name := 'SP4';
|
SP5:= TShape.Create(self);
|
SP5.Name := 'SP5';
|
SP6:= TShape.Create(self);
|
SP6.Name := 'SP6';
|
SP7:= TShape.Create(self);
|
SP7.Name := 'SP7';
|
SP8:= TShape.Create(self);
|
SP8.Name := 'SP8';
|
end;
|
|
procedure TErrlistForm.FormDestroy(Sender: TObject);
|
begin
|
SiteList.Free;
|
RelaSiteList.Free;
|
ISB_BW.Free;
|
SP1.Free;
|
SP2.Free;
|
SP3.Free;
|
SP4.Free;
|
SP5.Free;
|
SP6.Free;
|
SP7.Free;
|
SP8.Free;
|
end;
|
|
procedure TErrlistForm.ImmediateBtClick(Sender: TObject);
|
begin
|
ModalResult := mrOK;
|
end;
|
|
procedure TErrlistForm.RelaNextBtClick(Sender: TObject);
|
begin
|
Inc(RelaSiteidx);
|
Label4.Caption := Format('%d/%d',[RelaSiteidx,RelaSiteList.Count]);
|
ShowRelaOMRErr(RelaSiteidx);
|
RelaPreBt.Enabled := False;
|
RelaNextBt.Enabled := False;
|
IF RelaSiteidx > 1 then RelaPreBt.Enabled := True;
|
IF RelaSiteidx < RelaSiteList.Count Then RelaNextBt.Enabled := True;
|
end;
|
|
procedure TErrlistForm.RelaPreBtClick(Sender: TObject);
|
begin
|
Dec(RelaSiteidx);
|
Label4.Caption := Format('%d/%d',[RelaSiteidx,RelaSiteList.Count]);
|
ShowRelaOMRErr(RelaSiteidx);
|
RelaPreBt.Enabled := False;
|
RelaNextBt.Enabled := False;
|
IF RelaSiteidx > 1 then RelaPreBt.Enabled := True;
|
IF RelaSiteidx < RelaSiteList.Count Then RelaNextBt.Enabled := True;
|
end;
|
|
Procedure TErrlistForm.InitialData; //«ì´_¦¨¥¼¿ï¨úª¬ºA
|
begin
|
SitePreBt.Enabled := False;
|
SiteNextBt.Enabled := False;
|
RelaPreBt.Enabled := False;
|
RelaNextBt.Enabled := False;
|
SiteList.Clear;
|
RelaSiteList.Clear;
|
ImageScrollBox1.FileName := '';
|
ImageScrollBox2.FileName := '';
|
|
Label3.Caption := Format('%d/%d',[0,0]);
|
Label4.Caption := Format('%d/%d',[0,0]);
|
Siteidx := 1;
|
RelaSiteidx := 1;
|
DeleteBt.Enabled := False;
|
end;
|
|
Procedure TErrlistForm.GetOMRErrini(Index:String); //¨úÀˮ֥¢±Ñini
|
var
|
ini : Tinifile;
|
FileName,Site : String;
|
RelaFileName,RelaSite : String;
|
Anchor,Anchor1 : String;
|
|
|
SizeStr : String;
|
NowW,NowH : Integer;
|
begin
|
ini := Tinifile.Create(iniPath+'Checkerr.ini');
|
try
|
//¨úiniªºÈ¥X¨Ó//
|
FileName := ini.ReadString(Index,'FileName','');
|
Site := ini.ReadString(Index,'Site','');
|
RelaFileName := ini.ReadString(Index,'RelaFileName','');
|
RelaSite := ini.ReadString(Index,'RelaSite','');
|
Ingnore := ini.ReadBool(Index,'Ingnore',False);
|
Anchor := ini.ReadString(Index,'Anchor','NONE');
|
Anchor1 := ini.ReadString(Index,'RelaAnchor','NONE');
|
//¨úiniªºÈ¥X¨Ó//
|
//¶ë¦ì¸m¨ìlist¸Ì
|
SiteList.Delimiter := '@';
|
SiteList.DelimitedText := Site;
|
RelaSiteList.Delimiter := '@';
|
|
RelaSiteList.DelimitedText := RelaSite;
|
//¶ë¦ì¸m¨ìlist¸Ì
|
if RelaSitelist.Count > 0 then //¦³Ãö«Y¦ì¸mnÅã¥Ü
|
begin
|
Panel6.Visible := True;
|
Splitter1.Visible := True;
|
|
end
|
Else
|
begin
|
Panel6.Visible := False; //Ãö«Yµøµ¡
|
Splitter1.Visible := False;
|
end;
|
Label3.Caption := Format('%d/%d',[Siteidx,SiteList.Count]);
|
Label4.Caption := Format('%d/%d',[RelaSiteidx,RelaSiteList.Count]);
|
if SiteList.Count > 1 then
|
SiteNextBt.Enabled := True;
|
if RelaSiteList.Count > 1 then
|
RelaNextBt.Enabled := True;
|
DeleteBt.Enabled := Ingnore;
|
|
if FileName <> '' then //¦³nÅã¥Ü¼v¹³
|
begin
|
ImageScrollBox1.LoadFromFile(FileName,1);
|
|
//FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,'NONE');
|
|
//======================
|
ImageScrollBox1.LoadFromFile(FileName,1);
|
ImageScrollBox1NewGraphic(ImageScrollBox1.Graphic);
|
FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
|
ImageResize(ImageScrollBox1.Graphic,ISB_BW.Graphic.Width,ISB_BW.Graphic.Height);
|
FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
|
//==========================
|
|
{ShowMessage('UpLPoint='+IntToStr(UpLPoint.X)+','+IntToStr(UpLPoint.Y)+#10#13+
|
'UpRPoint='+IntToStr(UpRPoint.X)+','+IntToStr(UpRPoint.Y)+#10#13+
|
'DownLPoint='+IntToStr(DownLPoint.X)+','+IntToStr(DownLPoint.Y)+#10#13+
|
'DownRPoint='+IntToStr(DownRPoint.X)+','+IntToStr(DownRPoint.Y)); }
|
|
ShowOMRErr(Siteidx);
|
end;
|
if (RelaFileName <> '') and FileExists(RelaFileName) then //¦³Ãö«Y¼v¹³
|
begin
|
//if MpsViewX2.FileName <> RelaFileName then
|
//begin
|
ImageScrollBox2.LoadFromFile(RelaFileName,1);
|
FindPoint(ImageScrollBox2.Graphic,UpLPoint_Rela,UpRPoint_Rela,DownLPoint_Rela,'');
|
//GetFFPoint(MpsViewX2,RelaFileName); //¨úFreeFormªº¤Q¦rÂI¤Î°ª«×
|
|
//end;
|
ShowRelaOMRErr(RelaSiteIdx);
|
end;
|
|
finally
|
ini.Free;
|
end;
|
end;
|
|
Procedure TErrlistForm.ShowOMRErr(Idx:Integer); //µe±¤W¨q¥XOMRÀˮ֥¢±Ñ
|
var
|
Site : String;
|
iRect : TRect;
|
SP:TShape;
|
begin
|
if Idx > SiteList.Count then Exit;
|
Site := SiteList.Strings[Idx-1];
|
//ShowMessage('Site'+Site);
|
//Site := TranslationRect(Site,MpsViewX1.GetImageDpi,'VIEW');
|
iRect := CM_Str2Rect(Site,ImageScrollBox1.Graphic.XDotsPerInch,UpLPoint);
|
//ShowMessage('Idx='+IntToStr(Idx));
|
//ShowMessage(IntToStr(iRect.Left)+','+IntToStr(iRect.Top)+','+IntToStr(iRect.Right)+','+IntToStr(iRect.Bottom));
|
SP := TShape(FindComponent('SP'+inttostr(Idx))); //20170327 ¦b°j°é¤¤n¨Ï¥Î¦h²Õ¾B¸n
|
|
SP.Brush.Color :=$00FEFAAD;
|
SP.Parent := ImageScrollBox1;
|
SP.Pen.Style := psSolid;
|
SP.Pen.Color := $00FEFAAD;
|
SP.Pen.Width := 1;
|
SP.Pen.Mode := pmMask;
|
SP.Left := iRect.Left;
|
SP.Top := iRect.Top;
|
SP.Width := iRect.Right-iRect.Left;
|
SP.Height := iRect.Bottom-iRect.Top;
|
//ImageScrollBox1.Redraw(True);
|
|
//ShowKeyinRect(ImageScrollBox1,iRect);
|
SetKeyinRect_New(ImageScrollBox1,Site,'','',UpLPoint,UpRPoint,sp);
|
end;
|
|
procedure TErrlistForm.ImageScrollBox1NewGraphic(const Graphic: TDibGraphic);
|
begin
|
IF ImageScrollBox1.Graphic.Empty Then Exit;
|
ISB_BW.Graphic.Assign(ImageScrollBox1.Graphic);
|
If ImageScrollBox1.Graphic.ImageFormat <> ifBlackWhite Then
|
begin
|
ConvertToBW(ISB_BW.Graphic);
|
end;
|
end;
|
|
Procedure TErrlistForm.ShowRelaOMRErr(RelaIdx:Integer); //µe±¤W¨q¥XÃö«YOMRÀˮ֥¢±Ñ
|
var
|
Site : String;
|
iRect : TRect;
|
begin
|
if RelaIdx > RelaSiteList.Count then Exit;
|
|
Site := RelaSiteList.Strings[RelaIdx-1];
|
iRect := CM_Str2Rect(Site,ImageScrollBox1.Graphic.XDotsPerInch,UpLPoint_Rela);
|
ShowKeyinRect(ImageScrollBox2,iRect);
|
end;
|
|
procedure TErrlistForm.SiteNextBtClick(Sender: TObject);
|
begin
|
Inc(Siteidx);
|
Label3.Caption := Format('%d/%d',[Siteidx,SiteList.Count]);
|
ShowOMRErr(Siteidx);
|
SitePreBt.Enabled := False;
|
SiteNextBt.Enabled := False;
|
IF Siteidx > 1 then SitePreBt.Enabled := True;
|
IF Siteidx < SiteList.Count Then SiteNextBt.Enabled := True;
|
end;
|
|
procedure TErrlistForm.SitePreBtClick(Sender: TObject);
|
begin
|
Dec(Siteidx);
|
Label3.Caption := Format('%d/%d',[Siteidx,SiteList.Count]);
|
ShowOMRErr(Siteidx);
|
SitePreBt.Enabled := False;
|
SiteNextBt.Enabled := False;
|
IF Siteidx > 1 then SitePreBt.Enabled := True;
|
IF Siteidx < SiteList.Count Then SiteNextBt.Enabled := True;
|
|
|
end;
|
|
procedure TErrlistForm.Splitter1Moved(Sender: TObject);
|
begin
|
GetOMRErrini(NowIndex);
|
end;
|
|
procedure TErrlistForm.Timer1Timer(Sender: TObject);
|
begin
|
Timer1.Enabled := False;
|
ErrListLVClick(nil);
|
end;
|
|
end.
|