/[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 2657 by torben, Sun Aug 23 14:02:55 2015 UTC revision 2977 by torben, Tue Mar 15 13:44:38 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet    ShellApi, ClipBrd, Buttons, wininet,
22      UITypes,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 47  type Line 65  type
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 86  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107        menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109    
110    
111    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
112    function getProddato() : TDate;    function getProddato() : TDate;
113    function getProddag() : String;    function getProddag() : String;
114    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
115    
116    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
117    procedure StartScreen();    procedure StartScreen();
# Line 132  type Line 142  type
142    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
143    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
144    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
145    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
146    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
147    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
148    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
149    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 141  type Line 151  type
151    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
152    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
153    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
154    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
155    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
156    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
157    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
158    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
159    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
160    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 156  type Line 166  type
166    
167    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
168    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
169    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
170    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
171    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
172    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
173    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
174    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
# Line 179  type Line 188  type
188    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
189    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
190    procedure TjekkerUrls();    procedure TjekkerUrls();
191  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
   procedure RoundCornerOf(Control: TWinControl);  
192    
193      procedure menuIndleveringClick(Sender: TObject);
194    
195    
196    
197      //Nedarvet fra IParentForm
198      procedure LogMessage( msg : string);
199      procedure SetPrinterstatusText( txt: string; alert: boolean);
200      function GetFormObject() : TForm;
201    
 // 20150310: slut  
202    
203    private    private
204      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 191  type Line 206  type
206      SkrivLog : String;      SkrivLog : String;
207      Sted : String;      Sted : String;
208      StedNavn : String;      StedNavn : String;
209      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
210  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
211                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
212    
213      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
214  // 20150330: slut  
215      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
216      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
217      ScanTjekkode : String;      ScanTjekkode : String;
218      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
219      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
220      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
221      LabelType : integer;            FarveIndlevering : String;
222    
223        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
224              TitelIndlevering : String;
225    
226      AlarmLyd : String;      AlarmLyd : String;
227      ScannetOkLyd : String;      ScannetOkLyd : String;
228      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
229  // 20150317: start  
230      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
231  // 20150317: slut  
232      PrinterNavn : String;      PrinterNavn : String;
233      TjekPrinter : String;      TjekPrinter : String;
234      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
235      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
236      BladhusSted : Integer;      BladhusSted : Integer;
237      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 245  type Line 244  type
244      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
245      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
246      TjekUrls : String;      TjekUrls : String;
247        Config : TConfiguration;
248    
249            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
250        LabelPrint: TLabelPrint;
251    
252      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
253      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
254      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
255      procedure CheckCode();      procedure CheckCode();
256      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 258  type Line 259  type
259      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
260      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
261      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
262      procedure VisAlarmSkaerm(var List1msg: string);      procedure VisAlarmSkaerm(strMessage: string);
263    
264    public    public
265      { Public declarations }      { Public declarations }
266    end;    end;
267    
268    
269  var  var
270    MainForm: TMainForm;    MainForm: TMainForm;
271    
# Line 277  var Line 279  var
279  implementation  implementation
280  {$R *.dfm}  {$R *.dfm}
281    
282  function TMainForm.TColorToHex(Color : TColor) : string;  
283  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
284    
285  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
286  begin  begin
287    
 // 20150309: startr  
288      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
289  // 20150309: slut  
290    
291      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
292      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 344  begin Line 330  begin
330        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
331      end;      end;
332    
333      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
334    
335      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
336      begin      begin
# Line 372  begin Line 358  begin
358        else if (Sted = 'BR') then        else if (Sted = 'BR') then
359          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
360        else if (Sted = 'BK') then        else if (Sted = 'BK') then
361          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
362          else if (Sted = 'TK') then
363            begin StedNavn := 'BK/Trykkompagniet: '; end
364        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
365          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
366        else if (Sted = '1') then        else if (Sted = '1') then
367          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
368        else if (Sted = '2') then        else if (Sted = '2') then
# Line 398  begin Line 386  begin
386    
387      StartScreen();      StartScreen();
388      MainForm.Caption := Titel;      MainForm.Caption := Titel;
389      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
390      MainForm.Farve := Farve;      MainForm.Farve := Farve;
391      MainForm.Titel := Titel;      MainForm.Titel := Titel;
392      MainForm.Url := Url;      MainForm.Url := Url;
# Line 458  begin Line 446  begin
446          end          end
447          else          else
448          begin          begin
449            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
450          end;          end;
451          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
452        end        end
453        else        else
454        begin        begin
455          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
456          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
457        end;        end;
458      end;      end;
459    
460    
461  end;  end;
462    
463  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 507  end; Line 496  end;
496    
497  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
498  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
499  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
500  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
501       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
502       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
503       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
504  end;  end;
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
512    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
513    
514  begin  begin
515    
516    
517    // Initierer nogle variabler    // Initierer nogle variabler
518    BladhusSted := 00;    BladhusSted := 00;
519    Application.ShowHint := True;    Application.ShowHint := True;
520    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
521    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
522    
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524    
525    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    
532    
533    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 568  begin Line 541  begin
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 589  begin Line 568  begin
568      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
569      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
570      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
571      LabelType := ReadInteger('Settings','LabelType',1);  
572    
573        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
574        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
575        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
576    
577    
578    
579    
580      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
581      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
582      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 626  begin Line 613  begin
613    
614      if (SkrivLog = '1') then      if (SkrivLog = '1') then
615      begin      begin
616        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
617        try        try
618          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
619          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
620          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
621          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
622          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
623          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 648  begin Line 635  begin
635        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
636      end;      end;
637    
638      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
639    
640      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
641      begin      begin
# Line 769  begin Line 688  begin
688      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
689      // *************************** //      // *************************** //
690    
691    {$IfDef STED_BK}
692        SpecialVersionSted := 'BK';
693    {$EndIf}
694    {$IfDef STED_TK}
695        SpecialVersionSted := 'TK';// BK-Trykkompagniet
696    {$EndIf}
697    {$IfDef STED_DBK}
698        SpecialVersionSted := 'DBK';
699    {$EndIf}
700    {$IfDef STED_FD}
701        SpecialVersionSted := 'FD';
702    {$EndIf}
703    {$IfDef STED_NS}
704        SpecialVersionSted := 'NS';
705    {$EndIf}
706    
707    
708      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
709      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
710      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 784  begin Line 720  begin
720      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
721      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
722    
 // 20150313: start  
723      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
724      begin      begin
725         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 795  begin Line 730  begin
730         SpecialVersionSted := '03';         SpecialVersionSted := '03';
731         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
732      end;      end;
 // 20150313: slut  
733    
734      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
735      begin      begin
736        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
737        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 806  begin Line 740  begin
740        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
741        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
742        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
743        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
744        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
745    
746       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
747        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
748        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
749        Returpakkerfrapakkeshop1.Enabled := false;  
750          //Returpakkerfrapakkeshop1.Enabled := false;
751    
752        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
753        begin        begin
754           Scanningtype := '1';           Scanningtype := '1';
# Line 835  begin Line 772  begin
772        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
773        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
774        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
775    
776    
777       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
778        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
779        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 871  begin Line 810  begin
810        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
811        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
812        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
813          PanelValg7.Enabled := false;
814          PanelValg7.Font.Color := clInactiveCaption;
815       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
816    
817        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
# Line 966  begin Line 907  begin
907             RutenummerST.Caption := '';             RutenummerST.Caption := '';
908             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
909             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
910             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
911             exit;             exit;
912          end;          end;
913      end      end
# Line 1061  begin Line 1002  begin
1002      end;      end;
1003    
1004    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1005    
1006      CheckPrintQue('Opstart');  
1007        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1008        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1009    
1010    finally    finally
1011      Free;      Free;
# Line 1135  begin Line 1072  begin
1072      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1073    
1074      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1075      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1076    
1077  end;  end;
1078    
# Line 1153  var Line 1090  var
1090    BoghandlerNavn : String;    BoghandlerNavn : String;
1091    Koreliste : String;    Koreliste : String;
1092    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1093    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1094    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1095    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1193  begin Line 1129  begin
1129      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1130      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1131      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1132        or (NumberString = 'DAO PAKKESHOP')
1133        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1134            or (LowerCase(NumberString) = 'for stor daodirekte' )
1135      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1136    
1137      begin      begin
# Line 1203  begin Line 1142  begin
1142      begin      begin
1143        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1144      end;      end;
1145    end;    end;  // Slut ctrl-v
1146    
1147    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1148    begin    begin
1149      if (Length(Trim(Stregkode)) = 0) then  
1150        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1151        Stregkode := Trim(Stregkode);
1152    
1153        if (Length(Stregkode) = 0) then
1154      begin      begin
1155        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1156        List1msg := 'Der skal scannes en stregkode...';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
1157        exit;        exit;
1158      end;      end;
1159    
1160      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1161      begin      begin
1162         PakkeshopNulstil.Click();         btnNulstil.Click();
1163         exit;         exit;
1164      end;      end;
1165    
1166      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1167      begin      begin
1168         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
        List1msg := 'HUSK at klikke Nulstil før ny scanning...';  
1169    
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        Stregkode := '';  
        StregkodeST.Caption := StregKode;  
1170         exit;         exit;
1171      end;      end;
1172    
# Line 1247  begin Line 1178  begin
1178         end         end
1179         else         else
1180         begin         begin
1181            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1182         end;         end;
1183         Stregkode := '';         Stregkode := '';
1184         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1262  begin Line 1193  begin
1193         end         end
1194         else         else
1195         begin         begin
1196            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1197         end;         end;
1198         Stregkode := '';         Stregkode := '';
1199         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1200         exit;         exit;
1201      end;      end;
1202    
1203        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1204        begin
1205          if chkForstorTilDirekte.Enabled then
1206          begin
1207            chkForstorTilDirekte.Checked := true;
1208          end
1209          else
1210          begin
1211             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1212          end;
1213          Stregkode := '';
1214          StregkodeST.Caption := StregKode;
1215          exit;
1216        end;
1217    
1218    
1219      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1220      begin      begin
1221         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1284  begin Line 1231  begin
1231         end         end
1232         else         else
1233         begin         begin
1234            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1235         end;         end;
1236         Stregkode := '';         Stregkode := '';
1237         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1306  begin Line 1253  begin
1253        end        end
1254        else        else
1255        begin        begin
1256          VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1257        end;        end;
1258        Stregkode := '';        Stregkode := '';
1259        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1321  begin Line 1268  begin
1268         end         end
1269         else         else
1270         begin         begin
1271            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
1272         end;         end;
1273         Stregkode := '';         Stregkode := '';
1274         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1337  begin Line 1284  begin
1284         end         end
1285         else         else
1286         begin         begin
1287          VisAlarmSkaerm(List1msg);          VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
1288         end;         end;
1289         Stregkode := '';         Stregkode := '';
1290         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1352  begin Line 1299  begin
1299         end         end
1300         else         else
1301         begin         begin
1302            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1303         end;         end;
1304         Stregkode := '';         Stregkode := '';
1305         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1367  begin Line 1314  begin
1314         end         end
1315         else         else
1316         begin         begin
1317            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1318         end;         end;
1319         Stregkode := '';         Stregkode := '';
1320         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1382  begin Line 1329  begin
1329         end         end
1330         else         else
1331         begin         begin
1332            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1333         end;         end;
1334         Stregkode := '';         Stregkode := '';
1335         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1397  begin Line 1344  begin
1344         end         end
1345         else         else
1346         begin         begin
1347            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1348         end;         end;
1349         Stregkode := '';         Stregkode := '';
1350         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1412  begin Line 1359  begin
1359         end         end
1360         else         else
1361         begin         begin
1362            VisAlarmSkaerm(List1msg);            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1363         end;         end;
1364         Stregkode := '';         Stregkode := '';
1365         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1466  begin Line 1413  begin
1413        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1414      end;      end;
1415    
1416      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1417          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1418          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1419          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1420          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1421          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1422      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1423         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
        List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
   
        RuteNummerST.Caption := '';  
        BoghandlerNavnST.Caption := '';  
   
        KommentarST.Caption := List1msg;  
        PakkeshopNulstil.Visible := true;  
   
        StregKode := '';  
        StregkodeST.Caption := StregKode;  
1424    
1425         exit;         exit;
1426      end;      end;
1427    
1428      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1429      begin      begin
1430        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1431        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1522  begin Line 1457  begin
1457        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1458    
1459        else        else
1460            begin   // Her skal komme en alarm og rød skærm            begin
1461               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1462               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1463               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
              MainForm.Color := clRed;  
   
              RuteNummerST.Caption := '';  
              BoghandlerNavnST.Caption := '';  
   
              KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
   
              StregKode := '';  
              StregkodeST.Caption := StregKode;  
1464    
1465               exit;               exit;
1466            end;            end;
# Line 1543  begin Line 1468  begin
1468      end      end
1469      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1470      begin      begin
1471        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
       List1msg := 'Pakkenummer ikke gyldigt (for kort)';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
   
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
   
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
   
       StregKode := '';  
       StregkodeST.Caption := StregKode;  
1472    
1473        exit;        exit;
1474      end;      end;
# Line 1564  begin Line 1477  begin
1477      begin      begin
1478        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1479        begin        begin
         PlaySound(PWideChar(AlarmLyd));  
         List1msg := 'Pakke findes som pakketype: ' + Pakketype;  
         ListBox1.Items.Insert(0,List1Msg);  
         MainForm.Color := clRed;  
1480    
1481           RuteNummerST.Caption := '';          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
          BoghandlerNavnST.Caption := '';  
1482    
         KommentarST.Caption := List1msg;  
         PakkeshopNulstil.Visible := true;  
         StregKode := '';  
         StregkodeST.Caption := StregKode;  
1483          exit;          exit;
1484        end;        end;
1485      end;      end;
# Line 1601  begin Line 1505  begin
1505             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1506             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1507             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1508             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1509             Stregkode := '';             Stregkode := '';
1510             InitScreen();             InitScreen();
1511        end        end
# Line 1613  begin Line 1517  begin
1517             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1518             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1519             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1520             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1521             Stregkode := '';             Stregkode := '';
1522             InitScreen();             InitScreen();
1523        end        end
# Line 1625  begin Line 1529  begin
1529              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1530              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1531              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1532  // 20150317: start  
1533              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1534  // 20150317: slut  
1535             end             end
1536            else            else
1537             begin             begin
1538                List1msg := 'Du skal scanne en stregkode';                VisAlarmSkaerm( 'Du skal scanne en stregkode' );
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
1539             end;             end;
1540            Stregkode := '';            Stregkode := '';
1541            InitScreen();            InitScreen();
# Line 1650  begin Line 1548  begin
1548             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1549             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1550             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1551                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1552             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1553                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1554             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1555           end           end
1556          else          else
1557           begin           begin
1558                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1559                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1560                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1561                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1562                KommentarST.Caption := List1msg;                  
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
 // 20150323: start  
1563                StregKode := '';                StregKode := '';
1564                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1565  // 20150323: slut  
1566                exit;                exit;
1567           end;           end;
1568          Stregkode := '';          Stregkode := '';
# Line 1680  begin Line 1571  begin
1571    
1572      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
1573      begin      begin
1574    
1575         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1576            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1577         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 1692  begin Line 1584  begin
1584            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1585            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1586            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1587               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1588               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1589              exit;              exit;
1590            end;            end;
1591            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1717  begin Line 1605  begin
1605              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1606              begin              begin
1607                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1608                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1609                MainForm.Color := clRed;                MainForm.Color := clRed;
1610              end;              end;
1611           end;           end;
1612            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
1613            begin            begin
1614              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1615              if Storepakker1.Checked then              if Storepakker1.Checked then
1616              begin              begin
1617                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1732  begin Line 1620  begin
1620              begin              begin
1621                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1622              end;              end;
1623              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1624            end            end
1625            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1626            begin            begin
1627              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1628              if Storepakker1.Checked then              if Storepakker1.Checked then
1629              begin              begin
1630                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1745  begin Line 1633  begin
1633              begin              begin
1634                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1635              end;              end;
1636              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1637            end            end
1638            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1639            begin            begin
1640              List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';              VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
             ListBox1.Items.Insert(0,List1Msg);  
             MainForm.Color := clRed;  
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1641            end            end
1642            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1643            begin            begin
1644            end            end
1645            else            else
1646            begin            begin
1647              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1648            end;            end;
1649           if not PakkeshopNulstil.Visible then  
1650             if not btnNulstil.Visible then
1651            begin            begin
1652  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1653              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1654              begin              begin
1655                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1782  begin Line 1663  begin
1663                InitLillePakke();                InitLillePakke();
1664              end;              end;
1665            end;            end;
1666  // 20150310: start  
1667            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1668  // 20150310: slut  
1669            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1670            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1671            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 1815  begin Line 1696  begin
1696    
1697    Key := #0;    Key := #0;
1698    
1699    
1700    
1701    
1702    
1703    
1704  end; //End of OnKeyPress  end; //End of OnKeyPress
1705    
1706    
1707    
1708  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1709  const  const
1710    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1858  var Line 1746  var
1746    
1747    
1748  begin  begin
1749      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
1750      begin      begin
1751        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1752          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1869  begin Line 1757  begin
1757            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1758            begin            begin
1759              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1760              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1761  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1762  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1763  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1764              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1765            end            end
1766            else     // kun idag            else     // kun idag
1767            begin            begin
# Line 1977  begin Line 1865  begin
1865                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1866              end;              end;
1867            end;            end;
1868  // 20150310: slut  
1869            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1870          end;          end;
1871      end;      end;
# Line 2004  begin Line 1892  begin
1892  end;  end;
1893    
1894  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1895    
1896  begin  begin
1897    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2015  begin Line 1901  begin
1901    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1902    ListBox1.Visible := true;    ListBox1.Visible := true;
1903  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1904  // 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  
1905    if Budlevering1.Checked then    if Budlevering1.Checked then
1906    begin    begin
1907      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2068  begin Line 1914  begin
1914      01 :      01 :
1915            begin;      // NS            begin;      // NS
1916              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1917              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1918              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1919              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1920              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1921              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2084  begin Line 1930  begin
1930              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1931              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1932              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1933              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1934              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1935              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1936              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1937              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2095  begin Line 1941  begin
1941              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1942             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1943              begin              begin
1944                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1945              end              end
1946              else              else
1947              begin              begin
1948                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1949              end;              end;
1950              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1951              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1952              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1953              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1954              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2122  begin Line 1968  begin
1968              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1969              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1970              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1971              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1972              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1973              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1974              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1975            end;            end;
# Line 2139  var Line 1985  var
1985    URLStr : String;    URLStr : String;
1986    pakkestorrelse : String;    pakkestorrelse : String;
1987    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1988    
1989      PakkeshopLabel: TPakkeshopLabel;
1990  begin  begin
1991    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1992    begin    begin
# Line 2148  begin Line 1996  begin
1996    begin    begin
1997      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1998    end;    end;
1999    
2000    
2001    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
2002    begin    begin
2003       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2176  begin Line 2026  begin
2026    begin    begin
2027       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2028    end    end
2029      else if menuIndlevering.Checked then
2030      begin
2031        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2032      end
2033    else    else
2034    begin    begin
2035      exit;      exit;
2036    end;    end;
2037    
2038      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2039      begin
2040        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2041      end;
2042    
2043    try    try
2044      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2045      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2201  begin Line 2061  begin
2061          end;          end;
2062      end;      end;
2063    end;    end;
2064    
2065    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2066    try    try
2067      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2222  begin Line 2083  begin
2083          begin          begin
2084            PrintNyLabel := True;            PrintNyLabel := True;
2085          end;          end;
 // 20150310: start  
2086        end;        end;
 // 20150310: slut  
2087       end       end
2088        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2089        begin
2090    
2091    
2092    
2093    
2094         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2095         if (Kommentar = 'Ok') then
2096         begin
2097           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2098           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2099           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2100           Stregkode := PakkeshopLabel.Stregkode;
2101    
2102           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2103           chkForstorTilDirekte.Checked := false;
2104    
2105         end;
2106    
2107    
2108        end
2109      else      else
2110       begin       begin
2111        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2258  begin Line 2138  begin
2138          PrintNyLabel := True;          PrintNyLabel := True;
2139        end;        end;
2140      end;      end;
2141    
2142    
2143      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2144      begin      begin
2145        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2350  begin Line 2232  begin
2232        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2233      end;      end;
2234    end;    end;
2235      if menuIndlevering.Checked then
2236      begin
2237        List1Msg := Stregkode;
2238      end;
2239    
2240    
2241    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2242    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2243    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2244  end;  end;
2245    
2246  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2247  begin  begin
2248    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2249    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2372  pakkeForkertSted : Integer; Line 2260  pakkeForkertSted : Integer;
2260    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2261  begin  begin
2262    if Budlevering1.Checked then    if Budlevering1.Checked then
2263       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2264    
2265    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2266    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2417  begin Line 2305  begin
2305    
2306          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2307          MainForm.Color := clRed;          MainForm.Color := clRed;
2308          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2309    
2310       end       end
2311       else       else
# Line 2428  begin Line 2316  begin
2316            PrintNyLabel := true;            PrintNyLabel := true;
2317            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2318            nyFarve := Farve;            nyFarve := Farve;
2319            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2320            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2321            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2322            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2444  begin Line 2332  begin
2332            begin            begin
2333              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2334              MainForm.Color := clRed;              MainForm.Color := clRed;
2335              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2336            end;            end;
2337    
2338         end;         end;
# Line 2470  begin Line 2358  begin
2358            begin            begin
2359              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2360              MainForm.Color := clRed;              MainForm.Color := clRed;
2361              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2362            end;            end;
2363    
2364         end;         end;
# Line 2490  begin Line 2378  begin
2378               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2379  // 20150304: slut  // 20150304: slut
2380                begin                begin
2381                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2382                end;                end;
2383              end;              end;
2384        01 :  begin;        01 :  begin;
2385               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2386                    // 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
2387                    // 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')
2388                begin                begin
2389                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2390                end;                end;
2391              end;              end;
2392        02 :  begin;        02 :  begin;
2393                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
2394                begin                begin
2395                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2396                end;                end;
2397              end;              end;
2398        03 :  begin;        03 :  begin;
2399               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2400                    // 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
2401                    // 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')
2402               begin               begin
2403                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2404               end;               end;
2405              end;              end;
2406        04 :  begin;        04 :  begin;
2407                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
2408                begin                begin
2409                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2410                end;                end;
2411              end;              end;
2412        else        else
# Line 2554  begin Line 2442  begin
2442        end;        end;
2443        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2444        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2445        with Printer do  
2446        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2447          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;  
2448      end;      end;
2449    end;    end;
2450    
2451  end;  end;
2452    
 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;  
2453    
2454    
2455  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2711  begin Line 2539  begin
2539    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2540    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...');
2541    
2542          // Tjekker urls    try
2543          logTekst := 'Tjekker urls.';      // Tjekker urls
2544          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2545          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2546        SkrivScanningLogFil(logTekst);
2547    
         // 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;  
2548    
         // 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;  
2549    
2550          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2551          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2552          begin      begin
2553            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2554            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;  
2555    
2556          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2557          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2558          begin      begin
2559            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2560            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;  
2561    
2562          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2563          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2564          begin      begin
2565            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2566            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;  
2567    
2568          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2569          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2570          begin      begin
2571            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2572            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;  
2573    
2574          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2575          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2576          or (PanelValg4.Enabled = true) then      begin
2577          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2578            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;  
2579    
2580          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2581          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2582          begin      begin
2583            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2584            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;  
2585    
2586          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2587          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2588          begin      begin
2589            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2590            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;  
2591    
2592          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2593          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2594          begin      begin
2595            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2596            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;  
2597    
2598        // Tjekker UrlPakkeshopManglendeReturScanninger
2599        if PanelValg6.Enabled = true then
2600        begin
2601          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2602        end;
2603    
2604          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2605          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2606          begin      begin
2607            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2608            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2609              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;  
2610    
2611        // Tjekker UrlEKLoverforsel
2612        if PanelValg1.Enabled = true then
2613        begin
2614          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2615        end;
2616    
         // 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;  
2617    
2618          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2619          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2620          begin      begin
2621            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2622            SkrivScanningLogFil(logTekst);      end;
2623          end  
2624          else  
2625          begin      // Tjekker UrlFindPakketype
2626              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2627              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2628              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2629              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2630    
         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;  
2631    
2632    
2633        logTekst := 'urls er ok';
2634        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2635        SkrivScanningLogFil(logTekst);
2636    
2637      Except
2638        TjekUrls := '-';   // markerer at der var fejl
2639    
2640      end;
2641  end;  end;
2642    
2643  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2644  var  const
2645     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2646  begin  begin
2647     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2648     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2649     Result := SystemTimeToDateTime(SystemTime) ;    begin
2650        logTekst := UrlNavn + ' accepteret: ' + Url;
2651        SkrivScanningLogFil(logTekst);
2652      end
2653      else
2654      begin
2655        inc(urlFejl);   // Optæller antal fejl
2656        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2657        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2658        if TjekUrls = '1' then
2659        begin
2660          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2661        end;
2662    
2663        SkrivScanningLogFil(logTekst);
2664    
2665        if TjekUrls = '1' then
2666        begin
2667          ShowMessage(logTekst);
2668          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2669          Application.Terminate;
2670    
2671          raise Exception.Create('UrlFejl');
2672    
2673        end;
2674      end;
2675    
2676  end;  end;
2677    
2678    
2679    
2680  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2681  var  var
2682    SR: TSearchRec;    SR: TSearchRec;
# Line 3117  begin Line 2693  begin
2693      repeat      repeat
2694        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2695        begin        begin
2696    
2697          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2698          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2699          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2700          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2701          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2702          // (æ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 3156  begin Line 2733  begin
2733    end;    end;
2734  end;  end;
2735    
2736  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2737  begin  begin
2738    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2739    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2740    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2741    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2742    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2743    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3178  begin Line 2755  begin
2755  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2756    if Farve <> '' then    if Farve <> '' then
2757    begin    begin
2758       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  
2759    end;    end;
2760    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2761    begin    begin
# Line 3252  end; Line 2819  end;
2819    
2820  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2821  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;  
 *)  
2822  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2823  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2824       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2825       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2826       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2827  // 20150311: slut  
2828    
2829    
2830  end;  end;
2831    
2832  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3289  var Line 2843  var
2843    BoghandlerNavn : String;    BoghandlerNavn : String;
2844    Koreliste : String;    Koreliste : String;
2845    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2846    SmsKode : String;    SmsKode : String;
2847    DBKbane : String;    DBKbane : String;
2848    Leveringssted : String;    Leveringssted : String;
# Line 3311  begin Line 2864  begin
2864      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2865      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2866      MainForm.Color := clRed;      MainForm.Color := clRed;
2867      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2868    end    end
2869    else    else
2870    begin    begin
2871      Falsk := False;      Falsk := False;
2872      Sand := True;  
2873      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2874      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2875      SmsKode := '999999';      SmsKode := '999999';
# Line 3336  var Line 2889  var
2889    BoghandlerNavn : String;    BoghandlerNavn : String;
2890    Koreliste : String;    Koreliste : String;
2891    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2892    SmsKode : String;    SmsKode : String;
2893    DBKbane : String;    DBKbane : String;
2894    Leveringssted : String;    Leveringssted : String;
# Line 3345  begin Line 2897  begin
2897    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2898    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2899    Falsk := False;    Falsk := False;
   Sand := True;  
2900    
2901    if (Printer.Printers.Count = 0) then  
2902      if (LabelPrint.GetPrinterCount() = 0) then
2903    begin    begin
2904      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2905    end    end
# Line 3362  begin Line 2914  begin
2914      DBKbane := '999';      DBKbane := '999';
2915      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2916      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2917      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2918    end;    end;
2919    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2920  end;  end;
# Line 3371  procedure TMainForm.Timer1Timer(Sender: Line 2923  procedure TMainForm.Timer1Timer(Sender:
2923  begin  begin
2924    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2925    begin    begin
2926      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2927    end    end
2928    else    else
2929    begin    begin
# Line 3380  begin Line 2932  begin
2932    end;    end;
2933  end;  end;
2934    
2935  {  
  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;  
2936    
2937  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2938  const  const
# Line 3418  var Line 2941  var
2941   tekst, filversion : String;   tekst, filversion : String;
2942  begin  begin
2943    
2944    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2945    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';
2946    
2947    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3440  begin Line 2963  begin
2963          end          end
2964          else          else
2965          begin          begin
2966            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2967          end;          end;
2968      end      end
2969      else      else
2970      begin      begin
2971        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2972      end;      end;
2973    end;    end;
2974    
# Line 3513  begin Line 3036  begin
3036    
3037    if FileExists(fileName) then    if FileExists(fileName) then
3038    begin    begin
3039      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3040      begin      begin
3041        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3042        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3537  begin Line 3060  begin
3060    
3061    if FileExists(fileName) then    if FileExists(fileName) then
3062    begin    begin
3063      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3064      begin      begin
3065        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3066        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3067      end      end
3068      else      else
3069      begin      begin
3070        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3071      end;      end;
3072    end    end
3073    else    else
# Line 3553  begin Line 3076  begin
3076    end;    end;
3077  end;  end;
3078    
3079    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3080    begin
3081      Scanningtype := '7';
3082      NulstilAutomatiskValg();
3083      InitIndleveringskode();
3084    end;
3085    
3086  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3087  begin  begin
3088    
# Line 3585  end; Line 3115  end;
3115  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3116  begin  begin
3117        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3118        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3119        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3120        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3121        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
# Line 3603  begin Line 3133  begin
3133        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3134        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3135        ListBox1.Visible := true;        ListBox1.Visible := true;
3136        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3137        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3138        InitLillePakke();        InitLillePakke();
3139        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3140    
3141          chkForstorTilDirekte.Checked := false;
3142          chkForstorTilDirekte.Enabled := false;
3143    
3144        if BladhusSted = 0 then        if BladhusSted = 0 then
3145        begin        begin
3146          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3618  procedure TMainForm.InitReturFraDao(); Line 3152  procedure TMainForm.InitReturFraDao();
3152  begin  begin
3153        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3154        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3155        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3156        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3157        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3158        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3637  begin Line 3171  begin
3171        ListBox1.Visible := true;        ListBox1.Visible := true;
3172        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3173        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3174        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3175    
3176          chkForstorTilDirekte.Checked := false;
3177          chkForstorTilDirekte.Enabled := false;
3178    
3179        InitLillePakke();        InitLillePakke();
3180  end;  end;
3181    
# Line 3645  procedure TMainForm.InitReturFraKunde(); Line 3183  procedure TMainForm.InitReturFraKunde();
3183  begin  begin
3184        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3185        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3186        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3187        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3188        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3189        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3663  begin Line 3201  begin
3201        ListBox1.Visible := true;        ListBox1.Visible := true;
3202        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3203        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3204        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3205    
3206          chkForstorTilDirekte.Checked := false;
3207          chkForstorTilDirekte.Enabled := false;
3208    
3209        InitLillePakke();        InitLillePakke();
3210  end;  end;
3211    
# Line 3671  procedure TMainForm.InitDirektelevering( Line 3213  procedure TMainForm.InitDirektelevering(
3213  begin  begin
3214        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3215        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3216        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3217        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3218        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3219        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3689  begin Line 3231  begin
3231        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3232        ListBox1.Visible := true;        ListBox1.Visible := true;
3233        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3234        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3235        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3236        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3237        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3238        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3239        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3240    
3241          chkForstorTilDirekte.Checked := false;
3242          chkForstorTilDirekte.Enabled := true;
3243    
3244        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3245        begin        begin
3246            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3707  procedure TMainForm.InitPakkeshopleverin Line 3253  procedure TMainForm.InitPakkeshopleverin
3253  begin  begin
3254        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3255        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3256        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3257        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3258        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3259        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3725  begin Line 3271  begin
3271        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3272        ListBox1.Visible := true;        ListBox1.Visible := true;
3273        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3274        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3275        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3276    
3277          BtnEKLoverforsel.Enabled := true;
3278    
3279        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3280          chkForstorTilDirekte.Enabled := true;
3281    
3282        InitLillePakke();        InitLillePakke();
3283        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3744  procedure TMainForm.InitReturFraPakkesho Line 3293  procedure TMainForm.InitReturFraPakkesho
3293  begin  begin
3294        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3295        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3296        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3297        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3298        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3299        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3762  begin Line 3311  begin
3311        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3312        ListBox1.Visible := true;        ListBox1.Visible := true;
3313        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3314        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3315        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3316        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3317    
3318          chkForstorTilDirekte.Checked := false;
3319          chkForstorTilDirekte.Enabled := false;
3320    
3321    
3322        InitLillePakke();        InitLillePakke();
3323        IndlesScanningLogFil();        IndlesScanningLogFil();
3324        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3784  end; Line 3338  end;
3338    
3339  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3340  begin  begin
3341          menuIndlevering.Checked := true;
3342        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3343        Returpakkerfrapakkeshop1.Checked := true;  
3344        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3345        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3346        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3347        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
# Line 3808  begin Line 3363  begin
3363        ListBox1.Visible := true;        ListBox1.Visible := true;
3364        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3365    
3366        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3367        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3368        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3369    
3370          chkForstorTilDirekte.Checked := false;
3371          chkForstorTilDirekte.Enabled := false;
3372    
3373    
3374        InitLillePakke();        InitLillePakke();
3375        IndlesScanningLogFil();        IndlesScanningLogFil();
3376        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3848  begin Line 3408  begin
3408  // 20150310: slut  // 20150310: slut
3409  end;  end;
3410    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';  
   const Fmt: String = '%d.%d.%d.%d'): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Word;  
   S : String;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
     // format result string  
     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3411    
     // Hvorfor virker ovenstående ikke ???  
     S := '';  
     Str(iVer[1],Result);  
     S := S+Result+'.';  
     Str(iVer[2],Result);  
     S := S+Result+'.';  
     Str(iVer[3],Result);  
     S := S+Result+'.';  
     Str(iVer[4],Result);  
     S := S+Result+'';  
     Result := S;  
   end;  
 end;  
3412    
3413  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3414  begin  begin
# Line 3984  begin; Line 3479  begin;
3479    CheckCode();    CheckCode();
3480  end;  end;
3481    
3482  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3483  var  var
3484    WebSvar : String;    WebSvar : String;
3485    URLStr : String;    URLStr : String;
# Line 3994  var Line 3489  var
3489    status, kommentar : String;    status, kommentar : String;
3490    
3491  begin  begin
3492      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3493    
3494      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');
3495      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3496      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3497      StedKode := Sted;      StedKode := Sted;
3498      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3499  // 20150330: start  
3500      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3501      begin      begin
3502        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3503      end;      end;
3504  // 20150330: slut  
3505    
3506      try      try
3507      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4057  begin Line 3552  begin
3552        end;        end;
3553      end;      end;
3554    
3555      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3556    
3557      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
3558    
# Line 4074  begin Line 3569  begin
3569           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3570         end;         end;
3571         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3572         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3573      end;      end;
3574    
3575  end;  end;
# Line 4098  begin Line 3593  begin
3593    else    else
3594      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3595  }  }
3596    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3597    
3598    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3599    CheckCode();    CheckCode();
# Line 4106  end; Line 3601  end;
3601    
3602  end;  end;
3603    
 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;  
3604    
3605  //  //
3606  // Bladhus ***  // Bladhus ***
# Line 4622  begin Line 4078  begin
4078    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
4079  end;  end;
4080    
4081  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4082  begin  begin
4083      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4084      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4085  end;  end;
4086    
4087  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4088  const  const
4089    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4090    
# Line 4637  begin Line 4093  begin
4093      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4094  end;  end;
4095    
4096  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4097  begin  begin
4098      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4099      begin      begin
# Line 4646  begin Line 4102  begin
4102      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
4103  end;  end;
4104    
4105  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;  
4106    
4107  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4108  var  var
# Line 4670  var Line 4114  var
4114    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4115    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4116    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4117    pakketyper : TStrings;    //pakketyper : TStrings;
4118      pakketyper : TDictionary<String, Integer>;
4119      tmpAntal : Integer;
4120    
4121    
4122    
4123    antlin : Integer;    antlin : Integer;
4124    
4125    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4126    
4127    XmlFelter : TStrings;    //XmlFelter : TStrings;
4128      XmlFelter : TDictionary<String, Integer>;
4129    
4130   begin   begin
4131      XmlFelter := TStringList.Create;  
4132      pakketyper := TStringList.Create;  
4133        XmlFelter := TDictionary<String, Integer>.Create;
4134        pakketyper := TDictionary<String, Integer>.Create;
4135    
4136      linienr := 0;      linienr := 0;
4137      ListBox2.Clear;      ListBox2.Clear;
4138      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 4694  var Line 4147  var
4147          StedKode := Sted;          StedKode := Sted;
4148        end;        end;
4149    
4150          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4151    
4152    
4153    
4154      if (Scanningtype = '6') then      if (Scanningtype = '7') then
4155         begin
4156          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4157         end
4158        else if (Scanningtype = '6') then
4159       begin       begin
4160        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4161       end       end
4162      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4163       begin       begin
4164        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4165       end       end
4166      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4167       begin       begin
# Line 4743  var Line 4203  var
4203        antlinIdag := 0;        antlinIdag := 0;
4204        antlinSenere := 0;        antlinSenere := 0;
4205    
       antalFelterFundet := 0;  
4206        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4207            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4208            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4209              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4210              begin              begin
4211                 antlin := antlin + 1;                 Inc(antlin);
4212                 // 20150306: start                 // 20150306: start
4213                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4214                begin                begin
4215                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4216                   begin                   begin
4217                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4218                   end                   end
4219                   else                   else
4220                   begin                   begin
4221                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4222                   end;                   end;
4223                end;                end;
4224                 // 20150306: slut                 // 20150306: slut
4225              end;              end;
4226            end;            end;
4227            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4228                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4229                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4230                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4231                  end
4232                else                else
4233                  XmlFelter.values[Node.NodeName] := '1';                begin
4234                    XmlFelter.Add(Node.NodeName, 1);
4235                  end;
4236    
4237        end;        end;
4238        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4776  var Line 4240  var
4240        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4241        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4242    
4243    
4244          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4245    
4246        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4247        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4248        begin        begin
# Line 4784  var Line 4251  var
4251        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4252    
4253        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4254    
4255    
4256        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4257            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4258            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4791  var Line 4260  var
4260                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4261                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4262                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4263              end;              end
4264              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4265                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4266                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4267                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4268              end;              end
4269              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4270                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4271                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4272                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4273              end;              end
4274              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4275                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4276                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4277                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4278              end;              end
4279              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4280                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4281                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4282                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4283                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4284                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4285                    pakketyper.TryGetValue(pakketype, tmpAntal);
4286                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4287                  end
4288                else                else
4289                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4290              end;              end
4291              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4292                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4293                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4294                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4295                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4296                  begin                  begin
4297  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4298                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4299                    begin                    begin
4300                      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
4301                    end                    end
4302                    else                    else
4303                    begin                    begin
# Line 4835  var Line 4306  var
4306                    linienr := linienr + 1;                    linienr := linienr + 1;
4307                  end;                  end;
4308              end;              end;
4309    
4310    
4311              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4312              begin              begin
4313                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4850  var Line 4323  var
4323              end;              end;
4324            end;            end;
4325        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4326    
4327          // Free up the list object  
4328          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4329    
4330    
4331          for pakketype in pakketyper.Keys do
4332          begin
4333            pakketyper.TryGetValue(pakketype, tmpAntal);
4334            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4335          end;
4336    
4337            // Free up the dictionary object
4338        pakketyper.Free;        pakketyper.Free;
4339    
4340    
4341    
4342  //      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.');
4343        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4344        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5013  end; Line 4495  end;
4495  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4496  var  var
4497     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4498     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4499     imorgenYmd : string;     imorgenYmd : string;
4500     logFilnavn : string;     logFilnavn : string;
4501      error : Integer;     //error : Integer;
4502    
4503  begin  begin
4504    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5110  begin Line 4590  begin
4590          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4591          S := buffer;          S := buffer;
4592          SetLength(A,0);          SetLength(A,0);
4593          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4594          if (length(A) < 2) then          if (length(A) < 2) then
4595          begin          begin
4596            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4597          end;          end;
4598            if (length(A) > 1) then            if (length(A) > 1) then
4599            begin            begin
# Line 5187  begin Line 4667  begin
4667          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4668          S := buffer;          S := buffer;
4669          SetLength(A,0);          SetLength(A,0);
4670          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4671          if (length(A) < 3) then          if (length(A) < 3) then
4672          begin          begin
4673            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4674          end;          end;
4675          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4676          begin          begin
# Line 5282  begin Line 4762  begin
4762    result := svar;    result := svar;
4763  end;  end;
4764    
4765  procedure TMainForm.VisAlarmSkaerm(var List1msg: string);  procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4766  begin  begin
4767    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4768    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4769    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
   ListBox1.Items.Insert(0, List1Msg);  
4770    MainForm.Color := clRed;    MainForm.Color := clRed;
4771    
4772    
4773    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4774    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4775    KommentarST.Caption := List1msg;    btnNulstil.Visible := true;
4776    PakkeshopNulstil.Visible := true;  
4777      if (strMessage <> '') then
4778      begin
4779        ListBox1.Items.Insert(0, strMessage);
4780        KommentarST.Caption := strMessage;
4781      end;
4782    
4783  end;  end;
4784    
4785  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5353  begin Line 4839  begin
4839    result := svar;    result := svar;
4840  end;  end;
4841    
 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;  
4842    
4843  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4844  begin  begin
# Line 5385  begin Line 4852  begin
4852    end;    end;
4853  end;  end;
4854    
4855  function TMainForm.AdobeReaderExists: Boolean;  
4856  var  
4857    AReg: TRegistry;  //Nedarvet fra IParentForm
4858    procedure TMainForm.LogMessage( msg : string);
4859  begin  begin
4860    result:= false;    ListBox1.Items.Insert(0, msg);
4861    AReg := TRegistry.Create;    SkrivScanningLogFil(msg);
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4862  end;  end;
4863    
 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  
4864    
4865  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4866  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4867  //            'Timer' skal kun vise alarmlinie  begin
4868    
4869    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4870      if (alert) then
4871    begin    begin
4872      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4873      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4874      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);  
4875    end    end
4876    else    else
4877    begin    begin
4878      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4879      try      PrinterstatusStaticText1.Color := clWhite;
4880        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;  
4881    end;    end;
4882  end;  end;
4883    
4884  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4885  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4886  begin  begin
4887     with Control do    Result := self;
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
4888  end;  end;
 // 20150310: slut  
4889    
4890  end.  end.
4891    

Legend:
Removed from v.2657  
changed lines
  Added in v.2977

  ViewVC Help
Powered by ViewVC 1.1.20