/[projects]/dao/DelphiScanner/Main.pas
ViewVC logotype

Diff of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2668 by torben, Tue Aug 25 16:34:41 2015 UTC revision 2692 by torben, Thu Sep 3 14:24:23 2015 UTC
# Line 8  uses Line 8  uses
8    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
9    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
10    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,
11    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    Winspool, ShellApi, ClipBrd, Buttons, wininet,
12    UITypes,    UITypes,
13    PakkeshopLabels    PakkeshopLabels,
14      StBarC,
15      Math, // DegToRad() bruges i PrintPakkeshopLabel
16      Utils
17    
18    ;    ;
19    
20  type  type
   TStrArray = array of string;  
21    TMainForm = class(TForm)    TMainForm = class(TForm)
22      StregkodeST: TStaticText;      StregkodeST: TStaticText;
23      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
# Line 50  type Line 52  type
52      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
53      ListBox1: TListBox;      ListBox1: TListBox;
54      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
55      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
56      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
57      Image1: TImage;      Image1: TImage;
58      ListBox2: TListBox;      ListBox2: TListBox;
# Line 92  type Line 94  type
94      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
95    
96    
97    function Explode(var a: TStrArray; Border, S: string): Integer;    function Sto_GetFmtFileVersion(const FileName: String = ''): String;
98    function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
99    function getProddato() : TDate;    function getProddato() : TDate;
100    function getProddag() : String;    function getProddag() : String;
101    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
102    function GetCurrentPrinterHandle() : THandle;    function GetCurrentPrinterHandle() : THandle;
103    function SavePChar(p: PChar): PChar;    function SavePChar(p: PChar): PChar;
104    function AdobeReaderExists(): Boolean;  
105    function FileTime2DateTime(FileTime: TFileTime): TDateTime;    function FileTime2DateTime(FileTime: TFileTime): TDateTime;
   function split(input: string; schar: Char; s: Integer): string;  
106    function CheckUrl(url:string):boolean;    function CheckUrl(url:string):boolean;
107    
108    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
# Line 136  type Line 134  type
134    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
135    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
136    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
137    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
138    procedure OpdaterListenButton01Click(Sender: TObject);    procedure OpdaterListenButton01Click(Sender: TObject);
139    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
140    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
# Line 183  type Line 181  type
181    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
182    procedure TjekkerUrls();    procedure TjekkerUrls();
183    
   procedure RoundCornerOf(Control: TWinControl);  
184    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
185    
186    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
# Line 196  type Line 193  type
193      SkrivLog : String;      SkrivLog : String;
194      Sted : String;      Sted : String;
195      StedNavn : String;      StedNavn : String;
196      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;
197  // 29150330: start  // 29150330: start
198      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
199  // 20150330: slut  // 20150330: slut
# Line 210  type Line 207  type
207      AlarmLyd : String;      AlarmLyd : String;
208      ScannetOkLyd : String;      ScannetOkLyd : String;
209      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
210  // 20150317: start  
211      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
212  // 20150317: slut  
213      PrinterNavn : String;      PrinterNavn : String;
214      TjekPrinter : String;      TjekPrinter : String;
215      XPosRute : integer;      XPosRute : integer;
# Line 251  type Line 248  type
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250    
251      PakkeshopLabel: TPakkeshopLabel;      Barcode : TStBarcode;
252    
           function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
253    
254      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
255      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
# Line 271  type Line 267  type
267      { Public declarations }      { Public declarations }
268    end;    end;
269    
270          function GetPixelsPerInchX(): Integer;
271        function GetPixelsPerInchY(): Integer;
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
275    
# Line 284  var Line 283  var
283  implementation  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
 function TMainForm.TColorToHex(Color : TColor) : string;  
 begin  
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
286    
287  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
288  begin  begin
# Line 309  begin Line 291  begin
291      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
292  // 20150309: slut  // 20150309: slut
293    
294        Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component
295    
296      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
297      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
298      begin      begin
# Line 405  begin Line 389  begin
389    
390      StartScreen();      StartScreen();
391      MainForm.Caption := Titel;      MainForm.Caption := Titel;
392      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
393      MainForm.Farve := Farve;      MainForm.Farve := Farve;
394      MainForm.Titel := Titel;      MainForm.Titel := Titel;
395      MainForm.Url := Url;      MainForm.Url := Url;
# Line 465  begin Line 449  begin
449          end          end
450          else          else
451          begin          begin
452            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
453          end;          end;
454          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
455        end        end
456        else        else
457        begin        begin
458          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
459          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
460        end;        end;
461      end;      end;
# Line 514  end; Line 498  end;
498    
499  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
500  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
501  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
502  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
503       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
504       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
505       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
506  end;  end;
507    
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
# Line 553  begin Line 521  begin
521    
522    btnNulstil.BringToFront;    btnNulstil.BringToFront;
523    
524    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
525    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
526    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
527    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
528    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
529    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
530    
531    
532    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 594  begin Line 562  begin
562      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
563      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
564    
565    
566      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
567        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
568    
569    
570    
571      LabelType := ReadInteger('Settings','LabelType',1);      LabelType := ReadInteger('Settings','LabelType',1);
# Line 634  begin Line 605  begin
605    
606      if (SkrivLog = '1') then      if (SkrivLog = '1') then
607      begin      begin
608        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
609        try        try
610          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
611          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
# Line 777  begin Line 748  begin
748      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
749      // *************************** //      // *************************** //
750    
751    {$IfDef STED_BK}
752        SpecialVersionSted := 'BK';
753    {$EndIf}
754    {$IfDef STED_DBK}
755        SpecialVersionSted := 'DBK';
756    {$EndIf}
757    {$IfDef STED_FD}
758        SpecialVersionSted := 'FD';
759    {$EndIf}
760    {$IfDef STED_NS}
761        SpecialVersionSted := 'NS';
762    {$EndIf}
763    
764    
765      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
766      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
767      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 792  begin Line 777  begin
777      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
778      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
779    
 // 20150313: start  
780      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
781      begin      begin
782         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 803  begin Line 787  begin
787         SpecialVersionSted := '03';         SpecialVersionSted := '03';
788         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
789      end;      end;
 // 20150313: slut  
790    
791      if SpecialVersionSted = 'BK' then      if SpecialVersionSted = 'BK' then
792      begin      begin
# Line 1148  begin Line 1131  begin
1131      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1132    
1133      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1134      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));
1135    
1136  end;  end;
1137    
# Line 1600  begin Line 1583  begin
1583             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1584             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1585             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1586                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1587             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1588                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1589             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1590           end           end
1591          else          else
# Line 1662  begin Line 1645  begin
1645           end;           end;
1646            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1647            begin            begin
1648              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1649              if Storepakker1.Checked then              if Storepakker1.Checked then
1650              begin              begin
1651                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1675  begin Line 1658  begin
1658            end            end
1659            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1660            begin            begin
1661              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1662              if Storepakker1.Checked then              if Storepakker1.Checked then
1663              begin              begin
1664                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1800  begin Line 1783  begin
1783            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1784            begin            begin
1785              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1786              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1787  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1788  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1789  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1790              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1791            end            end
1792            else     // kun idag            else     // kun idag
1793            begin            begin
# Line 1997  begin Line 1980  begin
1980      01 :      01 :
1981            begin;      // NS            begin;      // NS
1982              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1983              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1984              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
1985              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1986              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2013  begin Line 1996  begin
1996              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1997              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1998              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1999              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
2000              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
2001              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2002              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2030  begin Line 2013  begin
2013              begin              begin
2014                DownloadButton03.Visible := false;                DownloadButton03.Visible := false;
2015              end;              end;
2016              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2017              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
2018              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2019              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2051  begin Line 2034  begin
2034              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2035              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2036              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2037              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2038              OpdaterListenButton01.Enabled := true;              OpdaterListenButton01.Enabled := true;
2039              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2040              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
# Line 2068  var Line 2051  var
2051    URLStr : String;    URLStr : String;
2052    pakkestorrelse : String;    pakkestorrelse : String;
2053    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2054    
2055      PakkeshopLabel: TPakkeshopLabel;
2056  begin  begin
2057    if radioStorPakke.Checked then    if radioStorPakke.Checked then
2058    begin    begin
# Line 2170  begin Line 2155  begin
2155       begin       begin
2156         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2157         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2158           RuteNummer := PakkeshopLabel.Koreliste;
2159    
2160         PrintPakkeshopLabel( PakkeshopLabel );         PrintPakkeshopLabel( PakkeshopLabel );
2161    
# Line 2325  pakkeForkertSted : Integer; Line 2311  pakkeForkertSted : Integer;
2311    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2312  begin  begin
2313    if Budlevering1.Checked then    if Budlevering1.Checked then
2314       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2315    
2316    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2317    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2381  begin Line 2367  begin
2367            PrintNyLabel := true;            PrintNyLabel := true;
2368            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2369            nyFarve := Farve;            nyFarve := Farve;
2370            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2371            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2372            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2373            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2923  begin Line 2909  begin
2909            end;            end;
2910          end;          end;
2911    
2912           // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2913            if PanelValg7.Enabled = true then
2914            begin
2915              if CheckUrl(UrlIndleveringsPakke) then
2916              begin
2917                logTekst := 'UrlIndleveringsPakke accepteret: ' + UrlIndleveringsPakke;
2918                SkrivScanningLogFil(logTekst);
2919              end
2920              else
2921              begin
2922                inc(urlFejl);   // Optæller antal fejl
2923                logTekst := 'UrlIndleveringsPakke svarer ikke: ' + UrlIndleveringsPakke;
2924                ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2925                if TjekUrls = '1' then
2926                begin
2927                  logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2928                end;
2929                SkrivScanningLogFil(logTekst);
2930                if TjekUrls = '1' then
2931                begin
2932                  ShowMessage(logTekst);
2933                  UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2934                  Application.Terminate;
2935                  exit;
2936                end;
2937              end;
2938    
2939              if CheckUrl(UrlIndleveringsPakkeManglendeScanninger) then
2940              begin
2941                logTekst := 'UrlIndleveringsPakkeManglendeScanninger accepteret: ' + UrlIndleveringsPakkeManglendeScanninger;
2942                SkrivScanningLogFil(logTekst);
2943              end
2944              else
2945              begin
2946                inc(urlFejl);   // Optæller antal fejl
2947                logTekst := 'UrlIndleveringsPakkeManglendeScanninger svarer ikke: ' + UrlIndleveringsPakkeManglendeScanninger;
2948                ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2949                if TjekUrls = '1' then
2950                begin
2951                  logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2952                end;
2953                SkrivScanningLogFil(logTekst);
2954                if TjekUrls = '1' then
2955                begin
2956                  ShowMessage(logTekst);
2957                  UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2958                  Application.Terminate;
2959                  exit;
2960                end;
2961              end;
2962            end;
2963    
2964          // Tjekker UrlEKLoverforsel          // Tjekker UrlEKLoverforsel
2965          if PanelValg1.Enabled = true then          if PanelValg1.Enabled = true then
2966          begin          begin
# Line 3070  begin Line 3108  begin
3108      repeat      repeat
3109        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
3110        begin        begin
3111    
3112          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
3113          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
3114          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
# Line 3131  begin Line 3170  begin
3170  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
3171    if Farve <> '' then    if Farve <> '' then
3172    begin    begin
3173       MainForm.Color := HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
3174  // 20150312: start  // 20150312: start
3175  (*  (*
3176    end    end
# Line 3205  end; Line 3244  end;
3244    
3245  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
3246  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
3247  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
3248  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
3249       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
3250       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
3251       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
3252  // 20150311: slut  
3253    
3254    
3255  end;  end;
3256    
3257  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3331  begin Line 3357  begin
3357    end;    end;
3358  end;  end;
3359    
3360  {  
  VERY fast split function  
  this function returns part of a string based on  
  constant defineable delimiters, such as ";". So  
  SPLIT('this is a test ',' ',3) = 'is' or  
  SPLIT('data;another;yet;again;more;',';',4) = 'yet'  
   
  Split function shifts index integer by two to  
  be compatible with commonly used PD split function  
  gpl 2004 / Juhani Suhonen  
 }  
 function TMainForm.split(input: string; schar: Char; s: Integer): string;  
 var  
   c: array of Integer;  
   b, t: Integer;  
 begin  
   Dec(s, 2);  // for compatibility with very old & slow split function  
   t := 0;     // variable T needs to be initialized...  
   setlength(c, Length(input));  
   for b := 0 to pred(High(c)) do  
   begin  
     c[b + 1] := posex(schar, input, succ(c[b]));  
     // BREAK LOOP if posex looped (position before previous)  
     // or wanted position reached..  
     if (c[b + 1] < c[b]) or (s < t) then break  
     else  
       Inc(t);  
   end;  
   Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));  
 end;  
3361    
3362  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3363  const  const
# Line 3369  var Line 3366  var
3366   tekst, filversion : String;   tekst, filversion : String;
3367  begin  begin
3368    
3369    filversion := Sto_GetFmtFileVersion('','');    filversion := Sto_GetFmtFileVersion('');
3370    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3371    
3372    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3391  begin Line 3388  begin
3388          end          end
3389          else          else
3390          begin          begin
3391            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3392          end;          end;
3393      end      end
3394      else      else
3395      begin      begin
3396        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3397      end;      end;
3398    end;    end;
3399    
# Line 3464  begin Line 3461  begin
3461    
3462    if FileExists(fileName) then    if FileExists(fileName) then
3463    begin    begin
3464      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3465      begin      begin
3466        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3467        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3488  begin Line 3485  begin
3485    
3486    if FileExists(fileName) then    if FileExists(fileName) then
3487    begin    begin
3488      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3489      begin      begin
3490        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3491        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3647  begin Line 3644  begin
3644        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3645        ListBox1.Visible := true;        ListBox1.Visible := true;
3646        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3647        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3648        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3649        DownloadButton03.Visible := false;        DownloadButton03.Visible := false;
3650        EKLoverforsel.Enabled := false;        EKLoverforsel.Enabled := false;
# Line 3683  begin Line 3680  begin
3680        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3681        ListBox1.Visible := true;        ListBox1.Visible := true;
3682        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3683        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3684        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3685    
3686        EKLoverforsel.Enabled := true;        EKLoverforsel.Enabled := true;
# Line 3720  begin Line 3717  begin
3717        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3718        ListBox1.Visible := true;        ListBox1.Visible := true;
3719        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3720        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3721        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3722        EKLoverforsel.Enabled := false;        EKLoverforsel.Enabled := false;
3723        InitLillePakke();        InitLillePakke();
# Line 3767  begin Line 3764  begin
3764        ListBox1.Visible := true;        ListBox1.Visible := true;
3765        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3766    
3767        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3768        OpdaterListenButton01.Enabled := true;        OpdaterListenButton01.Enabled := true;
3769        EKLoverforsel.Enabled := false;        EKLoverforsel.Enabled := false;
3770        InitLillePakke();        InitLillePakke();
# Line 3823  end; Line 3820  end;
3820  ///   values.</param>  ///   values.</param>
3821  /// <returns>Formatted version number of file, '' if no version  /// <returns>Formatted version number of file, '' if no version
3822  ///   resource found.</returns>  ///   resource found.</returns>
3823  function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';  function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;
   const Fmt: String = '%d.%d.%d.%d'): String;  
3824  var  var
3825    sFileName: String;    sFileName: String;
3826    iBufferSize: DWORD;    iBufferSize: DWORD;
3827    iDummy: DWORD;    iDummy: DWORD;
3828    pBuffer: Pointer;    pBuffer: Pointer;
3829    pFileInfo: Pointer;    pFileInfo: Pointer;
3830    iVer: array[1..4] of Word;    iVer: array[1..4] of Integer;
   S : String;  
3831  begin  begin
3832    // set default value    // set default value
3833    Result := '';    Result := '';
# Line 3857  begin Line 3852  begin
3852      finally      finally
3853        FreeMem(pBuffer);        FreeMem(pBuffer);
3854      end;      end;
3855    
3856      // format result string      // format result string
3857      Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);      Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);
3858    
     // Hvorfor virker ovenstående ikke ???  
     S := '';  
     Str(iVer[1], Result);  
     S := S+Result+'.';  
     Str(iVer[2], Result);  
     S := S+Result+'.';  
     Str(iVer[3], Result);  
     S := S+Result+'.';  
     Str(iVer[4], Result);  
     S := S+Result+'';  
     Result := S;  
3859    end;    end;
3860  end;  end;
3861    
# Line 4057  begin Line 4042  begin
4042    else    else
4043      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4044  }  }
4045    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4046    
4047    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4048    CheckCode();    CheckCode();
# Line 4065  end; Line 4050  end;
4050    
4051  end;  end;
4052    
 function TMainForm.BarCodeValid (ACode: string): boolean;  
 var  
    I: integer;  
    SumOdd, SumEven: integer;  
    ADigit, AChecksumDigit: integer;  
 begin  
    SumOdd := 0;  
    SumEven := 0;  
    for I := 1 to (Length (ACode) - 1) do begin  
       ADigit := StrToIntDef (ACode [I], 0);  
       if (I MOD 2 = 0) then begin  
          SumEven := SumEven + ADigit;  
       end else begin  
          SumOdd := SumOdd + ADigit;  
       end; {if}  
    end; {for}  
    AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);  
    Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);  
 end; {--BarCodeValid--}  
   
 { used for EAN 8/13 }  
 function TMainForm.CheckSumModulo10(const data:string):string;  
         var i,fak,sum : Integer;  
 begin  
         sum := 0;  
         fak := Length(data);  
         for i:=1 to Length(data) do  
         begin  
                 if (fak mod 2) = 0 then  
                         sum := sum + (StrToInt(data[i])*1)  
                 else  
                         sum := sum + (StrToInt(data[i])*3);  
                 dec(fak);  
         end;  
         if (sum mod 10) = 0 then  
                 result := data+'0'  
         else  
                 result := data+IntToStr(10-(sum mod 10));  
 end;  
4053    
4054  //  //
4055  // Bladhus ***  // Bladhus ***
# Line 4581  begin Line 4527  begin
4527    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4528  end;  end;
4529    
4530  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4531  begin  begin
4532      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4533      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
# Line 4605  begin Line 4551  begin
4551      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4552  end;  end;
4553    
 function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
 var  
   S2: string;  
 begin  
   Result  := 0;  
   S2 := S + Border;  
   repeat  
     SetLength(A, Length(A) + 1);  
     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);  
     Delete(S2, 1,Length(a[Result] + Border));  
     Inc(Result);  
   until S2 = '';  
 end;  
4554    
4555  // ToDo: Færdiggør implementationen  // ToDo: PrintPakkeshopLabel()
4556  procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
4557    var
4558      XForm, XFormOld: TXForm; //Bruges til rotate X-formation
4559      Angle: integer;
4560      gMode: integer;
4561      Dirigering: string;
4562    
4563  begin  begin
4564      with Printer do      with Printer do
4565      begin      begin
4566        BeginDoc();        BeginDoc();
       Canvas.Font.Size := FontSizeRuteLille;  
4567    
4568        Canvas.Font.Size := FontSizeKorelisteLille;  
4569        Canvas.TextOut(XPosKoreliste,YPosKoreliste, PakkeshopLabel.Navn);        Canvas.Font.Size := 16;
4570          Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);
4571    
4572    
4573    
4574          Canvas.TextOut(25, 90, PakkeshopLabel.Navn );
4575          Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );
4576          Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );
4577    
4578    
4579          Canvas.Font.Size := 9;
4580          Canvas.TextOut(110, 240, 'Pakkeshop:');
4581          Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);
4582          Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);
4583          Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);
4584    
4585          Canvas.TextOut(350, 240, 'Afsender:');
4586          Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);
4587          Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);
4588          Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);
4589    
4590          Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;
4591          if ( PakkeshopLabel.Koreliste <> '') then
4592          begin
4593            Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;
4594          end;
4595    
4596    
4597          Canvas.Font.Size := 12;
4598          Canvas.TextOut(15, 370, Dirigering);
4599    
4600    
4601    
4602    
4603    
4604          //Tegn adskillelses linier
4605          Canvas.Pen.Width := 2;
4606          //Øverste linie
4607          Canvas.MoveTo(20,80);
4608          Canvas.LineTo(600,80);
4609    
4610          // Midterste linie
4611          Canvas.MoveTo( 20, 240);
4612          Canvas.LineTo(600, 240);
4613    
4614          //Nederste linie
4615          Canvas.MoveTo( 20, 370);
4616          Canvas.LineTo(600, 370);
4617    
4618    
4619          //Tegn skrå streger over afsender
4620          Canvas.Pen.Width := 1;
4621          Canvas.MoveTo(600, 250);
4622          Canvas.LineTo(350, 360);
4623          Canvas.MoveTo(600, 360);
4624          Canvas.LineTo(350, 250);
4625    
4626    
4627    
4628    
4629          // Resten af rutinen vedr genering og placering af Barcode
4630    
4631          BarCode.BarCodeType := bcCode128;
4632          BarCode.Code128Subset := csCodeC;
4633          BarCode.Code := PakkeshopLabel.Stregkode;
4634          BarCode.Validate(True);
4635    
4636          //Start X-formation
4637          //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );
4638          GetWorldTransform(Canvas.Handle, XFormOld);
4639    
4640          Angle := 270;
4641          XForm.eM11 := Cos(DegToRad(Angle));
4642          XForm.eM12 := Sin(DegToRad(Angle));
4643          XForm.eM21 := -Sin(DegToRad(Angle));
4644          XForm.eM22 := Cos(DegToRad(Angle));
4645          XForm.eDx := 0;
4646          XForm.eDy := 0;
4647    
4648          gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
4649          SetWorldTransform(Canvas.Handle, XForm);
4650    
4651          // PaintToCanvasSize arbejder i Inches
4652          // Første pos argument bliver nu Y og skal være negativ for at rykke den ned
4653          //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre
4654    
4655          BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);
4656    
4657    
4658          SetWorldTransform(Canvas.Handle, XFormOld);
4659          SetGraphicsMode(Canvas.Handle, gMode);
4660    
4661        EndDoc();        EndDoc();
4662      end;      end;
4663    
4664    
4665    end;
4666    
4667    function GetPixelsPerInchX(): Integer;
4668    begin
4669      Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)
4670    end;
4671    
4672    function GetPixelsPerInchY(): Integer;
4673    begin
4674      Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)
4675  end;  end;
4676    
4677    
# Line 4672  var Line 4710  var
4710        end;        end;
4711    
4712    
4713      if (Scanningtype = '6') then  
4714        if (Scanningtype = '7') then
4715       begin       begin
4716        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4717         end
4718        else if (Scanningtype = '6') then
4719         begin
4720          URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4721       end       end
4722      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4723       begin       begin
4724        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4725       end       end
4726      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4727       begin       begin
# Line 4802  var Line 4845  var
4845  //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  //                    stregkoderMedTjekkodeArray[linienr] := stregkode;
4846                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4847                    begin                    begin
4848                      stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet
4849                    end                    end
4850                    else                    else
4851                    begin                    begin
# Line 4992  var Line 5035  var
5035     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
5036     imorgenYmd : string;     imorgenYmd : string;
5037     logFilnavn : string;     logFilnavn : string;
5038      error : Integer;     //error : Integer;
5039    
5040  begin  begin
5041    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5084  begin Line 5127  begin
5127          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
5128          S := buffer;          S := buffer;
5129          SetLength(A,0);          SetLength(A,0);
5130          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
5131          if (length(A) < 2) then          if (length(A) < 2) then
5132          begin          begin
5133            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
5134          end;          end;
5135            if (length(A) > 1) then            if (length(A) > 1) then
5136            begin            begin
# Line 5161  begin Line 5204  begin
5204          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
5205          S := buffer;          S := buffer;
5206          SetLength(A,0);          SetLength(A,0);
5207          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
5208          if (length(A) < 3) then          if (length(A) < 3) then
5209          begin          begin
5210            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
5211          end;          end;
5212          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
5213          begin          begin
# Line 5365  begin Line 5408  begin
5408    end;    end;
5409  end;  end;
5410    
5411  function TMainForm.AdobeReaderExists: Boolean;  
 var  
   AReg: TRegistry;  
 begin  
   result:= false;  
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
 end;  
5412    
5413    
5414  function TMainForm.CheckUrl(url:string):boolean;  function TMainForm.CheckUrl(url:string):boolean;
5415  var  var
5416    hSession, hfile, hRequest: hInternet;    hSession, hfile: hInternet;
5417    dwindex,dwcodelen :dword;    dwindex,dwcodelen :dword;
5418    dwcode:array[1..20] of char;    dwcode:array[1..20] of char;
5419    res : pchar;    res : pchar;
# Line 5418  begin Line 5451  begin
5451  end;  end;
5452    
5453    
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
 begin  
    with Control do  
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
 end;  
   
5454  procedure TMainForm.CheckPrintQue(tjektype : string);  procedure TMainForm.CheckPrintQue(tjektype : string);
5455  type  type
5456    TJobs  = array [0..1000] of JOB_INFO_1;    TJobs  = array [0..1000] of JOB_INFO_1;

Legend:
Removed from v.2668  
changed lines
  Added in v.2692

  ViewVC Help
Powered by ViewVC 1.1.20