/[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 3038 by torben, Tue May 31 11:50:42 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 53  type Line 65  type
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      btnNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 93  type Line 105  type
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
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    private    private
# Line 199  type Line 208  type
208      SkrivLog : String;      SkrivLog : String;
209      Sted : String;      Sted : String;
210      StedNavn : String;      StedNavn : String;
211      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
212  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
213                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
214    
215      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
216  // 20150330: slut  
217      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
218      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
219      ScanTjekkode : String;      ScanTjekkode : String;
220      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
221      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
222      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
223      LabelType : integer;            FarveIndlevering : String;
224    
225        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
226              TitelIndlevering : String;
227    
228      AlarmLyd : String;      AlarmLyd : String;
229      ScannetOkLyd : String;      ScannetOkLyd : String;
230      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
231  // 20150317: start  
232      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
233  // 20150317: slut  
234      PrinterNavn : String;      PrinterNavn : String;
235      TjekPrinter : String;      TjekPrinter : String;
236      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;  
237      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
238      BladhusSted : Integer;      BladhusSted : Integer;
239      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 253  type Line 246  type
246      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
247      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
248      TjekUrls : String;      TjekUrls : String;
249        Config : TConfiguration;
250    
     Barcode : TStBarcode;  
251    
252            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
253    
254      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 = '');
255      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
256      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 = '');
257      procedure CheckCode();      procedure CheckCode();
258      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 269  type Line 262  type
262      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
263      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
264      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
265        function InjectURL(Url : String) : String;
266    
267    public    public
268      { Public declarations }      { Public declarations }
269    end;    end;
270    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
271    
272  var  var
273    MainForm: TMainForm;    MainForm: TMainForm;
# Line 290  var Line 282  var
282  implementation  implementation
283  {$R *.dfm}  {$R *.dfm}
284    
285  function TMainForm.TColorToHex(Color : TColor) : string;  
286  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;  
287    
288  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
289  begin  begin
290    
 // 20150309: startr  
291      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
292    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
293    
294      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
295      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 359  begin Line 333  begin
333        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
334      end;      end;
335    
336      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
337    
338      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
339      begin      begin
# Line 387  begin Line 361  begin
361        else if (Sted = 'BR') then        else if (Sted = 'BR') then
362          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
363        else if (Sted = 'BK') then        else if (Sted = 'BK') then
364          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
365          else if (Sted = 'TK') then
366            begin StedNavn := 'BK/Trykkompagniet: '; end
367        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
368          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
369        else if (Sted = '1') then        else if (Sted = '1') then
370          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
371        else if (Sted = '2') then        else if (Sted = '2') then
# Line 413  begin Line 389  begin
389    
390      StartScreen();      StartScreen();
391      MainForm.Caption := Titel;      MainForm.Caption := Titel;
392      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
393      MainForm.Farve := Farve;      MainForm.Farve := Farve;
394      MainForm.Titel := Titel;      MainForm.Titel := Titel;
395      MainForm.Url := Url;      MainForm.Url := Url;
# Line 473  begin Line 449  begin
449          end          end
450          else          else
451          begin          begin
452            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
453          end;          end;
454          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
455        end        end
456        else        else
457        begin        begin
458          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
459          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
460        end;        end;
461      end;      end;
462    
463    
464  end;  end;
465    
466  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 522  end; Line 499  end;
499    
500  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
501  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;  
 *)  
502  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
503  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
504       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
505       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
506       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
507  end;  end;
508    
509    function TMainForm.InjectURL(Url : String) : String;
510    begin
511    
512      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
513      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
514      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
515    
516      Result := Url;
517    end;
518    
519    //InitForm kaldes før FormCreate
520  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
521  const  const
522    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
523  var  var
   printerInd : integer;  
524    gemScanningtype : String;    gemScanningtype : String;
525    
526  begin  begin
527    
528    
529    // Initierer nogle variabler    // Initierer nogle variabler
530    BladhusSted := 00;    BladhusSted := 00;
531    Application.ShowHint := True;    Application.ShowHint := True;
# Line 561  begin Line 534  begin
534    
535    btnNulstil.BringToFront;    btnNulstil.BringToFront;
536    
537    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
538    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
539    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
540    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
541    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
542    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
543    
544    
545    // 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 553  begin
553    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
554    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
555    
556      Config := TConfiguration.Create();
557      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
558      Config.Sted := Sted;
559    
560    // Læser parametre fra ini filen    // Læser parametre fra ini filen
561    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
562    try    try
563    
564    
565      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
566      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
567      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
568    
569      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');
570        UrlFindPakketype := InjectURL(UrlFindPakketype);
571    
572      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');
573        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
574    
575      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');
576        UrlNormal := InjectURL(UrlNormal);
577    
578      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');
579        UrlReturDAO := InjectURL(UrlReturDAO);
580    
581      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');
582        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
583    
584      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');
585        UrlBudlevering := InjectURL(UrlBudlevering);
586    
587      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');
588        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
589    
590      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');
591        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
592    
593      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');
594        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
595    
596      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');
597        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
598    
599      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');
600        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
601    
602      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');
603        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
604    
605      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');
606        UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
607    
608      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');
609        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
610    
611        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
612        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
613    
614        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
615        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
616    
617    
618    
     LabelType := ReadInteger('Settings','LabelType',1);  
619      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
620      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
621      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 642  begin Line 652  begin
652    
653      if (SkrivLog = '1') then      if (SkrivLog = '1') then
654      begin      begin
655        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);
656        try        try
657          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
658          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
659          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
660          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
661          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
662          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 664  begin Line 674  begin
674        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
675      end;      end;
676    
677      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;  
678    
679      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
680      begin      begin
# Line 785  begin Line 727  begin
727      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
728      // *************************** //      // *************************** //
729    
730    {$IfDef STED_BK}
731        SpecialVersionSted := 'BK';
732    {$EndIf}
733    {$IfDef STED_TK}
734        SpecialVersionSted := 'TK';// BK-Trykkompagniet
735    {$EndIf}
736    {$IfDef STED_DBK}
737        SpecialVersionSted := 'DBK';
738    {$EndIf}
739    {$IfDef STED_FD}
740        SpecialVersionSted := 'FD';
741    {$EndIf}
742    {$IfDef STED_NS}
743        SpecialVersionSted := 'NS';
744    {$EndIf}
745    
746    
747      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
748      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
749      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 800  begin Line 759  begin
759      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
760      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
761    
 // 20150313: start  
762      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
763      begin      begin
764         SpecialVersionSted := '01';         SpecialVersionSted := '01';
765         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
766      end;      end;
767    
768      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
769      begin      begin
770         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
771         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
772    
773    
774          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
775          Sted := SpecialVersionSted;
776         // her skal vi også disable de knapper BK ikke kan bruge
777          PanelValg2.Enabled := false;
778          PanelValg2.Font.Color := clInactiveCaption;
779          PanelValg3.Enabled := false;
780          PanelValg3.Font.Color := clInactiveCaption;
781          //PanelValg6.Enabled := false;
782          //PanelValg6.Font.Color := clInactiveCaption;
783    
784         // her skal vi også disable de menupunkter FD ikke kan bruge
785          ReturpakkerfraDAO1.Enabled := false;
786          Returpakkerfraboghandler1.Enabled := false;
787    
788          //Returpakkerfrapakkeshop1.Enabled := false;
789    
790      end;      end;
 // 20150313: slut  
791    
792      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
793      begin      begin
794        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
795        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 822  begin Line 798  begin
798        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
799        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
800        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
801        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
802        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
803    
804       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
805        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
806        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
807        Returpakkerfrapakkeshop1.Enabled := false;  
808          //Returpakkerfrapakkeshop1.Enabled := false;
809    
810        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
811        begin        begin
812           Scanningtype := '1';           Scanningtype := '1';
# Line 851  begin Line 830  begin
830        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
831        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
832        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
833        PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
834    
835       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
836        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
# Line 1082  begin Line 1060  begin
1060      end;      end;
1061    
1062    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1063    
1064      CheckPrintQue('Opstart');  
1065        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1066        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1067    
1068    finally    finally
1069      Free;      Free;
# Line 1156  begin Line 1130  begin
1130      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1131    
1132      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1133      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1134    
1135  end;  end;
1136    
# Line 1213  begin Line 1187  begin
1187      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1188      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1189      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1190        or (NumberString = 'DAO PAKKESHOP')
1191        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1192            or (LowerCase(NumberString) = 'for stor daodirekte' )
1193      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1194    
1195      begin      begin
# Line 1223  begin Line 1200  begin
1200      begin      begin
1201        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1202      end;      end;
1203    end;    end;  // Slut ctrl-v
1204    
1205    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1206    begin    begin
1207      if (Length(Trim(Stregkode)) = 0) then  
1208        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1209        Stregkode := Trim(Stregkode);
1210    
1211        if (Length(Stregkode) = 0) then
1212      begin      begin
1213        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1214    
# Line 1277  begin Line 1258  begin
1258         exit;         exit;
1259      end;      end;
1260    
1261        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1262        begin
1263          if chkForstorTilDirekte.Enabled then
1264          begin
1265            chkForstorTilDirekte.Checked := true;
1266          end
1267          else
1268          begin
1269             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1270          end;
1271          Stregkode := '';
1272          StregkodeST.Caption := StregKode;
1273          exit;
1274        end;
1275    
1276    
1277      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1278      begin      begin
1279         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1474  begin Line 1471  begin
1471        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1472      end;      end;
1473    
1474      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1475          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1476          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1477          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1478          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1479          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1480      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1481          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1482    
1483         exit;         exit;
1484      end;      end;
1485    
1486      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1487      begin      begin
1488        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1489        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1520  begin Line 1517  begin
1517        else        else
1518            begin            begin
1519            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1520              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1521                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1522    
1523               exit;               exit;
1524            end;            end;
# Line 1608  begin Line 1606  begin
1606             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1607             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1608             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1609                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1610             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1611                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1612             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1613           end           end
1614          else          else
# Line 1631  begin Line 1629  begin
1629    
1630      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
1631      begin      begin
1632    
1633         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1634            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1635         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 1669  begin
1669           end;           end;
1670            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
1671            begin            begin
1672              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1673              if Storepakker1.Checked then              if Storepakker1.Checked then
1674              begin              begin
1675                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1683  begin Line 1682  begin
1682            end            end
1683            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1684            begin            begin
1685              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1686              if Storepakker1.Checked then              if Storepakker1.Checked then
1687              begin              begin
1688                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1705  begin Line 1704  begin
1704            begin            begin
1705              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1706            end;            end;
1707    
1708           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1709            begin            begin
1710    
# Line 1754  begin Line 1754  begin
1754    
1755    Key := #0;    Key := #0;
1756    
1757    
1758    
1759    
1760    
1761    
1762  end; //End of OnKeyPress  end; //End of OnKeyPress
1763    
1764    
1765    
1766  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1767  const  const
1768    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1797  var Line 1804  var
1804    
1805    
1806  begin  begin
1807      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
1808      begin      begin
1809        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1810          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1808  begin Line 1815  begin
1815            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1816            begin            begin
1817              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1818              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1819  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1820  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1821  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1822              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1823            end            end
1824            else     // kun idag            else     // kun idag
1825            begin            begin
# Line 1916  begin Line 1923  begin
1923                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1924              end;              end;
1925            end;            end;
1926  // 20150310: slut  
1927            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1928          end;          end;
1929      end;      end;
# Line 1952  begin Line 1959  begin
1959    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1960    ListBox1.Visible := true;    ListBox1.Visible := true;
1961  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1962  // 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  
1963    if Budlevering1.Checked then    if Budlevering1.Checked then
1964    begin    begin
1965      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2005  begin Line 1972  begin
1972      01 :      01 :
1973            begin;      // NS            begin;      // NS
1974              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1975              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1976              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1977              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1978              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1979              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2021  begin Line 1988  begin
1988              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1989              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1990              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1991              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1992              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1993              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1994              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1995              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2032  begin Line 1999  begin
1999              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2000             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2001              begin              begin
2002                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2003              end              end
2004              else              else
2005              begin              begin
2006                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2007              end;              end;
2008              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2009              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2010              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2011              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2012              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2059  begin Line 2026  begin
2026              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2027              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2028              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2029              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2030              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2031              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2032              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2033            end;            end;
# Line 2125  begin Line 2092  begin
2092    begin    begin
2093      exit;      exit;
2094    end;    end;
2095    
2096      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2097      begin
2098        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2099      end;
2100    
2101    try    try
2102      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2103      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2146  begin Line 2119  begin
2119          end;          end;
2120      end;      end;
2121    end;    end;
2122    
2123    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2124    try    try
2125      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2169  begin Line 2143  begin
2143          end;          end;
2144        end;        end;
2145       end       end
2146      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2147      begin      begin
2148    
2149    
# Line 2180  begin Line 2154  begin
2154       begin       begin
2155         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2156         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2157           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2158           Stregkode := PakkeshopLabel.Stregkode;
2159    
2160         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2161           chkForstorTilDirekte.Checked := false;
2162    
2163       end;       end;
2164    
# Line 2313  begin Line 2290  begin
2290        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2291      end;      end;
2292    end;    end;
2293      if menuIndlevering.Checked then
2294      begin
2295        List1Msg := Stregkode;
2296      end;
2297    
2298    
2299    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2300    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2301    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2302  end;  end;
2303    
2304  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2305  begin  begin
2306    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2307    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2335  pakkeForkertSted : Integer; Line 2318  pakkeForkertSted : Integer;
2318    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2319  begin  begin
2320    if Budlevering1.Checked then    if Budlevering1.Checked then
2321       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2322    
2323    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2324    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2391  begin Line 2374  begin
2374            PrintNyLabel := true;            PrintNyLabel := true;
2375            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2376            nyFarve := Farve;            nyFarve := Farve;
2377            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2378            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2379            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2380            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2453  begin Line 2436  begin
2436               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2437  // 20150304: slut  // 20150304: slut
2438                begin                begin
2439                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2440                end;                end;
2441              end;              end;
2442        01 :  begin;        01 :  begin;
# Line 2461  begin Line 2444  begin
2444                    // 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
2445                    // 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')
2446                begin                begin
2447                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2448                end;                end;
2449              end;              end;
2450        02 :  begin;        02 :  begin;
2451                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
2452                begin                begin
2453                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2454                end;                end;
2455              end;              end;
2456        03 :  begin;        03 :  begin;
# Line 2475  begin Line 2458  begin
2458                    // 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
2459                    // 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')
2460               begin               begin
2461                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2462               end;               end;
2463              end;              end;
2464        04 :  begin;        04 :  begin;
2465                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
2466                begin                begin
2467                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2468                end;                end;
2469              end;              end;
2470        else        else
# Line 2517  begin Line 2500  begin
2500        end;        end;
2501        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2502        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2503        with Printer do  
2504        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2505          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;  
2506      end;      end;
2507    end;    end;
2508    
2509  end;  end;
2510    
 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;  
2511    
2512    
2513  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2674  begin Line 2597  begin
2597    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2598    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...');
2599    
2600          // Tjekker urls    try
2601          logTekst := 'Tjekker urls.';      // Tjekker urls
2602          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2603          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2604        SkrivScanningLogFil(logTekst);
2605    
         // 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;  
2606    
         // 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;  
2607    
2608          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2609          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2610          begin      begin
2611            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2612            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;  
2613    
2614          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2615          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2616          begin      begin
2617            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2618            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;  
2619    
2620          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2621          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2622          begin      begin
2623            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2624            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;  
2625    
2626          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2627          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2628          begin      begin
2629            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2630            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;  
2631    
2632          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2633          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2634          or (PanelValg4.Enabled = true) then      begin
2635          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2636            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;  
2637    
2638          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2639          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2640          begin      begin
2641            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2642            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;  
2643    
2644          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2645          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2646          begin      begin
2647            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2648            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;  
2649    
2650          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2651          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2652          begin      begin
2653            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2654            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;  
2655    
2656        // Tjekker UrlPakkeshopManglendeReturScanninger
2657        if PanelValg6.Enabled = true then
2658        begin
2659          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2660        end;
2661    
2662          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2663          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2664          begin      begin
2665            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2666            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2667              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;  
2668    
2669        // Tjekker UrlEKLoverforsel
2670        if PanelValg1.Enabled = true then
2671        begin
2672          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2673        end;
2674    
         // 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;  
2675    
2676          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2677          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2678          begin      begin
2679            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2680            SkrivScanningLogFil(logTekst);      end;
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2681    
         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;  
2682    
2683        // Tjekker UrlFindPakketype
2684        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2685    
2686        // Tjekker UrlSendPrograminfo
2687        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2688    
2689    
2690    
2691        logTekst := 'urls er ok';
2692        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2693        SkrivScanningLogFil(logTekst);
2694    
2695      Except
2696        TjekUrls := '-';   // markerer at der var fejl
2697    
2698      end;
2699  end;  end;
2700    
2701  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2702  var  const
2703     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2704  begin  begin
2705     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2706     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2707     Result := SystemTimeToDateTime(SystemTime) ;    begin
2708        logTekst := UrlNavn + ' accepteret: ' + Url;
2709        SkrivScanningLogFil(logTekst);
2710      end
2711      else
2712      begin
2713        inc(urlFejl);   // Optæller antal fejl
2714        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2715        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2716        if TjekUrls = '1' then
2717        begin
2718          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2719        end;
2720    
2721        SkrivScanningLogFil(logTekst);
2722    
2723        if TjekUrls = '1' then
2724        begin
2725          ShowMessage(logTekst);
2726          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2727          Application.Terminate;
2728    
2729          raise Exception.Create('UrlFejl');
2730    
2731        end;
2732      end;
2733    
2734  end;  end;
2735    
2736    
2737    
2738  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2739  var  var
2740    SR: TSearchRec;    SR: TSearchRec;
# Line 3083  begin Line 2754  begin
2754    
2755          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2756          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2757          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2758          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2759          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2760          // (æ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 2813  begin
2813  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2814    if Farve <> '' then    if Farve <> '' then
2815    begin    begin
2816       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  
2817    end;    end;
2818    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2819    begin    begin
# Line 3216  end; Line 2877  end;
2877    
2878  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2879  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;  
 *)  
2880  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2881  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2882       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2883       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2884       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2885  // 20150311: slut  
2886    
2887    
2888  end;  end;
2889    
2890  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3309  begin Line 2957  begin
2957    Falsk := False;    Falsk := False;
2958    
2959    
2960    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2961    begin    begin
2962      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2963    end    end
# Line 3323  begin Line 2971  begin
2971      SmsKode := '999999';      SmsKode := '999999';
2972      DBKbane := '999';      DBKbane := '999';
2973      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2974      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
2975      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2976        LabelPrint.CheckPrintQue('Test', PrinterNavn);
2977    end;    end;
2978    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2979  end;  end;
# Line 3333  procedure TMainForm.Timer1Timer(Sender: Line 2982  procedure TMainForm.Timer1Timer(Sender:
2982  begin  begin
2983    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2984    begin    begin
2985      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2986    end    end
2987    else    else
2988    begin    begin
# Line 3342  begin Line 2991  begin
2991    end;    end;
2992  end;  end;
2993    
2994  {  
  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;  
2995    
2996  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2997  const  const
# Line 3380  var Line 3000  var
3000   tekst, filversion : String;   tekst, filversion : String;
3001  begin  begin
3002    
3003    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
3004    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';
3005    
3006    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3402  begin Line 3022  begin
3022          end          end
3023          else          else
3024          begin          begin
3025            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3026          end;          end;
3027      end      end
3028      else      else
3029      begin      begin
3030        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3031      end;      end;
3032    end;    end;
3033    
# Line 3475  begin Line 3095  begin
3095    
3096    if FileExists(fileName) then    if FileExists(fileName) then
3097    begin    begin
3098      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3099      begin      begin
3100        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3101        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3499  begin Line 3119  begin
3119    
3120    if FileExists(fileName) then    if FileExists(fileName) then
3121    begin    begin
3122      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3123      begin      begin
3124        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3125        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3126      end      end
3127      else      else
3128      begin      begin
3129        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3130      end;      end;
3131    end    end
3132    else    else
# Line 3572  begin Line 3192  begin
3192        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3193        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3194        ListBox1.Visible := true;        ListBox1.Visible := true;
3195        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3196        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3197        InitLillePakke();        InitLillePakke();
3198        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3199    
3200          chkForstorTilDirekte.Checked := false;
3201          chkForstorTilDirekte.Enabled := false;
3202    
3203        if BladhusSted = 0 then        if BladhusSted = 0 then
3204        begin        begin
3205          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3606  begin Line 3230  begin
3230        ListBox1.Visible := true;        ListBox1.Visible := true;
3231        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3232        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3233        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3234    
3235          chkForstorTilDirekte.Checked := false;
3236          chkForstorTilDirekte.Enabled := false;
3237    
3238        InitLillePakke();        InitLillePakke();
3239  end;  end;
3240    
# Line 3632  begin Line 3260  begin
3260        ListBox1.Visible := true;        ListBox1.Visible := true;
3261        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3262        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3263        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3264    
3265          chkForstorTilDirekte.Checked := false;
3266          chkForstorTilDirekte.Enabled := false;
3267    
3268        InitLillePakke();        InitLillePakke();
3269  end;  end;
3270    
# Line 3658  begin Line 3290  begin
3290        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3291        ListBox1.Visible := true;        ListBox1.Visible := true;
3292        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3293        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3294        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3295        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3296        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3297        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3298        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3299    
3300          chkForstorTilDirekte.Checked := false;
3301          chkForstorTilDirekte.Enabled := true;
3302    
3303        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3304        begin        begin
3305            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3694  begin Line 3330  begin
3330        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3331        ListBox1.Visible := true;        ListBox1.Visible := true;
3332        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3333        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3334        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3335    
3336          BtnEKLoverforsel.Enabled := true;
3337    
3338        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3339          chkForstorTilDirekte.Enabled := true;
3340    
3341        InitLillePakke();        InitLillePakke();
3342        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3731  begin Line 3370  begin
3370        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3371        ListBox1.Visible := true;        ListBox1.Visible := true;
3372        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3373        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3374        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3375        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3376    
3377          chkForstorTilDirekte.Checked := false;
3378          chkForstorTilDirekte.Enabled := false;
3379    
3380    
3381        InitLillePakke();        InitLillePakke();
3382        IndlesScanningLogFil();        IndlesScanningLogFil();
3383        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3778  begin Line 3422  begin
3422        ListBox1.Visible := true;        ListBox1.Visible := true;
3423        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3424    
3425        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3426        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3427        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3428    
3429          chkForstorTilDirekte.Checked := false;
3430          chkForstorTilDirekte.Enabled := false;
3431    
3432    
3433        InitLillePakke();        InitLillePakke();
3434        IndlesScanningLogFil();        IndlesScanningLogFil();
3435        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3818  begin Line 3467  begin
3467  // 20150310: slut  // 20150310: slut
3468  end;  end;
3469    
 /// <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;  
   
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3470    
   end;  
 end;  
3471    
3472  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3473  begin  begin
# Line 3942  begin; Line 3538  begin;
3538    CheckCode();    CheckCode();
3539  end;  end;
3540    
3541  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3542  var  var
3543    WebSvar : String;    WebSvar : String;
3544    URLStr : String;    URLStr : String;
# Line 3952  var Line 3548  var
3548    status, kommentar : String;    status, kommentar : String;
3549    
3550  begin  begin
3551      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3552    
3553      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');
3554      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3555      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3556      StedKode := Sted;      StedKode := Sted;
3557      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3558  // 20150330: start  
3559      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3560      begin      begin
3561        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3562      end;      end;
3563  // 20150330: slut  
3564    
3565      try      try
3566      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4015  begin Line 3611  begin
3611        end;        end;
3612      end;      end;
3613    
3614      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3615    
3616      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
3617    
# Line 4056  begin Line 3652  begin
3652    else    else
3653      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3654  }  }
3655    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3656    
3657    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3658    CheckCode();    CheckCode();
# Line 4064  end; Line 3660  end;
3660    
3661  end;  end;
3662    
 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;  
3663    
3664  //  //
3665  // Bladhus ***  // Bladhus ***
# Line 4580  begin Line 4137  begin
4137    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
4138  end;  end;
4139    
4140  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4141  begin  begin
4142      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4143      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
4144  end;  end;
4145    
4146  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4147  const  const
4148    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4149    
# Line 4595  begin Line 4152  begin
4152      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
4153  end;  end;
4154    
4155  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4156  begin  begin
4157      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4158      begin      begin
# Line 4604  begin Line 4161  begin
4161      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
4162  end;  end;
4163    
 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;  
4164    
4165    
4166  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
# Line 4752  var Line 4173  var
4173    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4174    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4175    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4176    pakketyper : TStrings;    //pakketyper : TStrings;
4177      pakketyper : TDictionary<String, Integer>;
4178      tmpAntal : Integer;
4179    
4180    
4181    
4182    antlin : Integer;    antlin : Integer;
4183    
4184    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4185    
4186    XmlFelter : TStrings;    //XmlFelter : TStrings;
4187      XmlFelter : TDictionary<String, Integer>;
4188    
4189   begin   begin
4190      XmlFelter := TStringList.Create;  
4191      pakketyper := TStringList.Create;  
4192        XmlFelter := TDictionary<String, Integer>.Create;
4193        pakketyper := TDictionary<String, Integer>.Create;
4194    
4195      linienr := 0;      linienr := 0;
4196      ListBox2.Clear;      ListBox2.Clear;
4197      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 4206  var
4206          StedKode := Sted;          StedKode := Sted;
4207        end;        end;
4208    
4209          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4210    
4211    
4212      if (Scanningtype = '6') then  
4213        if (Scanningtype = '7') then
4214         begin
4215          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4216         end
4217        else if (Scanningtype = '6') then
4218       begin       begin
4219        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4220       end       end
4221      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4222       begin       begin
4223        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4224       end       end
4225      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4226       begin       begin
# Line 4830  var Line 4267  var
4267            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4268              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4269              begin              begin
4270                 antlin := antlin + 1;                 Inc(antlin);
4271                 // 20150306: start                 // 20150306: start
4272                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4273                begin                begin
4274                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4275                   begin                   begin
4276                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4277                   end                   end
4278                   else                   else
4279                   begin                   begin
4280                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4281                   end;                   end;
4282                end;                end;
4283                 // 20150306: slut                 // 20150306: slut
4284              end;              end;
4285            end;            end;
4286            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4287                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4288                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4289                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4290                  end
4291                else                else
4292                  XmlFelter.values[Node.NodeName] := '1';                begin
4293                    XmlFelter.Add(Node.NodeName, 1);
4294                  end;
4295    
4296        end;        end;
4297        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4857  var Line 4299  var
4299        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4300        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4301    
4302    
4303          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4304    
4305        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4306        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4307        begin        begin
# Line 4865  var Line 4310  var
4310        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4311    
4312        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4313    
4314    
4315        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4316            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4317            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4872  var Line 4319  var
4319                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4320                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4321                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4322              end;              end
4323              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4324                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4325                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4326                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4327              end;              end
4328              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4329                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4330                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4331                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4332              end;              end
4333              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4334                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4335                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4336                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4337              end;              end
4338              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4339                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4340                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4341                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4342                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4343                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4344                    pakketyper.TryGetValue(pakketype, tmpAntal);
4345                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4346                  end
4347                else                else
4348                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4349              end;              end
4350              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4351                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4352                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4353                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4354                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4355                  begin                  begin
4356  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4357                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4358                    begin                    begin
4359                      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
4360                    end                    end
4361                    else                    else
4362                    begin                    begin
# Line 4916  var Line 4365  var
4365                    linienr := linienr + 1;                    linienr := linienr + 1;
4366                  end;                  end;
4367              end;              end;
4368    
4369    
4370              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4371              begin              begin
4372                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4931  var Line 4382  var
4382              end;              end;
4383            end;            end;
4384        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4385    
4386          // Free up the list object  
4387          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4388    
4389    
4390          for pakketype in pakketyper.Keys do
4391          begin
4392            pakketyper.TryGetValue(pakketype, tmpAntal);
4393            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4394          end;
4395    
4396            // Free up the dictionary object
4397        pakketyper.Free;        pakketyper.Free;
4398    
4399    
4400    
4401  //      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.');
4402        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4403        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5189  begin Line 4649  begin
4649          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4650          S := buffer;          S := buffer;
4651          SetLength(A,0);          SetLength(A,0);
4652          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4653          if (length(A) < 2) then          if (length(A) < 2) then
4654          begin          begin
4655            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4656          end;          end;
4657            if (length(A) > 1) then            if (length(A) > 1) then
4658            begin            begin
# Line 5266  begin Line 4726  begin
4726          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4727          S := buffer;          S := buffer;
4728          SetLength(A,0);          SetLength(A,0);
4729          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4730          if (length(A) < 3) then          if (length(A) < 3) then
4731          begin          begin
4732            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4733          end;          end;
4734          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4735          begin          begin
# Line 5379  begin Line 4839  begin
4839      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4840    end;    end;
4841    
4842      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4843    
4844  end;  end;
4845    
4846  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5438  begin Line 4900  begin
4900    result := svar;    result := svar;
4901  end;  end;
4902    
 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;  
4903    
4904  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4905  begin  begin
# Line 5470  begin Line 4913  begin
4913    end;    end;
4914  end;  end;
4915    
 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;  
4916    
4917    //Nedarvet fra IParentForm
4918    procedure TMainForm.Msg( msg : string);
4919    begin
4920      ShowMessage(msg);
4921  end;  end;
4922    
4923    //Nedarvet fra IParentForm
4924  procedure TMainForm.RoundCornerOf(Control: TWinControl);  procedure TMainForm.LogMessage( msg : string);
 var  
    R: TRect;  
    Rgn: HRGN;  
4925  begin  begin
4926     with Control do    ListBox1.Items.Insert(0, msg);
4927     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;  
4928  end;  end;
4929    
 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  
4930    
4931  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4932  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4933  //            'Timer' skal kun vise alarmlinie  begin
4934    
4935    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4936      if (alert) then
4937    begin    begin
4938      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4939      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4940      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);  
4941    end    end
4942    else    else
4943    begin    begin
4944      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4945      try      PrinterstatusStaticText1.Color := clWhite;
4946        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;  
4947    end;    end;
4948  end;  end;
4949    
4950    //Nedarvet fra IParentForm
4951    function TMainForm.GetFormObject() : TForm;
4952    begin
4953      Result := self;
4954    end;
4955    
4956  end.  end.
4957    

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

  ViewVC Help
Powered by ViewVC 1.1.20