/[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 2660 by torben, Sun Aug 23 14:45:16 2015 UTC revision 2800 by torben, Wed Jan 6 12:53:51 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes    UITypes,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 49  type Line 65  type
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 88  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107        menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109    
110    
111    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   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;  
112    function getProddato() : TDate;    function getProddato() : TDate;
113    function getProddag() : String;    function getProddag() : String;
114    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
115    
116    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
117    procedure StartScreen();    procedure StartScreen();
# Line 134  type Line 142  type
142    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
143    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
144    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
145    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
146    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
147    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
148    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
149    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 151  type
151    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
152    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
153    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
154    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
155    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
156    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
157    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
158    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
159    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
160    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 158  type Line 166  type
166    
167    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
168    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
169    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
170    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
171    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
172    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
173    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
174    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
# Line 181  type Line 188  type
188    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
189    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
190    procedure TjekkerUrls();    procedure TjekkerUrls();
191  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
   procedure RoundCornerOf(Control: TWinControl);  
192    
193      procedure menuIndleveringClick(Sender: TObject);
194    
195    
196    
197      //Nedarvet fra IParentForm
198      procedure LogMessage( msg : string);
199      procedure SetPrinterstatusText( txt: string; alert: boolean);
200      function GetFormObject() : TForm;
201    
 // 20150310: slut  
202    
203    private    private
204      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 193  type Line 206  type
206      SkrivLog : String;      SkrivLog : String;
207      Sted : String;      Sted : String;
208      StedNavn : String;      StedNavn : String;
209      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
210  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
211                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
212    
213      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
214  // 20150330: slut  
215      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
216      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
217      ScanTjekkode : String;      ScanTjekkode : String;
218      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
219      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
220      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
221      LabelType : integer;            FarveIndlevering : String;
222    
223        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
224              TitelIndlevering : String;
225    
226      AlarmLyd : String;      AlarmLyd : String;
227      ScannetOkLyd : String;      ScannetOkLyd : String;
228      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
229  // 20150317: start  
230      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
231  // 20150317: slut  
232      PrinterNavn : String;      PrinterNavn : String;
233      TjekPrinter : String;      TjekPrinter : String;
234      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
235      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
236      BladhusSted : Integer;      BladhusSted : Integer;
237      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 244  type
244      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
245      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
246      TjekUrls : String;      TjekUrls : String;
247        Config : TConfiguration;
248    
249            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
250        LabelPrint: TLabelPrint;
251    
252      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 = '');
253      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
254      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
255      procedure CheckCode();      procedure CheckCode();
256      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 266  type Line 265  type
265      { Public declarations }      { Public declarations }
266    end;    end;
267    
268    
269  var  var
270    MainForm: TMainForm;    MainForm: TMainForm;
271    
# Line 279  var Line 279  var
279  implementation  implementation
280  {$R *.dfm}  {$R *.dfm}
281    
282  function TMainForm.TColorToHex(Color : TColor) : string;  
283  begin  //FormCreate kaldes før InitForm
    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;  
284    
285  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
286  begin  begin
287    
 // 20150309: startr  
288      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
289  // 20150309: slut  
290    
291      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
292      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 330  begin
330        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
331      end;      end;
332    
333      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
334    
335      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
336      begin      begin
# Line 374  begin Line 358  begin
358        else if (Sted = 'BR') then        else if (Sted = 'BR') then
359          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
360        else if (Sted = 'BK') then        else if (Sted = 'BK') then
361          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
362          else if (Sted = 'TK') then
363            begin StedNavn := 'BK/Trykkompagniet: '; end
364        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
365          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK Køge: '; end
366        else if (Sted = '1') then        else if (Sted = '1') then
# Line 400  begin Line 386  begin
386    
387      StartScreen();      StartScreen();
388      MainForm.Caption := Titel;      MainForm.Caption := Titel;
389      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
390      MainForm.Farve := Farve;      MainForm.Farve := Farve;
391      MainForm.Titel := Titel;      MainForm.Titel := Titel;
392      MainForm.Url := Url;      MainForm.Url := Url;
# Line 460  begin Line 446  begin
446          end          end
447          else          else
448          begin          begin
449            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
450          end;          end;
451          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
452        end        end
453        else        else
454        begin        begin
455          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
456          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
457        end;        end;
458      end;      end;
459    
460    
461  end;  end;
462    
463  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 509  end; Line 496  end;
496    
497  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
498  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;  
 *)  
499  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
500  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
501       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
502       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
503       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
504  end;  end;
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
512    gemScanningtype : String;    gemScanningtype : String;
513    
514  begin  begin
515    
516    
517    // Initierer nogle variabler    // Initierer nogle variabler
518    BladhusSted := 00;    BladhusSted := 00;
519    Application.ShowHint := True;    Application.ShowHint := True;
520    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
521    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
522    
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524    
525    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    
532    
533    // 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 567  begin Line 541  begin
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 588  begin Line 568  begin
568      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
569      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');
570      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');
571      LabelType := ReadInteger('Settings','LabelType',1);  
572    
573        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
574        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
575        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
576    
577    
578    
579    
580      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
581      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
582      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 625  begin Line 613  begin
613    
614      if (SkrivLog = '1') then      if (SkrivLog = '1') then
615      begin      begin
616        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
617        try        try
618          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
619          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
620          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
621          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
622          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
623          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 647  begin Line 635  begin
635        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
636      end;      end;
637    
638      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
639    
640      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
641      begin      begin
# Line 768  begin Line 688  begin
688      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
689      // *************************** //      // *************************** //
690    
691    {$IfDef STED_BK}
692        SpecialVersionSted := 'BK';
693    {$EndIf}
694    {$IfDef STED_TK}
695        SpecialVersionSted := 'TK';// BK-Trykkompagniet
696    {$EndIf}
697    {$IfDef STED_DBK}
698        SpecialVersionSted := 'DBK';
699    {$EndIf}
700    {$IfDef STED_FD}
701        SpecialVersionSted := 'FD';
702    {$EndIf}
703    {$IfDef STED_NS}
704        SpecialVersionSted := 'NS';
705    {$EndIf}
706    
707    
708      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
709      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
710      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 720  begin
720      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
721      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
722    
 // 20150313: start  
723      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
724      begin      begin
725         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 794  begin Line 730  begin
730         SpecialVersionSted := '03';         SpecialVersionSted := '03';
731         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
732      end;      end;
 // 20150313: slut  
733    
734      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
735      begin      begin
736        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
737        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 805  begin Line 740  begin
740        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
741        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
742        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
743        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
744        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
745    
746       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
747        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
748        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
749        Returpakkerfrapakkeshop1.Enabled := false;  
750          //Returpakkerfrapakkeshop1.Enabled := false;
751    
752        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
753        begin        begin
754           Scanningtype := '1';           Scanningtype := '1';
# Line 834  begin Line 772  begin
772        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
773        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
774        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
775          PanelValg7.Enabled := false;
776          PanelValg7.Font.Color := clInactiveCaption;
777    
778       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
779        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
780        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 870  begin Line 811  begin
811        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
812        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
813        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
814          PanelValg7.Enabled := false;
815          PanelValg7.Font.Color := clInactiveCaption;
816       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
817    
818        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
# Line 965  begin Line 908  begin
908             RutenummerST.Caption := '';             RutenummerST.Caption := '';
909             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
910             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
911             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
912             exit;             exit;
913          end;          end;
914      end      end
# Line 1060  begin Line 1003  begin
1003      end;      end;
1004    
1005    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1006    
1007      CheckPrintQue('Opstart');  
1008        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1009        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1010    
1011    finally    finally
1012      Free;      Free;
# Line 1134  begin Line 1073  begin
1073      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1074    
1075      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1076      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1077    
1078  end;  end;
1079    
# Line 1191  begin Line 1130  begin
1130      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1131      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1132      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1133        or (NumberString = 'DAO PAKKESHOP')
1134        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1135            or (LowerCase(NumberString) = 'for stor daodirekte' )
1136      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1137    
1138      begin      begin
# Line 1201  begin Line 1143  begin
1143      begin      begin
1144        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1145      end;      end;
1146    end;    end;  // Slut ctrl-v
1147    
1148    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1149    begin    begin
# Line 1214  begin Line 1156  begin
1156    
1157      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1158      begin      begin
1159         PakkeshopNulstil.Click();         btnNulstil.Click();
1160         exit;         exit;
1161      end;      end;
1162    
1163      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1164      begin      begin
1165        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1166    
# Line 1255  begin Line 1197  begin
1197         exit;         exit;
1198      end;      end;
1199    
1200        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1201        begin
1202          if chkForstorTilDirekte.Enabled then
1203          begin
1204            chkForstorTilDirekte.Checked := true;
1205          end
1206          else
1207          begin
1208             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1209          end;
1210          Stregkode := '';
1211          StregkodeST.Caption := StregKode;
1212          exit;
1213        end;
1214    
1215    
1216      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1217      begin      begin
1218         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1452  begin Line 1410  begin
1410        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1411      end;      end;
1412    
1413      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1414          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1415          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1416          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1417          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1418          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1419      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1420          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1421    
1422         exit;         exit;
1423      end;      end;
1424    
1425      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1426      begin      begin
1427        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1428        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1498  begin Line 1456  begin
1456        else        else
1457            begin            begin
1458            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1459              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1460                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1461    
1462               exit;               exit;
1463            end;            end;
# Line 1543  begin Line 1502  begin
1502             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1503             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1504             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1505             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1506             Stregkode := '';             Stregkode := '';
1507             InitScreen();             InitScreen();
1508        end        end
# Line 1555  begin Line 1514  begin
1514             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1515             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1516             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1517             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1518             Stregkode := '';             Stregkode := '';
1519             InitScreen();             InitScreen();
1520        end        end
# Line 1586  begin Line 1545  begin
1545             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1546             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1547             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1548                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1549             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1550                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1551             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1552           end           end
1553          else          else
1554           begin           begin
# Line 1609  begin Line 1568  begin
1568    
1569      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1570      begin      begin
1571    
1572         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1573            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1574         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1621  begin Line 1581  begin
1581            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1582            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1583            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1584               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1585               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1586              exit;              exit;
1587            end;            end;
1588            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1646  begin Line 1602  begin
1602              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1603              begin              begin
1604                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1605                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1606                MainForm.Color := clRed;                MainForm.Color := clRed;
1607              end;              end;
1608           end;           end;
1609            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
1610            begin            begin
1611              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1612              if Storepakker1.Checked then              if Storepakker1.Checked then
1613              begin              begin
1614                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1661  begin Line 1617  begin
1617              begin              begin
1618                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1619              end;              end;
1620              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1621            end            end
1622            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1623            begin            begin
1624              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1625              if Storepakker1.Checked then              if Storepakker1.Checked then
1626              begin              begin
1627                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1674  begin Line 1630  begin
1630              begin              begin
1631                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1632              end;              end;
1633              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1634            end            end
1635            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1636            begin            begin
# Line 1685  begin Line 1641  begin
1641            end            end
1642            else            else
1643            begin            begin
1644              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1645            end;            end;
1646           if not PakkeshopNulstil.Visible then  
1647             if not btnNulstil.Visible then
1648            begin            begin
1649    
1650              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
# Line 1738  begin Line 1693  begin
1693    
1694    Key := #0;    Key := #0;
1695    
1696    
1697    
1698    
1699    
1700    
1701  end; //End of OnKeyPress  end; //End of OnKeyPress
1702    
1703    
1704    
1705  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1706  const  const
1707    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1781  var Line 1743  var
1743    
1744    
1745  begin  begin
1746      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked or menuIndlevering.Checked then
1747      begin      begin
1748        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1749          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1792  begin Line 1754  begin
1754            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1755            begin            begin
1756              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1757              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1758  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1759  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1760  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1761              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1762            end            end
1763            else     // kun idag            else     // kun idag
1764            begin            begin
# Line 1900  begin Line 1862  begin
1862                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1863              end;              end;
1864            end;            end;
1865  // 20150310: slut  
1866            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1867          end;          end;
1868      end;      end;
# Line 1936  begin Line 1898  begin
1898    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1899    ListBox1.Visible := true;    ListBox1.Visible := true;
1900  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1901  // 20150317: start  
 (*  
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
1902    if Budlevering1.Checked then    if Budlevering1.Checked then
1903    begin    begin
1904      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 1989  begin Line 1911  begin
1911      01 :      01 :
1912            begin;      // NS            begin;      // NS
1913              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1914              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1915              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1916              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1917              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1918              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2005  begin Line 1927  begin
1927              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1928              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1929              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1930              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1931              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1932              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1933              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1934              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 1938  begin
1938              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1939             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1940              begin              begin
1941                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1942              end              end
1943              else              else
1944              begin              begin
1945                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1946              end;              end;
1947              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1948              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1949              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1950              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1951              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2043  begin Line 1965  begin
1965              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1966              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1967              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1968              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1969              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1970              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1971              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1972            end;            end;
# Line 2060  var Line 1982  var
1982    URLStr : String;    URLStr : String;
1983    pakkestorrelse : String;    pakkestorrelse : String;
1984    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1985    
1986      PakkeshopLabel: TPakkeshopLabel;
1987  begin  begin
1988    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1989    begin    begin
# Line 2069  begin Line 1993  begin
1993    begin    begin
1994      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1995    end;    end;
1996    
1997    
1998    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
1999    begin    begin
2000       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2097  begin Line 2023  begin
2023    begin    begin
2024       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2025    end    end
2026      else if menuIndlevering.Checked then
2027      begin
2028        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2029      end
2030    else    else
2031    begin    begin
2032      exit;      exit;
2033    end;    end;
2034    
2035      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2036      begin
2037        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2038      end;
2039    
2040    try    try
2041      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2042      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2058  begin
2058          end;          end;
2059      end;      end;
2060    end;    end;
2061    
2062    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2063    try    try
2064      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2143  begin Line 2080  begin
2080          begin          begin
2081            PrintNyLabel := True;            PrintNyLabel := True;
2082          end;          end;
 // 20150310: start  
2083        end;        end;
 // 20150310: slut  
2084       end       end
2085        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2086        begin
2087    
2088    
2089    
2090    
2091         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2092         if (Kommentar = 'Ok') then
2093         begin
2094           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2095           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2096           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2097           Stregkode := PakkeshopLabel.Stregkode;
2098    
2099           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2100           chkForstorTilDirekte.Checked := false;
2101    
2102         end;
2103    
2104    
2105        end
2106      else      else
2107       begin       begin
2108        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2179  begin Line 2135  begin
2135          PrintNyLabel := True;          PrintNyLabel := True;
2136        end;        end;
2137      end;      end;
2138    
2139    
2140      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2141      begin      begin
2142        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2271  begin Line 2229  begin
2229        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2230      end;      end;
2231    end;    end;
2232      if menuIndlevering.Checked then
2233      begin
2234        List1Msg := Stregkode;
2235      end;
2236    
2237    
2238    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2239    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2240    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2241  end;  end;
2242    
2243  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2244  begin  begin
2245    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2246    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2293  pakkeForkertSted : Integer; Line 2257  pakkeForkertSted : Integer;
2257    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2258  begin  begin
2259    if Budlevering1.Checked then    if Budlevering1.Checked then
2260       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2261    
2262    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2263    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2338  begin Line 2302  begin
2302    
2303          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2304          MainForm.Color := clRed;          MainForm.Color := clRed;
2305          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2306    
2307       end       end
2308       else       else
# Line 2349  begin Line 2313  begin
2313            PrintNyLabel := true;            PrintNyLabel := true;
2314            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2315            nyFarve := Farve;            nyFarve := Farve;
2316            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2317            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2318            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2319            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2365  begin Line 2329  begin
2329            begin            begin
2330              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2331              MainForm.Color := clRed;              MainForm.Color := clRed;
2332              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2333            end;            end;
2334    
2335         end;         end;
# Line 2391  begin Line 2355  begin
2355            begin            begin
2356              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2357              MainForm.Color := clRed;              MainForm.Color := clRed;
2358              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2359            end;            end;
2360    
2361         end;         end;
# Line 2411  begin Line 2375  begin
2375               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2376  // 20150304: slut  // 20150304: slut
2377                begin                begin
2378                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2379                end;                end;
2380              end;              end;
2381        01 :  begin;        01 :  begin;
2382               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2383                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2384                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2385                begin                begin
2386                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2387                end;                end;
2388              end;              end;
2389        02 :  begin;        02 :  begin;
2390                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2391                begin                begin
2392                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2393                end;                end;
2394              end;              end;
2395        03 :  begin;        03 :  begin;
2396               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2397                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2398                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2399               begin               begin
2400                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2401               end;               end;
2402              end;              end;
2403        04 :  begin;        04 :  begin;
2404                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2405                begin                begin
2406                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2407                end;                end;
2408              end;              end;
2409        else        else
# Line 2475  begin Line 2439  begin
2439        end;        end;
2440        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2441        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2442        with Printer do  
2443        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2444          BeginDoc;        
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2445      end;      end;
2446    end;    end;
2447    
2448  end;  end;
2449    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2450    
2451    
2452  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2632  begin Line 2536  begin
2536    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2537    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2538    
2539          // Tjekker urls    try
2540          logTekst := 'Tjekker urls.';      // Tjekker urls
2541          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2542          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2543        SkrivScanningLogFil(logTekst);
2544    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2545    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2546    
2547          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2548          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2549          begin      begin
2550            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2551            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2552    
2553          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2554          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2555          begin      begin
2556            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2557            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2558    
2559          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2560          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2561          begin      begin
2562            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2563            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2564    
2565          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2566          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2567          begin      begin
2568            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2569            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2570    
2571          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2572          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2573          or (PanelValg4.Enabled = true) then      begin
2574          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2575            if CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2576    
2577          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2578          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2579          begin      begin
2580            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2581            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2582    
2583          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2584          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2585          begin      begin
2586            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2587            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2588    
2589          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2590          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2591          begin      begin
2592            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2593            begin      end;
             logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2594    
2595        // Tjekker UrlPakkeshopManglendeReturScanninger
2596        if PanelValg6.Enabled = true then
2597        begin
2598          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2599        end;
2600    
2601          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2602          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2603          begin      begin
2604            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2605            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2606              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2607    
2608        // Tjekker UrlEKLoverforsel
2609        if PanelValg1.Enabled = true then
2610        begin
2611          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2612        end;
2613    
         // Tjekker UrlFindPakketype  
         if CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2614    
2615          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2616          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2617          begin      begin
2618            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2619            SkrivScanningLogFil(logTekst);      end;
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2620    
         if urlFejl > 0 then  
         begin  
           TjekUrls := '-';   // markerer at der var fejl  
         end  
         else  
         begin  
           logTekst := 'urls er ok';  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
2621    
2622        // Tjekker UrlFindPakketype
2623        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2624    
2625        // Tjekker UrlSendPrograminfo
2626        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2627    
2628    
2629    
2630        logTekst := 'urls er ok';
2631        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2632        SkrivScanningLogFil(logTekst);
2633    
2634      Except
2635        TjekUrls := '-';   // markerer at der var fejl
2636    
2637      end;
2638  end;  end;
2639    
2640  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2641  var  const
2642     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2643  begin  begin
2644     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2645     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2646     Result := SystemTimeToDateTime(SystemTime) ;    begin
2647        logTekst := UrlNavn + ' accepteret: ' + Url;
2648        SkrivScanningLogFil(logTekst);
2649      end
2650      else
2651      begin
2652        inc(urlFejl);   // Optæller antal fejl
2653        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2654        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2655        if TjekUrls = '1' then
2656        begin
2657          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2658        end;
2659    
2660        SkrivScanningLogFil(logTekst);
2661    
2662        if TjekUrls = '1' then
2663        begin
2664          ShowMessage(logTekst);
2665          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2666          Application.Terminate;
2667    
2668          raise Exception.Create('UrlFejl');
2669    
2670        end;
2671      end;
2672    
2673  end;  end;
2674    
2675    
2676    
2677  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2678  var  var
2679    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2690  begin
2690      repeat      repeat
2691        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2692        begin        begin
2693    
2694          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2695          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2696          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2697          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2698          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2699          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3077  begin Line 2730  begin
2730    end;    end;
2731  end;  end;
2732    
2733  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2734  begin  begin
2735    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2736    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2737    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2738    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2739    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2740    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3099  begin Line 2752  begin
2752  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2753    if Farve <> '' then    if Farve <> '' then
2754    begin    begin
2755       MainForm.Color := HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
 // 20150312: start  
 (*  
   end  
   else  
   begin  
      ShowMessage('Programmet afbrydes...');  
      UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
      Application.Terminate;  
 *)  
 // 20150312: slut  
2756    end;    end;
2757    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2758    begin    begin
# Line 3173  end; Line 2816  end;
2816    
2817  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2818  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;  
 *)  
2819  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2820  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2821       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2822       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2823       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2824  // 20150311: slut  
2825    
2826    
2827  end;  end;
2828    
2829  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3231  begin Line 2861  begin
2861      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2862      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2863      MainForm.Color := clRed;      MainForm.Color := clRed;
2864      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2865    end    end
2866    else    else
2867    begin    begin
# Line 3266  begin Line 2896  begin
2896    Falsk := False;    Falsk := False;
2897    
2898    
2899    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2900    begin    begin
2901      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2902    end    end
# Line 3281  begin Line 2911  begin
2911      DBKbane := '999';      DBKbane := '999';
2912      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2913      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2914      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2915    end;    end;
2916    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2917  end;  end;
# Line 3290  procedure TMainForm.Timer1Timer(Sender: Line 2920  procedure TMainForm.Timer1Timer(Sender:
2920  begin  begin
2921    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2922    begin    begin
2923      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2924    end    end
2925    else    else
2926    begin    begin
# Line 3299  begin Line 2929  begin
2929    end;    end;
2930  end;  end;
2931    
2932  {  
  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;  
2933    
2934  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2935  const  const
# Line 3337  var Line 2938  var
2938   tekst, filversion : String;   tekst, filversion : String;
2939  begin  begin
2940    
2941    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2942    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';
2943    
2944    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2960  begin
2960          end          end
2961          else          else
2962          begin          begin
2963            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2964          end;          end;
2965      end      end
2966      else      else
2967      begin      begin
2968        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2969      end;      end;
2970    end;    end;
2971    
# Line 3432  begin Line 3033  begin
3033    
3034    if FileExists(fileName) then    if FileExists(fileName) then
3035    begin    begin
3036      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3037      begin      begin
3038        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3039        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3057  begin
3057    
3058    if FileExists(fileName) then    if FileExists(fileName) then
3059    begin    begin
3060      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3061      begin      begin
3062        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3063        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3064      end      end
3065      else      else
3066      begin      begin
3067        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3068      end;      end;
3069    end    end
3070    else    else
# Line 3472  begin Line 3073  begin
3073    end;    end;
3074  end;  end;
3075    
3076    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3077    begin
3078      Scanningtype := '7';
3079      NulstilAutomatiskValg();
3080      InitIndleveringskode();
3081    end;
3082    
3083  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3084  begin  begin
3085    
# Line 3504  end; Line 3112  end;
3112  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3113  begin  begin
3114        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3115        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3116        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3117        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3118        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
# Line 3522  begin Line 3130  begin
3130        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3131        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3132        ListBox1.Visible := true;        ListBox1.Visible := true;
3133        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3134        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3135        InitLillePakke();        InitLillePakke();
3136        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3137    
3138          chkForstorTilDirekte.Checked := false;
3139          chkForstorTilDirekte.Enabled := false;
3140    
3141        if BladhusSted = 0 then        if BladhusSted = 0 then
3142        begin        begin
3143          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3537  procedure TMainForm.InitReturFraDao(); Line 3149  procedure TMainForm.InitReturFraDao();
3149  begin  begin
3150        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3151        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3152        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3153        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3154        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3155        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3556  begin Line 3168  begin
3168        ListBox1.Visible := true;        ListBox1.Visible := true;
3169        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3170        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3171        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3172    
3173          chkForstorTilDirekte.Checked := false;
3174          chkForstorTilDirekte.Enabled := false;
3175    
3176        InitLillePakke();        InitLillePakke();
3177  end;  end;
3178    
# Line 3564  procedure TMainForm.InitReturFraKunde(); Line 3180  procedure TMainForm.InitReturFraKunde();
3180  begin  begin
3181        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3182        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3183        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3184        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3185        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3186        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3582  begin Line 3198  begin
3198        ListBox1.Visible := true;        ListBox1.Visible := true;
3199        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3200        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3201        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3202    
3203          chkForstorTilDirekte.Checked := false;
3204          chkForstorTilDirekte.Enabled := false;
3205    
3206        InitLillePakke();        InitLillePakke();
3207  end;  end;
3208    
# Line 3590  procedure TMainForm.InitDirektelevering( Line 3210  procedure TMainForm.InitDirektelevering(
3210  begin  begin
3211        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3212        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3213        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3214        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3215        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3216        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3608  begin Line 3228  begin
3228        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3229        ListBox1.Visible := true;        ListBox1.Visible := true;
3230        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3231        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3232        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3233        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3234        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3235        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3236        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3237    
3238          chkForstorTilDirekte.Checked := false;
3239          chkForstorTilDirekte.Enabled := true;
3240    
3241        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3242        begin        begin
3243            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3626  procedure TMainForm.InitPakkeshopleverin Line 3250  procedure TMainForm.InitPakkeshopleverin
3250  begin  begin
3251        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3252        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3253        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3254        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3255        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3256        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3644  begin Line 3268  begin
3268        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3269        ListBox1.Visible := true;        ListBox1.Visible := true;
3270        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3271        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3272        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3273    
3274          BtnEKLoverforsel.Enabled := true;
3275    
3276        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3277          chkForstorTilDirekte.Enabled := true;
3278    
3279        InitLillePakke();        InitLillePakke();
3280        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3663  procedure TMainForm.InitReturFraPakkesho Line 3290  procedure TMainForm.InitReturFraPakkesho
3290  begin  begin
3291        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3292        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3293        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3294        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3295        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3296        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3681  begin Line 3308  begin
3308        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3309        ListBox1.Visible := true;        ListBox1.Visible := true;
3310        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3311        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3312        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3313        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3314    
3315          chkForstorTilDirekte.Checked := false;
3316          chkForstorTilDirekte.Enabled := false;
3317    
3318    
3319        InitLillePakke();        InitLillePakke();
3320        IndlesScanningLogFil();        IndlesScanningLogFil();
3321        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3703  end; Line 3335  end;
3335    
3336  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3337  begin  begin
3338          menuIndlevering.Checked := true;
3339        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3340        Returpakkerfrapakkeshop1.Checked := true;  
3341        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3342        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3343        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3344        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
# Line 3727  begin Line 3360  begin
3360        ListBox1.Visible := true;        ListBox1.Visible := true;
3361        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3362    
3363        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3364        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3365        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3366    
3367          chkForstorTilDirekte.Checked := false;
3368          chkForstorTilDirekte.Enabled := false;
3369    
3370    
3371        InitLillePakke();        InitLillePakke();
3372        IndlesScanningLogFil();        IndlesScanningLogFil();
3373        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3767  begin Line 3405  begin
3405  // 20150310: slut  // 20150310: slut
3406  end;  end;
3407    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';  
   const Fmt: String = '%d.%d.%d.%d'): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Word;  
   S : String;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
     // format result string  
     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3408    
     // 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;  
   end;  
 end;  
3409    
3410  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3411  begin  begin
# Line 3903  begin; Line 3476  begin;
3476    CheckCode();    CheckCode();
3477  end;  end;
3478    
3479  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3480  var  var
3481    WebSvar : String;    WebSvar : String;
3482    URLStr : String;    URLStr : String;
# Line 3913  var Line 3486  var
3486    status, kommentar : String;    status, kommentar : String;
3487    
3488  begin  begin
3489      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3490    
3491      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3492      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3493      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3494      StedKode := Sted;      StedKode := Sted;
3495      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3496  // 20150330: start  
3497      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3498      begin      begin
3499        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3500      end;      end;
3501  // 20150330: slut  
3502    
3503      try      try
3504      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3549  begin
3549        end;        end;
3550      end;      end;
3551    
3552      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3553    
3554      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3555    
# Line 3993  begin Line 3566  begin
3566           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3567         end;         end;
3568         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3569         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3570      end;      end;
3571    
3572  end;  end;
# Line 4017  begin Line 3590  begin
3590    else    else
3591      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3592  }  }
3593    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3594    
3595    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3596    CheckCode();    CheckCode();
# Line 4025  end; Line 3598  end;
3598    
3599  end;  end;
3600    
 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;  
3601    
3602  //  //
3603  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4075  begin
4075    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
4076  end;  end;
4077    
4078  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4079  begin  begin
4080      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4081      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
4082  end;  end;
4083    
4084  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4085  const  const
4086    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4087    
# Line 4556  begin Line 4090  begin
4090      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
4091  end;  end;
4092    
4093  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4094  begin  begin
4095      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4096      begin      begin
# Line 4565  begin Line 4099  begin
4099      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
4100  end;  end;
4101    
4102  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;  
4103    
4104  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4105  var  var
# Line 4589  var Line 4111  var
4111    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4112    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4113    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4114    pakketyper : TStrings;    //pakketyper : TStrings;
4115      pakketyper : TDictionary<String, Integer>;
4116      tmpAntal : Integer;
4117    
4118    
4119    
4120    antlin : Integer;    antlin : Integer;
4121    
4122    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4123    
4124    XmlFelter : TStrings;    //XmlFelter : TStrings;
4125      XmlFelter : TDictionary<String, Integer>;
4126    
4127   begin   begin
4128      XmlFelter := TStringList.Create;  
4129      pakketyper := TStringList.Create;  
4130        XmlFelter := TDictionary<String, Integer>.Create;
4131        pakketyper := TDictionary<String, Integer>.Create;
4132    
4133      linienr := 0;      linienr := 0;
4134      ListBox2.Clear;      ListBox2.Clear;
4135      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4613  var Line 4144  var
4144          StedKode := Sted;          StedKode := Sted;
4145        end;        end;
4146    
4147          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4148    
4149      if (Scanningtype = '6') then  
4150    
4151        if (Scanningtype = '7') then
4152         begin
4153          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4154         end
4155        else if (Scanningtype = '6') then
4156       begin       begin
4157        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4158       end       end
4159      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4160       begin       begin
4161        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4162       end       end
4163      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4164       begin       begin
# Line 4667  var Line 4205  var
4205            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4206              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4207              begin              begin
4208                 antlin := antlin + 1;                 Inc(antlin);
4209                 // 20150306: start                 // 20150306: start
4210                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4211                begin                begin
4212                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4213                   begin                   begin
4214                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4215                   end                   end
4216                   else                   else
4217                   begin                   begin
4218                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4219                   end;                   end;
4220                end;                end;
4221                 // 20150306: slut                 // 20150306: slut
4222              end;              end;
4223            end;            end;
4224            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4225                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4226                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4227                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4228                  end
4229                else                else
4230                  XmlFelter.values[Node.NodeName] := '1';                begin
4231                    XmlFelter.Add(Node.NodeName, 1);
4232                  end;
4233    
4234        end;        end;
4235        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4237  var
4237        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4238        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4239    
4240    
4241          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4242    
4243        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4244        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4245        begin        begin
# Line 4702  var Line 4248  var
4248        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4249    
4250        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4251    
4252    
4253        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4254            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4255            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4257  var
4257                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4258                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4259                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4260              end;              end
4261              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4262                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4263                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4264                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4265              end;              end
4266              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4267                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4268                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4269                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4270              end;              end
4271              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4272                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4273                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4274                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4275              end;              end
4276              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4277                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4278                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4279                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4280                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4281                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4282                    pakketyper.TryGetValue(pakketype, tmpAntal);
4283                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4284                  end
4285                else                else
4286                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4287              end;              end
4288              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4289                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4290                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4291                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4292                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4293                  begin                  begin
4294  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4295                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4296                    begin                    begin
4297                      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
4298                    end                    end
4299                    else                    else
4300                    begin                    begin
# Line 4753  var Line 4303  var
4303                    linienr := linienr + 1;                    linienr := linienr + 1;
4304                  end;                  end;
4305              end;              end;
4306    
4307    
4308              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4309              begin              begin
4310                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4320  var
4320              end;              end;
4321            end;            end;
4322        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4323    
4324          // Free up the list object  
4325          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4326    
4327    
4328          for pakketype in pakketyper.Keys do
4329          begin
4330            pakketyper.TryGetValue(pakketype, tmpAntal);
4331            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4332          end;
4333    
4334            // Free up the dictionary object
4335        pakketyper.Free;        pakketyper.Free;
4336    
4337    
4338    
4339  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4340        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4341        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4934  var Line 4495  var
4495     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4496     imorgenYmd : string;     imorgenYmd : string;
4497     logFilnavn : string;     logFilnavn : string;
4498      error : Integer;     //error : Integer;
4499    
4500  begin  begin
4501    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4587  begin
4587          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4588          S := buffer;          S := buffer;
4589          SetLength(A,0);          SetLength(A,0);
4590          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4591          if (length(A) < 2) then          if (length(A) < 2) then
4592          begin          begin
4593            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4594          end;          end;
4595            if (length(A) > 1) then            if (length(A) > 1) then
4596            begin            begin
# Line 5103  begin Line 4664  begin
4664          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4665          S := buffer;          S := buffer;
4666          SetLength(A,0);          SetLength(A,0);
4667          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4668          if (length(A) < 3) then          if (length(A) < 3) then
4669          begin          begin
4670            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4671          end;          end;
4672          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4673          begin          begin
# Line 5203  begin Line 4764  begin
4764    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4765    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4766    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4767    MainForm.Color := clRed;    MainForm.Color := clRed;
4768    
4769    
4770    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4771    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4772    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4773    PakkeshopNulstil.Visible := true;  
4774      if (strMessage <> '') then
4775      begin
4776        ListBox1.Items.Insert(0, strMessage);
4777        KommentarST.Caption := strMessage;
4778      end;
4779    
4780  end;  end;
4781    
4782  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4836  begin
4836    result := svar;    result := svar;
4837  end;  end;
4838    
 function TMainForm.GetCurrentPrinterHandle: THandle;  
 var  
   Device, Driver, Port: array[0..255] of Char;  
   hDeviceMode: THandle;  
 begin  
   Printer.GetPrinter(Device, Driver, Port, hDeviceMode);  
   if not OpenPrinter(@Device, Result, nil) then  
     RaiseLastWin32Error;  
 end;  
   
 function TMainForm.SavePChar(p: PChar): PChar;  
 const  
   error: PChar = 'Nil';  
 begin  
   if not Assigned(p) then  
     Result := error  
   else  
     Result := p;  
 end;  
4839    
4840  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4841  begin  begin
# Line 5301  begin Line 4849  begin
4849    end;    end;
4850  end;  end;
4851    
4852  function TMainForm.AdobeReaderExists: Boolean;  
4853  var  
4854    AReg: TRegistry;  //Nedarvet fra IParentForm
4855    procedure TMainForm.LogMessage( msg : string);
4856  begin  begin
4857    result:= false;    ListBox1.Items.Insert(0, msg);
4858    AReg := TRegistry.Create;    SkrivScanningLogFil(msg);
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4859  end;  end;
4860    
 procedure TMainForm.CheckPrintQue(tjektype : string);  
 type  
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
 begin  
4861    
4862  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4863  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4864  //            'Timer' skal kun vise alarmlinie  begin
4865    
4866    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4867      if (alert) then
4868    begin    begin
4869      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4870      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4871      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4872    end    end
4873    else    else
4874    begin    begin
4875      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4876      try      PrinterstatusStaticText1.Color := clWhite;
4877        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
4878    end;    end;
4879  end;  end;
4880    
4881  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4882  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4883  begin  begin
4884     with Control do    Result := self;
    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;  
4885  end;  end;
 // 20150310: slut  
4886    
4887  end.  end.
4888    

Legend:
Removed from v.2660  
changed lines
  Added in v.2800

  ViewVC Help
Powered by ViewVC 1.1.20