/[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 2678 by torben, Wed Aug 26 13:20:47 2015 UTC revision 3039 by torben, Wed Jun 1 13:25:34 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes,    UITypes,
23    PakkeshopLabels,    PakkeshopLabels,
24    StBarC,    Utils,
25    Math // DegToRad() bruges i PrintPakkeshopLabel    ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 27  type Line 39  type
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      Pakkernormal1: TMenuItem;
# Line 53  type Line 64  type
64      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
65      ListBox1: TListBox;      ListBox1: TListBox;
66      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
67      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
68      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
69      Image1: TImage;      Image1: TImage;
70      ListBox2: TListBox;      ListBox2: TListBox;
71      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
72      UploadButton01: TButton;      BtnUploadLogfil: TButton;
73      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
74      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
75      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
76      btnNulstil: TButton;      btnNulstil: TButton;
77      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
78      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
79      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
80      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
81      N5: TMenuItem;      N5: TMenuItem;
82      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
83      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 93  type Line 104  type
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110    
111    
112    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    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;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 139  type Line 143  type
143    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
144    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
145    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
146    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
147    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
148    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
149    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
150    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 148  type Line 152  type
152    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
153    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
154    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
155    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
156    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
157    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
158    procedure btnNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
159    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
# Line 163  type Line 167  type
167    
168    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
169    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
170    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
171    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
172    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
173    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
# Line 185  type Line 189  type
189    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
190    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
191    procedure TjekkerUrls();    procedure TjekkerUrls();
192      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193    
   procedure RoundCornerOf(Control: TWinControl);  
194    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
195    
196    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
197    procedure CheckPrintQue(tjektype : string);  
198      //Nedarvet fra IParentForm
199      procedure Msg( msg : string);
200      procedure LogMessage( msg : string);
201      procedure SetPrinterstatusText( txt: string; alert: boolean);
202      function GetFormObject() : TForm;
203    
204    
205    
206    private    private
# Line 199  type Line 209  type
209      SkrivLog : String;      SkrivLog : String;
210      Sted : String;      Sted : String;
211      StedNavn : String;      StedNavn : String;
212      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215    
216      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220      ScanTjekkode : String;      ScanTjekkode : String;
221      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224      LabelType : integer;            FarveIndlevering : String;
225    
226        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227              TitelIndlevering : String;
228    
229      AlarmLyd : String;      AlarmLyd : String;
230      ScannetOkLyd : String;      ScannetOkLyd : String;
231      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
232  // 20150317: start  
233      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
234  // 20150317: slut  
235      PrinterNavn : String;      PrinterNavn : String;
236      TjekPrinter : String;      TjekPrinter : String;
237      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;  
238      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239      BladhusSted : Integer;      BladhusSted : Integer;
240      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 253  type Line 247  type
247      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250        Config : TConfiguration;
251    
     Barcode : TStBarcode;  
252    
253            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
254    
255      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 = '');
256      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
257      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 = '');
258      procedure CheckCode();      procedure CheckCode();
259      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 269  type Line 263  type
263      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
264      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
266        function InjectURL(Url : String) : String;
267    
268    public    public
269      { Public declarations }      { Public declarations }
270    end;    end;
271    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
# Line 290  var Line 283  var
283  implementation  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
286  function TMainForm.TColorToHex(Color : TColor) : string;  
287  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;  
288    
289  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
290  begin  begin
291    
 // 20150309: startr  
292      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
293    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
294    
295      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
296      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 359  begin Line 334  begin
334        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
335      end;      end;
336    
337      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
338    
339      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
340      begin      begin
# Line 387  begin Line 362  begin
362        else if (Sted = 'BR') then        else if (Sted = 'BR') then
363          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
364        else if (Sted = 'BK') then        else if (Sted = 'BK') then
365          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
366          else if (Sted = 'TK') then
367            begin StedNavn := 'BK/Trykkompagniet: '; end
368        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
369          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
370        else if (Sted = '1') then        else if (Sted = '1') then
371          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
372        else if (Sted = '2') then        else if (Sted = '2') then
# Line 413  begin Line 390  begin
390    
391      StartScreen();      StartScreen();
392      MainForm.Caption := Titel;      MainForm.Caption := Titel;
393      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
394      MainForm.Farve := Farve;      MainForm.Farve := Farve;
395      MainForm.Titel := Titel;      MainForm.Titel := Titel;
396      MainForm.Url := Url;      MainForm.Url := Url;
# Line 473  begin Line 450  begin
450          end          end
451          else          else
452          begin          begin
453            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
454          end;          end;
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end        end
457        else        else
458        begin        begin
459          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
460          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
461        end;        end;
462      end;      end;
463    
464    
465  end;  end;
466    
467  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 522  end; Line 500  end;
500    
501  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
502  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;  
 *)  
503  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
504  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
505       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
506       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
507       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
508  end;  end;
509    
510    function TMainForm.InjectURL(Url : String) : String;
511    begin
512    
513      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
514      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
515      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
516    
517      Result := Url;
518    end;
519    
520    //InitForm kaldes før FormCreate
521  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
522  const  const
523    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
524  var  var
   printerInd : integer;  
525    gemScanningtype : String;    gemScanningtype : String;
526    
527  begin  begin
528    
529    
530    // Initierer nogle variabler    // Initierer nogle variabler
531    BladhusSted := 00;    BladhusSted := 00;
532    Application.ShowHint := True;    Application.ShowHint := True;
# Line 561  begin Line 535  begin
535    
536    btnNulstil.BringToFront;    btnNulstil.BringToFront;
537    
538    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
539    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
540    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
541    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
542    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
543    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
544    
545    
546    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 580  begin Line 554  begin
554    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
555    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
556    
557      Config := TConfiguration.Create();
558      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
559      Config.Sted := Sted;
560    
561    // Læser parametre fra ini filen    // Læser parametre fra ini filen
562    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
563    try    try
564    
565    
566      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
567      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
568      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
569    
570      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
571        UrlFindPakketype := InjectURL(UrlFindPakketype);
572    
573      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
574        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
575    
576      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
577        UrlNormal := InjectURL(UrlNormal);
578    
579      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
580        UrlReturDAO := InjectURL(UrlReturDAO);
581    
582      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
583        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
584    
585      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');
586        UrlBudlevering := InjectURL(UrlBudlevering);
587    
588      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');
589        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
590    
591      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');
592        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
593    
594      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');
595        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
596    
597      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');
598        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
599    
600      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');
601        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
602    
603      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');
604        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
605    
606      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');
607        UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
608    
609      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
610        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
611    
612        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
613        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
614    
615        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
616        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
617    
618    
619    
     LabelType := ReadInteger('Settings','LabelType',1);  
620      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
621      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
622      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 642  begin Line 653  begin
653    
654      if (SkrivLog = '1') then      if (SkrivLog = '1') then
655      begin      begin
656        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);
657        try        try
658          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
659          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
660          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
661          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
662          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
663          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 664  begin Line 675  begin
675        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
676      end;      end;
677    
678      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;  
679    
680      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
681      begin      begin
# Line 785  begin Line 728  begin
728      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
729      // *************************** //      // *************************** //
730    
731    {$IfDef STED_BK}
732        SpecialVersionSted := 'BK';
733    {$EndIf}
734    {$IfDef STED_TK}
735        SpecialVersionSted := 'TK';// BK-Trykkompagniet
736    {$EndIf}
737    {$IfDef STED_DBK}
738        SpecialVersionSted := 'DBK';
739    {$EndIf}
740    {$IfDef STED_FD}
741        SpecialVersionSted := 'FD';
742    {$EndIf}
743    {$IfDef STED_NS}
744        SpecialVersionSted := 'NS';
745    {$EndIf}
746    
747    
748      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
749      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
750      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 800  begin Line 760  begin
760      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
761      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
762    
 // 20150313: start  
763      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
764      begin      begin
765         SpecialVersionSted := '01';         SpecialVersionSted := '01';
766         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
767      end;      end;
768    
769      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
770      begin      begin
771         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
772         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
773    
774    
775          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
776          Sted := SpecialVersionSted;
777         // her skal vi også disable de knapper BK ikke kan bruge
778          PanelValg2.Enabled := false;
779          PanelValg2.Font.Color := clInactiveCaption;
780          PanelValg3.Enabled := false;
781          PanelValg3.Font.Color := clInactiveCaption;
782          //PanelValg6.Enabled := false;
783          //PanelValg6.Font.Color := clInactiveCaption;
784    
785         // her skal vi også disable de menupunkter FD ikke kan bruge
786          ReturpakkerfraDAO1.Enabled := false;
787          Returpakkerfraboghandler1.Enabled := false;
788    
789          //Returpakkerfrapakkeshop1.Enabled := false;
790    
791      end;      end;
 // 20150313: slut  
792    
793      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
794      begin      begin
795        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
796        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 822  begin Line 799  begin
799        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
800        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
801        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
802        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
803        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
804    
805       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
806        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
807        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
808        Returpakkerfrapakkeshop1.Enabled := false;  
809          //Returpakkerfrapakkeshop1.Enabled := false;
810    
811        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
812        begin        begin
813           Scanningtype := '1';           Scanningtype := '1';
# Line 851  begin Line 831  begin
831        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
832        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
833        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
834        PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
835    
836       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
837        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
# Line 1082  begin Line 1061  begin
1061      end;      end;
1062    
1063    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1064    
1065      CheckPrintQue('Opstart');  
1066        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1067        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1068    
1069    finally    finally
1070      Free;      Free;
# Line 1156  begin Line 1131  begin
1131      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1132    
1133      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1134      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1135    
1136  end;  end;
1137    
# Line 1213  begin Line 1188  begin
1188      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1189      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1190      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1191        or (NumberString = 'DAO PAKKESHOP')
1192        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1193            or (LowerCase(NumberString) = 'for stor daodirekte' )
1194      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1195    
1196      begin      begin
# Line 1223  begin Line 1201  begin
1201      begin      begin
1202        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1203      end;      end;
1204    end;    end;  // Slut ctrl-v
1205    
1206    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1207    begin    begin
1208      if (Length(Trim(Stregkode)) = 0) then  
1209        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1210        Stregkode := Trim(Stregkode);
1211    
1212        if (Length(Stregkode) = 0) then
1213      begin      begin
1214        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1215    
# Line 1277  begin Line 1259  begin
1259         exit;         exit;
1260      end;      end;
1261    
1262        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1263        begin
1264          if chkForstorTilDirekte.Enabled then
1265          begin
1266            chkForstorTilDirekte.Checked := true;
1267          end
1268          else
1269          begin
1270             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1271          end;
1272          Stregkode := '';
1273          StregkodeST.Caption := StregKode;
1274          exit;
1275        end;
1276    
1277    
1278      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1279      begin      begin
1280         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1474  begin Line 1472  begin
1472        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1473      end;      end;
1474    
1475      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1476          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1477          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1478          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1479          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1480          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1481      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1482          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1483    
1484         exit;         exit;
1485      end;      end;
1486    
1487      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1488      begin      begin
1489        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1490        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1515  begin Line 1513  begin
1513                InitPakkeshoplevering();                InitPakkeshoplevering();
1514              end;              end;
1515            end            end
1516        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1517              begin
1518                if Scanningtype <> '6' then
1519                begin
1520                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1521    
1522                 exit;
1523                end;
1524              end
1525    
1526    
1527        else        else
1528            begin            begin
1529            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1530              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1531                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1532    
1533               exit;               exit;
1534            end;            end;
# Line 1608  begin Line 1616  begin
1616             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1617             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1618             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1619                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1620             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1621                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1622             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1623           end           end
1624          else          else
# Line 1631  begin Line 1639  begin
1639    
1640      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
1641      begin      begin
1642    
1643         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1644            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1645         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 1670  begin Line 1679  begin
1679           end;           end;
1680            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
1681            begin            begin
1682              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1683              if Storepakker1.Checked then              if Storepakker1.Checked then
1684              begin              begin
1685                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1683  begin Line 1692  begin
1692            end            end
1693            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1694            begin            begin
1695              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1696              if Storepakker1.Checked then              if Storepakker1.Checked then
1697              begin              begin
1698                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1705  begin Line 1714  begin
1714            begin            begin
1715              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1716            end;            end;
1717    
1718           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1719            begin            begin
1720    
# Line 1754  begin Line 1764  begin
1764    
1765    Key := #0;    Key := #0;
1766    
1767    
1768    
1769    
1770    
1771    
1772  end; //End of OnKeyPress  end; //End of OnKeyPress
1773    
1774    
1775    
1776  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1777  const  const
1778    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1797  var Line 1814  var
1814    
1815    
1816  begin  begin
1817      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
1818      begin      begin
1819        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1820          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1808  begin Line 1825  begin
1825            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1826            begin            begin
1827              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1828              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1829  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1830  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1831  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1832              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1833            end            end
1834            else     // kun idag            else     // kun idag
1835            begin            begin
# Line 1916  begin Line 1933  begin
1933                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1934              end;              end;
1935            end;            end;
1936  // 20150310: slut  
1937            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1938          end;          end;
1939      end;      end;
# Line 1952  begin Line 1969  begin
1969    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1970    ListBox1.Visible := true;    ListBox1.Visible := true;
1971  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1972  // 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  
1973    if Budlevering1.Checked then    if Budlevering1.Checked then
1974    begin    begin
1975      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2005  begin Line 1982  begin
1982      01 :      01 :
1983            begin;      // NS            begin;      // NS
1984              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1985              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1986              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1987              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1988              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1989              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2021  begin Line 1998  begin
1998              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1999              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2000              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2001              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
2002              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2003              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2004              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2005              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2032  begin Line 2009  begin
2009              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2010             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2011              begin              begin
2012                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2013              end              end
2014              else              else
2015              begin              begin
2016                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2017              end;              end;
2018              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2019              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2020              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2021              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2022              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2059  begin Line 2036  begin
2036              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2037              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2038              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2039              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2040              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2041              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2042              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2043            end;            end;
# Line 2125  begin Line 2102  begin
2102    begin    begin
2103      exit;      exit;
2104    end;    end;
2105    
2106      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2107      begin
2108        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2109      end;
2110    
2111    try    try
2112      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2113      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2146  begin Line 2129  begin
2129          end;          end;
2130      end;      end;
2131    end;    end;
2132    
2133    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2134    try    try
2135      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2169  begin Line 2153  begin
2153          end;          end;
2154        end;        end;
2155       end       end
2156      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2157      begin      begin
2158    
2159    
# Line 2180  begin Line 2164  begin
2164       begin       begin
2165         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2166         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2167           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2168           Stregkode := PakkeshopLabel.Stregkode;
2169    
2170         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2171           chkForstorTilDirekte.Checked := false;
2172    
2173       end;       end;
2174    
# Line 2313  begin Line 2300  begin
2300        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2301      end;      end;
2302    end;    end;
2303      if menuIndlevering.Checked then
2304      begin
2305        List1Msg := Stregkode;
2306      end;
2307    
2308    
2309    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2310    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2311    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2312  end;  end;
2313    
2314  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2315  begin  begin
2316    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2317    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2335  pakkeForkertSted : Integer; Line 2328  pakkeForkertSted : Integer;
2328    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2329  begin  begin
2330    if Budlevering1.Checked then    if Budlevering1.Checked then
2331       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2332    
2333    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2334    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2391  begin Line 2384  begin
2384            PrintNyLabel := true;            PrintNyLabel := true;
2385            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2386            nyFarve := Farve;            nyFarve := Farve;
2387            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2388            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2389            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2390            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2453  begin Line 2446  begin
2446               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2447  // 20150304: slut  // 20150304: slut
2448                begin                begin
2449                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2450                end;                end;
2451              end;              end;
2452        01 :  begin;        01 :  begin;
# Line 2461  begin Line 2454  begin
2454                    // 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
2455                    // 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')
2456                begin                begin
2457                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2458                end;                end;
2459              end;              end;
2460        02 :  begin;        02 :  begin;
2461                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
2462                begin                begin
2463                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2464                end;                end;
2465              end;              end;
2466        03 :  begin;        03 :  begin;
# Line 2475  begin Line 2468  begin
2468                    // 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
2469                    // 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')
2470               begin               begin
2471                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2472               end;               end;
2473              end;              end;
2474        04 :  begin;        04 :  begin;
2475                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
2476                begin                begin
2477                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2478                end;                end;
2479              end;              end;
2480        else        else
# Line 2517  begin Line 2510  begin
2510        end;        end;
2511        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2512        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2513        with Printer do  
2514        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2515          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;  
2516      end;      end;
2517    end;    end;
2518    
2519  end;  end;
2520    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2521    
2522    
2523  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2674  begin Line 2607  begin
2607    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2608    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...');
2609    
2610          // Tjekker urls    try
2611          logTekst := 'Tjekker urls.';      // Tjekker urls
2612          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2613          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2614        SkrivScanningLogFil(logTekst);
2615    
         // 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;  
2616    
         // 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;  
2617    
2618          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2619          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2620          begin      begin
2621            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2622            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;  
2623    
2624          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2625          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2626          begin      begin
2627            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2628            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;  
2629    
2630          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2631          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2632          begin      begin
2633            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2634            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;  
2635    
2636          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2637          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2638          begin      begin
2639            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2640            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;  
2641    
2642          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2643          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2644          or (PanelValg4.Enabled = true) then      begin
2645          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2646            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;  
2647    
2648          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2649          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2650          begin      begin
2651            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2652            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;  
2653    
2654          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2655          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2656          begin      begin
2657            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2658            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;  
2659    
2660          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2661          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2662          begin      begin
2663            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2664            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;  
2665    
2666        // Tjekker UrlPakkeshopManglendeReturScanninger
2667        if PanelValg6.Enabled = true then
2668        begin
2669          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2670        end;
2671    
2672          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2673          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2674          begin      begin
2675            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2676            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2677              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2678    
2679        // Tjekker UrlEKLoverforsel
2680        if PanelValg1.Enabled = true then
2681        begin
2682          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2683        end;
2684    
         // Tjekker UrlFindPakketype  
         if CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2685    
2686          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2687          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2688          begin      begin
2689            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2690            SkrivScanningLogFil(logTekst);      end;
2691          end  
2692          else  
2693          begin      // Tjekker UrlFindPakketype
2694              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2695              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2696              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2697              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2698              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;  
2699    
         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;  
2700    
2701        logTekst := 'urls er ok';
2702        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2703        SkrivScanningLogFil(logTekst);
2704    
2705      Except
2706        TjekUrls := '-';   // markerer at der var fejl
2707    
2708      end;
2709  end;  end;
2710    
2711  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2712  var  const
2713     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2714  begin  begin
2715     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2716     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2717     Result := SystemTimeToDateTime(SystemTime) ;    begin
2718        logTekst := UrlNavn + ' accepteret: ' + Url;
2719        SkrivScanningLogFil(logTekst);
2720      end
2721      else
2722      begin
2723        inc(urlFejl);   // Optæller antal fejl
2724        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2725        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2726        if TjekUrls = '1' then
2727        begin
2728          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2729        end;
2730    
2731        SkrivScanningLogFil(logTekst);
2732    
2733        if TjekUrls = '1' then
2734        begin
2735          ShowMessage(logTekst);
2736          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2737          Application.Terminate;
2738    
2739          raise Exception.Create('UrlFejl');
2740    
2741        end;
2742      end;
2743    
2744  end;  end;
2745    
2746    
2747    
2748  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2749  var  var
2750    SR: TSearchRec;    SR: TSearchRec;
# Line 3083  begin Line 2764  begin
2764    
2765          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2766          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2767          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2768          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2769          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2770          // (æ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 3142  begin Line 2823  begin
2823  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2824    if Farve <> '' then    if Farve <> '' then
2825    begin    begin
2826       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  
2827    end;    end;
2828    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2829    begin    begin
# Line 3216  end; Line 2887  end;
2887    
2888  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2889  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;  
 *)  
2890  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2891  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2892       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2893       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2894       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2895  // 20150311: slut  
2896    
2897    
2898  end;  end;
2899    
2900  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3309  begin Line 2967  begin
2967    Falsk := False;    Falsk := False;
2968    
2969    
2970    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2971    begin    begin
2972      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2973    end    end
# Line 3323  begin Line 2981  begin
2981      SmsKode := '999999';      SmsKode := '999999';
2982      DBKbane := '999';      DBKbane := '999';
2983      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2984      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
2985      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2986        LabelPrint.CheckPrintQue('Test', PrinterNavn);
2987    end;    end;
2988    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2989  end;  end;
# Line 3333  procedure TMainForm.Timer1Timer(Sender: Line 2992  procedure TMainForm.Timer1Timer(Sender:
2992  begin  begin
2993    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2994    begin    begin
2995      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2996    end    end
2997    else    else
2998    begin    begin
# Line 3342  begin Line 3001  begin
3001    end;    end;
3002  end;  end;
3003    
3004  {  
  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;  
3005    
3006  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3007  const  const
# Line 3380  var Line 3010  var
3010   tekst, filversion : String;   tekst, filversion : String;
3011  begin  begin
3012    
3013    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
3014    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';
3015    
3016    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3402  begin Line 3032  begin
3032          end          end
3033          else          else
3034          begin          begin
3035            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3036          end;          end;
3037      end      end
3038      else      else
3039      begin      begin
3040        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3041      end;      end;
3042    end;    end;
3043    
# Line 3423  begin Line 3053  begin
3053    
3054  end;  end;
3055    
3056    
3057  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3058    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3059  var  var
# Line 3475  begin Line 3106  begin
3106    
3107    if FileExists(fileName) then    if FileExists(fileName) then
3108    begin    begin
3109      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3110      begin      begin
3111        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3112        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3499  begin Line 3130  begin
3130    
3131    if FileExists(fileName) then    if FileExists(fileName) then
3132    begin    begin
3133      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3134      begin      begin
3135        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3136        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3137      end      end
3138      else      else
3139      begin      begin
3140        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3141      end;      end;
3142    end    end
3143    else    else
# Line 3572  begin Line 3203  begin
3203        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3204        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3205        ListBox1.Visible := true;        ListBox1.Visible := true;
3206        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3207        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3208        InitLillePakke();        InitLillePakke();
3209        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3210    
3211          chkForstorTilDirekte.Checked := false;
3212          chkForstorTilDirekte.Enabled := false;
3213    
3214        if BladhusSted = 0 then        if BladhusSted = 0 then
3215        begin        begin
3216          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3606  begin Line 3241  begin
3241        ListBox1.Visible := true;        ListBox1.Visible := true;
3242        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3243        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3244        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3245    
3246          chkForstorTilDirekte.Checked := false;
3247          chkForstorTilDirekte.Enabled := false;
3248    
3249        InitLillePakke();        InitLillePakke();
3250  end;  end;
3251    
# Line 3632  begin Line 3271  begin
3271        ListBox1.Visible := true;        ListBox1.Visible := true;
3272        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3273        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3274        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3275    
3276          chkForstorTilDirekte.Checked := false;
3277          chkForstorTilDirekte.Enabled := false;
3278    
3279        InitLillePakke();        InitLillePakke();
3280  end;  end;
3281    
# Line 3658  begin Line 3301  begin
3301        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3302        ListBox1.Visible := true;        ListBox1.Visible := true;
3303        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3304        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3305        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3306        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3307        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3308        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3309        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3310    
3311          chkForstorTilDirekte.Checked := false;
3312          chkForstorTilDirekte.Enabled := true;
3313    
3314        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3315        begin        begin
3316            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3694  begin Line 3341  begin
3341        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3342        ListBox1.Visible := true;        ListBox1.Visible := true;
3343        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3344        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3345        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3346    
3347        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3348    
3349          chkForstorTilDirekte.Checked := false;
3350          chkForstorTilDirekte.Enabled := true;
3351    
3352        InitLillePakke();        InitLillePakke();
3353        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3731  begin Line 3381  begin
3381        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3382        ListBox1.Visible := true;        ListBox1.Visible := true;
3383        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3384        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3385        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3386        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3387    
3388          chkForstorTilDirekte.Checked := false;
3389          chkForstorTilDirekte.Enabled := false;
3390    
3391    
3392        InitLillePakke();        InitLillePakke();
3393        IndlesScanningLogFil();        IndlesScanningLogFil();
3394        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3778  begin Line 3433  begin
3433        ListBox1.Visible := true;        ListBox1.Visible := true;
3434        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3435    
3436        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3437        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3438        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3439    
3440          chkForstorTilDirekte.Checked := false;
3441          chkForstorTilDirekte.Enabled := false;
3442    
3443    
3444        InitLillePakke();        InitLillePakke();
3445        IndlesScanningLogFil();        IndlesScanningLogFil();
3446        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3818  begin Line 3478  begin
3478  // 20150310: slut  // 20150310: slut
3479  end;  end;
3480    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Integer;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
3481    
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
   
   end;  
 end;  
3482    
3483  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3484  begin  begin
# Line 3942  begin; Line 3549  begin;
3549    CheckCode();    CheckCode();
3550  end;  end;
3551    
3552  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3553  var  var
3554    WebSvar : String;    WebSvar : String;
3555    URLStr : String;    URLStr : String;
# Line 3952  var Line 3559  var
3559    status, kommentar : String;    status, kommentar : String;
3560    
3561  begin  begin
3562      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3563    
3564      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');
3565      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3566      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3567      StedKode := Sted;      StedKode := Sted;
3568      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3569  // 20150330: start  
3570      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3571      begin      begin
3572        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3573      end;      end;
3574  // 20150330: slut  
3575    
3576      try      try
3577      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4015  begin Line 3622  begin
3622        end;        end;
3623      end;      end;
3624    
3625      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3626    
3627      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
3628    
# Line 4056  begin Line 3663  begin
3663    else    else
3664      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3665  }  }
3666    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3667    
3668    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3669    CheckCode();    CheckCode();
# Line 4064  end; Line 3671  end;
3671    
3672  end;  end;
3673    
 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;  
3674    
3675  //  //
3676  // Bladhus ***  // Bladhus ***
# Line 4580  begin Line 4148  begin
4148    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
4149  end;  end;
4150    
4151  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4152  begin  begin
4153      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4154      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
4155  end;  end;
4156    
4157  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4158  const  const
4159    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4160    
# Line 4595  begin Line 4163  begin
4163      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
4164  end;  end;
4165    
4166  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4167  begin  begin
4168      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4169      begin      begin
# Line 4604  begin Line 4172  begin
4172      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
4173  end;  end;
4174    
 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;  
   
 // ToDo: PrintPakkeshopLabel()  
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
 var  
   XForm, XFormOld: TXForm; //Bruges til rotate X-formation  
   Angle: integer;  
   gMode: integer;  
   BarcodeArea: TRect;  
   Dirigering: string;  
   
 begin  
     with Printer do  
     begin  
       BeginDoc();  
   
   
       Canvas.Font.Size := 16;  
       Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);  
   
   
   
       Canvas.TextOut(25, 90, PakkeshopLabel.Navn );  
       Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );  
       Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );  
   
   
       Canvas.Font.Size := 9;  
       Canvas.TextOut(110, 240, 'Pakkeshop:');  
       Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);  
       Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);  
       Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);  
   
       Canvas.TextOut(350, 240, 'Afsender:');  
       Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);  
       Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);  
       Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);  
   
       Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;  
       if ( PakkeshopLabel.Koreliste <> '') then  
       begin  
         Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;  
       end;  
   
   
       Canvas.Font.Size := 12;  
       Canvas.TextOut(15, 370, Dirigering);  
   
   
   
   
   
       //Tegn adskillelses linier  
       Canvas.Pen.Width := 2;  
       //Øverste linie  
       Canvas.MoveTo(20,80);  
       Canvas.LineTo(600,80);  
   
       // Midterste linie  
       Canvas.MoveTo( 20, 240);  
       Canvas.LineTo(600, 240);  
   
       //Nederste linie  
       Canvas.MoveTo( 20, 370);  
       Canvas.LineTo(600, 370);  
   
   
       //Tegn skrå streger over afsender  
       Canvas.Pen.Width := 1;  
       Canvas.MoveTo(600, 250);  
       Canvas.LineTo(350, 360);  
       Canvas.MoveTo(600, 360);  
       Canvas.LineTo(350, 250);  
   
   
   
   
       // Resten af rutinen vedr genering og placering af Barcode  
   
       BarCode.BarCodeType := bcCode128;  
       BarCode.Code128Subset := csCodeC;  
       BarCode.Code := PakkeshopLabel.Stregkode;  
       BarCode.Validate(True);  
   
       //Start X-formation  
       //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );  
       GetWorldTransform(Canvas.Handle, XFormOld);  
   
       Angle := 270;  
       XForm.eM11 := Cos(DegToRad(Angle));  
       XForm.eM12 := Sin(DegToRad(Angle));  
       XForm.eM21 := -Sin(DegToRad(Angle));  
       XForm.eM22 := Cos(DegToRad(Angle));  
       XForm.eDx := 0;  
       XForm.eDy := 0;  
   
       gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);  
       SetWorldTransform(Canvas.Handle, XForm);  
   
       // PaintToCanvasSize arbejder i Inches  
       // Første pos argument bliver nu Y og skal være negativ for at rykke den ned  
       //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre  
   
       BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);  
   
   
       SetWorldTransform(Canvas.Handle, XFormOld);  
       SetGraphicsMode(Canvas.Handle, gMode);  
   
       EndDoc();  
     end;  
   
   
 end;  
   
 function GetPixelsPerInchX(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)  
 end;  
   
 function GetPixelsPerInchY(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)  
 end;  
4175    
4176    
4177  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
# Line 4752  var Line 4184  var
4184    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4185    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4186    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4187    pakketyper : TStrings;    //pakketyper : TStrings;
4188      pakketyper : TDictionary<String, Integer>;
4189      tmpAntal : Integer;
4190    
4191    
4192    
4193    antlin : Integer;    antlin : Integer;
4194    
4195    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4196    
4197    XmlFelter : TStrings;    //XmlFelter : TStrings;
4198      XmlFelter : TDictionary<String, Integer>;
4199    
4200   begin   begin
4201      XmlFelter := TStringList.Create;  
4202      pakketyper := TStringList.Create;  
4203        XmlFelter := TDictionary<String, Integer>.Create;
4204        pakketyper := TDictionary<String, Integer>.Create;
4205    
4206      linienr := 0;      linienr := 0;
4207      ListBox2.Clear;      ListBox2.Clear;
4208      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 4776  var Line 4217  var
4217          StedKode := Sted;          StedKode := Sted;
4218        end;        end;
4219    
4220          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4221    
4222    
4223    
4224      if (Scanningtype = '6') then      if (Scanningtype = '7') then
4225       begin       begin
4226        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4227         end
4228        else if (Scanningtype = '6') then
4229         begin
4230          URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4231       end       end
4232      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4233       begin       begin
4234        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4235       end       end
4236      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4237       begin       begin
# Line 4830  var Line 4278  var
4278            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4279              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4280              begin              begin
4281                 antlin := antlin + 1;                 Inc(antlin);
4282                 // 20150306: start                 // 20150306: start
4283                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4284                begin                begin
4285                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4286                   begin                   begin
4287                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4288                   end                   end
4289                   else                   else
4290                   begin                   begin
4291                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4292                   end;                   end;
4293                end;                end;
4294                 // 20150306: slut                 // 20150306: slut
4295              end;              end;
4296            end;            end;
4297            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4298                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4299                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4300                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4301                  end
4302                else                else
4303                  XmlFelter.values[Node.NodeName] := '1';                begin
4304                    XmlFelter.Add(Node.NodeName, 1);
4305                  end;
4306    
4307        end;        end;
4308        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4857  var Line 4310  var
4310        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4311        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4312    
4313    
4314          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4315    
4316        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4317        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4318        begin        begin
# Line 4865  var Line 4321  var
4321        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4322    
4323        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4324    
4325    
4326        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4327            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4328            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4872  var Line 4330  var
4330                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4331                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4332                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4333              end;              end
4334              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4335                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4336                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4337                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4338              end;              end
4339              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4340                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4341                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4342                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4343              end;              end
4344              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4345                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4346                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4347                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4348              end;              end
4349              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4350                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4351                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4352                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4353                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4354                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4355                    pakketyper.TryGetValue(pakketype, tmpAntal);
4356                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4357                  end
4358                else                else
4359                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4360              end;              end
4361              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4362                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4363                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4364                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4365                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4366                  begin                  begin
4367  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4368                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4369                    begin                    begin
4370                      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
4371                    end                    end
4372                    else                    else
4373                    begin                    begin
# Line 4916  var Line 4376  var
4376                    linienr := linienr + 1;                    linienr := linienr + 1;
4377                  end;                  end;
4378              end;              end;
4379    
4380    
4381              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4382              begin              begin
4383                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4931  var Line 4393  var
4393              end;              end;
4394            end;            end;
4395        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4396    
4397          // Free up the list object  
4398          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4399    
4400    
4401          for pakketype in pakketyper.Keys do
4402          begin
4403            pakketyper.TryGetValue(pakketype, tmpAntal);
4404            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4405          end;
4406    
4407            // Free up the dictionary object
4408        pakketyper.Free;        pakketyper.Free;
4409    
4410    
4411    
4412  //      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.');
4413        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4414        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5189  begin Line 4660  begin
4660          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4661          S := buffer;          S := buffer;
4662          SetLength(A,0);          SetLength(A,0);
4663          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4664          if (length(A) < 2) then          if (length(A) < 2) then
4665          begin          begin
4666            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4667          end;          end;
4668            if (length(A) > 1) then            if (length(A) > 1) then
4669            begin            begin
# Line 5266  begin Line 4737  begin
4737          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4738          S := buffer;          S := buffer;
4739          SetLength(A,0);          SetLength(A,0);
4740          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4741          if (length(A) < 3) then          if (length(A) < 3) then
4742          begin          begin
4743            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4744          end;          end;
4745          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4746          begin          begin
# Line 5379  begin Line 4850  begin
4850      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4851    end;    end;
4852    
4853      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4854    
4855  end;  end;
4856    
4857  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5438  begin Line 4911  begin
4911    result := svar;    result := svar;
4912  end;  end;
4913    
 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;  
4914    
4915  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4916  begin  begin
# Line 5470  begin Line 4924  begin
4924    end;    end;
4925  end;  end;
4926    
 function TMainForm.AdobeReaderExists: Boolean;  
 var  
   AReg: TRegistry;  
 begin  
   result:= false;  
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
 end;  
   
   
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   hSession, hfile: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
4927    
4928    //Nedarvet fra IParentForm
4929    procedure TMainForm.Msg( msg : string);
4930    begin
4931      ShowMessage(msg);
4932  end;  end;
4933    
4934    //Nedarvet fra IParentForm
4935  procedure TMainForm.RoundCornerOf(Control: TWinControl);  procedure TMainForm.LogMessage( msg : string);
 var  
    R: TRect;  
    Rgn: HRGN;  
4936  begin  begin
4937     with Control do    ListBox1.Items.Insert(0, msg);
4938     begin    SkrivScanningLogFil(msg);
      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;  
4939  end;  end;
4940    
 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  
4941    
4942  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4943  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4944  //            'Timer' skal kun vise alarmlinie  begin
4945    
4946    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4947      if (alert) then
4948    begin    begin
4949      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4950      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4951      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);  
4952    end    end
4953    else    else
4954    begin    begin
4955      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4956      try      PrinterstatusStaticText1.Color := clWhite;
4957        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;  
4958    end;    end;
4959  end;  end;
4960    
4961    //Nedarvet fra IParentForm
4962    function TMainForm.GetFormObject() : TForm;
4963    begin
4964      Result := self;
4965    end;
4966    
4967  end.  end.
4968    

Legend:
Removed from v.2678  
changed lines
  Added in v.3039

  ViewVC Help
Powered by ViewVC 1.1.20