/[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 2650 by torben, Thu Aug 20 20:58:26 2015 UTC revision 2902 by torben, Wed Feb 3 15:13:55 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,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
38      IdHTTP1: TIdHTTP;      IdHTTP1: TIdHTTP;
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      CheckBox1: TCheckBox;      chkSporgEfterKunde: TCheckBox;
42      KommentarST: TStaticText;      KommentarST: TStaticText;
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
# Line 36  type Line 54  type
54      Lukprogrammet1: TMenuItem;      Lukprogrammet1: TMenuItem;
55      N2: TMenuItem;      N2: TMenuItem;
56      N3: TMenuItem;      N3: TMenuItem;
57      RadioButton1: TRadioButton;      radioStorPakke: TRadioButton;
58      RadioButton2: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      Storepakker1: TMenuItem;
61      Smpakker1: TMenuItem;      Smpakker1: TMenuItem;
# Line 47  type Line 65  type
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      CheckBox2: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
85      PrinterstatusStaticText1: TStaticText;      PrinterstatusStaticText1: TStaticText;
86      Timer1: TTimer;      Timer1: TTimer;
87      CheckBox3: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      Automatisktjekkodestyring1: TMenuItem;
90      Automatiskvalg1: TMenuItem;      Automatiskvalg1: TMenuItem;
# Line 77  type Line 95  type
95      PanelValg4: TPanel;      PanelValg4: TPanel;
96      PanelValg5: TPanel;      PanelValg5: TPanel;
97      PanelValg6: TPanel;      PanelValg6: TPanel;
98        PanelValg7: TPanel;
99      Manualgenerel1: TMenuItem;      Manualgenerel1: TMenuItem;
100      StaticTextManglendePakker: TStaticText;      StaticTextManglendePakker: TStaticText;
101      PanelManglendePakker1: TPanel;      PanelManglendePakker1: TPanel;
# Line 85  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      PanelValg7: TPanel;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109    
110    
111    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
112    function getProddato() : TDate;    function getProddato() : TDate;
113    function getProddag() : String;    function getProddag() : String;
114    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
115    
116    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
117    procedure StartScreen();    procedure StartScreen();
# Line 113  type Line 124  type
124    procedure FormKeyPress(Sender: TObject; var Key: Char);    procedure FormKeyPress(Sender: TObject; var Key: Char);
125    procedure FormCreate(Sender: TObject);    procedure FormCreate(Sender: TObject);
126    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
127    procedure RadioButton1Click(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
128    procedure RadioButton2Click(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
129    procedure CheckBox1Click(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
130    procedure Pakkernormal1Click(Sender: TObject);    procedure Pakkernormal1Click(Sender: TObject);
131    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
132    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
# Line 131  type Line 142  type
142    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
143    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
144    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
145    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
146    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
147    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
148    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
149    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 140  type Line 151  type
151    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
152    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
153    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
154    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
155    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
156    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
157    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
158    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
159    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
160    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 154  type Line 165  type
165    procedure InitIndleveringskode();    procedure InitIndleveringskode();
166    
167    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
168    procedure CheckBox2Click(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
169    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
170    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
171    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
172    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
173    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
174    procedure CheckBox3Click(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
175    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure Automatisktjekkodestyring1Click(Sender: TObject);
176    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
177    procedure Automatiskvalg1Click(Sender: TObject);    procedure Automatiskvalg1Click(Sender: TObject);
# Line 172  type Line 182  type
182    procedure PanelValg4Click(Sender: TObject);    procedure PanelValg4Click(Sender: TObject);
183    procedure PanelValg5Click(Sender: TObject);    procedure PanelValg5Click(Sender: TObject);
184    procedure PanelValg6Click(Sender: TObject);    procedure PanelValg6Click(Sender: TObject);
185      procedure PanelValg7Click(Sender: TObject);
186    
187    procedure NulstilAutomatiskValg();    procedure NulstilAutomatiskValg();
188    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
189    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
190    procedure TjekkerUrls();    procedure TjekkerUrls();
191  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
192    procedure RoundCornerOf(Control: TWinControl);  
193      procedure menuIndleveringClick(Sender: TObject);
194    
195    
196    
197      //Nedarvet fra IParentForm
198      procedure LogMessage( msg : string);
199      procedure SetPrinterstatusText( txt: string; alert: boolean);
200      function GetFormObject() : TForm;
201    
     procedure PanelValg7Click(Sender: TObject);  
 // 20150310: slut  
202    
203    private    private
204      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 188  type Line 206  type
206      SkrivLog : String;      SkrivLog : String;
207      Sted : String;      Sted : String;
208      StedNavn : String;      StedNavn : String;
209      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
210  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
211                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
212    
213      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
214  // 20150330: slut  
215      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
216      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
217      ScanTjekkode : String;      ScanTjekkode : String;
218      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
219      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;  
220      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
221      LabelType : integer;            FarveIndlevering : String;
222    
223        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
224              TitelIndlevering : String;
225    
226      AlarmLyd : String;      AlarmLyd : String;
227      ScannetOkLyd : String;      ScannetOkLyd : String;
228      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
229  // 20150317: start  
230      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
231  // 20150317: slut  
232      PrinterNavn : String;      PrinterNavn : String;
233      TjekPrinter : String;      TjekPrinter : String;
234      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
235      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
236      BladhusSted : Integer;      BladhusSted : Integer;
237      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 242  type Line 244  type
244      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
245      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
246      TjekUrls : String;      TjekUrls : String;
247        Config : TConfiguration;
248    
249    
250            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
251    
252      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
253      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
254      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
255      procedure CheckCode();      procedure CheckCode();
256      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 255  type Line 259  type
259      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
260      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
261      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
262        procedure VisAlarmSkaerm(strMessage: string);
263    
264    public    public
265      { Public declarations }      { Public declarations }
266    end;    end;
267    
268    
269  var  var
270    MainForm: TMainForm;    MainForm: TMainForm;
271    
# Line 273  var Line 279  var
279  implementation  implementation
280  {$R *.dfm}  {$R *.dfm}
281    
282  function TMainForm.TColorToHex(Color : TColor) : string;  
283  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
284    
285  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
286  begin  begin
287    
 // 20150309: startr  
288      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
289  // 20150309: slut  
290    
291      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
292      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 340  begin Line 330  begin
330        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
331      end;      end;
332    
333      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
334    
335      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
336      begin      begin
# Line 368  begin Line 358  begin
358        else if (Sted = 'BR') then        else if (Sted = 'BR') then
359          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
360        else if (Sted = 'BK') then        else if (Sted = 'BK') then
361          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
362          else if (Sted = 'TK') then
363            begin StedNavn := 'BK/Trykkompagniet: '; end
364        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
365          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
366        else if (Sted = '1') then        else if (Sted = '1') then
367          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
368        else if (Sted = '2') then        else if (Sted = '2') then
# Line 394  begin Line 386  begin
386    
387      StartScreen();      StartScreen();
388      MainForm.Caption := Titel;      MainForm.Caption := Titel;
389      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
390      MainForm.Farve := Farve;      MainForm.Farve := Farve;
391      MainForm.Titel := Titel;      MainForm.Titel := Titel;
392      MainForm.Url := Url;      MainForm.Url := Url;
# Line 409  begin Line 401  begin
401      else      else
402        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
403    
404      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
405      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
406      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
407    
408      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
409      begin      begin
410        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
411        begin        begin
412          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
413          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
414          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
415        end        end
416        else        else
417        begin        begin
418          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
419          CheckBox3.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning          chkScanTjekkode.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning
420          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
421        end;        end;
422      end;      end;
423    
424      if Automatisktjekkodestyring1.Checked then      if Automatisktjekkodestyring1.Checked then
425      begin      begin
426        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
427        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
428      end;      end;
429    
# Line 454  begin Line 446  begin
446          end          end
447          else          else
448          begin          begin
449            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
450          end;          end;
451          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
452        end        end
453        else        else
454        begin        begin
455          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
456          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
457        end;        end;
458      end;      end;
459    
460    
461  end;  end;
462    
463  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 472  begin Line 465  begin
465    
466    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
467    begin    begin
468       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
469    end    end
470    else    else
471    begin    begin
472       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
473    end;    end;
474    
475  end;  end;
# Line 490  procedure TMainForm.Automatisktjekkodest Line 483  procedure TMainForm.Automatisktjekkodest
483  begin  begin
484    if Automatisktjekkodestyring1.Checked then    if Automatisktjekkodestyring1.Checked then
485    begin    begin
486       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
487       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
488    end    end
489    else    else
490    begin    begin
491       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
492       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
493    end;    end;
494    
# Line 503  end; Line 496  end;
496    
497  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
498  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
499  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
500  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
501       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
502       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
503       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
504  end;  end;
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
512    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
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  // 20150306: start  
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524  // 20150306: slut  
525  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
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
534    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 541  begin
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 579  begin Line 561  begin
561      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      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');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
563      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
564  // 20150330: start  
565      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
566  // 20150330: slut  
567      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
568      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
569      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
570      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
571      LabelType := ReadInteger('Settings','LabelType',1);  
572    
573        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
574        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
575        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
576    
577    
578    
579    
580      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
581      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
582      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 587  begin
587      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
588      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
589      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
590    
591      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
592      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
593    
594        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
595        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
596    
597    
598      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
599      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
600      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 604  begin
604      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
605      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
606      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
607  // 20150317: start  
608      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
609  // 20150317: slut  
610      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
611      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
612      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
613    
614      if (SkrivLog = '1') then      if (SkrivLog = '1') then
615      begin      begin
616        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
617        try        try
618          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
619          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
620          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
621          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
622          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
623          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 635  begin
635        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
636      end;      end;
637    
638      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
639    
640      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
641      begin      begin
642        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
643        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
644      end      end
645      else      else
646      begin      begin
647        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
648        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
649      end;      end;
650    
651      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
652      begin      begin
653        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
654        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
655      end      end
656      else      else
657      begin      begin
658        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
659        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
660      end;      end;
661    
662      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
663      begin      begin
664        Automatisktjekkodestyring1.Checked := true;        Automatisktjekkodestyring1.Checked := true;
665        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
666        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
667      end;      end;
668    
# Line 760  begin Line 688  begin
688      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
689      // *************************** //      // *************************** //
690    
691    {$IfDef STED_BK}
692        SpecialVersionSted := 'BK';
693    {$EndIf}
694    {$IfDef STED_TK}
695        SpecialVersionSted := 'TK';// BK-Trykkompagniet
696    {$EndIf}
697    {$IfDef STED_DBK}
698        SpecialVersionSted := 'DBK';
699    {$EndIf}
700    {$IfDef STED_FD}
701        SpecialVersionSted := 'FD';
702    {$EndIf}
703    {$IfDef STED_NS}
704        SpecialVersionSted := 'NS';
705    {$EndIf}
706    
707    
708      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
709      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
710      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 775  begin Line 720  begin
720      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
721      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
722    
 // 20150313: start  
723      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
724      begin      begin
725         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 786  begin Line 730  begin
730         SpecialVersionSted := '03';         SpecialVersionSted := '03';
731         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
732      end;      end;
 // 20150313: slut  
733    
734      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
735      begin      begin
736        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
737        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 797  begin Line 740  begin
740        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
741        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
742        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
743        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
744        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
745    
746       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
747        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
748        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
749        Returpakkerfrapakkeshop1.Enabled := false;  
750          //Returpakkerfrapakkeshop1.Enabled := false;
751    
752        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
753        begin        begin
754           Scanningtype := '1';           Scanningtype := '1';
# Line 826  begin Line 772  begin
772        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
773        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
774        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
775    
776    
777       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
778        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
779        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
780  // 20150317: start  
781        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
782        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
783  // 20150317: slut  
784        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
785        begin        begin
786           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 810  begin
810        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
811        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
812        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
813          PanelValg7.Enabled := false;
814          PanelValg7.Font.Color := clInactiveCaption;
815       // 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
816  // 20150317: start  
817        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
818  // 20150317: slut  
819        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
820        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
821        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 907  begin
907             RutenummerST.Caption := '';             RutenummerST.Caption := '';
908             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
909             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
910             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
911             exit;             exit;
912          end;          end;
913      end      end
# Line 1000  begin Line 950  begin
950      if Pakketype = '1' then      if Pakketype = '1' then
951      begin      begin
952        Storepakker1.Checked := true;        Storepakker1.Checked := true;
953        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
954      end      end
955      else      else
956      begin      begin
957        Smpakker1.Checked := true;        Smpakker1.Checked := true;
958        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
959      end;      end;
960    
961      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 995  begin
995        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
996      end;      end;
997    
998  // 20150317: start  
999      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
1000      begin      begin
1001        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
1002      end;      end;
 // 20150317: slut  
1003    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1004    
1005      CheckPrintQue('Opstart');  
1006    
1007        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1008        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1009    
1010    finally    finally
1011      Free;      Free;
# Line 1083  begin Line 1029  begin
1029          InitBladhus();          InitBladhus();
1030        end;        end;
1031    
1032  // 20150310: start  
1033      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1034      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1035    
# Line 1124  begin Line 1070  begin
1070      end;      end;
1071    
1072      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1073    
1074      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1075      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1076    
1077  end;  end;
1078    
# Line 1145  var Line 1090  var
1090    BoghandlerNavn : String;    BoghandlerNavn : String;
1091    Koreliste : String;    Koreliste : String;
1092    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1093    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1094    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1095    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1114  begin
1114      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1115      numberString := ClipboardData;      numberString := ClipboardData;
1116      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1117  // 20150311: start  
1118  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1119      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1120      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1121      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1185  begin Line 1129  begin
1129      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1130      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1131      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1132        or (NumberString = 'DAO PAKKESHOP')
1133        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1134            or (LowerCase(NumberString) = 'for stor daodirekte' )
1135      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1136  // 20150311: slut  
1137      begin      begin
1138        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1139        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1195  begin Line 1142  begin
1142      begin      begin
1143        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1144      end;      end;
1145    end;    end;  // Slut ctrl-v
1146    
1147    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1148    begin    begin
 // 20150306: start  
1149      if (Length(Trim(Stregkode)) = 0) then      if (Length(Trim(Stregkode)) = 0) then
1150      begin      begin
1151        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1152        List1msg := 'Der skal scannes en stregkode...';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
1153        exit;        exit;
1154      end;      end;
 // 20150306: slut  
1155    
 // 20150311: start  
1156      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1157      begin      begin
1158         PakkeshopNulstil.Click();         btnNulstil.Click();
1159         exit;         exit;
1160      end;      end;
1161    
1162      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1163      begin      begin
1164         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1165  // 20150312: start  
 //       List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        List1msg := 'HUSK at klikke Nulstil før ny scanning...';  
 // 20150312: slut  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
 // 20150312: start  
        Stregkode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1166         exit;         exit;
1167      end;      end;
1168    
1169      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1170      begin      begin
1171         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1172         begin         begin
1173            InitLillePakke();            InitLillePakke();
1174         end         end
1175         else         else
1176         begin         begin
1177          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1178         end;         end;
1179         Stregkode := '';         Stregkode := '';
1180         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1183  begin
1183    
1184      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1185      begin      begin
1186         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1187         begin         begin
1188            InitStorPakke();            InitStorPakke();
1189         end         end
1190         else         else
1191         begin         begin
1192          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1193         end;         end;
1194         Stregkode := '';         Stregkode := '';
1195         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1196         exit;         exit;
1197      end;      end;
1198    
1199        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1200        begin
1201          if chkForstorTilDirekte.Enabled then
1202          begin
1203            chkForstorTilDirekte.Checked := true;
1204          end
1205          else
1206          begin
1207             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1208          end;
1209          Stregkode := '';
1210          StregkodeST.Caption := StregKode;
1211          exit;
1212        end;
1213    
1214    
1215      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1216      begin      begin
1217         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1218         begin         begin
1219           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1220           begin           begin
1221            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1222           end           end
1223           else           else
1224           begin           begin
1225            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1226           end;           end;
1227         end         end
1228         else         else
1229         begin         begin
1230          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1231         end;         end;
1232         Stregkode := '';         Stregkode := '';
1233         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1327  begin Line 1236  begin
1236    
1237      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1238      begin      begin
1239        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1240        begin        begin
1241           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1242           begin           begin
1243            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1244           end           end
1245           else           else
1246           begin           begin
1247            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1248           end;           end;
1249        end        end
1250        else        else
1251        begin        begin
1252          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1253        end;        end;
1254        Stregkode := '';        Stregkode := '';
1255        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  begin Line 1264  begin
1264         end         end
1265         else         else
1266         begin         begin
1267          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1268         end;         end;
1269         Stregkode := '';         Stregkode := '';
1270         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1271         exit;         exit;
1272      end;      end;
1273    
1274  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1275      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
 // 20150323: slut  
1276      begin      begin
1277         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1278         begin         begin
# Line 1395  begin Line 1280  begin
1280         end         end
1281         else         else
1282         begin         begin
1283          //ShowMessage('Ændring ikke tilladt');          VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1284         end;         end;
1285         Stregkode := '';         Stregkode := '';
1286         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1295  begin
1295         end         end
1296         else         else
1297         begin         begin
1298          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1299         end;         end;
1300         Stregkode := '';         Stregkode := '';
1301         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1310  begin
1310         end         end
1311         else         else
1312         begin         begin
1313          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1314         end;         end;
1315         Stregkode := '';         Stregkode := '';
1316         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1325  begin
1325         end         end
1326         else         else
1327         begin         begin
1328          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1329         end;         end;
1330         Stregkode := '';         Stregkode := '';
1331         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1340  begin
1340         end         end
1341         else         else
1342         begin         begin
1343          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1344         end;         end;
1345         Stregkode := '';         Stregkode := '';
1346         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1355  begin
1355         end         end
1356         else         else
1357         begin         begin
1358          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1359         end;         end;
1360         Stregkode := '';         Stregkode := '';
1361         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1362         exit;         exit;
1363      end;      end;
1364  // 20150311: slut  
1365    
1366      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1367      begin      begin
# Line 1590  begin Line 1409  begin
1409        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1410      end;      end;
1411    
1412      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1413          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1414          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1415          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1416          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1417          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1418      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1419         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1420         List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
 // 20150316: start  
        RuteNummerST.Caption := '';  
        BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
        KommentarST.Caption := List1msg;  
        PakkeshopNulstil.Visible := true;  
 // 20150311: start  
        StregKode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1421         exit;         exit;
1422      end;      end;
1423    
1424      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1425      begin      begin
1426        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1427        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1626  begin Line 1433  begin
1433              end;              end;
1434            end            end
1435        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1436  (*  
       else if Pakketype = 'NatXpressReturDAO' then  
           begin  
             if Scanningtype <> '2' then  
             begin  
               Scanningtype := '2';  
               InitReturFraDao();  
             end;  
           end  
       else if Pakketype = 'NatXpressReturKunde' then  
           begin  
             if Scanningtype <> '3' then  
             begin  
               Scanningtype := '3';  
               InitReturFraKunde();  
             end;  
           end  
 *)  
1437        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1438            begin            begin
1439              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1661  begin Line 1451  begin
1451              end;              end;
1452            end            end
1453        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1454  (*  
       else if Pakketype = 'PakkeshopRetur' then  
           begin  
             if Scanningtype <> '6' then  
             begin  
               Scanningtype := '6';  
               InitReturFraPakkeshop();  
             end;  
           end  
 *)  
1455        else        else
1456            begin   // Her skal komme en alarm og rød skærm            begin
1457               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1458               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1459               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1460               MainForm.Color := clRed;  
 // 20150316: start  
              RuteNummerST.Caption := '';  
              BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
              KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
 // 20150311: start  
              StregKode := '';  
              StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1461               exit;               exit;
1462            end;            end;
1463        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1464      end      end
1465      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1466      begin      begin
1467        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1468        List1msg := 'Pakkenummer ikke gyldigt (for kort)';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
 // 20150312: start  
       StregKode := '';  
       StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1469        exit;        exit;
1470      end;      end;
1471    
# Line 1714  begin Line 1473  begin
1473      begin      begin
1474        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1475        begin        begin
         PlaySound(PWideChar(AlarmLyd));  
         List1msg := 'Pakke findes som pakketype: ' + Pakketype;  
         ListBox1.Items.Insert(0,List1Msg);  
         MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
         KommentarST.Caption := List1msg;  
         PakkeshopNulstil.Visible := true;  
 // 20150312: start  
         StregKode := '';  
         StregkodeST.Caption := StregKode;  
 // 20150312: slut  
         exit;  
       end;  
     end;  
   
 // 20150311: start  
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
1476    
1477      if PakkeshopNulstil.Visible then          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
     begin  
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
     end;  
1478    
1479      if StregKode = 'Lille pakke' then          exit;
1480      begin        end;
        InitLillePakke();  
        exit;  
     end;  
   
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
   
     if StregKode = 'Indtast kundenummer' then  
     begin  
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
1481      end;      end;
1482    
     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then  
     begin  
        if (CheckBox3.State = cbChecked) then  
        begin  
         CheckBox3.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox3.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
 *)  
 // 20150311: slut  
1483    
1484    
1485      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1486      begin      begin
1487        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1488        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1489        begin        begin
1490          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1491          begin          begin
1492              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1493              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1494          end;          end;
1495        end;        end;
# Line 1812  begin Line 1501  begin
1501             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1502             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1503             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1504             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1505             Stregkode := '';             Stregkode := '';
1506             InitScreen();             InitScreen();
1507        end        end
# Line 1824  begin Line 1513  begin
1513             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1514             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1515             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1516             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1517             Stregkode := '';             Stregkode := '';
1518             InitScreen();             InitScreen();
1519        end        end
# Line 1836  begin Line 1525  begin
1525              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1526              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1527              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1528  // 20150317: start  
1529              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1530  // 20150317: slut  
1531             end             end
1532            else            else
1533             begin             begin
1534                List1msg := 'Du skal scanne en stregkode';                VisAlarmSkaerm( 'Du skal scanne en stregkode' );
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
1535             end;             end;
1536            Stregkode := '';            Stregkode := '';
1537            InitScreen();            InitScreen();
# Line 1861  begin Line 1544  begin
1544             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1545             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1546             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1547                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1548             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1549                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1550             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1551           end           end
1552          else          else
1553           begin           begin
1554                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1555                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1556                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1557                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1558                KommentarST.Caption := List1msg;                  
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
 // 20150323: start  
1559                StregKode := '';                StregKode := '';
1560                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1561  // 20150323: slut  
1562                exit;                exit;
1563           end;           end;
1564          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1567  begin
1567    
1568      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1569      begin      begin
1570    
1571         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1572            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1573         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1903  begin Line 1580  begin
1580            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1581            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1582            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1583               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1584               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1585              exit;              exit;
1586            end;            end;
1587            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1601  begin
1601              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1602              begin              begin
1603                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1604                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1605                MainForm.Color := clRed;                MainForm.Color := clRed;
1606              end;              end;
1607           end;           end;
1608            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1609            begin            begin
1610              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1611              if Storepakker1.Checked then              if Storepakker1.Checked then
1612              begin              begin
1613                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1616  begin
1616              begin              begin
1617                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1618              end;              end;
1619              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1620            end            end
1621            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1622            begin            begin
1623              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1624              if Storepakker1.Checked then              if Storepakker1.Checked then
1625              begin              begin
1626                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1629  begin
1629              begin              begin
1630                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1631              end;              end;
1632              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1633            end            end
1634            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1635            begin            begin
1636              List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';              VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
             ListBox1.Items.Insert(0,List1Msg);  
             MainForm.Color := clRed;  
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1637            end            end
1638            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1639            begin            begin
1640            end            end
1641            else            else
1642            begin            begin
1643              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1644            end;            end;
1645           if not PakkeshopNulstil.Visible then  
1646             if not btnNulstil.Visible then
1647            begin            begin
1648  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1649              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1650              begin              begin
1651                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1659  begin
1659                InitLillePakke();                InitLillePakke();
1660              end;              end;
1661            end;            end;
1662  // 20150310: start  
1663            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1664  // 20150310: slut  
1665            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1666            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1667            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1692  begin
1692    
1693    Key := #0;    Key := #0;
1694    
1695  end;  
1696    
1697    
1698    
1699    
1700    end; //End of OnKeyPress
1701    
1702    
1703    
1704  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1705  const  const
# Line 2063  end; Line 1736  end;
1736    
1737  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1738  var  var
 // 20150309: start  
 //  i:integer;  
1739    i : Integer;    i : Integer;
1740    wrkAntal : String;    wrkAntal : String;
1741    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1742  // 20150309: slut  
1743    
1744  begin  begin
1745      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked or menuIndlevering.Checked then
1746      begin      begin
1747        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1748          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1749          begin          begin
1750  // 20150309: start  
1751            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1752            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1753            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1754            begin            begin
1755              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1756              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1757  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1758  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1759  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1760              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1761            end            end
1762            else     // kun idag            else     // kun idag
1763            begin            begin
# Line 2112  begin Line 1783  begin
1783            begin            begin
1784              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1785            end;            end;
 // 20150309: slut  
1786    
 // 20150310: start  
1787            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1788            begin            begin
1789              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1861  begin
1861                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1862              end;              end;
1863            end;            end;
1864  // 20150310: slut  
1865            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1866          end;          end;
1867      end;      end;
# Line 2219  begin Line 1888  begin
1888  end;  end;
1889    
1890  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1891    
1892  begin  begin
1893    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1897  begin
1897    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1898    ListBox1.Visible := true;    ListBox1.Visible := true;
1899  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1900  // 20150317: start  
 (*  
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
1901    if Budlevering1.Checked then    if Budlevering1.Checked then
1902    begin    begin
1903      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 1910  begin
1910      01 :      01 :
1911            begin;      // NS            begin;      // NS
1912              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1913              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1914              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1915              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1916              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1917              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 1924  begin
1924              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1925              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1926              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1927              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1928              RadioButton2.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              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 1937  begin
1937              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1938             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1939              begin              begin
1940                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1941              end              end
1942              else              else
1943              begin              begin
1944                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1945              end;              end;
1946              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1947              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1948              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1949              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1950              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 1962  begin
1962              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1963              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1964              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1965              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1966              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1967              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1968              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1969              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1970              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1971            end;            end;
# Line 2354  var Line 1981  var
1981    URLStr : String;    URLStr : String;
1982    pakkestorrelse : String;    pakkestorrelse : String;
1983    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1984    
1985      PakkeshopLabel: TPakkeshopLabel;
1986  begin  begin
1987    if RadioButton1.Checked then    if radioStorPakke.Checked then
1988    begin    begin
1989      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
1990    end;    end;
1991    if RadioButton2.Checked then    if radioLillePakke.Checked then
1992    begin    begin
1993      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1994    end;    end;
1995    
1996    
1997    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
1998    begin    begin
1999       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 2022  begin
2022    begin    begin
2023       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2024    end    end
2025      else if menuIndlevering.Checked then
2026      begin
2027        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2028      end
2029    else    else
2030    begin    begin
2031      exit;      exit;
2032    end;    end;
2033    
2034      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2035      begin
2036        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2037      end;
2038    
2039    try    try
2040      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2041      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2416  begin Line 2057  begin
2057          end;          end;
2058      end;      end;
2059    end;    end;
2060    
2061    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2062    try    try
2063      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2425  begin Line 2067  begin
2067        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2068        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2069        PrintNyLabel := False;        PrintNyLabel := False;
2070  // 20150310: start  
2071        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2072        begin        begin
 // 20150310: slut  
2073          try          try
2074            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2075          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2079  begin
2079          begin          begin
2080            PrintNyLabel := True;            PrintNyLabel := True;
2081          end;          end;
 // 20150310: start  
2082        end;        end;
 // 20150310: slut  
2083       end       end
2084        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2085        begin
2086    
2087    
2088    
2089    
2090         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2091         if (Kommentar = 'Ok') then
2092         begin
2093           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2094           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2095           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2096           Stregkode := PakkeshopLabel.Stregkode;
2097    
2098           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2099           chkForstorTilDirekte.Checked := false;
2100    
2101         end;
2102    
2103    
2104        end
2105      else      else
2106       begin       begin
2107        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2134  begin
2134          PrintNyLabel := True;          PrintNyLabel := True;
2135        end;        end;
2136      end;      end;
2137    
2138    
2139      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2140      begin      begin
2141        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2176  begin
2176    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2177      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2178    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2179    if RadioButton1.Checked then    if radioStorPakke.Checked then
2180    begin    begin
2181      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2182    end;    end;
2183    if RadioButton2.Checked then    if radioLillePakke.Checked then
2184    begin    begin
2185      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2186    end;    end;
# Line 2540  begin Line 2202  begin
2202    if Budlevering1.Checked then    if Budlevering1.Checked then
2203    begin    begin
2204       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2205        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2206        begin        begin
2207          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2208        end;        end;
2209        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2210        begin        begin
2211          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2212        end;        end;
# Line 2566  begin Line 2228  begin
2228        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2229      end;      end;
2230    end;    end;
2231      if menuIndlevering.Checked then
2232      begin
2233        List1Msg := Stregkode;
2234      end;
2235    
2236    
2237    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2238    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2239    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2240  end;  end;
2241    
2242  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2243  begin  begin
2244    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2245    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2256  pakkeForkertSted : Integer;
2256    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2257  begin  begin
2258    if Budlevering1.Checked then    if Budlevering1.Checked then
2259       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2260    
2261    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2262    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2269  begin
2269    end;    end;
2270    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2271    
2272  // 20150306: start  
2273  //  if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then    if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2274    if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then  
 // 20150306: slut  
2275    begin    begin
2276        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2277        begin        begin
# Line 2631  begin Line 2298  begin
2298       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2299       begin       begin
2300          PrintNyLabel := false;          PrintNyLabel := false;
2301  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2302          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2303          MainForm.Color := clRed;          MainForm.Color := clRed;
2304          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2305  // 20150306: slut  
2306       end       end
2307       else       else
2308       begin       begin
# Line 2646  begin Line 2312  begin
2312            PrintNyLabel := true;            PrintNyLabel := true;
2313            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2314            nyFarve := Farve;            nyFarve := Farve;
2315            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2316            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2317            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2318            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2319            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2320            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2321  // 20150213: start  
2322            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2323            begin            begin
2324               PrintNyLabel := false;               PrintNyLabel := false;
2325            end;            end;
2326  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2327            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
2328            begin            begin
2329              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2330              MainForm.Color := clRed;              MainForm.Color := clRed;
2331              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2332            end;            end;
2333  // 20150306: slut  
2334         end;         end;
2335         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2336         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2349  begin
2349            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2350            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2351            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2352  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2353            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
2354            begin            begin
2355              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2356              MainForm.Color := clRed;              MainForm.Color := clRed;
2357              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2358            end;            end;
2359  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2360         end;         end;
2361       end;       end;
2362    
# Line 2715  begin Line 2374  begin
2374               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2375  // 20150304: slut  // 20150304: slut
2376                begin                begin
2377                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2378                end;                end;
2379              end;              end;
2380        01 :  begin;        01 :  begin;
2381               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2382                    // 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
2383                    // 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')
2384                begin                begin
2385                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2386                end;                end;
2387              end;              end;
2388        02 :  begin;        02 :  begin;
2389                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
2390                begin                begin
2391                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2392                end;                end;
2393              end;              end;
2394        03 :  begin;        03 :  begin;
2395               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2396                    // 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
2397                    // 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')
2398               begin               begin
2399                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2400               end;               end;
2401              end;              end;
2402        04 :  begin;        04 :  begin;
2403                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
2404                begin                begin
2405                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2406                end;                end;
2407              end;              end;
2408        else        else
# Line 2757  begin Line 2416  begin
2416      exit;      exit;
2417    end;    end;
2418    
2419    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    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
2420    begin    begin
2421    end    end
2422    else    else
2423    begin    begin
2424      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or CheckBox2.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2425      begin      begin
2426        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2427        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2428        begin        begin
2429          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2430        end        end
# Line 2779  begin Line 2438  begin
2438        end;        end;
2439        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2440        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2441        with Printer do  
2442        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2443          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;  
2444      end;      end;
2445    end;    end;
2446    
2447  end;  end;
2448    
 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]);  
 // 20150304: start  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
 // 20150304: slut  
       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;  
2449    
2450    
2451  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2452  begin  begin
2453      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2454      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2455  end;  end;
2456    
2457  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2458  begin  begin
2459      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2460      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2461  end;  end;
2462    
2463    
2464  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2465  begin  begin
2466    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2467    begin    begin
2468       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2469    end    end
# Line 2875  begin Line 2474  begin
2474  end;  end;
2475    
2476    
2477  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2478  begin  begin
2479    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2480    begin    begin
2481       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2482    end    end
# Line 2888  begin Line 2487  begin
2487    
2488  end;  end;
2489    
2490  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2491  begin  begin
2492    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2493    begin    begin
2494       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2495    end    end
# Line 2912  begin Line 2511  begin
2511      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2512      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2513      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2514  // 20150317: start  
2515      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2516      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2517      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2518      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2519      begin      begin
2520        // 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)
2521        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2535  begin
2535    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2536    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...');
2537    
2538          // Tjekker urls    try
2539          logTekst := 'Tjekker urls.';      // Tjekker urls
2540          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2541          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2542        SkrivScanningLogFil(logTekst);
2543    
         // 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;  
2544    
         // 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;  
2545    
2546          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2547          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2548          begin      begin
2549            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2550            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;  
2551    
2552          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2553          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2554          begin      begin
2555            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2556            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;  
2557    
2558          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2559          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2560          begin      begin
2561            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2562            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;  
2563    
2564          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2565          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2566          begin      begin
2567            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2568            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;  
2569    
2570          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2571          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2572          or (PanelValg4.Enabled = true) then      begin
2573          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2574            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;  
2575    
2576          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2577          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2578          begin      begin
2579            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2580            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;  
2581    
2582          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2583          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2584          begin      begin
2585            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2586            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;  
2587    
2588          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2589          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2590          begin      begin
2591            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2592            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;  
2593    
2594  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2595          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2596          if PanelValg5.Enabled = true then      begin
2597          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2598            if CheckUrl(UrlEKLoverforselPakkeshop) then      end;
           begin  
             logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;  
             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;  
 // 20150330: slut  
2599    
2600          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2601          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2602          begin      begin
2603            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2604            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2605          end      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;  
2606    
2607          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2608          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2609          begin      begin
2610            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2611            SkrivScanningLogFil(logTekst);      end;
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2612    
         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;  
2613    
2614        // Tjekker UrlEKLoverforselPakkeshop
2615        if PanelValg5.Enabled = true then
2616        begin
2617          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2618        end;
2619    
2620    
2621        // Tjekker UrlFindPakketype
2622        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2623    
2624        // Tjekker UrlSendPrograminfo
2625        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2626    
2627    
2628    
2629        logTekst := 'urls er ok';
2630        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2631        SkrivScanningLogFil(logTekst);
2632    
2633      Except
2634        TjekUrls := '-';   // markerer at der var fejl
2635    
2636      end;
2637  end;  end;
2638    
2639  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2640  var  const
2641     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2642  begin  begin
2643     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2644     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2645     Result := SystemTimeToDateTime(SystemTime) ;    begin
2646        logTekst := UrlNavn + ' accepteret: ' + Url;
2647        SkrivScanningLogFil(logTekst);
2648      end
2649      else
2650      begin
2651        inc(urlFejl);   // Optæller antal fejl
2652        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2653        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2654        if TjekUrls = '1' then
2655        begin
2656          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2657        end;
2658    
2659        SkrivScanningLogFil(logTekst);
2660    
2661        if TjekUrls = '1' then
2662        begin
2663          ShowMessage(logTekst);
2664          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2665          Application.Terminate;
2666    
2667          raise Exception.Create('UrlFejl');
2668    
2669        end;
2670      end;
2671    
2672  end;  end;
2673    
2674    
2675    
2676  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2677  var  var
2678    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2689  begin
2689      repeat      repeat
2690        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2691        begin        begin
2692    
2693          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2694          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2695          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2696          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2697          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2698          // (æ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 3381  begin Line 2729  begin
2729    end;    end;
2730  end;  end;
2731    
2732  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2733  begin  begin
2734    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2735    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2736    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2737    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2738    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2739    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2751  begin
2751  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2752    if Farve <> '' then    if Farve <> '' then
2753    begin    begin
2754       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  
2755    end;    end;
2756    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2757    begin    begin
# Line 3477  end; Line 2815  end;
2815    
2816  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2817  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;  
 *)  
2818  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2819  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2820       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2821       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2822       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2823  // 20150311: slut  
2824    
2825    
2826  end;  end;
2827    
2828  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2839  var
2839    BoghandlerNavn : String;    BoghandlerNavn : String;
2840    Koreliste : String;    Koreliste : String;
2841    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2842    SmsKode : String;    SmsKode : String;
2843    DBKbane : String;    DBKbane : String;
2844    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2860  begin
2860      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2861      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2862      MainForm.Color := clRed;      MainForm.Color := clRed;
2863      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2864    end    end
2865    else    else
2866    begin    begin
2867      Falsk := False;      Falsk := False;
2868      Sand := True;  
2869      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2870      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2871      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2885  var
2885    BoghandlerNavn : String;    BoghandlerNavn : String;
2886    Koreliste : String;    Koreliste : String;
2887    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2888    SmsKode : String;    SmsKode : String;
2889    DBKbane : String;    DBKbane : String;
2890    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2893  begin
2893    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2894    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2895    Falsk := False;    Falsk := False;
   Sand := True;  
2896    
2897    if (Printer.Printers.Count = 0) then  
2898      if (LabelPrint.GetPrinterCount() = 0) then
2899    begin    begin
2900      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2901    end    end
# Line 3587  begin Line 2910  begin
2910      DBKbane := '999';      DBKbane := '999';
2911      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2912      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2913      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2914    end;    end;
2915    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2916  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 2919  procedure TMainForm.Timer1Timer(Sender:
2919  begin  begin
2920    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2921    begin    begin
2922      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2923    end    end
2924    else    else
2925    begin    begin
# Line 3605  begin Line 2928  begin
2928    end;    end;
2929  end;  end;
2930    
2931  {  
  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;  
2932    
2933  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2934  const  const
# Line 3643  var Line 2937  var
2937   tekst, filversion : String;   tekst, filversion : String;
2938  begin  begin
2939    
2940    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2941    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';
2942    
2943    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 2959  begin
2959          end          end
2960          else          else
2961          begin          begin
2962            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2963          end;          end;
2964      end      end
2965      else      else
2966      begin      begin
2967        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2968      end;      end;
2969    end;    end;
2970    
# Line 3738  begin Line 3032  begin
3032    
3033    if FileExists(fileName) then    if FileExists(fileName) then
3034    begin    begin
3035      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3036      begin      begin
3037        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3038        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3056  begin
3056    
3057    if FileExists(fileName) then    if FileExists(fileName) then
3058    begin    begin
3059      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3060      begin      begin
3061        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3062        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3063      end      end
3064      else      else
3065      begin      begin
3066        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3067      end;      end;
3068    end    end
3069    else    else
# Line 3778  begin Line 3072  begin
3072    end;    end;
3073  end;  end;
3074    
3075    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3076    begin
3077      Scanningtype := '7';
3078      NulstilAutomatiskValg();
3079      InitIndleveringskode();
3080    end;
3081    
3082  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3083  begin  begin
3084    
3085    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3086    begin    begin
3087       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3088    end    end
3089    else    else
3090    begin    begin
3091       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3092    end;    end;
3093    
3094    
# Line 3810  end; Line 3111  end;
3111  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3112  begin  begin
3113        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3114        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3115        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3116        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3117        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3118        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3119        CheckBox1.Enabled := true;  
3120        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3121        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3122        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3123        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3124        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3125        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3126        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3127        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3128        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3129        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3130        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3131        ListBox1.Visible := true;        ListBox1.Visible := true;
3132        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3133        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3134        InitLillePakke();        InitLillePakke();
3135        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3136    
3137          chkForstorTilDirekte.Checked := false;
3138          chkForstorTilDirekte.Enabled := false;
3139    
3140        if BladhusSted = 0 then        if BladhusSted = 0 then
3141        begin        begin
3142          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3148  procedure TMainForm.InitReturFraDao();
3148  begin  begin
3149        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3150        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3151        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3152        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3153        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3154        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3155        CheckBox1.Enabled := false;  
3156        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3157        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3158        CheckBox2.Checked := false;  
3159        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3160        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3161        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3162        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3163        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3164        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3165        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3166        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3167        ListBox1.Visible := true;        ListBox1.Visible := true;
3168        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3169        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3170        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3171    
3172          chkForstorTilDirekte.Checked := false;
3173          chkForstorTilDirekte.Enabled := false;
3174    
3175        InitLillePakke();        InitLillePakke();
3176  end;  end;
3177    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3179  procedure TMainForm.InitReturFraKunde();
3179  begin  begin
3180        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3181        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3182        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3183        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3184        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3185        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3186        CheckBox1.Enabled := false;  
3187        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3188        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3189        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3190        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3191        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3192        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3193        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3194        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3195        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3196        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3197        ListBox1.Visible := true;        ListBox1.Visible := true;
3198        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3199        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3200        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3201    
3202          chkForstorTilDirekte.Checked := false;
3203          chkForstorTilDirekte.Enabled := false;
3204    
3205        InitLillePakke();        InitLillePakke();
3206  end;  end;
3207    
# Line 3897  procedure TMainForm.InitDirektelevering( Line 3209  procedure TMainForm.InitDirektelevering(
3209  begin  begin
3210        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3211        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3212        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3213        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3214        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3215        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3216        CheckBox1.Enabled := false;  
3217        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3218        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3219        CheckBox2.Checked := false;  
3220        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3221        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3222        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3223        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3224        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3225        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3226        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3227        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3228        ListBox1.Visible := true;        ListBox1.Visible := true;
3229        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3230        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3231        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3232        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3233        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3234        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3235        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3236    
3237          chkForstorTilDirekte.Checked := false;
3238          chkForstorTilDirekte.Enabled := true;
3239    
3240        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3241        begin        begin
3242            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3933  procedure TMainForm.InitPakkeshopleverin Line 3249  procedure TMainForm.InitPakkeshopleverin
3249  begin  begin
3250        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3251        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3252        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3253        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3254        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3255        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3256        CheckBox1.Enabled := false;  
3257        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3258        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3259        CheckBox2.Checked := false;  
3260        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3261        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3262        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3263        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3264        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3265        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3266        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3267        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3268        ListBox1.Visible := true;        ListBox1.Visible := true;
3269        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3270        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3271        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3272  // 20150330: start  
3273  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3274        EKLoverforsel.Enabled := true;  
3275  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3276          chkForstorTilDirekte.Enabled := true;
3277    
3278        InitLillePakke();        InitLillePakke();
3279        IndlesScanningLogFil();        IndlesScanningLogFil();
3280        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3971  procedure TMainForm.InitReturFraPakkesho Line 3289  procedure TMainForm.InitReturFraPakkesho
3289  begin  begin
3290        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3291        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3292        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3293        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3294        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3295        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3296        CheckBox1.Enabled := false;  
3297        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3298        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3299        CheckBox2.Checked := false;  
3300        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3301        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3302        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3303        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3304        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3305        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3306        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3307        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3308        ListBox1.Visible := true;        ListBox1.Visible := true;
3309        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3310        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3311        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3312        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3313    
3314          chkForstorTilDirekte.Checked := false;
3315          chkForstorTilDirekte.Enabled := false;
3316    
3317    
3318        InitLillePakke();        InitLillePakke();
3319        IndlesScanningLogFil();        IndlesScanningLogFil();
3320        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4011  end; Line 3334  end;
3334    
3335  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3336  begin  begin
3337          menuIndlevering.Checked := true;
3338        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3339        Returpakkerfrapakkeshop1.Checked := true;  
3340        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3341        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3342        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3343        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3344        CheckBox1.Enabled := false;  
3345        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3346        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3347        CheckBox2.Checked := false;  
3348        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3349        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       CheckBox1.Checked := false;  
3350        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3351          chkSporgEfterKunde.Checked := false;
3352    
3353    
3354    
3355        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3356        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3357        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3358        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3359        ListBox1.Visible := true;        ListBox1.Visible := true;
3360        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3361        DownloadButton01.Enabled := false;  
3362        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3363        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3364          BtnEKLoverforsel.Enabled := false;
3365    
3366          chkForstorTilDirekte.Checked := false;
3367          chkForstorTilDirekte.Enabled := false;
3368    
3369    
3370        InitLillePakke();        InitLillePakke();
3371        IndlesScanningLogFil();        IndlesScanningLogFil();
3372        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4057  end; Line 3390  end;
3390    
3391  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3392  begin  begin
3393    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3394    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3395  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3396  end;  end;
3397    
3398  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3399  begin  begin
3400    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3401    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3402  // 20150310: start  // 20150310: start
3403  //  Stregkode := '';  //  Stregkode := '';
3404  // 20150310: slut  // 20150310: slut
3405  end;  end;
3406    
 /// <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]]);  
3407    
     // 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;  
3408    
3409  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3410  begin  begin
# Line 4163  end; Line 3429  end;
3429    
3430  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3431  begin  begin
 // 20150317: start  
3432    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3433    begin    begin
3434       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4176  begin Line 3441  begin
3441       end;       end;
3442       exit;       exit;
3443    end;    end;
 // 20150317: slut  
3444    
3445    if Smpakker1.Checked then    if Smpakker1.Checked then
3446       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4185  begin Line 3449  begin
3449       end       end
3450       else       else
3451       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3452         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3453       end;       end;
3454    if Storepakker1.Checked then    if Storepakker1.Checked then
3455       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4197  begin Line 3458  begin
3458       end       end
3459       else       else
3460       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3461         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3462       end;       end;
3463  end;  end;
3464    
# Line 4217  begin; Line 3475  begin;
3475    CheckCode();    CheckCode();
3476  end;  end;
3477    
3478  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3479  var  var
3480    WebSvar : String;    WebSvar : String;
3481    URLStr : String;    URLStr : String;
# Line 4227  var Line 3485  var
3485    status, kommentar : String;    status, kommentar : String;
3486    
3487  begin  begin
3488      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3489    
3490      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');
3491      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3492      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3493      StedKode := Sted;      StedKode := Sted;
3494      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3495  // 20150330: start  
3496      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3497      begin      begin
3498        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3499      end;      end;
3500  // 20150330: slut  
3501    
3502      try      try
3503      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4290  begin Line 3548  begin
3548        end;        end;
3549      end;      end;
3550    
3551      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3552    
3553      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
3554    
# Line 4307  begin Line 3565  begin
3565           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3566         end;         end;
3567         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3568         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3569      end;      end;
3570    
3571  end;  end;
# Line 4331  begin Line 3589  begin
3589    else    else
3590      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3591  }  }
3592    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3593    
3594    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3595    CheckCode();    CheckCode();
# Line 4339  end; Line 3597  end;
3597    
3598  end;  end;
3599    
 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;  
3600    
3601  //  //
3602  // Bladhus ***  // Bladhus ***
# Line 4855  begin Line 4074  begin
4074    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
4075  end;  end;
4076    
4077  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4078  begin  begin
4079      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4080      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
4081  end;  end;
4082    
4083  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4084  const  const
4085    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4086    
# Line 4870  begin Line 4089  begin
4089      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
4090  end;  end;
4091    
4092  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4093  begin  begin
4094      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4095      begin      begin
# Line 4879  begin Line 4098  begin
4098      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
4099  end;  end;
4100    
4101  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;  
4102    
4103  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4104  var  var
# Line 4903  var Line 4110  var
4110    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4111    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4112    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4113    pakketyper : TStrings;    //pakketyper : TStrings;
4114      pakketyper : TDictionary<String, Integer>;
4115      tmpAntal : Integer;
4116    
4117    
4118    
4119    antlin : Integer;    antlin : Integer;
4120  // 20150306: start  
4121    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4122  // 20150306: slut  
4123    XmlFelter : TStrings;    //XmlFelter : TStrings;
4124      XmlFelter : TDictionary<String, Integer>;
4125    
4126   begin   begin
4127      XmlFelter := TStringList.Create;  
4128      pakketyper := TStringList.Create;  
4129        XmlFelter := TDictionary<String, Integer>.Create;
4130        pakketyper := TDictionary<String, Integer>.Create;
4131    
4132      linienr := 0;      linienr := 0;
4133      ListBox2.Clear;      ListBox2.Clear;
4134      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 4927  var Line 4143  var
4143          StedKode := Sted;          StedKode := Sted;
4144        end;        end;
4145    
4146  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4147  (*  
4148      if Returpakkerfrapakkeshop1.Checked then  
4149       begin  
4150        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);  
      end  
     else if Pakkernormal1.Checked then  
4151       begin       begin
4152        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4153       end       end
4154      else      else if (Scanningtype = '6') then
      begin  
       URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer  
      end;  
 *)  
     if (Scanningtype = '6') then  
4155       begin       begin
4156        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4157       end       end
4158      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4159       begin       begin
4160        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4161       end       end
4162      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4163       begin       begin
# Line 4989  var Line 4194  var
4194      try      try
4195        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4196    
4197  // 20150206: start  
4198        antlin := 0;        antlin := 0;
4199        antlinIdag := 0;        antlinIdag := 0;
4200        antlinSenere := 0;        antlinSenere := 0;
4201  // 20150306: slut  
       antalFelterFundet := 0;  
4202        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4203            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4204            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4205              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4206              begin              begin
4207                 antlin := antlin + 1;                 Inc(antlin);
4208                 // 20150306: start                 // 20150306: start
4209                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4210                begin                begin
4211                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4212                   begin                   begin
4213                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4214                   end                   end
4215                   else                   else
4216                   begin                   begin
4217                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4218                   end;                   end;
4219                end;                end;
4220                 // 20150306: slut                 // 20150306: slut
4221              end;              end;
4222            end;            end;
4223            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4224                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4225                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4226                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4227                  end
4228                else                else
4229                  XmlFelter.values[Node.NodeName] := '1';                begin
4230                    XmlFelter.Add(Node.NodeName, 1);
4231                  end;
4232    
4233        end;        end;
4234        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4235        antalFelterFundet := 0;        antalFelterFundet := 0;
4236        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4237        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4238  // 20150206: start  
4239  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4240          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4241    
4242        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4243        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4244        begin        begin
4245          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4246        end;        end;
4247        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4248  // 20150306: slut  
4249        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4250    
4251    
4252        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4253            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4254            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5043  var Line 4256  var
4256                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4257                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4258                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4259              end;              end
4260              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4261                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4262                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4263                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4264              end;              end
4265              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4266                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4267                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4268                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4269              end;              end
4270              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4271                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4272                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4273                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4274              end;              end
4275              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4276                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4277                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4278                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4279                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4280                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4281                    pakketyper.TryGetValue(pakketype, tmpAntal);
4282                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4283                  end
4284                else                else
4285                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4286              end;              end
4287              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4288                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4289                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4290                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4291                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4292                  begin                  begin
4293  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4294                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4295                    begin                    begin
4296                      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
4297                    end                    end
4298                    else                    else
4299                    begin                    begin
4300                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4301                    end;                    end;
4302  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4303                  end;                  end;
4304              end;              end;
4305    
4306    
4307              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4308              begin              begin
4309                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5103  var Line 4319  var
4319              end;              end;
4320            end;            end;
4321        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4322    
4323          // Free up the list object  
4324          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4325    
4326    
4327          for pakketype in pakketyper.Keys do
4328          begin
4329            pakketyper.TryGetValue(pakketype, tmpAntal);
4330            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4331          end;
4332    
4333            // Free up the dictionary object
4334        pakketyper.Free;        pakketyper.Free;
4335  // 20150306: start  
4336    
4337    
4338  //      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.');
4339        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4340        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5119  var Line 4343  var
4343        end;        end;
4344        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4345        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4346        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4347        begin        begin
4348          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5129  var Line 4351  var
4351        begin        begin
4352          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4353        end;        end;
 // 20150309: slut  
4354    
 // 20150310: start  
4355        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4356        begin        begin
4357          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5210  var Line 4430  var
4430            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4431          end;          end;
4432        end;        end;
 // 20150310: slut  
4433    
4434      except on e:exception do      except on e:exception do
4435        begin        begin
# Line 5272  end; Line 4491  end;
4491  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4492  var  var
4493     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4494     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4495     imorgenYmd : string;     imorgenYmd : string;
4496     logFilnavn : string;     logFilnavn : string;
4497      error : Integer;     //error : Integer;
4498    
4499  begin  begin
4500    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5369  begin Line 4586  begin
4586          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4587          S := buffer;          S := buffer;
4588          SetLength(A,0);          SetLength(A,0);
4589          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4590          if (length(A) < 2) then          if (length(A) < 2) then
4591          begin          begin
4592            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4593          end;          end;
4594            if (length(A) > 1) then            if (length(A) > 1) then
4595            begin            begin
# Line 5446  begin Line 4663  begin
4663          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4664          S := buffer;          S := buffer;
4665          SetLength(A,0);          SetLength(A,0);
4666          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4667          if (length(A) < 3) then          if (length(A) < 3) then
4668          begin          begin
4669            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4670          end;          end;
4671          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4672          begin          begin
# Line 5541  begin Line 4758  begin
4758    result := svar;    result := svar;
4759  end;  end;
4760    
4761    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4762    begin
4763      //ShowMessage('Ændring ikke tilladt');
4764      // Her skal komme en 'rød skærm' alarm
4765      PlaySound(PWideChar(AlarmLyd));
4766      MainForm.Color := clRed;
4767    
4768    
4769      RuteNummerST.Caption := '';
4770      BoghandlerNavnST.Caption := '';
4771      btnNulstil.Visible := true;
4772    
4773      if (strMessage <> '') then
4774      begin
4775        ListBox1.Items.Insert(0, strMessage);
4776        KommentarST.Caption := strMessage;
4777      end;
4778    
4779    end;
4780    
4781  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4782  var  var
4783     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5598  begin Line 4835  begin
4835    result := svar;    result := svar;
4836  end;  end;
4837    
 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;  
4838    
4839  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4840  begin  begin
4841    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4842    begin    begin
4843       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4844    end    end
4845    else    else
4846    begin    begin
4847       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4848    end;    end;
4849  end;  end;
4850    
4851  function TMainForm.AdobeReaderExists: Boolean;  
4852  var  
4853    AReg: TRegistry;  //Nedarvet fra IParentForm
4854    procedure TMainForm.LogMessage( msg : string);
4855  begin  begin
4856    result:= false;    ListBox1.Items.Insert(0, msg);
4857    AReg := TRegistry.Create;    SkrivScanningLogFil(msg);
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4858  end;  end;
4859    
 procedure TMainForm.CheckPrintQue(tjektype : string);  
 type  
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
 begin  
4860    
4861  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4862  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4863  //            'Timer' skal kun vise alarmlinie  begin
4864    
4865    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4866      if (alert) then
4867    begin    begin
4868      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4869      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4870      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4871    end    end
4872    else    else
4873    begin    begin
4874      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4875      try      PrinterstatusStaticText1.Color := clWhite;
4876        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;  
   end;  
 end;  
   
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
4877    end;    end;
   
4878  end;  end;
4879    
4880  // 20150310: start  //Nedarvet fra IParentForm
4881  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetFormObject() : TForm;
 var  
    R: TRect;  
    Rgn: HRGN;  
4882  begin  begin
4883     with Control do    Result := self;
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
4884  end;  end;
 // 20150310: slut  
4885    
4886  end.  end.
4887    

Legend:
Removed from v.2650  
changed lines
  Added in v.2902

  ViewVC Help
Powered by ViewVC 1.1.20