/[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 2652 by torben, Sun Aug 23 10:38:56 2015 UTC revision 2794 by torben, Thu Dec 17 19:04:09 2015 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet    ShellApi, ClipBrd, Buttons, wininet,
22      UITypes,
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      chkAltidPrintLabel: 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 155  type Line 166  type
166    
167    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
168    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
169    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
170    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
171    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
172    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
173    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
174    procedure 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 394  begin Line 384  begin
384    
385      StartScreen();      StartScreen();
386      MainForm.Caption := Titel;      MainForm.Caption := Titel;
387      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
388      MainForm.Farve := Farve;      MainForm.Farve := Farve;
389      MainForm.Titel := Titel;      MainForm.Titel := Titel;
390      MainForm.Url := Url;      MainForm.Url := Url;
# Line 409  begin Line 399  begin
399      else      else
400        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
401    
402      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
403      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
404      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
405    
406      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
407      begin      begin
408        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
409        begin        begin
410          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
411          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
412          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
413        end        end
414        else        else
415        begin        begin
416          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
417          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
418          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
419        end;        end;
420      end;      end;
421    
422      if Automatisktjekkodestyring1.Checked then      if Automatisktjekkodestyring1.Checked then
423      begin      begin
424        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
425        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
426      end;      end;
427    
# Line 454  begin Line 444  begin
444          end          end
445          else          else
446          begin          begin
447            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
448          end;          end;
449          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
450        end        end
451        else        else
452        begin        begin
453          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
454          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
455        end;        end;
456      end;      end;
457    
458    
459  end;  end;
460    
461  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 490  procedure TMainForm.Automatisktjekkodest Line 481  procedure TMainForm.Automatisktjekkodest
481  begin  begin
482    if Automatisktjekkodestyring1.Checked then    if Automatisktjekkodestyring1.Checked then
483    begin    begin
484       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
485       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
486    end    end
487    else    else
488    begin    begin
489       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
490       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
491    end;    end;
492    
# Line 503  end; Line 494  end;
494    
495  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
496  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
497  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
498  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
499       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
500       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
501       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
502  end;  end;
503    
504    
505    //InitForm kaldes før FormCreate
506  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
507  const  const
508    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
509  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
510    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
511    
512  begin  begin
513    
514    
515    // Initierer nogle variabler    // Initierer nogle variabler
516    BladhusSted := 00;    BladhusSted := 00;
517    Application.ShowHint := True;    Application.ShowHint := True;
518    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
519    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
520  // 20150306: start  
521    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
522  // 20150306: slut  
523  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
524    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
525    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
526    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
527    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
528    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
529    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
530    
531    // 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
532    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 539  begin
539    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
540    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
541    
542      Config := TConfiguration.Create();
543      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
544      Config.Sted := Sted;
545    
546    // Læser parametre fra ini filen    // Læser parametre fra ini filen
547    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
548    try    try
549    
550    
551      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
552      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
553      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 579  begin Line 559  begin
559      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');
560      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');
561      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');
562  // 20150330: start  
563      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');
564  // 20150330: slut  
565      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');
566      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');
567      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
568      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
569      LabelType := ReadInteger('Settings','LabelType',1);  
570    
571        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
572        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
573        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
574    
575    
576    
577    
578      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
579      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
580      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 585  begin
585      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
586      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
587      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
588    
589      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
590      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
591    
592        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
593        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
594    
595    
596      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
597      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
598      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 602  begin
602      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
603      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
604      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
605  // 20150317: start  
606      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
607  // 20150317: slut  
608      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
609      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
610      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
611    
612      if (SkrivLog = '1') then      if (SkrivLog = '1') then
613      begin      begin
614        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
615        try        try
616          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
617          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
618          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
619          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
620          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
621          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 633  begin
633        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
634      end;      end;
635    
636      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
637    
638      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
639      begin      begin
640        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
641        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
642      end      end
643      else      else
644      begin      begin
645        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
646        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
647      end;      end;
648    
649      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
650      begin      begin
651        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
652        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
653      end      end
654      else      else
655      begin      begin
656        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
657        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
658      end;      end;
659    
660      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
661      begin      begin
662        Automatisktjekkodestyring1.Checked := true;        Automatisktjekkodestyring1.Checked := true;
663        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
664        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
665      end;      end;
666    
# Line 760  begin Line 686  begin
686      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
687      // *************************** //      // *************************** //
688    
689    {$IfDef STED_BK}
690        SpecialVersionSted := 'BK';
691    {$EndIf}
692    {$IfDef STED_DBK}
693        SpecialVersionSted := 'DBK';
694    {$EndIf}
695    {$IfDef STED_FD}
696        SpecialVersionSted := 'FD';
697    {$EndIf}
698    {$IfDef STED_NS}
699        SpecialVersionSted := 'NS';
700    {$EndIf}
701    
702    
703      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
704      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
705      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 775  begin Line 715  begin
715      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
716      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
717    
 // 20150313: start  
718      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
719      begin      begin
720         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 786  begin Line 725  begin
725         SpecialVersionSted := '03';         SpecialVersionSted := '03';
726         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
727      end;      end;
 // 20150313: slut  
728    
729      if SpecialVersionSted = 'BK' then      if SpecialVersionSted = 'BK' then
730      begin      begin
# Line 797  begin Line 735  begin
735        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
736        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
737        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
738        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
739        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
740    
741       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
742        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
743        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
744        Returpakkerfrapakkeshop1.Enabled := false;  
745          //Returpakkerfrapakkeshop1.Enabled := false;
746    
747        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
748        begin        begin
749           Scanningtype := '1';           Scanningtype := '1';
# Line 826  begin Line 767  begin
767        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
768        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
769        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
770          PanelValg7.Enabled := false;
771          PanelValg7.Font.Color := clInactiveCaption;
772    
773       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
774        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
775        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
776  // 20150317: start  
777        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
778        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
779  // 20150317: slut  
780        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
781        begin        begin
782           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 806  begin
806        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
807        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
808        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
809          PanelValg7.Enabled := false;
810          PanelValg7.Font.Color := clInactiveCaption;
811       // 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
812  // 20150317: start  
813        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
814  // 20150317: slut  
815        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
816        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
817        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 903  begin
903             RutenummerST.Caption := '';             RutenummerST.Caption := '';
904             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
905             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
906             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
907             exit;             exit;
908          end;          end;
909      end      end
# Line 1000  begin Line 946  begin
946      if Pakketype = '1' then      if Pakketype = '1' then
947      begin      begin
948        Storepakker1.Checked := true;        Storepakker1.Checked := true;
949        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
950      end      end
951      else      else
952      begin      begin
953        Smpakker1.Checked := true;        Smpakker1.Checked := true;
954        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
955      end;      end;
956    
957      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 991  begin
991        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
992      end;      end;
993    
994  // 20150317: start  
995      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
996      begin      begin
997        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
998      end;      end;
 // 20150317: slut  
999    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1000    
1001      CheckPrintQue('Opstart');  
1002    
1003        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1004        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1005    
1006    finally    finally
1007      Free;      Free;
# Line 1083  begin Line 1025  begin
1025          InitBladhus();          InitBladhus();
1026        end;        end;
1027    
1028  // 20150310: start  
1029      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1030      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1031    
# Line 1124  begin Line 1066  begin
1066      end;      end;
1067    
1068      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1069    
1070      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1071      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1072    
1073  end;  end;
1074    
# Line 1145  var Line 1086  var
1086    BoghandlerNavn : String;    BoghandlerNavn : String;
1087    Koreliste : String;    Koreliste : String;
1088    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1089    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1090    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1091    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1110  begin
1110      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1111      numberString := ClipboardData;      numberString := ClipboardData;
1112      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1113  // 20150311: start  
1114  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1115      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1116      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1117      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1185  begin Line 1125  begin
1125      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1126      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1127      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1128        or (NumberString = 'DAO PAKKESHOP')
1129        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1130      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1131  // 20150311: slut  
1132      begin      begin
1133        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1134        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1195  begin Line 1137  begin
1137      begin      begin
1138        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1139      end;      end;
1140    end;    end;  // Slut ctrl-v
1141    
1142    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1143    begin    begin
 // 20150306: start  
1144      if (Length(Trim(Stregkode)) = 0) then      if (Length(Trim(Stregkode)) = 0) then
1145      begin      begin
1146        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1147        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;  
1148        exit;        exit;
1149      end;      end;
 // 20150306: slut  
1150    
 // 20150311: start  
1151      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1152      begin      begin
1153         PakkeshopNulstil.Click();         btnNulstil.Click();
1154         exit;         exit;
1155      end;      end;
1156    
1157      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1158      begin      begin
1159         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1160  // 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  
1161         exit;         exit;
1162      end;      end;
1163    
1164      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1165      begin      begin
1166         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1167         begin         begin
1168            InitLillePakke();            InitLillePakke();
1169         end         end
1170         else         else
1171         begin         begin
1172          //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;  
1173         end;         end;
1174         Stregkode := '';         Stregkode := '';
1175         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1178  begin
1178    
1179      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1180      begin      begin
1181         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1182         begin         begin
1183            InitStorPakke();            InitStorPakke();
1184         end         end
1185         else         else
1186         begin         begin
1187          //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;  
1188         end;         end;
1189         Stregkode := '';         Stregkode := '';
1190         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1191         exit;         exit;
1192      end;      end;
1193    
1194        if LowerCase(StregKode) = 'for stor hjemmelevering' then
1195        begin
1196          if chkForstorTilDirekte.Enabled then
1197          begin
1198            chkForstorTilDirekte.Checked := true;
1199          end
1200          else
1201          begin
1202             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1203          end;
1204          Stregkode := '';
1205          StregkodeST.Caption := StregKode;
1206          exit;
1207        end;
1208    
1209    
1210      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1211      begin      begin
1212         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1213         begin         begin
1214           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1215           begin           begin
1216            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1217           end           end
1218           else           else
1219           begin           begin
1220            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1221           end;           end;
1222         end         end
1223         else         else
1224         begin         begin
1225          //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;  
1226         end;         end;
1227         Stregkode := '';         Stregkode := '';
1228         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1327  begin Line 1231  begin
1231    
1232      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
1233      begin      begin
1234        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1235        begin        begin
1236           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1237           begin           begin
1238            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1239           end           end
1240           else           else
1241           begin           begin
1242            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1243           end;           end;
1244        end        end
1245        else        else
1246        begin        begin
1247          //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;  
1248        end;        end;
1249        Stregkode := '';        Stregkode := '';
1250        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  begin Line 1259  begin
1259         end         end
1260         else         else
1261         begin         begin
1262          //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;  
1263         end;         end;
1264         Stregkode := '';         Stregkode := '';
1265         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1266         exit;         exit;
1267      end;      end;
1268    
1269  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1270      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  
1271      begin      begin
1272         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1273         begin         begin
# Line 1395  begin Line 1275  begin
1275         end         end
1276         else         else
1277         begin         begin
1278          //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;  
1279         end;         end;
1280         Stregkode := '';         Stregkode := '';
1281         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1290  begin
1290         end         end
1291         else         else
1292         begin         begin
1293          //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;  
1294         end;         end;
1295         Stregkode := '';         Stregkode := '';
1296         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1305  begin
1305         end         end
1306         else         else
1307         begin         begin
1308          //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;  
1309         end;         end;
1310         Stregkode := '';         Stregkode := '';
1311         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1320  begin
1320         end         end
1321         else         else
1322         begin         begin
1323          //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;  
1324         end;         end;
1325         Stregkode := '';         Stregkode := '';
1326         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1335  begin
1335         end         end
1336         else         else
1337         begin         begin
1338          //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;  
1339         end;         end;
1340         Stregkode := '';         Stregkode := '';
1341         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1350  begin
1350         end         end
1351         else         else
1352         begin         begin
1353          //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;  
1354         end;         end;
1355         Stregkode := '';         Stregkode := '';
1356         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1357         exit;         exit;
1358      end;      end;
1359  // 20150311: slut  
1360    
1361      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1362      begin      begin
# Line 1590  begin Line 1404  begin
1404        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1405      end;      end;
1406    
1407      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1408          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1409          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1410          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1411          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1412          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1413      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1414         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1415         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  
1416         exit;         exit;
1417      end;      end;
1418    
1419      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1420      begin      begin
1421        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1422        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1626  begin Line 1428  begin
1428              end;              end;
1429            end            end
1430        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1431  (*  
       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  
 *)  
1432        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1433            begin            begin
1434              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1661  begin Line 1446  begin
1446              end;              end;
1447            end            end
1448        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1449  (*  
       else if Pakketype = 'PakkeshopRetur' then  
           begin  
             if Scanningtype <> '6' then  
             begin  
               Scanningtype := '6';  
               InitReturFraPakkeshop();  
             end;  
           end  
 *)  
1450        else        else
1451            begin   // Her skal komme en alarm og rød skærm            begin
1452               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1453               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1454               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1455               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  
1456               exit;               exit;
1457            end;            end;
1458        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1459      end      end
1460      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1461      begin      begin
1462        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1463        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  
1464        exit;        exit;
1465      end;      end;
1466    
# Line 1714  begin Line 1468  begin
1468      begin      begin
1469        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1470        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;  
1471    
1472      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;  
1473    
1474      if StregKode = 'Lille pakke' then          exit;
1475      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;  
1476      end;      end;
1477    
     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  
1478    
1479    
1480      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1481      begin      begin
1482        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1483        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1484        begin        begin
1485          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1486          begin          begin
1487              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1488              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1489          end;          end;
1490        end;        end;
# Line 1812  begin Line 1496  begin
1496             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1497             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1498             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1499             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1500             Stregkode := '';             Stregkode := '';
1501             InitScreen();             InitScreen();
1502        end        end
# Line 1824  begin Line 1508  begin
1508             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1509             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1510             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1511             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1512             Stregkode := '';             Stregkode := '';
1513             InitScreen();             InitScreen();
1514        end        end
# Line 1836  begin Line 1520  begin
1520              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1521              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1522              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1523  // 20150317: start  
1524              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1525  // 20150317: slut  
1526             end             end
1527            else            else
1528             begin             begin
1529                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;  
1530             end;             end;
1531            Stregkode := '';            Stregkode := '';
1532            InitScreen();            InitScreen();
# Line 1861  begin Line 1539  begin
1539             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1540             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1541             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1542                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1543             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1544                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1545             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1546           end           end
1547          else          else
1548           begin           begin
1549                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1550                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1551                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1552                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1553                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  
1554                StregKode := '';                StregKode := '';
1555                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1556  // 20150323: slut  
1557                exit;                exit;
1558           end;           end;
1559          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1562  begin
1562    
1563      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1564      begin      begin
1565    
1566         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1567            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1568         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1903  begin Line 1575  begin
1575            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1576            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1577            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1578               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1579               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1580              exit;              exit;
1581            end;            end;
1582            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1596  begin
1596              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1597              begin              begin
1598                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1599                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1600                MainForm.Color := clRed;                MainForm.Color := clRed;
1601              end;              end;
1602           end;           end;
1603            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
1604            begin            begin
1605              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1606              if Storepakker1.Checked then              if Storepakker1.Checked then
1607              begin              begin
1608                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1611  begin
1611              begin              begin
1612                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1613              end;              end;
1614              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1615            end            end
1616            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1617            begin            begin
1618              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1619              if Storepakker1.Checked then              if Storepakker1.Checked then
1620              begin              begin
1621                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1624  begin
1624              begin              begin
1625                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1626              end;              end;
1627              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1628            end            end
1629            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1630            begin            begin
1631              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;  
1632            end            end
1633            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1634            begin            begin
1635            end            end
1636            else            else
1637            begin            begin
1638              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1639            end;            end;
1640           if not PakkeshopNulstil.Visible then  
1641             if not btnNulstil.Visible then
1642            begin            begin
1643  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1644              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1645              begin              begin
1646                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1654  begin
1654                InitLillePakke();                InitLillePakke();
1655              end;              end;
1656            end;            end;
1657  // 20150310: start  
1658            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1659  // 20150310: slut  
1660            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1661            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1662            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1687  begin
1687    
1688    Key := #0;    Key := #0;
1689    
1690  end;  
1691    
1692    
1693    
1694    
1695    end; //End of OnKeyPress
1696    
1697    
1698    
1699  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1700  const  const
# Line 2063  end; Line 1731  end;
1731    
1732  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1733  var  var
 // 20150309: start  
 //  i:integer;  
1734    i : Integer;    i : Integer;
1735    wrkAntal : String;    wrkAntal : String;
1736    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1737  // 20150309: slut  
1738    
1739  begin  begin
1740      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked or menuIndlevering.Checked then
1741      begin      begin
1742        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1743          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1744          begin          begin
1745  // 20150309: start  
1746            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1747            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1748            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1749            begin            begin
1750              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1751              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1752  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1753  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1754  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1755              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1756            end            end
1757            else     // kun idag            else     // kun idag
1758            begin            begin
# Line 2112  begin Line 1778  begin
1778            begin            begin
1779              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1780            end;            end;
 // 20150309: slut  
1781    
 // 20150310: start  
1782            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1783            begin            begin
1784              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1856  begin
1856                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1857              end;              end;
1858            end;            end;
1859  // 20150310: slut  
1860            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1861          end;          end;
1862      end;      end;
# Line 2219  begin Line 1883  begin
1883  end;  end;
1884    
1885  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1886    
1887  begin  begin
1888    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1892  begin
1892    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1893    ListBox1.Visible := true;    ListBox1.Visible := true;
1894  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1895  // 20150317: start  
 (*  
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
1896    if Budlevering1.Checked then    if Budlevering1.Checked then
1897    begin    begin
1898      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 1905  begin
1905      01 :      01 :
1906            begin;      // NS            begin;      // NS
1907              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1908              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1909              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1910              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1911              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1912              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 1919  begin
1919              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1920              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1921              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1922              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1923              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1924              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1925              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1926              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1927              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1928              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 1932  begin
1932              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1933             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1934              begin              begin
1935                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1936              end              end
1937              else              else
1938              begin              begin
1939                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1940              end;              end;
1941              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1942              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1943              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1944              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1945              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 1957  begin
1957              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1958              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1959              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1960              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1961              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1962              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1963              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1964              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1965              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1966            end;            end;
# Line 2354  var Line 1976  var
1976    URLStr : String;    URLStr : String;
1977    pakkestorrelse : String;    pakkestorrelse : String;
1978    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1979    
1980      PakkeshopLabel: TPakkeshopLabel;
1981  begin  begin
1982    if RadioButton1.Checked then    if radioStorPakke.Checked then
1983    begin    begin
1984      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
1985    end;    end;
1986    if RadioButton2.Checked then    if radioLillePakke.Checked then
1987    begin    begin
1988      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1989    end;    end;
1990    
1991    
1992    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
1993    begin    begin
1994       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 2017  begin
2017    begin    begin
2018       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2019    end    end
2020      else if menuIndlevering.Checked then
2021      begin
2022        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2023      end
2024    else    else
2025    begin    begin
2026      exit;      exit;
2027    end;    end;
2028    
2029      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2030      begin
2031        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2032      end;
2033    
2034    try    try
2035      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2036      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2416  begin Line 2052  begin
2052          end;          end;
2053      end;      end;
2054    end;    end;
2055    
2056    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2057    try    try
2058      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2425  begin Line 2062  begin
2062        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2063        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2064        PrintNyLabel := False;        PrintNyLabel := False;
2065  // 20150310: start  
2066        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2067        begin        begin
 // 20150310: slut  
2068          try          try
2069            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2070          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2074  begin
2074          begin          begin
2075            PrintNyLabel := True;            PrintNyLabel := True;
2076          end;          end;
 // 20150310: start  
2077        end;        end;
 // 20150310: slut  
2078       end       end
2079        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2080        begin
2081    
2082    
2083    
2084    
2085         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2086         if (Kommentar = 'Ok') then
2087         begin
2088           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2089           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2090           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2091           Stregkode := PakkeshopLabel.Stregkode;
2092    
2093           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2094           chkForstorTilDirekte.Checked := false;
2095    
2096         end;
2097    
2098    
2099        end
2100      else      else
2101       begin       begin
2102        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2129  begin
2129          PrintNyLabel := True;          PrintNyLabel := True;
2130        end;        end;
2131      end;      end;
2132    
2133    
2134      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2135      begin      begin
2136        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2171  begin
2171    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2172      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2173    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2174    if RadioButton1.Checked then    if radioStorPakke.Checked then
2175    begin    begin
2176      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2177    end;    end;
2178    if RadioButton2.Checked then    if radioLillePakke.Checked then
2179    begin    begin
2180      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2181    end;    end;
# Line 2540  begin Line 2197  begin
2197    if Budlevering1.Checked then    if Budlevering1.Checked then
2198    begin    begin
2199       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2200        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2201        begin        begin
2202          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2203        end;        end;
2204        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2205        begin        begin
2206          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2207        end;        end;
# Line 2566  begin Line 2223  begin
2223        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2224      end;      end;
2225    end;    end;
2226      if menuIndlevering.Checked then
2227      begin
2228        List1Msg := Stregkode;
2229      end;
2230    
2231    
2232    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2233    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2234    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2235  end;  end;
2236    
2237  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2238  begin  begin
2239    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2240    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2251  pakkeForkertSted : Integer;
2251    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2252  begin  begin
2253    if Budlevering1.Checked then    if Budlevering1.Checked then
2254       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2255    
2256    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2257    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2264  begin
2264    end;    end;
2265    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2266    
2267  // 20150306: start  
2268  //  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
2269    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  
2270    begin    begin
2271        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2272        begin        begin
# Line 2631  begin Line 2293  begin
2293       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2294       begin       begin
2295          PrintNyLabel := false;          PrintNyLabel := false;
2296  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2297          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2298          MainForm.Color := clRed;          MainForm.Color := clRed;
2299          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2300  // 20150306: slut  
2301       end       end
2302       else       else
2303       begin       begin
# Line 2646  begin Line 2307  begin
2307            PrintNyLabel := true;            PrintNyLabel := true;
2308            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2309            nyFarve := Farve;            nyFarve := Farve;
2310            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2311            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2312            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2313            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2314            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2315            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2316  // 20150213: start  
2317            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2318            begin            begin
2319               PrintNyLabel := false;               PrintNyLabel := false;
2320            end;            end;
2321  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2322            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
2323            begin            begin
2324              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2325              MainForm.Color := clRed;              MainForm.Color := clRed;
2326              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2327            end;            end;
2328  // 20150306: slut  
2329         end;         end;
2330         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2331         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2344  begin
2344            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2345            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2346            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2347  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2348            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
2349            begin            begin
2350              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2351              MainForm.Color := clRed;              MainForm.Color := clRed;
2352              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2353            end;            end;
2354  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2355         end;         end;
2356       end;       end;
2357    
# Line 2715  begin Line 2369  begin
2369               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2370  // 20150304: slut  // 20150304: slut
2371                begin                begin
2372                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2373                end;                end;
2374              end;              end;
2375        01 :  begin;        01 :  begin;
2376               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2377                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2378                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2379                begin                begin
2380                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2381                end;                end;
2382              end;              end;
2383        02 :  begin;        02 :  begin;
2384                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2385                begin                begin
2386                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2387                end;                end;
2388              end;              end;
2389        03 :  begin;        03 :  begin;
2390               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2391                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2392                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2393               begin               begin
2394                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2395               end;               end;
2396              end;              end;
2397        04 :  begin;        04 :  begin;
2398                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2399                begin                begin
2400                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2401                end;                end;
2402              end;              end;
2403        else        else
# Line 2757  begin Line 2411  begin
2411      exit;      exit;
2412    end;    end;
2413    
2414    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
2415    begin    begin
2416    end    end
2417    else    else
# Line 2779  begin Line 2433  begin
2433        end;        end;
2434        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2435        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2436        with Printer do  
2437        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2438          BeginDoc;        
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2439      end;      end;
2440    end;    end;
2441    
2442  end;  end;
2443    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
 // 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;  
2444    
2445    
2446  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2447  begin  begin
2448      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2449      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2450  end;  end;
2451    
2452  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2453  begin  begin
2454      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2455      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2456  end;  end;
2457    
2458    
2459  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2460  begin  begin
2461    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2462    begin    begin
2463       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2464    end    end
# Line 2888  begin Line 2482  begin
2482    
2483  end;  end;
2484    
2485  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2486  begin  begin
2487    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2488    begin    begin
2489       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2490    end    end
# Line 2912  begin Line 2506  begin
2506      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2507      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2508      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2509  // 20150317: start  
2510      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2511      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2512      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2513      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2514      begin      begin
2515        // 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)
2516        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2530  begin
2530    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2531    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2532    
2533          // Tjekker urls    try
2534          logTekst := 'Tjekker urls.';      // Tjekker urls
2535          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2536          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2537        SkrivScanningLogFil(logTekst);
2538    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2539    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2540    
2541          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2542          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2543          begin      begin
2544            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2545            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2546    
2547          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2548          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2549          begin      begin
2550            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2551            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2552    
2553          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2554          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2555          begin      begin
2556            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2557            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2558    
2559          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2560          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2561          begin      begin
2562            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2563            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2564    
2565          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2566          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2567          or (PanelValg4.Enabled = true) then      begin
2568          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2569            if CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2570    
2571          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2572          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2573          begin      begin
2574            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2575            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2576    
2577          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2578          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2579          begin      begin
2580            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2581            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2582    
2583          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2584          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2585          begin      begin
2586            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2587            begin      end;
             logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2588    
2589  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2590          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2591          if PanelValg5.Enabled = true then      begin
2592          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2593            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  
2594    
2595          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2596          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2597          begin      begin
2598            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2599            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2600          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;  
2601    
2602          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2603          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2604          begin      begin
2605            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2606            SkrivScanningLogFil(logTekst);      end;
2607          end  
2608          else  
2609          begin      // Tjekker UrlEKLoverforselPakkeshop
2610              inc(urlFejl);   // Optæller antal fejl      if PanelValg5.Enabled = true then
2611              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;      begin
2612              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2613              if TjekUrls = '1' then      end;
2614              begin  
2615                logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
2616              end;      // Tjekker UrlFindPakketype
2617              SkrivScanningLogFil(logTekst);      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2618              if TjekUrls = '1' then  
2619              begin      // Tjekker UrlSendPrograminfo
2620                ShowMessage(logTekst);      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2621    
         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;  
2622    
2623    
2624        logTekst := 'urls er ok';
2625        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2626        SkrivScanningLogFil(logTekst);
2627    
2628      Except
2629        TjekUrls := '-';   // markerer at der var fejl
2630    
2631      end;
2632  end;  end;
2633    
2634  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2635  var  const
2636     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2637  begin  begin
2638     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2639     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2640     Result := SystemTimeToDateTime(SystemTime) ;    begin
2641        logTekst := UrlNavn + ' accepteret: ' + Url;
2642        SkrivScanningLogFil(logTekst);
2643      end
2644      else
2645      begin
2646        inc(urlFejl);   // Optæller antal fejl
2647        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2648        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2649        if TjekUrls = '1' then
2650        begin
2651          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2652        end;
2653    
2654        SkrivScanningLogFil(logTekst);
2655    
2656        if TjekUrls = '1' then
2657        begin
2658          ShowMessage(logTekst);
2659          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2660          Application.Terminate;
2661    
2662          raise Exception.Create('UrlFejl');
2663    
2664        end;
2665      end;
2666    
2667  end;  end;
2668    
2669    
2670    
2671  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2672  var  var
2673    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2684  begin
2684      repeat      repeat
2685        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2686        begin        begin
2687    
2688          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2689          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2690          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2691          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2692          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2693          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3381  begin Line 2724  begin
2724    end;    end;
2725  end;  end;
2726    
2727  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2728  begin  begin
2729    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2730    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2731    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2732    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2733    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2734    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2746  begin
2746  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2747    if Farve <> '' then    if Farve <> '' then
2748    begin    begin
2749       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  
2750    end;    end;
2751    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2752    begin    begin
# Line 3477  end; Line 2810  end;
2810    
2811  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2812  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
2813  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2814  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2815       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2816       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2817       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2818  // 20150311: slut  
2819    
2820    
2821  end;  end;
2822    
2823  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2834  var
2834    BoghandlerNavn : String;    BoghandlerNavn : String;
2835    Koreliste : String;    Koreliste : String;
2836    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2837    SmsKode : String;    SmsKode : String;
2838    DBKbane : String;    DBKbane : String;
2839    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2855  begin
2855      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2856      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2857      MainForm.Color := clRed;      MainForm.Color := clRed;
2858      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2859    end    end
2860    else    else
2861    begin    begin
2862      Falsk := False;      Falsk := False;
2863      Sand := True;  
2864      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2865      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2866      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2880  var
2880    BoghandlerNavn : String;    BoghandlerNavn : String;
2881    Koreliste : String;    Koreliste : String;
2882    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2883    SmsKode : String;    SmsKode : String;
2884    DBKbane : String;    DBKbane : String;
2885    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2888  begin
2888    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2889    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2890    Falsk := False;    Falsk := False;
   Sand := True;  
2891    
2892    if (Printer.Printers.Count = 0) then  
2893      if (LabelPrint.GetPrinterCount() = 0) then
2894    begin    begin
2895      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2896    end    end
# Line 3587  begin Line 2905  begin
2905      DBKbane := '999';      DBKbane := '999';
2906      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2907      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2908      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2909    end;    end;
2910    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2911  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 2914  procedure TMainForm.Timer1Timer(Sender:
2914  begin  begin
2915    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2916    begin    begin
2917      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2918    end    end
2919    else    else
2920    begin    begin
# Line 3605  begin Line 2923  begin
2923    end;    end;
2924  end;  end;
2925    
2926  {  
  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;  
2927    
2928  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2929  const  const
# Line 3643  var Line 2932  var
2932   tekst, filversion : String;   tekst, filversion : String;
2933  begin  begin
2934    
2935    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2936    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2937    
2938    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 2954  begin
2954          end          end
2955          else          else
2956          begin          begin
2957            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2958          end;          end;
2959      end      end
2960      else      else
2961      begin      begin
2962        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2963      end;      end;
2964    end;    end;
2965    
# Line 3738  begin Line 3027  begin
3027    
3028    if FileExists(fileName) then    if FileExists(fileName) then
3029    begin    begin
3030      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3031      begin      begin
3032        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3033        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3051  begin
3051    
3052    if FileExists(fileName) then    if FileExists(fileName) then
3053    begin    begin
3054      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3055      begin      begin
3056        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3057        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3058      end      end
3059      else      else
3060      begin      begin
3061        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3062      end;      end;
3063    end    end
3064    else    else
# Line 3778  begin Line 3067  begin
3067    end;    end;
3068  end;  end;
3069    
3070    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3071    begin
3072      Scanningtype := '7';
3073      NulstilAutomatiskValg();
3074      InitIndleveringskode();
3075    end;
3076    
3077  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3078  begin  begin
3079    
3080    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3081    begin    begin
3082       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3083    end    end
3084    else    else
3085    begin    begin
3086       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3087    end;    end;
3088    
3089    
# Line 3810  end; Line 3106  end;
3106  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3107  begin  begin
3108        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3109        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3110        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3111        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3112        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3113        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3114        CheckBox1.Enabled := true;  
3115        chkAltidPrintLabel.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3116        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3117        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3118        chkAltidPrintLabel.Checked := false;        chkAltidPrintLabel.Checked := false;
3119        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3120        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3121        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3122        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3123        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3124        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3125        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3126        ListBox1.Visible := true;        ListBox1.Visible := true;
3127        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3128        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3129        InitLillePakke();        InitLillePakke();
3130        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3131    
3132          chkForstorTilDirekte.Checked := false;
3133          chkForstorTilDirekte.Enabled := false;
3134    
3135        if BladhusSted = 0 then        if BladhusSted = 0 then
3136        begin        begin
3137          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3143  procedure TMainForm.InitReturFraDao();
3143  begin  begin
3144        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3145        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3146        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3147        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3148        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3149        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3150        CheckBox1.Enabled := false;  
3151        chkAltidPrintLabel.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3152        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3153    
3154        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3155        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3156        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3157        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3158        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3159        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3160        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3161        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3162        ListBox1.Visible := true;        ListBox1.Visible := true;
3163        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3164        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3165        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3166    
3167          chkForstorTilDirekte.Checked := false;
3168          chkForstorTilDirekte.Enabled := false;
3169    
3170        InitLillePakke();        InitLillePakke();
3171  end;  end;
3172    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3174  procedure TMainForm.InitReturFraKunde();
3174  begin  begin
3175        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3176        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3177        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3178        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3179        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3180        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3181        CheckBox1.Enabled := false;  
3182        chkAltidPrintLabel.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3183        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3184        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3185        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3186        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3187        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3188        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3189        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3190        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3191        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3192        ListBox1.Visible := true;        ListBox1.Visible := true;
3193        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3194        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3195        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3196    
3197          chkForstorTilDirekte.Checked := false;
3198          chkForstorTilDirekte.Enabled := false;
3199    
3200        InitLillePakke();        InitLillePakke();
3201  end;  end;
3202    
# Line 3896  procedure TMainForm.InitDirektelevering( Line 3204  procedure TMainForm.InitDirektelevering(
3204  begin  begin
3205        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3206        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3207        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3208        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3209        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3210        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3211        CheckBox1.Enabled := false;  
3212        chkAltidPrintLabel.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3213        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3214    
3215        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3216        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3217        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3218        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3219        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3220        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3221        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3222        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3223        ListBox1.Visible := true;        ListBox1.Visible := true;
3224        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3225        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3226        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3227        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3228        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3229        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3230        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3231    
3232          chkForstorTilDirekte.Checked := false;
3233          chkForstorTilDirekte.Enabled := true;
3234    
3235        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3236        begin        begin
3237            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3932  procedure TMainForm.InitPakkeshopleverin Line 3244  procedure TMainForm.InitPakkeshopleverin
3244  begin  begin
3245        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3246        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3247        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3248        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3249        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3250        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3251        CheckBox1.Enabled := false;  
3252        chkAltidPrintLabel.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3253        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3254    
3255        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3256        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3257        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3258        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3259        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3260        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3261        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3262        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3263        ListBox1.Visible := true;        ListBox1.Visible := true;
3264        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3265        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3266        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3267  // 20150330: start  
3268  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3269        EKLoverforsel.Enabled := true;  
3270  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3271          chkForstorTilDirekte.Enabled := true;
3272    
3273        InitLillePakke();        InitLillePakke();
3274        IndlesScanningLogFil();        IndlesScanningLogFil();
3275        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3970  procedure TMainForm.InitReturFraPakkesho Line 3284  procedure TMainForm.InitReturFraPakkesho
3284  begin  begin
3285        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3286        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3287        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3288        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3289        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3290        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3291        CheckBox1.Enabled := false;  
3292        chkAltidPrintLabel.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3293        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3294    
3295        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3296        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3297        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3298        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3299        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3300        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3301        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3302        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3303        ListBox1.Visible := true;        ListBox1.Visible := true;
3304        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3305        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3306        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3307        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3308    
3309          chkForstorTilDirekte.Checked := false;
3310          chkForstorTilDirekte.Enabled := false;
3311    
3312    
3313        InitLillePakke();        InitLillePakke();
3314        IndlesScanningLogFil();        IndlesScanningLogFil();
3315        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4010  end; Line 3329  end;
3329    
3330  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3331  begin  begin
3332          menuIndlevering.Checked := true;
3333        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3334        Returpakkerfrapakkeshop1.Checked := true;  
3335        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3336        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3337        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3338        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3339        CheckBox1.Enabled := false;  
3340        chkAltidPrintLabel.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3341        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3342    
3343        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3344        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       CheckBox1.Checked := false;  
3345        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3346          chkSporgEfterKunde.Checked := false;
3347    
3348    
3349    
3350        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3351        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3352        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3353        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3354        ListBox1.Visible := true;        ListBox1.Visible := true;
3355        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3356        DownloadButton01.Enabled := false;  
3357        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3358        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3359          BtnEKLoverforsel.Enabled := false;
3360    
3361          chkForstorTilDirekte.Checked := false;
3362          chkForstorTilDirekte.Enabled := false;
3363    
3364    
3365        InitLillePakke();        InitLillePakke();
3366        IndlesScanningLogFil();        IndlesScanningLogFil();
3367        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4056  end; Line 3385  end;
3385    
3386  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3387  begin  begin
3388    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3389    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3390  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3391  end;  end;
3392    
3393  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3394  begin  begin
3395    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3396    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3397  // 20150310: start  // 20150310: start
3398  //  Stregkode := '';  //  Stregkode := '';
3399  // 20150310: slut  // 20150310: slut
3400  end;  end;
3401    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';  
   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]]);  
3402    
     // 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;  
3403    
3404  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3405  begin  begin
# Line 4162  end; Line 3424  end;
3424    
3425  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3426  begin  begin
 // 20150317: start  
3427    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3428    begin    begin
3429       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4175  begin Line 3436  begin
3436       end;       end;
3437       exit;       exit;
3438    end;    end;
 // 20150317: slut  
3439    
3440    if Smpakker1.Checked then    if Smpakker1.Checked then
3441       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4184  begin Line 3444  begin
3444       end       end
3445       else       else
3446       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3447         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3448       end;       end;
3449    if Storepakker1.Checked then    if Storepakker1.Checked then
3450       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4196  begin Line 3453  begin
3453       end       end
3454       else       else
3455       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3456         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3457       end;       end;
3458  end;  end;
3459    
# Line 4216  begin; Line 3470  begin;
3470    CheckCode();    CheckCode();
3471  end;  end;
3472    
3473  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3474  var  var
3475    WebSvar : String;    WebSvar : String;
3476    URLStr : String;    URLStr : String;
# Line 4226  var Line 3480  var
3480    status, kommentar : String;    status, kommentar : String;
3481    
3482  begin  begin
3483      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3484    
3485      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3486      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3487      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3488      StedKode := Sted;      StedKode := Sted;
3489      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3490  // 20150330: start  
3491      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3492      begin      begin
3493        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3494      end;      end;
3495  // 20150330: slut  
3496    
3497      try      try
3498      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4289  begin Line 3543  begin
3543        end;        end;
3544      end;      end;
3545    
3546      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3547    
3548      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3549    
# Line 4306  begin Line 3560  begin
3560           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3561         end;         end;
3562         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3563         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3564      end;      end;
3565    
3566  end;  end;
# Line 4330  begin Line 3584  begin
3584    else    else
3585      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3586  }  }
3587    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3588    
3589    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3590    CheckCode();    CheckCode();
# Line 4338  end; Line 3592  end;
3592    
3593  end;  end;
3594    
 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;  
3595    
3596  //  //
3597  // Bladhus ***  // Bladhus ***
# Line 4854  begin Line 4069  begin
4069    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4070  end;  end;
4071    
4072  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4073  begin  begin
4074      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4075      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4076  end;  end;
4077    
4078  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4079  const  const
4080    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4081    
# Line 4869  begin Line 4084  begin
4084      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4085  end;  end;
4086    
4087  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4088  begin  begin
4089      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4090      begin      begin
# Line 4878  begin Line 4093  begin
4093      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
4094  end;  end;
4095    
4096  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;  
4097    
4098  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4099  var  var
# Line 4902  var Line 4105  var
4105    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4106    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4107    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4108    pakketyper : TStrings;    //pakketyper : TStrings;
4109      pakketyper : TDictionary<String, Integer>;
4110      tmpAntal : Integer;
4111    
4112    
4113    
4114    antlin : Integer;    antlin : Integer;
4115  // 20150306: start  
4116    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4117  // 20150306: slut  
4118    XmlFelter : TStrings;    //XmlFelter : TStrings;
4119      XmlFelter : TDictionary<String, Integer>;
4120    
4121   begin   begin
4122      XmlFelter := TStringList.Create;  
4123      pakketyper := TStringList.Create;  
4124        XmlFelter := TDictionary<String, Integer>.Create;
4125        pakketyper := TDictionary<String, Integer>.Create;
4126    
4127      linienr := 0;      linienr := 0;
4128      ListBox2.Clear;      ListBox2.Clear;
4129      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4926  var Line 4138  var
4138          StedKode := Sted;          StedKode := Sted;
4139        end;        end;
4140    
4141  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4142  (*  
4143      if Returpakkerfrapakkeshop1.Checked then  
4144       begin  
4145        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  
4146       begin       begin
4147        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4148       end       end
4149      else      else if (Scanningtype = '6') then
      begin  
       URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer  
      end;  
 *)  
     if (Scanningtype = '6') then  
4150       begin       begin
4151        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4152       end       end
4153      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4154       begin       begin
4155        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4156       end       end
4157      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4158       begin       begin
# Line 4988  var Line 4189  var
4189      try      try
4190        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4191    
4192  // 20150206: start  
4193        antlin := 0;        antlin := 0;
4194        antlinIdag := 0;        antlinIdag := 0;
4195        antlinSenere := 0;        antlinSenere := 0;
4196  // 20150306: slut  
       antalFelterFundet := 0;  
4197        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4198            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4199            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4200              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4201              begin              begin
4202                 antlin := antlin + 1;                 Inc(antlin);
4203                 // 20150306: start                 // 20150306: start
4204                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4205                begin                begin
4206                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4207                   begin                   begin
4208                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4209                   end                   end
4210                   else                   else
4211                   begin                   begin
4212                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4213                   end;                   end;
4214                end;                end;
4215                 // 20150306: slut                 // 20150306: slut
4216              end;              end;
4217            end;            end;
4218            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4219                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4220                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4221                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4222                  end
4223                else                else
4224                  XmlFelter.values[Node.NodeName] := '1';                begin
4225                    XmlFelter.Add(Node.NodeName, 1);
4226                  end;
4227    
4228        end;        end;
4229        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4230        antalFelterFundet := 0;        antalFelterFundet := 0;
4231        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4232        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4233  // 20150206: start  
4234  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4235          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4236    
4237        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4238        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4239        begin        begin
4240          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4241        end;        end;
4242        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4243  // 20150306: slut  
4244        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4245    
4246    
4247        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4248            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4249            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5042  var Line 4251  var
4251                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4252                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4253                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4254              end;              end
4255              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4256                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4257                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4258                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4259              end;              end
4260              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4261                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4262                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4263                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4264              end;              end
4265              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4266                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4267                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4268                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4269              end;              end
4270              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4271                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4272                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4273                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4274                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4275                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4276                    pakketyper.TryGetValue(pakketype, tmpAntal);
4277                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4278                  end
4279                else                else
4280                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4281              end;              end
4282              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4283                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4284                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4285                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4286                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4287                  begin                  begin
4288  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4289                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4290                    begin                    begin
4291                      stregkoderMedTjekkodeArray[linienr] := 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
4292                    end                    end
4293                    else                    else
4294                    begin                    begin
4295                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4296                    end;                    end;
4297  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4298                  end;                  end;
4299              end;              end;
4300    
4301    
4302              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4303              begin              begin
4304                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5102  var Line 4314  var
4314              end;              end;
4315            end;            end;
4316        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4317    
4318          // Free up the list object  
4319          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4320    
4321    
4322          for pakketype in pakketyper.Keys do
4323          begin
4324            pakketyper.TryGetValue(pakketype, tmpAntal);
4325            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4326          end;
4327    
4328            // Free up the dictionary object
4329        pakketyper.Free;        pakketyper.Free;
4330  // 20150306: start  
4331    
4332    
4333  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4334        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4335        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5118  var Line 4338  var
4338        end;        end;
4339        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4340        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4341        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4342        begin        begin
4343          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5128  var Line 4346  var
4346        begin        begin
4347          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4348        end;        end;
 // 20150309: slut  
4349    
 // 20150310: start  
4350        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4351        begin        begin
4352          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5209  var Line 4425  var
4425            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4426          end;          end;
4427        end;        end;
 // 20150310: slut  
4428    
4429      except on e:exception do      except on e:exception do
4430        begin        begin
# Line 5271  end; Line 4486  end;
4486  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4487  var  var
4488     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4489     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4490     imorgenYmd : string;     imorgenYmd : string;
4491     logFilnavn : string;     logFilnavn : string;
4492      error : Integer;     //error : Integer;
4493    
4494  begin  begin
4495    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5368  begin Line 4581  begin
4581          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4582          S := buffer;          S := buffer;
4583          SetLength(A,0);          SetLength(A,0);
4584          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4585          if (length(A) < 2) then          if (length(A) < 2) then
4586          begin          begin
4587            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4588          end;          end;
4589            if (length(A) > 1) then            if (length(A) > 1) then
4590            begin            begin
# Line 5445  begin Line 4658  begin
4658          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4659          S := buffer;          S := buffer;
4660          SetLength(A,0);          SetLength(A,0);
4661          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4662          if (length(A) < 3) then          if (length(A) < 3) then
4663          begin          begin
4664            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4665          end;          end;
4666          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4667          begin          begin
# Line 5540  begin Line 4753  begin
4753    result := svar;    result := svar;
4754  end;  end;
4755    
4756    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4757    begin
4758      //ShowMessage('Ændring ikke tilladt');
4759      // Her skal komme en 'rød skærm' alarm
4760      PlaySound(PWideChar(AlarmLyd));
4761      MainForm.Color := clRed;
4762    
4763    
4764      RuteNummerST.Caption := '';
4765      BoghandlerNavnST.Caption := '';
4766      btnNulstil.Visible := true;
4767    
4768      if (strMessage <> '') then
4769      begin
4770        ListBox1.Items.Insert(0, strMessage);
4771        KommentarST.Caption := strMessage;
4772      end;
4773    
4774    end;
4775    
4776  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4777  var  var
4778     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5597  begin Line 4830  begin
4830    result := svar;    result := svar;
4831  end;  end;
4832    
 function TMainForm.GetCurrentPrinterHandle: THandle;  
 var  
   Device, Driver, Port: array[0..255] of Char;  
   hDeviceMode: THandle;  
 begin  
   Printer.GetPrinter(Device, Driver, Port, hDeviceMode);  
   if not OpenPrinter(@Device, Result, nil) then  
     RaiseLastWin32Error;  
 end;  
   
 function TMainForm.SavePChar(p: PChar): PChar;  
 const  
   error: PChar = 'Nil';  
 begin  
   if not Assigned(p) then  
     Result := error  
   else  
     Result := p;  
 end;  
4833    
4834  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4835  begin  begin
4836    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4837    begin    begin
4838       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4839    end    end
4840    else    else
4841    begin    begin
4842       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4843    end;    end;
4844  end;  end;
4845    
4846  function TMainForm.AdobeReaderExists: Boolean;  
4847  var  
4848    AReg: TRegistry;  //Nedarvet fra IParentForm
4849    procedure TMainForm.LogMessage( msg : string);
4850  begin  begin
4851    result:= false;    ListBox1.Items.Insert(0, msg);
4852    AReg := TRegistry.Create;    SkrivScanningLogFil(msg);
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4853  end;  end;
4854    
 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  
4855    
4856  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4857  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4858  //            'Timer' skal kun vise alarmlinie  begin
4859    
4860    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4861      if (alert) then
4862    begin    begin
4863      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4864      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4865      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);  
4866    end    end
4867    else    else
4868    begin    begin
4869      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4870      try      PrinterstatusStaticText1.Color := clWhite;
4871        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
   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);  
4872    end;    end;
   
4873  end;  end;
4874    
4875  // 20150310: start  //Nedarvet fra IParentForm
4876  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetFormObject() : TForm;
 var  
    R: TRect;  
    Rgn: HRGN;  
4877  begin  begin
4878     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;  
4879  end;  end;
 // 20150310: slut  
4880    
4881  end.  end.
4882    

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

  ViewVC Help
Powered by ViewVC 1.1.20