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

Diff of /dao/DelphiScanner/Main.pas

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

revision 2660 by torben, Sun Aug 23 14:45:16 2015 UTC revision 3096 by torben, Sun Aug 21 21:56:01 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes    UITypes,
23      LabelData,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 23  type Line 40  type
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
45      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
46      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
47      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
48      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
49      Om1: TMenuItem;      Om1: TMenuItem;
50      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 41  type Line 57  type
57      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
58      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
61      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
62      Panel1: TPanel;      Panel1: TPanel;
63      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
64      Button1: TButton;      Button1: TButton;
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      menuDaoDirekte1: 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;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: 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 70  type Line 86  type
86      Timer1: TTimer;      Timer1: TTimer;
87      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
90      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
91      PanelValgA: TPanel;      PanelValgA: TPanel;
92      PanelValg1: TPanel;      PanelValg1: TPanel;
93      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 88  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107        menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
110        KommentarST: TLabel;
111        chkUdenforSpecifikation: TCheckBox;
112    
113    
114    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
115    function getProddato() : TDate;    function getProddato() : TDate;
116    function getProddag() : String;    function getProddag() : String;
117    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
118    
119    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
120    procedure StartScreen();    procedure StartScreen();
# Line 119  type Line 130  type
130    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
133    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
134    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
135    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
136    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
137    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
138    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
140    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
142    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
143    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
144    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
145    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
146    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
148    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
151    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
152    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 154  type
154    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
155    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
161    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
162    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
163    procedure InitReturFraDao();    procedure InitReturFraDao();
164    procedure InitReturFraKunde();    procedure InitReturFraKunde();
# Line 158  type Line 169  type
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
172    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
173    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
174    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
175    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
176    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
177    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
178    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
181    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
182    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
183    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 181  type Line 191  type
191    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
192    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
193    procedure TjekkerUrls();    procedure TjekkerUrls();
194  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    procedure RoundCornerOf(Control: TWinControl);  
196      procedure menuIndleveringClick(Sender: TObject);
197    
198    
199    
200      //Nedarvet fra IParentForm
201      procedure Msg( msg : string);
202      procedure LogMessage( msg : string);
203      procedure SetPrinterstatusText( txt: string; alert: boolean);
204      function GetFormObject() : TForm;
205      function GetXMLDocument() : TXMLDocument;
206    
207    
 // 20150310: slut  
208    
209    private    private
210      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 193  type Line 212  type
212      SkrivLog : String;      SkrivLog : String;
213      Sted : String;      Sted : String;
214      StedNavn : String;      StedNavn : String;
215      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;  
216  // 29150330: start      Scanningtype,  Pakketype : String;
217      UrlEKLoverforselPakkeshop : String;  
218  // 20150330: slut  
219      UrlFindPakketype, UrlSendPrograminfo: String;      Url : String;
220      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;  
221      ScanTjekkode : String;      Farve : String;
222      ScanTjekkodeAutomatik : string;  
223      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;      Titel : String;
224      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;  
225      LabelType : integer;  
226      AlarmLyd : String;  
     ScannetOkLyd : String;  
     ScannetOkStorLyd : String;  
 // 20150317: start  
     ScannetOkTilTjekkodeLyd : String;  
 // 20150317: slut  
     PrinterNavn : String;  
     TjekPrinter : String;  
     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;  
227      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
228      BladhusSted : Integer;      BladhusSted : Integer;
229      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 246  type Line 235  type
235      logTekst : string;      logTekst : string;
236      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
237      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
     TjekUrls : String;  
238    
239            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      Config : TConfiguration;
240    
241    
242        LabelPrint: TLabelPrint;
243    
244      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 = '');
245      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
246      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 = '');
247      procedure CheckCode();      procedure CheckCode();
248      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 262  type Line 253  type
253      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
254      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
255    
256    
257    public    public
258      { Public declarations }      { Public declarations }
259    end;    end;
260    
261    
262  var  var
263    MainForm: TMainForm;    MainForm: TMainForm;
264    
# Line 279  var Line 272  var
272  implementation  implementation
273  {$R *.dfm}  {$R *.dfm}
274    
275  function TMainForm.TColorToHex(Color : TColor) : string;  
276  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
277    
278  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
279  begin  begin
280    
281  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
282        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
283    
284    
285    
286    
287      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
288  // 20150309: slut  
289    
290      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
291      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 329  begin
329        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
330      end;      end;
331    
332      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
333    
334      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
335      begin      begin
# Line 374  begin Line 357  begin
357        else if (Sted = 'BR') then        else if (Sted = 'BR') then
358          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
359        else if (Sted = 'BK') then        else if (Sted = 'BK') then
360          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
361          else if (Sted = 'TK') then
362            begin StedNavn := 'BK/Trykkompagniet: '; end
363        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
364          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
365        else if (Sted = '1') then        else if (Sted = '1') then
366          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
367        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 385  begin
385    
386      StartScreen();      StartScreen();
387      MainForm.Caption := Titel;      MainForm.Caption := Titel;
388      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
389      MainForm.Farve := Farve;      MainForm.Farve := Farve;
390      MainForm.Titel := Titel;      MainForm.Titel := Titel;
391      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 395  begin
395        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
396      end;      end;
397    
398      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
399        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
400      else      else
401        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 421  begin Line 406  begin
406    
407      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
408      begin      begin
409        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
410        begin        begin
411          chkScanTjekkode.Checked := true;          chkScanTjekkode.Checked := true;
412          chkScanTjekkode.Enabled := true;          chkScanTjekkode.Enabled := true;
# Line 435  begin Line 420  begin
420        end;        end;
421      end;      end;
422    
423      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
424      begin      begin
425        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
426        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 445  begin
445          end          end
446          else          else
447          begin          begin
448            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
449          end;          end;
450          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
451        end        end
452        else        else
453        begin        begin
454          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end;        end;
457      end;      end;
458    
459    
460  end;  end;
461    
462  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 478  begin
478    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
479  end;  end;
480    
481  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
482  begin  begin
483    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
484    begin    begin
485       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
486       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 493  begin
493    
494  end;  end;
495    
496  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
497  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;  
 *)  
498  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
499  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
500       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
501       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
502       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
503  end;  end;
504    
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
512    gemScanningtype : String;    gemScanningtype : String;
513    
514  begin  begin
515    
516    
517    // Initierer nogle variabler    // Initierer nogle variabler
518    BladhusSted := 00;    BladhusSted := 00;
519    Application.ShowHint := True;    Application.ShowHint := True;
520    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
521    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
522    
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524    
525    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    
532    
533    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 565  begin Line 539  begin
539    
540  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 920;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
556      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
557      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
558      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
559      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
560      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
561      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
562      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');  
     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');  
   
     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');  
   
     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');  
     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');  
     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');  
     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');  
     LabelType := ReadInteger('Settings','LabelType',1);  
     FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');  
     TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');  
     FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');  
     TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');  
     FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');  
     TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');  
     FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');  
     TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');  
     FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');  
     TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');  
   
     FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');  
     TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');  
   
     FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');  
     TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');  
   
   
     SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');  
     ScanTjekkode := ReadString('Settings','ScanTjekkode','0');  
     ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');  
     Scanningtype := ReadString('Settings','Scanningtype','A');  
     Pakketype := ReadString('Settings','Pakketype','0');  
     TestFunktionen := ReadString('Settings','TestFunktion','0');  
     AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');  
     ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');  
     ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');  
   
     ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');  
   
     PrinterNavn := ReadString('Settings','PrinterNavn','');  
     TjekPrinter := ReadString('Settings','TjekPrinter','1');  
     TjekUrls := ReadString('Settings','TjekUrls','2');  
563    
564      if (SkrivLog = '1') then      if (SkrivLog = '1') then
565      begin      begin
566        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);
567        try        try
568          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
569          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
570          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
571          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
572          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
573          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 579  begin
579    
580      if Scanningtype = 'A' then      if Scanningtype = 'A' then
581      begin      begin
582        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
583        Scanningtype := '1';        Scanningtype := '1';
584        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
585        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
586      end;      end;
587    
     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;  
588    
589      if SporgEfterBoghandler = '1' then  
590        if Config.SporgEfterBoghandler = '1' then
591      begin      begin
592        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
593        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 728  begin Line 598  begin
598        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
599      end;      end;
600    
601      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
602      begin      begin
603        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
604        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 739  begin Line 609  begin
609        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
610      end;      end;
611    
612      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
613      begin      begin
614        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
615        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
616        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
617      end;      end;
# Line 768  begin Line 638  begin
638      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
639      // *************************** //      // *************************** //
640    
641    {$IfDef STED_BK}
642        SpecialVersionSted := 'BK';
643    {$EndIf}
644    {$IfDef STED_TK}
645        SpecialVersionSted := 'TK';// BK-Trykkompagniet
646    {$EndIf}
647    {$IfDef STED_DBK}
648        SpecialVersionSted := 'DBK';
649    {$EndIf}
650    {$IfDef STED_FD}
651        SpecialVersionSted := 'FD';
652    {$EndIf}
653    {$IfDef STED_NS}
654        SpecialVersionSted := 'NS';
655    {$EndIf}
656    
657      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
658      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
659      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 669  begin
669      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
670      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
671    
 // 20150313: start  
672      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
673      begin      begin
674         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
675         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
676    
677          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
678          Sted := SpecialVersionSted;
679         // her skal vi også disable de knapper BK ikke kan bruge
680          PanelValg2.Enabled := false;
681          PanelValg2.Font.Color := clInactiveCaption;
682          PanelValg3.Enabled := false;
683          PanelValg3.Font.Color := clInactiveCaption;
684          //PanelValg6.Enabled := false;
685          //PanelValg6.Font.Color := clInactiveCaption;
686    
687         // her skal vi også disable de menupunkter FD ikke kan bruge
688          menuNatxpressReturDAO1.Enabled := false;
689          menuNatxpressReturfraKunde1.Enabled := false;
690    
691          //Returpakkerfrapakkeshop1.Enabled := false;
692      end;      end;
693    
694      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
695      begin      begin
696         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
697         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
698      end;  
 // 20150313: slut  
699    
     if SpecialVersionSted = 'BK' then  
     begin  
700        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
701        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
702       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 805  begin Line 704  begin
704        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
705        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
706        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
707        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
708        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
709       // her skal vi også disable de menupunkter BK ikke kan bruge  
710        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
711        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
712        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
713        if SpecialVersionScanningtype = 'A' then  
714        begin        //Returpakkerfrapakkeshop1.Enabled := false;
715           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
716      end;      end;
717    
718      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
719      begin      begin
720        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
721        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
722        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
723        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
724        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
725        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
726        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
727        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
728        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
729        PanelValg6.Enabled := false;  
730        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
731       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
732        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
       Returpakkerfraboghandler1.Enabled := false;  
733    
734        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
735    
736        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
737        begin        begin
# Line 851  begin Line 743  begin
743        end;        end;
744      end;      end;
745    
746        if SpecialVersionSted = 'DBK' then
747        begin
748          Sted := SpecialVersionSted;
749        end;
750    
751      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
752      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
753      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 767  begin
767        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
768        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
769        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
770          PanelValg7.Enabled := false;
771          PanelValg7.Font.Color := clInactiveCaption;
772       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
773    
774        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
775    
776        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
777        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
778        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
779        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
780        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
781        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
782        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
783        begin        begin
784          Scanningtype := '4';          Scanningtype := '4';
785          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
786          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
787          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
788        end        end
# Line 892  begin Line 791  begin
791          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
792          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
793          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
794          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
795          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
796          if Scanningtype = '1' then          if Scanningtype = '1' then
797          begin          begin
798            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
799            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
800            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
801          end;          end;
802          if Scanningtype = '2' then          if Scanningtype = '2' then
803          begin          begin
804            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
805            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
806            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
807          end;          end;
808          if Scanningtype = '3' then          if Scanningtype = '3' then
809          begin          begin
810            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
811            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
812            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
813          end;          end;
814          if Scanningtype = '4' then          if Scanningtype = '4' then
815          begin          begin
816            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
817            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
818            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
819          end;          end;
820          if Scanningtype = '5' then          if Scanningtype = '5' then
821          begin          begin
822            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
823            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
824            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
825          end;          end;
826          if Scanningtype = '6' then          if Scanningtype = '6' then
827          begin          begin
828            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
829            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
830            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
831          end;          end;
# Line 955  begin Line 854  begin
854          Application.Terminate;          Application.Terminate;
855      end;      end;
856    
857      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
858      begin      begin
859          TjekkerUrls();          TjekkerUrls();
860          if TjekUrls = '-' then  // så var der fejl i url - så vi stopper her          if Config.TjekUrls = '-' then  // så var der fejl i url - så vi stopper her
861          begin          begin
862             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
863             MainForm.Color := clRed;             MainForm.Color := clRed;
864             RutenummerST.Caption := '';             RutenummerST.Caption := '';
865             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
866             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
867             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
868             exit;             exit;
869          end;          end;
870      end      end
# Line 1007  begin Line 906  begin
906    
907      if Pakketype = '1' then      if Pakketype = '1' then
908      begin      begin
909        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
910        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
911      end      end
912      else      else
913      begin      begin
914        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
915        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
916      end;      end;
917    
918      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
919      begin      begin
920        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
921        Testprinter1.Visible := true;        Testprinter1.Visible := true;
922        Testlyd1.Visible := true;        Testlyd1.Visible := true;
923        Testlyd2.Visible := true;        Testlyd2.Visible := true;
924      end      end
925      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
926      begin      begin
927        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
928        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1038  begin Line 937  begin
937        Testlyd2.Visible := false;        Testlyd2.Visible := false;
938      end;      end;
939    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
940    
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
941    
942    
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
943    
944        LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
945      if (PrinterNavn <> '') then      LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
   
     CheckPrintQue('Opstart');  
946    
947    finally    finally
948      Free;      Free;
# Line 1076  begin Line 951  begin
951      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
952      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
953      begin      begin
954        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
955        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
956        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
957        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
958        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
959        Testprinter1.Visible := false;        Testprinter1.Visible := false;
960        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
961        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
962      end;      end;
963    
964      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1009  begin
1009      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1010    
1011      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1012      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1013    
1014  end;  end;
1015    
# Line 1191  begin Line 1066  begin
1066      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1067      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1068      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1069        or (NumberString = 'DAO PAKKESHOP')
1070        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1071            or (LowerCase(NumberString) = 'for stor daodirekte' )
1072      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1073    
1074      begin      begin
# Line 1201  begin Line 1079  begin
1079      begin      begin
1080        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1081      end;      end;
1082    end;    end;  // Slut ctrl-v
1083    
1084    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1085    begin    begin
1086      if (Length(Trim(Stregkode)) = 0) then  
1087        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1088        Stregkode := Trim(Stregkode);
1089    
1090        if (Length(Stregkode) = 0) then
1091      begin      begin
1092        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1093    
# Line 1214  begin Line 1096  begin
1096    
1097      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1098      begin      begin
1099         PakkeshopNulstil.Click();         btnNulstil.Click();
1100         exit;         exit;
1101      end;      end;
1102    
1103      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1104      begin      begin
1105        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1106    
# Line 1255  begin Line 1137  begin
1137         exit;         exit;
1138      end;      end;
1139    
1140        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1141        begin
1142          if chkForstorTilDirekte.Enabled then
1143          begin
1144            chkForstorTilDirekte.Checked := true;
1145          end
1146          else
1147          begin
1148             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1149          end;
1150          Stregkode := '';
1151          StregkodeST.Caption := StregKode;
1152          exit;
1153        end;
1154    
1155    
1156      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1157      begin      begin
1158         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1409  begin Line 1307  begin
1307      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1308      begin      begin
1309        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1310        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1311        try        try
1312          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1313          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1452  begin Line 1350  begin
1350        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1351      end;      end;
1352    
1353      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1354          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1355          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1356          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1357          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1358          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1359      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1360          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1361    
1362         exit;         exit;
1363      end;      end;
1364    
1365      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1366      begin      begin
1367        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1368        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1391  begin
1391                InitPakkeshoplevering();                InitPakkeshoplevering();
1392              end;              end;
1393            end            end
1394        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1395              begin
1396                if Scanningtype <> '6' then
1397                begin
1398                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1399    
1400                 exit;
1401                end;
1402              end
1403    
1404    
1405        else        else
1406            begin            begin
1407            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1408              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1409                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1410    
1411               exit;               exit;
1412            end;            end;
1413        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1414      end      end
1415      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1416      begin      begin
1417        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1418    
1419        exit;        exit;
1420      end;      end;
1421    
1422      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1423      begin      begin
1424        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1425        begin        begin
# Line 1522  begin Line 1430  begin
1430        end;        end;
1431      end;      end;
1432    
1433        // EmballageRepareret skal bare sætte reklamationkoden,
1434        // og så ellers fortsætte med scanning som normalt
1435        if (chkEmballageRepareret.Checked = True) then
1436        begin
1437          URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]);
1438          WebSvar := IdHTTP1.Get(URLStr);
1439          ShowMessage( WebSvar );
1440    
1441          chkEmballageRepareret.Checked := False;
1442        end;
1443    
1444    
1445    
1446      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1447      begin      begin
1448        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1449        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1456  begin
1456        end;        end;
1457      end;      end;
1458    
1459      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1460        begin        begin
1461          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1462             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1463             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1464             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1465             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1466             Stregkode := '';             Stregkode := '';
1467             InitScreen();             InitScreen();
1468        end        end
1469      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1470        begin        begin
1471          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1472             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1474  begin
1474             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1475             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1476             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1477             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1478             Stregkode := '';             Stregkode := '';
1479             InitScreen();             InitScreen();
1480        end        end
1481      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1482        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1483         begin         begin
1484            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1568  begin Line 1487  begin
1487              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1488              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1489    
1490              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1491    
1492             end             end
1493            else            else
# Line 1585  begin Line 1504  begin
1504             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1505             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1506             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1507             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1508                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1509             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1510                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1511             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1512           end           end
1513          else          else
1514           begin           begin
1515                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1516                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1517                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1518                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1519                                    
1520                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1526  begin
1526          InitScreen();          InitScreen();
1527       end;       end;
1528    
1529      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 menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1530      begin      begin
1531         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1532           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1533            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1534         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1535            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1536         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1537         try         try
# Line 1621  begin Line 1541  begin
1541            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1542            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1543            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1544               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1545               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1546              exit;              exit;
1547            end;            end;
1548            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1549            begin            begin
1550              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1551              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1645  begin Line 1561  begin
1561              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1562              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1563              begin              begin
1564                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1565                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1566                MainForm.Color := clRed;                MainForm.Color := clRed;
1567              end;              end;
1568           end;           end;
1569            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1570            begin            begin
1571              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1572              if Storepakker1.Checked then              if menuStorePakker.Checked then
1573              begin              begin
1574                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1575              end              end
1576              else              else
1577              begin              begin
1578                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1579              end;              end;
1580              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1581            end            end
1582            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1583            begin            begin
1584              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1585              if Storepakker1.Checked then              if menuStorePakker.Checked then
1586              begin              begin
1587                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1588              end              end
1589              else              else
1590              begin              begin
1591                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1592              end;              end;
1593              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1594            end            end
1595            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1596            begin            begin
# Line 1685  begin Line 1601  begin
1601            end            end
1602            else            else
1603            begin            begin
1604              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1605            end;            end;
1606           if not PakkeshopNulstil.Visible then  
1607             if not btnNulstil.Visible then
1608            begin            begin
1609    
1610              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1611              begin              begin
1612                if Storepakker1.Checked then                if menuStorePakker.Checked then
1613                begin                begin
1614                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1615                end                end
1616                else                else
1617                begin                begin
1618                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1619                end;                end;
1620                InitLillePakke();                InitLillePakke();
1621              end;              end;
# Line 1738  begin Line 1653  begin
1653    
1654    Key := #0;    Key := #0;
1655    
1656    
1657    
1658    
1659    
1660    
1661  end; //End of OnKeyPress  end; //End of OnKeyPress
1662    
1663    
1664    
1665  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1666  const  const
1667    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1747  var Line 1669  var
1669    WebSvar : String;    WebSvar : String;
1670    URLStr : String;    URLStr : String;
1671  begin  begin
1672    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1673    begin    begin
1674      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1675      try      try
1676        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1677        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1762  begin Line 1684  begin
1684        ShowMessage(logTekst);        ShowMessage(logTekst);
1685        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1686        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1687        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1688        Application.Terminate;        Application.Terminate;
1689      end;      end;
1690      end;      end;
# Line 1781  var Line 1703  var
1703    
1704    
1705  begin  begin
1706      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1707      begin      begin
1708        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1709          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1710          begin          begin
1711              wrkAntalSenere := 0;//initial Value
1712    
1713            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1714            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1715            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1716            begin            begin
1717              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1718              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1719  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1720  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1721  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1722              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1723            end            end
1724            else     // kun idag            else     // kun idag
1725            begin            begin
# Line 1900  begin Line 1823  begin
1823                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1824              end;              end;
1825            end;            end;
1826  // 20150310: slut  
1827            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1828          end;          end;
1829      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1853  procedure TMainForm.InitBladhus();
1853    
1854  begin  begin
1855    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1856    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1857    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1858    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1859    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1860    ListBox1.Visible := true;    ListBox1.Visible := true;
1861  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1862  // 20150317: start  
1863  (*    if menuDaoDirekte1.Checked then
   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  
   if Budlevering1.Checked then  
1864    begin    begin
1865      IndlesScanningLogFil();      IndlesScanningLogFil();
1866    end;    end;
# Line 1989  begin Line 1872  begin
1872      01 :      01 :
1873            begin;      // NS            begin;      // NS
1874              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1875              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1876              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1877              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1878              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1879              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1884  begin
1884      02 :      02 :
1885            begin;    // BK            begin;    // BK
1886              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1887              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1888              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1889              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1890              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1891              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1892              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1893              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1894              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1895              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 1899  begin
1899              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1900             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1901              begin              begin
1902                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1903              end              end
1904              else              else
1905              begin              begin
1906                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1907              end;              end;
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              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 1922  begin
1922            end;            end;
1923      04 :  begin;           // DBK      04 :  begin;           // DBK
1924              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1925              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1926              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1927              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1928              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1929              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1930              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1931              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1932              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1933            end;            end;
# Line 2060  var Line 1943  var
1943    URLStr : String;    URLStr : String;
1944    pakkestorrelse : String;    pakkestorrelse : String;
1945    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1946    
1947      PakkeshopLabel: TLabelData;
1948  begin  begin
1949    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1950    begin    begin
# Line 2069  begin Line 1954  begin
1954    begin    begin
1955      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1956    end;    end;
1957    if Pakkernormal1.Checked then  
1958    
1959      if menuNatXpress1.Checked then
1960    begin    begin
1961       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1962       begin       begin
1963         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1964       end;       end;
1965       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1966    end    end
1967    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1968    begin    begin
1969       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1970    end    end
1971    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1972    begin    begin
1973       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1974    end    end
1975    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
1976    begin    begin
1977       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
1978    end    end
1979    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
1980    begin    begin
1981       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
1982    end    end
1983    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
1984    begin    begin
1985       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
1986      end
1987      else if menuIndlevering.Checked then
1988      begin
1989        URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
1990    end    end
1991    else    else
1992    begin    begin
1993      exit;      exit;
1994    end;    end;
1995    
1996      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
1997      begin
1998        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
1999      end;
2000    
2001    try    try
2002      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2003      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2019  begin
2019          end;          end;
2020      end;      end;
2021    end;    end;
2022    
2023    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2024    try    try
2025      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2026       begin       begin
2027        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2028        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2030  begin
2030        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2031        PrintNyLabel := False;        PrintNyLabel := False;
2032    
2033        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2034        begin        begin
2035          try          try
2036            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2041  begin
2041          begin          begin
2042            PrintNyLabel := True;            PrintNyLabel := True;
2043          end;          end;
 // 20150310: start  
2044        end;        end;
 // 20150310: slut  
2045       end       end
2046        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2047        begin
2048    
2049    
2050    
2051    
2052         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2053         if (Kommentar = 'Ok') then
2054         begin
2055           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2056           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2057           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2058           Stregkode := PakkeshopLabel.Stregkode;
2059    
2060           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2061           chkForstorTilDirekte.Checked := false;
2062    
2063         end;
2064    
2065    
2066        end
2067      else      else
2068       begin       begin
2069        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2071  begin
2071        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2072        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2073        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2074        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2075          begin          begin
2076          try          try
2077            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2096  begin
2096          PrintNyLabel := True;          PrintNyLabel := True;
2097        end;        end;
2098      end;      end;
2099    
2100    
2101      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2102      begin      begin
2103        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2104        begin        begin
2105            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2106            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2107        end;        end;
2108      end      end
2109      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2110      begin      begin
2111         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2112         begin        //PrintNyLabel := False;  //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
           // Det er ok at DBK scanner pakker til E     (Schenker)  
        end  
        else  
        begin  
           Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';  
           PrintNyLabel := False;  
        end;  
2113      end;      end;
2114    except on e:exception do    except on e:exception do
2115      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2216  begin Line 2128  begin
2128    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2129    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2130    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2131    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2132      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2133    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2134    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2140  begin
2140      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2141    end;    end;
2142    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2143    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2144    begin    begin
2145      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2146    end;    end;
2147    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2148    begin    begin
2149      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2150    end;    end;
2151    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2152       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2153    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2154    begin    begin
2155      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2156    end;    end;
2157    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2158    begin    begin
2159       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2160        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2166  begin
2166          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2167        end;        end;
2168    end;    end;
2169    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2170    begin    begin
2171      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2172    end;    end;
2173    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2174    begin    begin
2175      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2176      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2183  begin
2183        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2184      end;      end;
2185    end;    end;
2186      if menuIndlevering.Checked then
2187      begin
2188        List1Msg := Stregkode;
2189      end;
2190    
2191    
2192    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2193    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2194    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2195  end;  end;
2196    
2197  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2198  begin  begin
2199    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2200    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2210  pakkeForkertSted : Integer;
2210    kontrolKoreliste : string;    kontrolKoreliste : string;
2211    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2212  begin  begin
2213    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2214       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2215    
2216    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2217    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2248  begin
2248        end;        end;
2249    end    end
2250    else    else
2251    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2252    begin    begin
2253       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2254       begin       begin
2255          PrintNyLabel := false;          PrintNyLabel := false;
2256    
2257          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2258          MainForm.Color := clRed;          MainForm.Color := clRed;
2259          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2260    
2261       end       end
2262       else       else
# Line 2349  begin Line 2267  begin
2267            PrintNyLabel := true;            PrintNyLabel := true;
2268            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2269            nyFarve := Farve;            nyFarve := Farve;
2270            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2271            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2272            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2273            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2274            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2275            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2276    
2277            if (PrinterNavn = 'Ingen') then            if (Config.PrinterNavn = 'Ingen') then
2278            begin            begin
2279               PrintNyLabel := false;               PrintNyLabel := false;
2280            end;            end;
2281    
2282            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2283            begin            begin
2284              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2285              MainForm.Color := clRed;              MainForm.Color := clRed;
2286              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2287            end;            end;
2288    
2289         end;         end;
# Line 2389  begin Line 2307  begin
2307    
2308            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2309            begin            begin
2310              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2311              MainForm.Color := clRed;              MainForm.Color := clRed;
2312              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2313            end;            end;
2314    
2315         end;         end;
# Line 2399  begin Line 2317  begin
2317    
2318    end;    end;
2319    
2320    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2321    begin    begin
2322      case BladhusSted of      case BladhusSted of
2323        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2329  begin
2329               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2330  // 20150304: slut  // 20150304: slut
2331                begin                begin
2332                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2333                end;                end;
2334              end;              end;
2335        01 :  begin;        01 :  begin;
2336               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2337                    // 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
2338                    // 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')
2339                begin                begin
2340                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2341                end;                end;
2342              end;              end;
2343        02 :  begin;        02 :  begin;
2344                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
2345                begin                begin
2346                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2347                end;                end;
2348              end;              end;
2349        03 :  begin;        03 :  begin;
2350               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2351                    // 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
2352                    // 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')
2353               begin               begin
2354                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2355               end;               end;
2356              end;              end;
2357        04 :  begin;        04 :  begin;
2358                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
2359                begin                begin
2360                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2361                end;                end;
2362              end;              end;
2363        else        else
# Line 2448  begin Line 2366  begin
2366    end;    end;
2367    
2368  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2369    if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then    if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2370    begin    begin
2371      exit;      exit;
2372    end;    end;
2373    
2374    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2375    begin    begin
2376    end    end
2377    else    else
2378    begin    begin
2379      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2380      begin      begin
2381        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2382        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2475  begin Line 2393  begin
2393        end;        end;
2394        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2395        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2396        with Printer do  
2397        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2398          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;  
2399      end;      end;
2400    end;    end;
2401    
2402  end;  end;
2403    
 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;  
2404    
2405    
2406  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2407  begin  begin
2408      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2409      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2410  end;  end;
2411    
2412  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2413  begin  begin
2414      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2415      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2416  end;  end;
2417    
# Line 2596  begin Line 2454  begin
2454    end;    end;
2455  end;  end;
2456    
2457  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2458  begin  begin
2459        Scanningtype := '5';        Scanningtype := '5';
2460        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2463  end;
2463    
2464  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2465  begin  begin
2466      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2467      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2468      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2469    
# Line 2617  begin Line 2475  begin
2475        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2476        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2477        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2478        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2479      end;      end;
2480  // 20150317: slut  // 20150317: slut
2481  end;  end;
# Line 2632  begin Line 2490  begin
2490    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2491    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...');
2492    
2493          // Tjekker urls    try
2494          logTekst := 'Tjekker urls.';      // Tjekker urls
2495          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2496          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2497        SkrivScanningLogFil(logTekst);
2498    
         // 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;  
2499    
         // 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;  
2500    
2501          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2502          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2503          begin      begin
2504            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2505            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;  
2506    
2507          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2508          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2509          begin      begin
2510            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2511            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;  
2512    
2513          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2514          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2515          begin      begin
2516            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2517            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;  
2518    
2519          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2520          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2521          begin      begin
2522            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2523            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;  
2524    
2525          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2526          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2527          or (PanelValg4.Enabled = true) then      begin
2528          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2529            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;  
2530    
2531          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2532          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2533          begin      begin
2534            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2535            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;  
2536    
2537          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2538          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2539          begin      begin
2540            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2541            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;  
2542    
2543          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2544          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2545          begin      begin
2546            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2547            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;  
2548    
2549        // Tjekker UrlPakkeshopManglendeReturScanninger
2550        if PanelValg6.Enabled = true then
2551        begin
2552          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2553        end;
2554    
2555          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2556          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2557          begin      begin
2558            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2559            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2560              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;  
2561    
2562        // Tjekker UrlEKLoverforsel
2563        if PanelValg1.Enabled = true then
2564        begin
2565          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2566        end;
2567    
         // 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;  
2568    
2569          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2570          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2571          begin      begin
2572            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2573            SkrivScanningLogFil(logTekst);      end;
2574          end  
2575          else  
2576          begin      // Tjekker UrlFindPakketype
2577              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2578              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2579              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2580              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
             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;  
2581    
         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;  
2582    
2583    
2584        logTekst := 'urls er ok';
2585        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2586        SkrivScanningLogFil(logTekst);
2587    
2588      Except
2589        Config.TjekUrls := '-';   // markerer at der var fejl
2590    
2591      end;
2592  end;  end;
2593    
2594  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2595  var  const
2596     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2597  begin  begin
2598     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2599     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2600     Result := SystemTimeToDateTime(SystemTime) ;    begin
2601        logTekst := UrlNavn + ' accepteret: ' + Url;
2602        SkrivScanningLogFil(logTekst);
2603      end
2604      else
2605      begin
2606        inc(urlFejl);   // Optæller antal fejl
2607        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2608        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2609        if Config.TjekUrls = '1' then
2610        begin
2611          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2612        end;
2613    
2614        SkrivScanningLogFil(logTekst);
2615    
2616        if Config.TjekUrls = '1' then
2617        begin
2618          ShowMessage(logTekst);
2619          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2620          Application.Terminate;
2621    
2622          raise Exception.Create('UrlFejl');
2623    
2624        end;
2625      end;
2626    
2627  end;  end;
2628    
2629    
2630    
2631  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2632  var  var
2633    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2644  begin
2644      repeat      repeat
2645        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2646        begin        begin
2647    
2648          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2649          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2650          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2651          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2652          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2653          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3077  begin Line 2684  begin
2684    end;    end;
2685  end;  end;
2686    
2687  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2688  begin  begin
2689    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2690    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2691    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2692    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2693    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2694    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2697  begin
2697    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2698    begin    begin
2699       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2700       UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut       Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2701       Application.Terminate;       Application.Terminate;
2702       exit;       exit;
2703    end;    end;
# Line 3099  begin Line 2706  begin
2706  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2707    if Farve <> '' then    if Farve <> '' then
2708    begin    begin
2709       MainForm.Color := HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
 // 20150312: start  
 (*  
   end  
   else  
   begin  
      ShowMessage('Programmet afbrydes...');  
      UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
      Application.Terminate;  
 *)  
 // 20150312: slut  
2710    end;    end;
2711    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2712    begin    begin
2713       InitLillePakke();       InitLillePakke();
2714    end;    end;
# Line 3173  end; Line 2770  end;
2770    
2771  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2772  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;  
 *)  
2773  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2774  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2775       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2776       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2777       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2778  // 20150311: slut  
2779    
2780    
2781  end;  end;
2782    
2783  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2784  begin  begin
2785        Scanningtype := '1';        Scanningtype := '1';
2786        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3215  var Line 2799  var
2799    Leveringssted : String;    Leveringssted : String;
2800    orgTjekUrls : String;    orgTjekUrls : String;
2801  begin  begin
2802    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2803    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2804    begin    begin
2805      TjekkerUrls();      TjekkerUrls();
2806    end;    end;
2807    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2808    begin    begin
2809      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2810      RuteNummer := '';      RuteNummer := '';
# Line 3229  begin Line 2813  begin
2813      Koreliste := '';      Koreliste := '';
2814      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2815      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2816      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2817      MainForm.Color := clRed;      MainForm.Color := clRed;
2818      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2819    end    end
2820    else    else
2821    begin    begin
# Line 3245  begin Line 2829  begin
2829      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2830      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2831    end;    end;
2832    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2833    
2834  end;  end;
2835    
# Line 3266  begin Line 2850  begin
2850    Falsk := False;    Falsk := False;
2851    
2852    
2853    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2854    begin    begin
2855      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2856    end    end
2857    else if PrinterNavn = 'Ingen' then    else if Config.PrinterNavn = 'Ingen' then
2858    begin    begin
2859      ShowMessage('Der er fravalgt printer i dette program.');      ShowMessage('Der er fravalgt printer i dette program.');
2860    end    end
# Line 3281  begin Line 2865  begin
2865      DBKbane := '999';      DBKbane := '999';
2866      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2867      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2868      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2869    end;    end;
2870    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2871  end;  end;
2872    
2873  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2874  begin  begin
2875    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2876    begin    begin
2877      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2878    end    end
2879    else    else
2880    begin    begin
# Line 3299  begin Line 2883  begin
2883    end;    end;
2884  end;  end;
2885    
2886  {  
  VERY fast split function  
  this function returns part of a string based on  
  constant defineable delimiters, such as ";". So  
  SPLIT('this is a test ',' ',3) = 'is' or  
  SPLIT('data;another;yet;again;more;',';',4) = 'yet'  
   
  Split function shifts index integer by two to  
  be compatible with commonly used PD split function  
  gpl 2004 / Juhani Suhonen  
 }  
 function TMainForm.split(input: string; schar: Char; s: Integer): string;  
 var  
   c: array of Integer;  
   b, t: Integer;  
 begin  
   Dec(s, 2);  // for compatibility with very old & slow split function  
   t := 0;     // variable T needs to be initialized...  
   setlength(c, Length(input));  
   for b := 0 to pred(High(c)) do  
   begin  
     c[b + 1] := posex(schar, input, succ(c[b]));  
     // BREAK LOOP if posex looped (position before previous)  
     // or wanted position reached..  
     if (c[b + 1] < c[b]) or (s < t) then break  
     else  
       Inc(t);  
   end;  
   Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));  
 end;  
2887    
2888  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2889  const  const
# Line 3337  var Line 2892  var
2892   tekst, filversion : String;   tekst, filversion : String;
2893  begin  begin
2894    
2895    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2896    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';
2897    
2898    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2914  begin
2914          end          end
2915          else          else
2916          begin          begin
2917            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2918          end;          end;
2919      end      end
2920      else      else
2921      begin      begin
2922        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2923      end;      end;
2924    end;    end;
2925    
# Line 3373  begin Line 2928  begin
2928      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2929      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2930      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2931      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2932    end;    end;
2933    
2934    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2935    
2936  end;  end;
2937    
2938    
2939  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2940    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2941  var  var
# Line 3432  begin Line 2988  begin
2988    
2989    if FileExists(fileName) then    if FileExists(fileName) then
2990    begin    begin
2991      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
2992      begin      begin
2993        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
2994        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3012  begin
3012    
3013    if FileExists(fileName) then    if FileExists(fileName) then
3014    begin    begin
3015      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3016      begin      begin
3017        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3018        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3019      end      end
3020      else      else
3021      begin      begin
3022        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3023      end;      end;
3024    end    end
3025    else    else
# Line 3472  begin Line 3028  begin
3028    end;    end;
3029  end;  end;
3030    
3031    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3032    begin
3033      Scanningtype := '7';
3034      NulstilAutomatiskValg();
3035      InitIndleveringskode();
3036    end;
3037    
3038  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3039  begin  begin
3040    
# Line 3487  begin Line 3050  begin
3050    
3051  end;  end;
3052    
3053  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3054  begin  begin
3055        Scanningtype := '2';        Scanningtype := '2';
3056        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3057        InitReturFraDao();        InitReturFraDao();
3058  end;  end;
3059    
3060  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3061  begin  begin
3062        Scanningtype := '6';        Scanningtype := '6';
3063        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3066  end;
3066    
3067  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3068  begin  begin
3069        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3070        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3071        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3072        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3073        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3074        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3075    
# Line 3517  begin Line 3080  begin
3080        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3081        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3082        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3083        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3084        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3085        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3086        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3087        ListBox1.Visible := true;        ListBox1.Visible := true;
3088        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3089        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3090        InitLillePakke();        InitLillePakke();
3091        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3092    
3093          chkForstorTilDirekte.Checked := false;
3094          chkForstorTilDirekte.Enabled := false;
3095    
3096        if BladhusSted = 0 then        if BladhusSted = 0 then
3097        begin        begin
3098          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3102  end;
3102    
3103  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3104  begin  begin
3105        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3106        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3107        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3108        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3109        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3110        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3111    
# Line 3549  begin Line 3116  begin
3116        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3117        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3118        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3119        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3120        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3121        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3122        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3123        ListBox1.Visible := true;        ListBox1.Visible := true;
3124        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3125        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3126        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3127    
3128          chkForstorTilDirekte.Checked := false;
3129          chkForstorTilDirekte.Enabled := false;
3130    
3131        InitLillePakke();        InitLillePakke();
3132  end;  end;
3133    
3134  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3135  begin  begin
3136        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3137        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3138        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3139        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3140        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3141        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3142    
# Line 3575  begin Line 3146  begin
3146        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3147        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3148        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3149        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3150        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3151        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3152        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3153        ListBox1.Visible := true;        ListBox1.Visible := true;
3154        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3155        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3156        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3157    
3158          chkForstorTilDirekte.Checked := false;
3159          chkForstorTilDirekte.Enabled := false;
3160    
3161        InitLillePakke();        InitLillePakke();
3162  end;  end;
3163    
3164  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3165  begin  begin
3166        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3167        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3168        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3169        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3170        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3171        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3172    
# Line 3602  begin Line 3177  begin
3177        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3178        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3179        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3180        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3181        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3182        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3183        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3184        ListBox1.Visible := true;        ListBox1.Visible := true;
3185        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3186        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3187        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3188        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3189        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3190        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3191        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3192    
3193          chkForstorTilDirekte.Checked := false;
3194          chkForstorTilDirekte.Enabled := true;
3195    
3196        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3197        begin        begin
3198            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3203  end;
3203    
3204  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3205  begin  begin
3206        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3207        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3208        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3209        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3210        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3211        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3212    
# Line 3638  begin Line 3217  begin
3217        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3218        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3219        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3220        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3221        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3222        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3223        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3224        ListBox1.Visible := true;        ListBox1.Visible := true;
3225        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3226        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3227        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3228    
3229        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3230    
3231          chkForstorTilDirekte.Checked := false;
3232          chkForstorTilDirekte.Enabled := true;
3233    
3234        InitLillePakke();        InitLillePakke();
3235        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3243  end;
3243    
3244  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3245  begin  begin
3246        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3247        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3248        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3249        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3250        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3251        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3252    
# Line 3675  begin Line 3257  begin
3257        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3258        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3259        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3260        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3261        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3262        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3263        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3264        ListBox1.Visible := true;        ListBox1.Visible := true;
3265        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3266        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3267        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3268        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3269    
3270          chkForstorTilDirekte.Checked := false;
3271          chkForstorTilDirekte.Enabled := false;
3272    
3273    
3274        InitLillePakke();        InitLillePakke();
3275        IndlesScanningLogFil();        IndlesScanningLogFil();
3276        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3281  begin
3281        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3282  end;  end;
3283    
3284  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3285  begin  begin
3286        Scanningtype := '3';        Scanningtype := '3';
3287        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3290  end;
3290    
3291  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3292  begin  begin
3293        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3294        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3295        PakkeshopNulstil.Visible := false;  
3296        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3297          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3298        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3299        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3300    
# Line 3720  begin Line 3308  begin
3308    
3309    
3310    
3311        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3312        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3313        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3314        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3315        ListBox1.Visible := true;        ListBox1.Visible := true;
3316        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3317    
3318        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3319        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3320        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3321    
3322          chkForstorTilDirekte.Checked := false;
3323          chkForstorTilDirekte.Enabled := false;
3324    
3325    
3326        InitLillePakke();        InitLillePakke();
3327        IndlesScanningLogFil();        IndlesScanningLogFil();
3328        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3334  begin
3334  end;  end;
3335    
3336    
3337  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3338  begin  begin
3339    InitStorPakke();    InitStorPakke();
3340  end;  end;
3341    
3342  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3343  begin  begin
3344    InitLillePakke();    InitLillePakke();
3345  end;  end;
# Line 3754  end; Line 3347  end;
3347  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3348  begin  begin
3349    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3350    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3351  //  Stregkode := '';  //  Stregkode := '';
3352  end;  end;
3353    
3354  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3355  begin  begin
3356    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3357    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3358  // 20150310: start  // 20150310: start
3359  //  Stregkode := '';  //  Stregkode := '';
3360  // 20150310: slut  // 20150310: slut
3361  end;  end;
3362    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';  
   const Fmt: String = '%d.%d.%d.%d'): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Word;  
   S : String;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
     // format result string  
     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3363    
     // Hvorfor virker ovenstående ikke ???  
     S := '';  
     Str(iVer[1], Result);  
     S := S+Result+'.';  
     Str(iVer[2], Result);  
     S := S+Result+'.';  
     Str(iVer[3], Result);  
     S := S+Result+'.';  
     Str(iVer[4], Result);  
     S := S+Result+'';  
     Result := S;  
   end;  
 end;  
3364    
3365  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3366  begin  begin
# Line 3845  end; Line 3373  end;
3373    
3374  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3375  begin  begin
3376     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3377     begin     begin
3378       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3379     end     end
3380     else     else
3381     begin     begin
# Line 3859  procedure TMainForm.Testlyd2Click(Sender Line 3387  procedure TMainForm.Testlyd2Click(Sender
3387  begin  begin
3388    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3389    begin    begin
3390       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3391       begin       begin
3392         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3393       end       end
3394       else       else
3395       begin       begin
# Line 3870  begin Line 3398  begin
3398       exit;       exit;
3399    end;    end;
3400    
3401    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3402       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3403       begin       begin
3404         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3405       end       end
3406       else       else
3407       begin       begin
3408         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3409       end;       end;
3410    if Storepakker1.Checked then    if menuStorePakker.Checked then
3411       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3412       begin       begin
3413         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3414       end       end
3415       else       else
3416       begin       begin
# Line 3891  begin Line 3419  begin
3419  end;  end;
3420    
3421    
3422  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3423  begin  begin
3424        Scanningtype := '4';        Scanningtype := '4';
3425        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3431  begin;
3431    CheckCode();    CheckCode();
3432  end;  end;
3433    
3434  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3435  var  var
3436    WebSvar : String;    WebSvar : String;
3437    URLStr : String;    URLStr : String;
# Line 3913  var Line 3441  var
3441    status, kommentar : String;    status, kommentar : String;
3442    
3443  begin  begin
3444      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3445    
3446      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');
3447      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3448      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3449      StedKode := Sted;      StedKode := Sted;
3450      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3451  // 20150330: start  
3452      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3453      begin      begin
3454        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3455      end;      end;
3456  // 20150330: slut  
3457    
3458      try      try
3459      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3504  begin
3504        end;        end;
3505      end;      end;
3506    
3507      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3508    
3509      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
3510    
3511      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3512      if status = 'Fejl' then      if status = 'Fejl' then
3513      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3514         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3515         MainForm.Color := clRed;         MainForm.Color := clRed;
3516         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3517         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 3993  begin Line 3521  begin
3521           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3522         end;         end;
3523         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3524         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3525      end;      end;
3526    
3527  end;  end;
# Line 4017  begin Line 3545  begin
3545    else    else
3546      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3547  }  }
3548    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3549    
3550    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3551    CheckCode();    CheckCode();
# Line 4025  end; Line 3553  end;
3553    
3554  end;  end;
3555    
 function TMainForm.BarCodeValid (ACode: string): boolean;  
 var  
    I: integer;  
    SumOdd, SumEven: integer;  
    ADigit, AChecksumDigit: integer;  
 begin  
    SumOdd := 0;  
    SumEven := 0;  
    for I := 1 to (Length (ACode) - 1) do begin  
       ADigit := StrToIntDef (ACode [I], 0);  
       if (I MOD 2 = 0) then begin  
          SumEven := SumEven + ADigit;  
       end else begin  
          SumOdd := SumOdd + ADigit;  
       end; {if}  
    end; {for}  
    AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);  
    Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);  
 end; {--BarCodeValid--}  
   
 { used for EAN 8/13 }  
 function TMainForm.CheckSumModulo10(const data:string):string;  
         var i,fak,sum : Integer;  
 begin  
         sum := 0;  
         fak := Length(data);  
         for i:=1 to Length(data) do  
         begin  
                 if (fak mod 2) = 0 then  
                         sum := sum + (StrToInt(data[i])*1)  
                 else  
                         sum := sum + (StrToInt(data[i])*3);  
                 dec(fak);  
         end;  
         if (sum mod 10) = 0 then  
                 result := data+'0'  
         else  
                 result := data+IntToStr(10-(sum mod 10));  
 end;  
3556    
3557  //  //
3558  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4030  begin
4030    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
4031  end;  end;
4032    
4033  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4034  begin  begin
4035      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4036      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
4037  end;  end;
4038    
4039  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4040  const  const
4041    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4042    
# Line 4556  begin Line 4045  begin
4045      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
4046  end;  end;
4047    
4048  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4049  begin  begin
4050      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4051      begin      begin
# Line 4565  begin Line 4054  begin
4054      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
4055  end;  end;
4056    
4057  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
 var  
   S2: string;  
 begin  
   Result  := 0;  
   S2 := S + Border;  
   repeat  
     SetLength(A, Length(A) + 1);  
     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);  
     Delete(S2, 1,Length(a[Result] + Border));  
     Inc(Result);  
   until S2 = '';  
 end;  
4058    
4059  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4060  var  var
# Line 4588  var Line 4065  var
4065    I: Integer;    I: Integer;
4066    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4067    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4068    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4069    pakketyper : TStrings;    //pakketyper : TStrings;
4070      pakketyper : TDictionary<String, Integer>;
4071      tmpAntal : Integer;
4072    
4073     time, timeSamlet : TTimingHelper;
4074    
4075    
4076    antlin : Integer;    antlin : Integer;
4077    
4078    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4079    
4080    XmlFelter : TStrings;    //XmlFelter : TStrings;
4081      XmlFelter : TDictionary<String, Integer>;
4082    
4083   begin   begin
4084      XmlFelter := TStringList.Create;  
4085      pakketyper := TStringList.Create;  
4086        XmlFelter := TDictionary<String, Integer>.Create;
4087        pakketyper := TDictionary<String, Integer>.Create;
4088    
4089      linienr := 0;      linienr := 0;
4090      ListBox2.Clear;      ListBox2.Clear;
4091      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4613  var Line 4100  var
4100          StedKode := Sted;          StedKode := Sted;
4101        end;        end;
4102    
4103          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4104    
4105      if (Scanningtype = '6') then  
4106    
4107        if (Scanningtype = '7') then
4108       begin       begin
4109        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4110         end
4111        else if (Scanningtype = '6') then
4112         begin
4113          URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4114       end       end
4115      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4116       begin       begin
4117        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4118       end       end
4119      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4120       begin       begin
4121        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4122       end       end
4123      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4124       begin       begin
4125        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4126       end       end
4127      else      else
4128       begin       begin
# Line 4636  var Line 4130  var
4130       end;       end;
4131  // 20150310: slut  // 20150310: slut
4132    
4133        time := TTimingHelper.create();        //DEBUG
4134        timeSamlet := TTimingHelper.create();        //DEBUG
4135    
4136      try      try
4137      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4138  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4142  var
4142        begin        begin
4143          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4144          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4145    
4146    
4147    
4148        end;        end;
4149        on e:exception do        on e:exception do
4150        begin        begin
# Line 4655  var Line 4155  var
4155        end;        end;
4156      end;      end;
4157      try      try
4158          time.stop('HTTP Load');     //DEBUG
4159    
4160        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4161    
4162          time.stop('XML Load');     //DEBUG
4163    
4164    
4165    
4166    
4167    
4168    
4169        antlin := 0;        antlin := 0;
4170        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4175  var
4175            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4176              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4177              begin              begin
4178                 antlin := antlin + 1;                 Inc(antlin);
4179                 // 20150306: start                 // 20150306: start
4180                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4181                begin                begin
4182                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4183                   begin                   begin
4184                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4185                   end                   end
4186                   else                   else
4187                   begin                   begin
4188                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4189                   end;                   end;
4190                end;                end;
4191                 // 20150306: slut                 // 20150306: slut
4192              end;              end;
4193            end;            end;
4194            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4195                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4196                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4197                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4198                  end
4199                else                else
4200                  XmlFelter.values[Node.NodeName] := '1';                begin
4201                    XmlFelter.Add(Node.NodeName, 1);
4202                  end;
4203    
4204        end;        end;
4205        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4207  var
4207        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4208        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4209    
4210          time.stop('Antal Linier');//DEBUG
4211    
4212          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4213    
4214        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4215        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4216        begin        begin
# Line 4702  var Line 4219  var
4219        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4220    
4221        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4222    
4223    
4224        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4225            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4226            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4228  var
4228                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4229                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4230                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4231              end;              end
4232              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4233                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4234                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4235                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4236              end;              end
4237              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4238                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4239                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4240                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4241              end;              end
4242              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4243                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4244                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4245                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4246              end;              end
4247              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4248                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4249                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4250                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4251                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4252                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4253                    pakketyper.TryGetValue(pakketype, tmpAntal);
4254                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4255                  end
4256                else                else
4257                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4258              end;              end
4259              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4260                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4261                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4262                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4263                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4264                  begin                  begin
4265  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4266                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4267                    begin                    begin
4268                      stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet
4269                    end                    end
4270                    else                    else
4271                    begin                    begin
# Line 4753  var Line 4274  var
4274                    linienr := linienr + 1;                    linienr := linienr + 1;
4275                  end;                  end;
4276              end;              end;
4277    
4278    
4279              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4280              begin              begin
4281                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4291  var
4291              end;              end;
4292            end;            end;
4293        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4294    
4295          // Free up the list object  
4296          time.stop('Fyld Listbox2');//DEBUG
4297    
4298    
4299          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4300    
4301    
4302          for pakketype in pakketyper.Keys do
4303          begin
4304            pakketyper.TryGetValue(pakketype, tmpAntal);
4305            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4306          end;
4307    
4308            // Free up the dictionary object
4309        pakketyper.Free;        pakketyper.Free;
4310    
4311    
4312    
4313  //      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.');
4314        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4315        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4415  var
4415        end;        end;
4416      end;      end;
4417    
4418        time.stop('Done');//DEBUG
4419        timeSamlet.stop('SamletTid');//DEBUG
4420    
4421    
4422  end;  end;
4423    
4424  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4473  var
4473     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4474     imorgenYmd : string;     imorgenYmd : string;
4475     logFilnavn : string;     logFilnavn : string;
4476      error : Integer;     //error : Integer;
4477    
4478  begin  begin
4479    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4565  begin
4565          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4566          S := buffer;          S := buffer;
4567          SetLength(A,0);          SetLength(A,0);
4568          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4569          if (length(A) < 2) then          if (length(A) < 2) then
4570          begin          begin
4571            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4572          end;          end;
4573            if (length(A) > 1) then            if (length(A) > 1) then
4574            begin            begin
# Line 5055  begin Line 4594  begin
4594          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4595          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4596          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4597          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4598        end;        end;
4599      end;      end;
4600    end    end
# Line 5064  begin Line 4603  begin
4603        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4604        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4605        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4606        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4607    end;    end;
4608  end;  end;
4609    
# Line 5103  begin Line 4642  begin
4642          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4643          S := buffer;          S := buffer;
4644          SetLength(A,0);          SetLength(A,0);
4645          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4646          if (length(A) < 3) then          if (length(A) < 3) then
4647          begin          begin
4648            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4649          end;          end;
4650          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4651          begin          begin
# Line 5135  begin Line 4674  begin
4674          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4675          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4676          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4677          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4678        end;        end;
4679      end;      end;
4680    end    end
# Line 5144  begin Line 4683  begin
4683        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4684        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4685        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4686        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4687    end;    end;
4688  end;  end;
4689    
# Line 5202  procedure TMainForm.VisAlarmSkaerm(strMe Line 4741  procedure TMainForm.VisAlarmSkaerm(strMe
4741  begin  begin
4742    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4743    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4744    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4745    MainForm.Color := clRed;    MainForm.Color := clRed;
4746    
4747    
4748    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4749    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4750    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4751    PakkeshopNulstil.Visible := true;  
4752      if (strMessage <> '') then
4753      begin
4754        ListBox1.Items.Insert(0, strMessage);
4755        KommentarST.Caption := strMessage;
4756      end;
4757    
4758      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4759    
4760  end;  end;
4761    
4762  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4816  begin
4816    result := svar;    result := svar;
4817  end;  end;
4818    
 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;  
4819    
4820  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4821  begin  begin
# Line 5301  begin Line 4829  begin
4829    end;    end;
4830  end;  end;
4831    
4832  function TMainForm.AdobeReaderExists: Boolean;  
4833  var  //Nedarvet fra IParentForm
4834    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4835  begin  begin
4836    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4837  end;  end;
4838    
4839  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4840  type  procedure TMainForm.LogMessage( msg : string);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4841  begin  begin
4842      ListBox1.Items.Insert(0, msg);
4843      SkrivScanningLogFil(msg);
4844    end;
4845    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4846    
4847    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4848    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4849      printerTxt := 'Der er fravalgt printer i dette program';  begin
4850      ListBox1.Items.Insert(0,printerTxt);  
4851      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4852    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4853    begin    begin
4854      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4855      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4856      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4857    end    end
4858    else    else
4859    begin    begin
4860      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4861      try      PrinterstatusStaticText1.Color := clWhite;
4862        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;  
4863    end;    end;
4864  end;  end;
4865    
4866  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4867  var  function TMainForm.GetFormObject() : TForm;
4868    hSession, hfile, hRequest: hInternet;  begin
4869    dwindex,dwcodelen :dword;    Result := self;
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
4870  end;  end;
4871    
4872  // 20150310: start  //Nedarvet fra IParentForm
4873  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
4874  begin  begin
4875     with Control do    Result := XMLDocument1
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
4876  end;  end;
4877  // 20150310: slut  
4878    
4879  end.  end.
4880    

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

  ViewVC Help
Powered by ViewVC 1.1.20