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; 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; 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); 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******** 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; //«ì´_¦¨¥¼¿ï¨úª¬º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.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; end; procedure TErrlistForm.FormDestroy(Sender: TObject); begin SiteList.Free; RelaSiteList.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; 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¦ì¸m­nÅã¥Ü 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 //if MpsViewX1.FileName <> FileName then //begin ImageScrollBox1.LoadFromFile(FileName,1); FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,''); //end; 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; begin if Idx > SiteList.Count then Exit; Site := SiteList.Strings[Idx-1]; //Site := TranslationRect(Site,MpsViewX1.GetImageDpi,'VIEW'); iRect := CM_Str2Rect(Site,ImageScrollBox1.Graphic.XDotsPerInch,UpLPoint); ShowKeyinRect(ImageScrollBox1,iRect); 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.