Hong-Dell\Hong
2024-03-20 40bf1f9cb2685c739e7aa7a56d941f09ca512882
ErrList.pas
@@ -5,7 +5,8 @@
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, Menus, StdCtrls, Buttons, ComCtrls, ExtCtrls,inifiles,
  iisUnit,iis_ImageProcess, EnImgScr,mpsBarco,BarcodesFinder;
  iisUnit,iis_ImageProcess, EnImgScr,mpsBarco,BarcodesFinder, EnMisc, EnDiGrph,
  LogFile;
type
  TErrlistForm = class(TForm)
@@ -38,6 +39,8 @@
    ImageScrollBox1: TImageScrollBox;
    ImageScrollBox2: TImageScrollBox;
    ImageScrollBox3: TImageScrollBox;
    Button1: TButton;
    LogFile1: TLogFile;
    procedure ExitBtClick(Sender: TObject);
    procedure ImmediateBtClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
@@ -60,6 +63,7 @@
    procedure Timer1Timer(Sender: TObject);
    procedure RejectBtClick(Sender: TObject);
    procedure EnforceBtClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    Siteidx : Integer;
@@ -86,11 +90,24 @@
    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¥[ }
    SP : TShape;
    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
    Procedure InitialData;
    procedure ImageScrollBox1NewGraphic(const Graphic: TDibGraphic);
    function logTimeString: String;  //«ì´_¦¨¥¼¿ï¨úª¬ºA
  public
    { Public declarations }
    iniPath : String;
@@ -149,6 +166,14 @@
  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;
@@ -159,27 +184,37 @@
  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
    Ingnore := ini.ReadBool(NowIndex,'Ingnore',False);
    if True then
    begin
      ImmediateBt.Enabled := True;
      S1.Add('Y');
      S1.SaveToFile(iniPath+'OMRCheckOk.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;
    end
    else
    begin
      if i <= ErrListLV.Items.Count -1 then
      begin
        ErrListLV.ItemIndex := i;
        ErrListLVclick(nil);
      end;
      Showmessage(Format(_msg('%s¦³¤£¥i©¿²¤¶µ¥ØµLªk±j­¢°e¥ó'),['']));
    end;
  finally
@@ -218,7 +253,7 @@
        ErrListLV.Items.Delete(i);
        if ErrListLV.Items.Count = 0 then
        begin
          //ImmediateBt.Enabled := True;
          ImmediateBt.Enabled := True;
          S1.Add('Y');
          S1.SaveToFile(iniPath+'OMRCheckOk.dat');
        end;
@@ -274,23 +309,77 @@
end;
procedure TErrlistForm.FormCreate(Sender: TObject);
var
  i : Integer;
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);
  for i := 1 to 30 do
  begin
    Sp := TShape.Create(self);
    Sp.Name := 'SP'+inttostr(i);
  end;
  for i := 1 to 30 do
  begin
    Sp := TShape.Create(self);
    Sp.Name := 'SP_R'+inttostr(i);
  end;
  {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);
var
  i : Integer;
begin
  SiteList.Free;
  RelaSiteList.Free;
  ISB_BW.Free;
  for i := 1 to 30 do
  begin
    TShape(FindComponent('SP'+inttostr(i))).Free;
  end;
  for i := 1 to 30 do
  begin
    TShape(FindComponent('SP_R'+inttostr(i))).Free;
  end;
  {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;
  LogFile1.LogToFile(logTimeString+'¥ß§Y°e¥ó');
end;
function TErrlistForm.logTimeString: String;
begin
Result:=FormatDateTime('yyyymmdd hh:mm:ss',now)+'  ';
end;
procedure TErrlistForm.RelaNextBtClick(Sender: TObject);
@@ -316,6 +405,8 @@
end;
Procedure TErrlistForm.InitialData;  //«ì´_¦¨¥¼¿ï¨úª¬ºA
var
  i : Integer;
begin
  SitePreBt.Enabled := False;
  SiteNextBt.Enabled := False;
@@ -331,6 +422,14 @@
  Siteidx := 1;
  RelaSiteidx := 1;
  DeleteBt.Enabled := False;
  for i := 1 to 30 do
  begin
    TShape(FindComponent('SP'+inttostr(i))).Parent := nil;
  end;
  for i := 1 to 30 do
  begin
    TShape(FindComponent('SP_R'+inttostr(i))).Parent := nil;
  end;
end;
Procedure TErrlistForm.GetOMRErrini(Index:String); //¨úÀˮ֥¢±Ñini
@@ -339,6 +438,10 @@
  FileName,Site : String;
  RelaFileName,RelaSite : String;
  Anchor,Anchor1 : String;
  SizeStr : String;
  NowW,NowH : Integer;
begin
  ini := Tinifile.Create(iniPath+'Checkerr.ini');
  try
@@ -379,11 +482,23 @@
    if FileName <> '' then  //¦³­nÅã¥Ü¼v¹³
    begin
      //if MpsViewX1.FileName <> FileName then
      //begin
        ImageScrollBox1.LoadFromFile(FileName,1);
        FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,'');
      //end;
      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¹³
@@ -391,7 +506,8 @@
      //if MpsViewX2.FileName <> RelaFileName then
      //begin
        ImageScrollBox2.LoadFromFile(RelaFileName,1);
        FindPoint(ImageScrollBox2.Graphic,UpLPoint_Rela,UpRPoint_Rela,DownLPoint_Rela,'');
        //FindPoint(ImageScrollBox2.Graphic,UpLPoint_Rela,UpRPoint_Rela,DownLPoint_Rela,'');
        FindPoint(ImageScrollBox2.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
        //GetFFPoint(MpsViewX2,RelaFileName); //¨úFreeFormªº¤Q¦rÂI¤Î°ª«×
      //end;
@@ -407,24 +523,68 @@
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);
  ShowKeyinRect(ImageScrollBox1,iRect);
//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;
  SP:TShape;
begin
  if RelaIdx > RelaSiteList.Count then Exit;
  //SP := TShape(FindComponent('SP'+inttostr(RelaIdx+1))); //20170327 ¦b°j°é¤¤­n¨Ï¥Î¦h²Õ¾B¸n
  SP := TShape(FindComponent('SP_R'+inttostr(RelaIdx)));  //20240314 Hong §ï¦¨³o¼Ë
  SP.Brush.Color :=$00FEFAAD;
  SP.Parent := ImageScrollBox2;
  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;
  Site := RelaSiteList.Strings[RelaIdx-1];
  iRect := CM_Str2Rect(Site,ImageScrollBox1.Graphic.XDotsPerInch,UpLPoint_Rela);
  ShowKeyinRect(ImageScrollBox2,iRect);
  //ShowKeyinRect(ImageScrollBox2,iRect);
  SetKeyinRect_New(ImageScrollBox2,Site,'','',UpLPoint,UpRPoint,sp);
end;
procedure TErrlistForm.SiteNextBtClick(Sender: TObject);