/[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 2682 by torben, Wed Aug 26 19:52:38 2015 UTC revision 2794 by torben, Thu Dec 17 19:04:09 2015 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,    PakkeshopLabels,
24    StBarC,    Utils,
25    Math, // DegToRad() bruges i PrintPakkeshopLabel    ParentForm,
26    Utils    LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TMainForm = class(TForm)    TMainForm = class(TForm, IParentForm)
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 52  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      btnNulstil: 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 92  type Line 105  type
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109    
110    
   function Sto_GetFmtFileVersion(const FileName: String = ''): String;  
111    
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 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 btnNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
158    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
# 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);
172    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
# Line 180  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      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
192    
193    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
194    
195    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
196    procedure CheckPrintQue(tjektype : string);  
197      //Nedarvet fra IParentForm
198      procedure LogMessage( msg : string);
199      procedure SetPrinterstatusText( txt: string; alert: boolean);
200      function GetFormObject() : TForm;
201    
202    
203    private    private
# 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,UrlIndleveringsPakke,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    
     Barcode : TStBarcode;  
249    
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 267  type Line 265  type
265      { Public declarations }      { Public declarations }
266    end;    end;
267    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
268    
269  var  var
270    MainForm: TMainForm;    MainForm: TMainForm;
# Line 284  implementation Line 280  implementation
280  {$R *.dfm}  {$R *.dfm}
281    
282    
283    //FormCreate kaldes før InitForm
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 := '';
 // 20150309: slut  
289    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
290    
291      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
292      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 335  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 460  begin Line 455  begin
455        end;        end;
456      end;      end;
457    
458    
459  end;  end;
460    
461  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 498  end; Line 494  end;
494    
495  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
496  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;  
 *)  
497  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
498  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
499       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
500       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
501       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
502  end;  end;
503    
504    
505    //InitForm kaldes før FormCreate
506  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
507  const  const
508    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
509  var  var
   printerInd : integer;  
510    gemScanningtype : String;    gemScanningtype : String;
511    
512  begin  begin
513    
514    
515    // Initierer nogle variabler    // Initierer nogle variabler
516    BladhusSted := 00;    BladhusSted := 00;
517    Application.ShowHint := True;    Application.ShowHint := True;
# Line 556  begin Line 539  begin
539    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
540    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
541    
542      Config := TConfiguration.Create();
543      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
544      Config.Sted := Sted;
545    
546    // Læser parametre fra ini filen    // Læser parametre fra ini filen
547    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
548    try    try
549    
550    
551      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
552      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
553      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 578  begin Line 567  begin
567      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');
568      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');
569    
570    
571      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
572        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
573        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
574    
575    
576    
577    
     LabelType := ReadInteger('Settings','LabelType',1);  
578      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
579      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
580      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 618  begin Line 611  begin
611    
612      if (SkrivLog = '1') then      if (SkrivLog = '1') then
613      begin      begin
614        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);
615        try        try
616          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
617          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
618          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
619          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
620          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
621          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 640  begin Line 633  begin
633        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
634      end;      end;
635    
636      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;  
637    
638      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
639      begin      begin
# Line 790  begin Line 715  begin
715      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
716      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
717    
 // 20150313: start  
718      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
719      begin      begin
720         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 801  begin Line 725  begin
725         SpecialVersionSted := '03';         SpecialVersionSted := '03';
726         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
727      end;      end;
 // 20150313: slut  
728    
729      if SpecialVersionSted = 'BK' then      if SpecialVersionSted = 'BK' then
730      begin      begin
# Line 812  begin Line 735  begin
735        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
736        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
737        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
738        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
739        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
740    
741       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
742        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
743        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
744        Returpakkerfrapakkeshop1.Enabled := false;  
745          //Returpakkerfrapakkeshop1.Enabled := false;
746    
747        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
748        begin        begin
749           Scanningtype := '1';           Scanningtype := '1';
# Line 1072  begin Line 998  begin
998      end;      end;
999    
1000    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1001    
1002      CheckPrintQue('Opstart');  
1003        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1004        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1005    
1006    finally    finally
1007      Free;      Free;
# Line 1146  begin Line 1068  begin
1068      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1069    
1070      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1071      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1072    
1073  end;  end;
1074    
# Line 1203  begin Line 1125  begin
1125      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1126      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1127      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1128        or (NumberString = 'DAO PAKKESHOP')
1129        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1130      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1131    
1132      begin      begin
# Line 1213  begin Line 1137  begin
1137      begin      begin
1138        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1139      end;      end;
1140    end;    end;  // Slut ctrl-v
1141    
1142    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1143    begin    begin
# Line 1267  begin Line 1191  begin
1191         exit;         exit;
1192      end;      end;
1193    
1194        if LowerCase(StregKode) = 'for stor hjemmelevering' then
1195        begin
1196          if chkForstorTilDirekte.Enabled then
1197          begin
1198            chkForstorTilDirekte.Checked := true;
1199          end
1200          else
1201          begin
1202             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1203          end;
1204          Stregkode := '';
1205          StregkodeST.Caption := StregKode;
1206          exit;
1207        end;
1208    
1209    
1210      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1211      begin      begin
1212         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1464  begin Line 1404  begin
1404        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1405      end;      end;
1406    
1407      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1408          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1409          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1410          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1411          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1412          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1413      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1414          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1415    
1416         exit;         exit;
1417      end;      end;
1418    
1419      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1420      begin      begin
1421        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1422        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1510  begin Line 1450  begin
1450        else        else
1451            begin            begin
1452            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1453              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1454                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1455    
1456               exit;               exit;
1457            end;            end;
# Line 1621  begin Line 1562  begin
1562    
1563      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
1564      begin      begin
1565    
1566         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1567            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1568         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 1695  begin Line 1637  begin
1637            begin            begin
1638              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1639            end;            end;
1640    
1641           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1642            begin            begin
1643    
# Line 1744  begin Line 1687  begin
1687    
1688    Key := #0;    Key := #0;
1689    
1690    
1691    
1692    
1693    
1694    
1695  end; //End of OnKeyPress  end; //End of OnKeyPress
1696    
1697    
1698    
1699  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1700  const  const
1701    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1787  var Line 1737  var
1737    
1738    
1739  begin  begin
1740      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
1741      begin      begin
1742        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1743          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1906  begin Line 1856  begin
1856                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1857              end;              end;
1858            end;            end;
1859  // 20150310: slut  
1860            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1861          end;          end;
1862      end;      end;
# Line 1942  begin Line 1892  begin
1892    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1893    ListBox1.Visible := true;    ListBox1.Visible := true;
1894  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1895  // 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  
1896    if Budlevering1.Checked then    if Budlevering1.Checked then
1897    begin    begin
1898      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 1995  begin Line 1905  begin
1905      01 :      01 :
1906            begin;      // NS            begin;      // NS
1907              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1908              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1909              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1910              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1911              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1912              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2011  begin Line 1921  begin
1921              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1922              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1923              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1924              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1925              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1926              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1927              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1928              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2022  begin Line 1932  begin
1932              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1933             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1934              begin              begin
1935                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1936              end              end
1937              else              else
1938              begin              begin
1939                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1940              end;              end;
1941              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1942              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1943              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1944              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1945              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2049  begin Line 1959  begin
1959              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1960              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1961              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1962              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1963              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1964              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1965              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1966            end;            end;
# Line 2115  begin Line 2025  begin
2025    begin    begin
2026      exit;      exit;
2027    end;    end;
2028    
2029      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2030      begin
2031        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2032      end;
2033    
2034    try    try
2035      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2036      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2136  begin Line 2052  begin
2052          end;          end;
2053      end;      end;
2054    end;    end;
2055    
2056    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2057    try    try
2058      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2159  begin Line 2076  begin
2076          end;          end;
2077        end;        end;
2078       end       end
2079      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2080      begin      begin
2081    
2082    
# Line 2170  begin Line 2087  begin
2087       begin       begin
2088         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2089         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2090         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2091           Stregkode := PakkeshopLabel.Stregkode;
2092    
2093         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2094           chkForstorTilDirekte.Checked := false;
2095    
2096       end;       end;
2097    
# Line 2304  begin Line 2223  begin
2223        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2224      end;      end;
2225    end;    end;
2226      if menuIndlevering.Checked then
2227      begin
2228        List1Msg := Stregkode;
2229      end;
2230    
2231    
2232    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2233    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2234    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2235  end;  end;
2236    
2237  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2238  begin  begin
2239    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2240    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2444  begin Line 2369  begin
2369               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2370  // 20150304: slut  // 20150304: slut
2371                begin                begin
2372                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2373                end;                end;
2374              end;              end;
2375        01 :  begin;        01 :  begin;
# Line 2452  begin Line 2377  begin
2377                    // 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
2378                    // 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')
2379                begin                begin
2380                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2381                end;                end;
2382              end;              end;
2383        02 :  begin;        02 :  begin;
2384                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
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        03 :  begin;        03 :  begin;
# Line 2466  begin Line 2391  begin
2391                    // 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
2392                    // 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')
2393               begin               begin
2394                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2395               end;               end;
2396              end;              end;
2397        04 :  begin;        04 :  begin;
2398                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
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        else        else
# Line 2508  begin Line 2433  begin
2433        end;        end;
2434        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2435        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2436        with Printer do  
2437        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2438          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;  
2439      end;      end;
2440    end;    end;
2441    
2442  end;  end;
2443    
 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;  
2444    
2445    
2446  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2665  begin Line 2530  begin
2530    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2531    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...');
2532    
2533          // Tjekker urls    try
2534          logTekst := 'Tjekker urls.';      // Tjekker urls
2535          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2536          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2537        SkrivScanningLogFil(logTekst);
2538    
         // 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;  
2539    
         // 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;  
2540    
2541          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2542          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2543          begin      begin
2544            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2545            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;  
2546    
2547          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2548          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2549          begin      begin
2550            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2551            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;  
2552    
2553          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2554          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2555          begin      begin
2556            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2557            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;  
2558    
2559          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2560          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2561          begin      begin
2562            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2563            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;  
2564    
2565          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2566          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2567          or (PanelValg4.Enabled = true) then      begin
2568          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2569            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;  
2570    
2571          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2572          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2573          begin      begin
2574            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2575            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;  
2576    
2577          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2578          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2579          begin      begin
2580            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2581            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;  
2582    
2583          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2584          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2585          begin      begin
2586            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2587            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;  
2588    
2589        // Tjekker UrlPakkeshopManglendeReturScanninger
2590        if PanelValg6.Enabled = true then
2591        begin
2592          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2593        end;
2594    
2595          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2596          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2597          begin      begin
2598            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2599            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2600              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;  
2601    
2602        // Tjekker UrlEKLoverforsel
2603        if PanelValg1.Enabled = true then
2604        begin
2605          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2606        end;
2607    
         // 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;  
2608    
2609          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2610          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2611          begin      begin
2612            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2613            SkrivScanningLogFil(logTekst);      end;
2614          end  
2615          else  
2616          begin      // Tjekker UrlFindPakketype
2617              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2618              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2619              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2620              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2621              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;  
2622    
         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;  
2623    
2624        logTekst := 'urls er ok';
2625        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2626        SkrivScanningLogFil(logTekst);
2627    
2628      Except
2629        TjekUrls := '-';   // markerer at der var fejl
2630    
2631      end;
2632  end;  end;
2633    
2634  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2635  var  const
2636     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2637  begin  begin
2638     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2639     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2640     Result := SystemTimeToDateTime(SystemTime) ;    begin
2641        logTekst := UrlNavn + ' accepteret: ' + Url;
2642        SkrivScanningLogFil(logTekst);
2643      end
2644      else
2645      begin
2646        inc(urlFejl);   // Optæller antal fejl
2647        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2648        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2649        if TjekUrls = '1' then
2650        begin
2651          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2652        end;
2653    
2654        SkrivScanningLogFil(logTekst);
2655    
2656        if TjekUrls = '1' then
2657        begin
2658          ShowMessage(logTekst);
2659          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2660          Application.Terminate;
2661    
2662          raise Exception.Create('UrlFejl');
2663    
2664        end;
2665      end;
2666    
2667  end;  end;
2668    
2669    
2670    
2671  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2672  var  var
2673    SR: TSearchRec;    SR: TSearchRec;
# Line 3074  begin Line 2687  begin
2687    
2688          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2689          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2690          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2691          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2692          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2693          // (æ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 3134  begin Line 2747  begin
2747    if Farve <> '' then    if Farve <> '' then
2748    begin    begin
2749       MainForm.Color := TUtils.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  
2750    end;    end;
2751    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2752    begin    begin
# Line 3207  end; Line 2810  end;
2810    
2811  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2812  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;  
 *)  
2813  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2814  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2815       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2816       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2817       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2818  // 20150311: slut  
2819    
2820    
2821  end;  end;
2822    
2823  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3300  begin Line 2890  begin
2890    Falsk := False;    Falsk := False;
2891    
2892    
2893    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2894    begin    begin
2895      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2896    end    end
# Line 3315  begin Line 2905  begin
2905      DBKbane := '999';      DBKbane := '999';
2906      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2907      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2908      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2909    end;    end;
2910    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2911  end;  end;
# Line 3324  procedure TMainForm.Timer1Timer(Sender: Line 2914  procedure TMainForm.Timer1Timer(Sender:
2914  begin  begin
2915    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2916    begin    begin
2917      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2918    end    end
2919    else    else
2920    begin    begin
# Line 3342  var Line 2932  var
2932   tekst, filversion : String;   tekst, filversion : String;
2933  begin  begin
2934    
2935    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
2936    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';
2937    
2938    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3437  begin Line 3027  begin
3027    
3028    if FileExists(fileName) then    if FileExists(fileName) then
3029    begin    begin
3030      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3031      begin      begin
3032        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3033        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3461  begin Line 3051  begin
3051    
3052    if FileExists(fileName) then    if FileExists(fileName) then
3053    begin    begin
3054      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3055      begin      begin
3056        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3057        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3058      end      end
3059      else      else
3060      begin      begin
3061        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3062      end;      end;
3063    end    end
3064    else    else
# Line 3534  begin Line 3124  begin
3124        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3125        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3126        ListBox1.Visible := true;        ListBox1.Visible := true;
3127        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3128        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3129        InitLillePakke();        InitLillePakke();
3130        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3131    
3132          chkForstorTilDirekte.Checked := false;
3133          chkForstorTilDirekte.Enabled := false;
3134    
3135        if BladhusSted = 0 then        if BladhusSted = 0 then
3136        begin        begin
3137          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3568  begin Line 3162  begin
3162        ListBox1.Visible := true;        ListBox1.Visible := true;
3163        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3164        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3165        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3166    
3167          chkForstorTilDirekte.Checked := false;
3168          chkForstorTilDirekte.Enabled := false;
3169    
3170        InitLillePakke();        InitLillePakke();
3171  end;  end;
3172    
# Line 3594  begin Line 3192  begin
3192        ListBox1.Visible := true;        ListBox1.Visible := true;
3193        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3194        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3195        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3196    
3197          chkForstorTilDirekte.Checked := false;
3198          chkForstorTilDirekte.Enabled := false;
3199    
3200        InitLillePakke();        InitLillePakke();
3201  end;  end;
3202    
# Line 3620  begin Line 3222  begin
3222        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3223        ListBox1.Visible := true;        ListBox1.Visible := true;
3224        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3225        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3226        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3227        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3228        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3229        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3230        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3231    
3232          chkForstorTilDirekte.Checked := false;
3233          chkForstorTilDirekte.Enabled := true;
3234    
3235        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3236        begin        begin
3237            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3656  begin Line 3262  begin
3262        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3263        ListBox1.Visible := true;        ListBox1.Visible := true;
3264        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3265        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3266        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3267    
3268        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3269    
3270          chkForstorTilDirekte.Checked := false;
3271          chkForstorTilDirekte.Enabled := true;
3272    
3273        InitLillePakke();        InitLillePakke();
3274        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3693  begin Line 3302  begin
3302        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3303        ListBox1.Visible := true;        ListBox1.Visible := true;
3304        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3305        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3306        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3307        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3308    
3309          chkForstorTilDirekte.Checked := false;
3310          chkForstorTilDirekte.Enabled := false;
3311    
3312    
3313        InitLillePakke();        InitLillePakke();
3314        IndlesScanningLogFil();        IndlesScanningLogFil();
3315        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3740  begin Line 3354  begin
3354        ListBox1.Visible := true;        ListBox1.Visible := true;
3355        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3356    
3357        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3358        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3359        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3360    
3361          chkForstorTilDirekte.Checked := false;
3362          chkForstorTilDirekte.Enabled := false;
3363    
3364    
3365        InitLillePakke();        InitLillePakke();
3366        IndlesScanningLogFil();        IndlesScanningLogFil();
3367        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3780  begin Line 3399  begin
3399  // 20150310: slut  // 20150310: slut
3400  end;  end;
3401    
 /// <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 = ''): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Integer;  
 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;  
3402    
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
   
   end;  
 end;  
3403    
3404  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3405  begin  begin
# Line 3904  begin; Line 3470  begin;
3470    CheckCode();    CheckCode();
3471  end;  end;
3472    
3473  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3474  var  var
3475    WebSvar : String;    WebSvar : String;
3476    URLStr : String;    URLStr : String;
# Line 3914  var Line 3480  var
3480    status, kommentar : String;    status, kommentar : String;
3481    
3482  begin  begin
3483      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3484    
3485      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');
3486      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3487      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3488      StedKode := Sted;      StedKode := Sted;
3489      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3490  // 20150330: start  
3491      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3492      begin      begin
3493        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3494      end;      end;
3495  // 20150330: slut  
3496    
3497      try      try
3498      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3977  begin Line 3543  begin
3543        end;        end;
3544      end;      end;
3545    
3546      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3547    
3548      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
3549    
# Line 4503  begin Line 4069  begin
4069    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
4070  end;  end;
4071    
4072  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4073  begin  begin
4074      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4075      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
4076  end;  end;
4077    
4078  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4079  const  const
4080    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4081    
# Line 4518  begin Line 4084  begin
4084      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
4085  end;  end;
4086    
4087  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4088  begin  begin
4089      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4090      begin      begin
# Line 4528  begin Line 4094  begin
4094  end;  end;
4095    
4096    
 // ToDo: PrintPakkeshopLabel()  
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
 var  
   XForm, XFormOld: TXForm; //Bruges til rotate X-formation  
   Angle: integer;  
   gMode: integer;  
   BarcodeArea: TRect;  
   Dirigering: string;  
   
 begin  
     with Printer do  
     begin  
       BeginDoc();  
   
   
       Canvas.Font.Size := 16;  
       Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);  
   
   
   
       Canvas.TextOut(25, 90, PakkeshopLabel.Navn );  
       Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );  
       Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );  
   
   
       Canvas.Font.Size := 9;  
       Canvas.TextOut(110, 240, 'Pakkeshop:');  
       Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);  
       Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);  
       Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);  
   
       Canvas.TextOut(350, 240, 'Afsender:');  
       Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);  
       Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);  
       Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);  
   
       Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;  
       if ( PakkeshopLabel.Koreliste <> '') then  
       begin  
         Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;  
       end;  
   
   
       Canvas.Font.Size := 12;  
       Canvas.TextOut(15, 370, Dirigering);  
   
   
   
   
   
       //Tegn adskillelses linier  
       Canvas.Pen.Width := 2;  
       //Øverste linie  
       Canvas.MoveTo(20,80);  
       Canvas.LineTo(600,80);  
   
       // Midterste linie  
       Canvas.MoveTo( 20, 240);  
       Canvas.LineTo(600, 240);  
   
       //Nederste linie  
       Canvas.MoveTo( 20, 370);  
       Canvas.LineTo(600, 370);  
   
   
       //Tegn skrå streger over afsender  
       Canvas.Pen.Width := 1;  
       Canvas.MoveTo(600, 250);  
       Canvas.LineTo(350, 360);  
       Canvas.MoveTo(600, 360);  
       Canvas.LineTo(350, 250);  
   
   
   
   
       // Resten af rutinen vedr genering og placering af Barcode  
   
       BarCode.BarCodeType := bcCode128;  
       BarCode.Code128Subset := csCodeC;  
       BarCode.Code := PakkeshopLabel.Stregkode;  
       BarCode.Validate(True);  
   
       //Start X-formation  
       //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );  
       GetWorldTransform(Canvas.Handle, XFormOld);  
   
       Angle := 270;  
       XForm.eM11 := Cos(DegToRad(Angle));  
       XForm.eM12 := Sin(DegToRad(Angle));  
       XForm.eM21 := -Sin(DegToRad(Angle));  
       XForm.eM22 := Cos(DegToRad(Angle));  
       XForm.eDx := 0;  
       XForm.eDy := 0;  
   
       gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);  
       SetWorldTransform(Canvas.Handle, XForm);  
   
       // PaintToCanvasSize arbejder i Inches  
       // Første pos argument bliver nu Y og skal være negativ for at rykke den ned  
       //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre  
   
       BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);  
   
   
       SetWorldTransform(Canvas.Handle, XFormOld);  
       SetGraphicsMode(Canvas.Handle, gMode);  
   
       EndDoc();  
     end;  
   
   
 end;  
   
 function GetPixelsPerInchX(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)  
 end;  
   
 function GetPixelsPerInchY(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)  
 end;  
   
4097    
4098  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4099  var  var
# Line 4662  var Line 4105  var
4105    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4106    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4107    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4108    pakketyper : TStrings;    //pakketyper : TStrings;
4109      pakketyper : TDictionary<String, Integer>;
4110      tmpAntal : Integer;
4111    
4112    
4113    
4114    antlin : Integer;    antlin : Integer;
4115    
4116    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4117    
4118    XmlFelter : TStrings;    //XmlFelter : TStrings;
4119      XmlFelter : TDictionary<String, Integer>;
4120    
4121   begin   begin
4122      XmlFelter := TStringList.Create;  
4123      pakketyper := TStringList.Create;  
4124        XmlFelter := TDictionary<String, Integer>.Create;
4125        pakketyper := TDictionary<String, Integer>.Create;
4126    
4127      linienr := 0;      linienr := 0;
4128      ListBox2.Clear;      ListBox2.Clear;
4129      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 4686  var Line 4138  var
4138          StedKode := Sted;          StedKode := Sted;
4139        end;        end;
4140    
4141          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4142    
4143    
4144      if (Scanningtype = '6') then  
4145        if (Scanningtype = '7') then
4146         begin
4147          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4148         end
4149        else if (Scanningtype = '6') then
4150       begin       begin
4151        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4152       end       end
4153      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4154       begin       begin
4155        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4156       end       end
4157      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4158       begin       begin
# Line 4740  var Line 4199  var
4199            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4200              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4201              begin              begin
4202                 antlin := antlin + 1;                 Inc(antlin);
4203                 // 20150306: start                 // 20150306: start
4204                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4205                begin                begin
4206                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4207                   begin                   begin
4208                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4209                   end                   end
4210                   else                   else
4211                   begin                   begin
4212                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4213                   end;                   end;
4214                end;                end;
4215                 // 20150306: slut                 // 20150306: slut
4216              end;              end;
4217            end;            end;
4218            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4219                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4220                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4221                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4222                  end
4223                else                else
4224                  XmlFelter.values[Node.NodeName] := '1';                begin
4225                    XmlFelter.Add(Node.NodeName, 1);
4226                  end;
4227    
4228        end;        end;
4229        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4767  var Line 4231  var
4231        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4232        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4233    
4234    
4235          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4236    
4237        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4238        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4239        begin        begin
# Line 4775  var Line 4242  var
4242        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4243    
4244        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4245    
4246    
4247        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4248            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4249            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4782  var Line 4251  var
4251                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4252                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4253                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4254              end;              end
4255              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4256                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4257                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4258                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4259              end;              end
4260              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4261                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4262                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4263                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4264              end;              end
4265              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4266                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4267                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4268                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4269              end;              end
4270              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4271                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4272                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4273                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4274                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4275                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4276                    pakketyper.TryGetValue(pakketype, tmpAntal);
4277                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4278                  end
4279                else                else
4280                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4281              end;              end
4282              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4283                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4284                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4285                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4286                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4287                  begin                  begin
4288  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4289                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4290                    begin                    begin
4291                      stregkoderMedTjekkodeArray[linienr] := TUtils.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
# Line 4826  var Line 4297  var
4297                    linienr := linienr + 1;                    linienr := linienr + 1;
4298                  end;                  end;
4299              end;              end;
4300    
4301    
4302              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4303              begin              begin
4304                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4841  var Line 4314  var
4314              end;              end;
4315            end;            end;
4316        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4317    
4318          // Free up the list object  
4319          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4320    
4321    
4322          for pakketype in pakketyper.Keys do
4323          begin
4324            pakketyper.TryGetValue(pakketype, tmpAntal);
4325            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4326          end;
4327    
4328            // Free up the dictionary object
4329        pakketyper.Free;        pakketyper.Free;
4330    
4331    
4332    
4333  //      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.');
4334        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4335        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5348  begin Line 4830  begin
4830    result := svar;    result := svar;
4831  end;  end;
4832    
 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;  
4833    
4834  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4835  begin  begin
# Line 5380  begin Line 4843  begin
4843    end;    end;
4844  end;  end;
4845    
 function TMainForm.AdobeReaderExists: Boolean;  
 var  
   AReg: TRegistry;  
 begin  
   result:= false;  
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
 end;  
4846    
4847    
4848  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4849  var  procedure TMainForm.LogMessage( msg : string);
4850    hSession, hfile: hInternet;  begin
4851    dwindex,dwcodelen :dword;    ListBox1.Items.Insert(0, msg);
4852    dwcode:array[1..20] of char;    SkrivScanningLogFil(msg);
   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;  
   
4853  end;  end;
4854    
4855    
4856  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4857  type  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4858  begin  begin
4859    
4860  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
4861  //            'Test'  skal vise alarmlinie, samt opdatere listbox1    if (alert) then
 //            'Timer' skal kun vise alarmlinie  
   
   if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er fravalgt printer i dette program';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4862    begin    begin
4863      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4864      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4865      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4866    end    end
4867    else    else
4868    begin    begin
4869      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4870      try      PrinterstatusStaticText1.Color := clWhite;
4871        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;  
4872    end;    end;
4873  end;  end;
4874    
4875    //Nedarvet fra IParentForm
4876    function TMainForm.GetFormObject() : TForm;
4877    begin
4878      Result := self;
4879    end;
4880    
4881  end.  end.
4882    

Legend:
Removed from v.2682  
changed lines
  Added in v.2794

  ViewVC Help
Powered by ViewVC 1.1.20