/[projects]/dao/DelphiScanner/Main.pas
ViewVC logotype

Diff of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2678 by torben, Wed Aug 26 13:20:47 2015 UTC revision 2701 by torben, Thu Sep 3 15:22:09 2015 UTC
# Line 8  uses Line 8  uses
8    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
9    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
10    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,
11    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    Winspool, ShellApi, ClipBrd, Buttons, wininet,
12    UITypes,    UITypes,
13    PakkeshopLabels,    PakkeshopLabels,
14    StBarC,    StBarC,
15    Math // DegToRad() bruges i PrintPakkeshopLabel    Math, // DegToRad() bruges i PrintPakkeshopLabel
16      Utils
17    
18    ;    ;
19    
20  type  type
   TStrArray = array of string;  
21    TMainForm = class(TForm)    TMainForm = class(TForm)
22      StregkodeST: TStaticText;      StregkodeST: TStaticText;
23      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
# Line 53  type Line 52  type
52      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
53      ListBox1: TListBox;      ListBox1: TListBox;
54      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
55      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
56      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
57      Image1: TImage;      Image1: TImage;
58      ListBox2: TListBox;      ListBox2: TListBox;
59      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
60      UploadButton01: TButton;      BtnUploadLogfil: TButton;
61      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
62      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
63      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
64      btnNulstil: TButton;      btnNulstil: TButton;
65      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
66      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
67      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
68      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
69      N5: TMenuItem;      N5: TMenuItem;
70      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
71      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 94  type Line 93  type
93      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
94      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
95    
   
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
96    function getProddato() : TDate;    function getProddato() : TDate;
97    function getProddag() : String;    function getProddag() : String;
98    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
99    function GetCurrentPrinterHandle() : THandle;    function GetCurrentPrinterHandle() : THandle;
100    function SavePChar(p: PChar): PChar;    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;  
101    
102    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
103    procedure StartScreen();    procedure StartScreen();
# Line 139  type Line 128  type
128    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
129    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
130    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
131    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
132    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
133    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
134    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
135    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 148  type Line 137  type
137    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
138    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
139    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
140    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
141    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
142    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
143    procedure btnNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
144    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
# Line 163  type Line 152  type
152    
153    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
154    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
155    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
156    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
157    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
158    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
# Line 186  type Line 175  type
175    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
176    procedure TjekkerUrls();    procedure TjekkerUrls();
177    
   procedure RoundCornerOf(Control: TWinControl);  
178    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
179    
180    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
# Line 199  type Line 187  type
187      SkrivLog : String;      SkrivLog : String;
188      Sted : String;      Sted : String;
189      StedNavn : String;      StedNavn : String;
190      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;
191  // 29150330: start  // 29150330: start
192      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
193  // 20150330: slut  // 20150330: slut
# Line 213  type Line 201  type
201      AlarmLyd : String;      AlarmLyd : String;
202      ScannetOkLyd : String;      ScannetOkLyd : String;
203      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
204  // 20150317: start  
205      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
206  // 20150317: slut  
207      PrinterNavn : String;      PrinterNavn : String;
208      TjekPrinter : String;      TjekPrinter : String;
209      XPosRute : integer;      XPosRute : integer;
# Line 256  type Line 244  type
244    
245      Barcode : TStBarcode;      Barcode : TStBarcode;
246    
           function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
247    
248      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 = '');
249      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
# Line 290  var Line 277  var
277  implementation  implementation
278  {$R *.dfm}  {$R *.dfm}
279    
 function TMainForm.TColorToHex(Color : TColor) : string;  
 begin  
    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;  
280    
281  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
282  begin  begin
# Line 359  begin Line 329  begin
329        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
330      end;      end;
331    
332      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
333    
334      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
335      begin      begin
# Line 413  begin Line 383  begin
383    
384      StartScreen();      StartScreen();
385      MainForm.Caption := Titel;      MainForm.Caption := Titel;
386      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
387      MainForm.Farve := Farve;      MainForm.Farve := Farve;
388      MainForm.Titel := Titel;      MainForm.Titel := Titel;
389      MainForm.Url := Url;      MainForm.Url := Url;
# Line 473  begin Line 443  begin
443          end          end
444          else          else
445          begin          begin
446            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
447          end;          end;
448          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
449        end        end
450        else        else
451        begin        begin
452          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
453          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
454        end;        end;
455      end;      end;
# Line 522  end; Line 492  end;
492    
493  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
494  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;  
 *)  
495  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
496  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
497       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
498       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
499       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
500  end;  end;
501    
502  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
# Line 561  begin Line 515  begin
515    
516    btnNulstil.BringToFront;    btnNulstil.BringToFront;
517    
518    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
519    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
520    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
521    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
522    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
523    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
524    
525    
526    // 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 602  begin Line 556  begin
556      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');
557      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');
558    
559    
560      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
561        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
562    
563    
564    
565      LabelType := ReadInteger('Settings','LabelType',1);      LabelType := ReadInteger('Settings','LabelType',1);
# Line 642  begin Line 599  begin
599    
600      if (SkrivLog = '1') then      if (SkrivLog = '1') then
601      begin      begin
602        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);
603        try        try
604          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
605          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
606          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
607          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
608          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
609          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 785  begin Line 742  begin
742      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
743      // *************************** //      // *************************** //
744    
745    {$IfDef STED_BK}
746        SpecialVersionSted := 'BK';
747    {$EndIf}
748    {$IfDef STED_DBK}
749        SpecialVersionSted := 'DBK';
750    {$EndIf}
751    {$IfDef STED_FD}
752        SpecialVersionSted := 'FD';
753    {$EndIf}
754    {$IfDef STED_NS}
755        SpecialVersionSted := 'NS';
756    {$EndIf}
757    
758    
759      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
760      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
761      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 800  begin Line 771  begin
771      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
772      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
773    
 // 20150313: start  
774      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
775      begin      begin
776         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 811  begin Line 781  begin
781         SpecialVersionSted := '03';         SpecialVersionSted := '03';
782         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
783      end;      end;
 // 20150313: slut  
784    
785      if SpecialVersionSted = 'BK' then      if SpecialVersionSted = 'BK' then
786      begin      begin
# Line 1156  begin Line 1125  begin
1125      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1126    
1127      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1128      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1129    
1130  end;  end;
1131    
# Line 1608  begin Line 1577  begin
1577             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1578             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1579             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1580                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1581             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1582                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1583             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1584           end           end
1585          else          else
# Line 1631  begin Line 1600  begin
1600    
1601      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
1602      begin      begin
1603    
1604         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1605            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1606         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1670  begin Line 1640  begin
1640           end;           end;
1641            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
1642            begin            begin
1643              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1644              if Storepakker1.Checked then              if Storepakker1.Checked then
1645              begin              begin
1646                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1683  begin Line 1653  begin
1653            end            end
1654            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1655            begin            begin
1656              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1657              if Storepakker1.Checked then              if Storepakker1.Checked then
1658              begin              begin
1659                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1705  begin Line 1675  begin
1675            begin            begin
1676              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1677            end;            end;
1678    
1679           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1680            begin            begin
1681    
# Line 1797  var Line 1768  var
1768    
1769    
1770  begin  begin
1771      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
1772      begin      begin
1773        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1774          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1808  begin Line 1779  begin
1779            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1780            begin            begin
1781              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1782              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1783  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1784  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1785  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1786              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1787            end            end
1788            else     // kun idag            else     // kun idag
1789            begin            begin
# Line 2005  begin Line 1976  begin
1976      01 :      01 :
1977            begin;      // NS            begin;      // NS
1978              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1979              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1980              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1981              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1982              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1983              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2021  begin Line 1992  begin
1992              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1993              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1994              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1995              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1996              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1997              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1998              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1999              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2032  begin Line 2003  begin
2003              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2004             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2005              begin              begin
2006                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2007              end              end
2008              else              else
2009              begin              begin
2010                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2011              end;              end;
2012              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2013              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2014              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2015              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2016              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2059  begin Line 2030  begin
2030              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2031              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2032              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2033              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2034              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2035              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2036              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2037            end;            end;
# Line 2180  begin Line 2151  begin
2151       begin       begin
2152         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2153         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2154           RuteNummer := PakkeshopLabel.Koreliste;
2155           Stregkode := PakkeshopLabel.Stregkode;
2156    
2157         PrintPakkeshopLabel( PakkeshopLabel );         PrintPakkeshopLabel( PakkeshopLabel );
2158    
# Line 2313  begin Line 2286  begin
2286        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2287      end;      end;
2288    end;    end;
2289      if menuIndlevering.Checked then
2290      begin
2291        List1Msg := Stregkode;
2292      end;
2293    
2294    
2295    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2296    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2297    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2298  end;  end;
2299    
2300  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2301  begin  begin
2302    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2303    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2335  pakkeForkertSted : Integer; Line 2314  pakkeForkertSted : Integer;
2314    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2315  begin  begin
2316    if Budlevering1.Checked then    if Budlevering1.Checked then
2317       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2318    
2319    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2320    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2391  begin Line 2370  begin
2370            PrintNyLabel := true;            PrintNyLabel := true;
2371            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2372            nyFarve := Farve;            nyFarve := Farve;
2373            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2374            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2375            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2376            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2682  begin Line 2661  begin
2661          // Tjekker UrlNormal          // Tjekker UrlNormal
2662          if PanelValg1.Enabled = true then          if PanelValg1.Enabled = true then
2663          begin          begin
2664            if CheckUrl(UrlNormal) then            if TUtils.CheckUrl(UrlNormal) then
2665            begin            begin
2666              logTekst := 'UrlNormal accepteret: ' + UrlNormal;              logTekst := 'UrlNormal accepteret: ' + UrlNormal;
2667              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2711  begin Line 2690  begin
2690          // Tjekker UrlReturDAO          // Tjekker UrlReturDAO
2691          if PanelValg2.Enabled = true then          if PanelValg2.Enabled = true then
2692          begin          begin
2693            if CheckUrl(UrlReturDAO) then            if TUtils.CheckUrl(UrlReturDAO) then
2694            begin            begin
2695              logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;              logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;
2696              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2739  begin Line 2718  begin
2718          // Tjekker UrlReturBoghandler          // Tjekker UrlReturBoghandler
2719          if PanelValg3.Enabled = true then          if PanelValg3.Enabled = true then
2720          begin          begin
2721            if CheckUrl(UrlReturBoghandler) then            if TUtils.CheckUrl(UrlReturBoghandler) then
2722            begin            begin
2723              logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;              logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;
2724              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2767  begin Line 2746  begin
2746          // Tjekker UrlBudlevering          // Tjekker UrlBudlevering
2747          if PanelValg4.Enabled = true then          if PanelValg4.Enabled = true then
2748          begin          begin
2749            if CheckUrl(UrlBudlevering) then            if TUtils.CheckUrl(UrlBudlevering) then
2750            begin            begin
2751              logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;              logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;
2752              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2795  begin Line 2774  begin
2774          // Tjekker UrlPakkeshoplevering          // Tjekker UrlPakkeshoplevering
2775          if PanelValg5.Enabled = true then          if PanelValg5.Enabled = true then
2776          begin          begin
2777            if CheckUrl(UrlPakkeshoplevering) then            if TUtils.CheckUrl(UrlPakkeshoplevering) then
2778            begin            begin
2779              logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;              logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;
2780              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2823  begin Line 2802  begin
2802          // Tjekker UrlReturPakkeshop          // Tjekker UrlReturPakkeshop
2803          if PanelValg6.Enabled = true then          if PanelValg6.Enabled = true then
2804          begin          begin
2805            if CheckUrl(UrlReturPakkeshop) then            if TUtils.CheckUrl(UrlReturPakkeshop) then
2806            begin            begin
2807              logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;              logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;
2808              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2852  begin Line 2831  begin
2831          if (PanelValg1.Enabled = true)          if (PanelValg1.Enabled = true)
2832          or (PanelValg4.Enabled = true) then          or (PanelValg4.Enabled = true) then
2833          begin          begin
2834            if CheckUrl(UrlManglendeScanninger) then            if TUtils.CheckUrl(UrlManglendeScanninger) then
2835            begin            begin
2836              logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;              logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;
2837              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2880  begin Line 2859  begin
2859          // Tjekker UrlPakkeshopManglendeScanninger          // Tjekker UrlPakkeshopManglendeScanninger
2860          if PanelValg5.Enabled = true then          if PanelValg5.Enabled = true then
2861          begin          begin
2862            if CheckUrl(UrlPakkeshopManglendeScanninger) then            if TUtils.CheckUrl(UrlPakkeshopManglendeScanninger) then
2863            begin            begin
2864              logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;              logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;
2865              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2908  begin Line 2887  begin
2887          // Tjekker UrlPakkeshopManglendeReturScanninger          // Tjekker UrlPakkeshopManglendeReturScanninger
2888          if PanelValg6.Enabled = true then          if PanelValg6.Enabled = true then
2889          begin          begin
2890            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then            if TUtils.CheckUrl(UrlPakkeshopManglendeReturScanninger) then
2891            begin            begin
2892              logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;              logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;
2893              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2933  begin Line 2912  begin
2912            end;            end;
2913          end;          end;
2914    
2915           // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2916            if PanelValg7.Enabled = true then
2917            begin
2918              if TUtils.CheckUrl(UrlIndleveringsPakke) then
2919              begin
2920                logTekst := 'UrlIndleveringsPakke accepteret: ' + UrlIndleveringsPakke;
2921                SkrivScanningLogFil(logTekst);
2922              end
2923              else
2924              begin
2925                inc(urlFejl);   // Optæller antal fejl
2926                logTekst := 'UrlIndleveringsPakke svarer ikke: ' + UrlIndleveringsPakke;
2927                ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2928                if TjekUrls = '1' then
2929                begin
2930                  logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2931                end;
2932                SkrivScanningLogFil(logTekst);
2933                if TjekUrls = '1' then
2934                begin
2935                  ShowMessage(logTekst);
2936                  UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2937                  Application.Terminate;
2938                  exit;
2939                end;
2940              end;
2941    
2942              if TUtils.CheckUrl(UrlIndleveringsPakkeManglendeScanninger) then
2943              begin
2944                logTekst := 'UrlIndleveringsPakkeManglendeScanninger accepteret: ' + UrlIndleveringsPakkeManglendeScanninger;
2945                SkrivScanningLogFil(logTekst);
2946              end
2947              else
2948              begin
2949                inc(urlFejl);   // Optæller antal fejl
2950                logTekst := 'UrlIndleveringsPakkeManglendeScanninger svarer ikke: ' + UrlIndleveringsPakkeManglendeScanninger;
2951                ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2952                if TjekUrls = '1' then
2953                begin
2954                  logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2955                end;
2956                SkrivScanningLogFil(logTekst);
2957                if TjekUrls = '1' then
2958                begin
2959                  ShowMessage(logTekst);
2960                  UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2961                  Application.Terminate;
2962                  exit;
2963                end;
2964              end;
2965            end;
2966    
2967          // Tjekker UrlEKLoverforsel          // Tjekker UrlEKLoverforsel
2968          if PanelValg1.Enabled = true then          if PanelValg1.Enabled = true then
2969          begin          begin
2970            if CheckUrl(UrlEKLoverforsel) then            if TUtils.CheckUrl(UrlEKLoverforsel) then
2971            begin            begin
2972              logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;              logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;
2973              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2965  begin Line 2996  begin
2996          // Tjekker UrlEKLoverforselPakkeshop          // Tjekker UrlEKLoverforselPakkeshop
2997          if PanelValg5.Enabled = true then          if PanelValg5.Enabled = true then
2998          begin          begin
2999            if CheckUrl(UrlEKLoverforselPakkeshop) then            if TUtils.CheckUrl(UrlEKLoverforselPakkeshop) then
3000            begin            begin
3001              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;
3002              SkrivScanningLogFil(logTekst);              SkrivScanningLogFil(logTekst);
# Line 2992  begin Line 3023  begin
3023    
3024    
3025          // Tjekker UrlFindPakketype          // Tjekker UrlFindPakketype
3026          if CheckUrl(UrlFindPakketype) then          if TUtils.CheckUrl(UrlFindPakketype) then
3027          begin          begin
3028            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;
3029            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
# Line 3017  begin Line 3048  begin
3048          end;          end;
3049    
3050          // Tjekker UrlSendPrograminfo          // Tjekker UrlSendPrograminfo
3051          if CheckUrl(UrlSendPrograminfo) then          if TUtils.CheckUrl(UrlSendPrograminfo) then
3052          begin          begin
3053            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;
3054            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
# Line 3054  begin Line 3085  begin
3085    
3086  end;  end;
3087    
 function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  
 var  
    LocalFileTime: TFileTime;  
    SystemTime: TSystemTime;  
 begin  
    FileTimeToLocalFileTime(FileTime, LocalFileTime) ;  
    FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
    Result := SystemTimeToDateTime(SystemTime) ;  
 end;  
   
3088  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
3089  var  var
3090    SR: TSearchRec;    SR: TSearchRec;
# Line 3083  begin Line 3104  begin
3104    
3105          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
3106          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
3107          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
3108          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
3109          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
3110          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3142  begin Line 3163  begin
3163  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
3164    if Farve <> '' then    if Farve <> '' then
3165    begin    begin
3166       MainForm.Color := HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
3167  // 20150312: start  // 20150312: start
3168  (*  (*
3169    end    end
# Line 3216  end; Line 3237  end;
3237    
3238  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
3239  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;  
 *)  
3240  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
3241  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
3242       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
3243       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
3244       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
3245  // 20150311: slut  
3246    
3247    
3248  end;  end;
3249    
3250  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3342  begin Line 3350  begin
3350    end;    end;
3351  end;  end;
3352    
3353  {  
  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;  
3354    
3355  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3356  const  const
# Line 3380  var Line 3359  var
3359   tekst, filversion : String;   tekst, filversion : String;
3360  begin  begin
3361    
3362    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
3363    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';
3364    
3365    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3402  begin Line 3381  begin
3381          end          end
3382          else          else
3383          begin          begin
3384            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3385          end;          end;
3386      end      end
3387      else      else
3388      begin      begin
3389        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3390      end;      end;
3391    end;    end;
3392    
# Line 3475  begin Line 3454  begin
3454    
3455    if FileExists(fileName) then    if FileExists(fileName) then
3456    begin    begin
3457      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3458      begin      begin
3459        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3460        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3499  begin Line 3478  begin
3478    
3479    if FileExists(fileName) then    if FileExists(fileName) then
3480    begin    begin
3481      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3482      begin      begin
3483        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3484        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3485      end      end
3486      else      else
3487      begin      begin
3488        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3489      end;      end;
3490    end    end
3491    else    else
# Line 3572  begin Line 3551  begin
3551        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3552        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3553        ListBox1.Visible := true;        ListBox1.Visible := true;
3554        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3555        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3556        InitLillePakke();        InitLillePakke();
3557        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3558        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3606  begin Line 3585  begin
3585        ListBox1.Visible := true;        ListBox1.Visible := true;
3586        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3587        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3588        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3589        InitLillePakke();        InitLillePakke();
3590  end;  end;
3591    
# Line 3632  begin Line 3611  begin
3611        ListBox1.Visible := true;        ListBox1.Visible := true;
3612        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3613        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3614        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3615        InitLillePakke();        InitLillePakke();
3616  end;  end;
3617    
# Line 3658  begin Line 3637  begin
3637        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3638        ListBox1.Visible := true;        ListBox1.Visible := true;
3639        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3640        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3641        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3642        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3643        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3644        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3645        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3646        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
# Line 3694  begin Line 3673  begin
3673        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3674        ListBox1.Visible := true;        ListBox1.Visible := true;
3675        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3676        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3677        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3678    
3679        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3680    
3681        InitLillePakke();        InitLillePakke();
3682        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3731  begin Line 3710  begin
3710        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3711        ListBox1.Visible := true;        ListBox1.Visible := true;
3712        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3713        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3714        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3715        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3716        InitLillePakke();        InitLillePakke();
3717        IndlesScanningLogFil();        IndlesScanningLogFil();
3718        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3778  begin Line 3757  begin
3757        ListBox1.Visible := true;        ListBox1.Visible := true;
3758        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3759    
3760        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3761        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3762        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3763        InitLillePakke();        InitLillePakke();
3764        IndlesScanningLogFil();        IndlesScanningLogFil();
3765        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3818  begin Line 3797  begin
3797  // 20150310: slut  // 20150310: slut
3798  end;  end;
3799    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Integer;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
   
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3800    
   end;  
 end;  
3801    
3802  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3803  begin  begin
# Line 3942  begin; Line 3868  begin;
3868    CheckCode();    CheckCode();
3869  end;  end;
3870    
3871  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3872  var  var
3873    WebSvar : String;    WebSvar : String;
3874    URLStr : String;    URLStr : String;
# Line 3952  var Line 3878  var
3878    status, kommentar : String;    status, kommentar : String;
3879    
3880  begin  begin
3881      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3882    
3883      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');
3884      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
# Line 4015  begin Line 3941  begin
3941        end;        end;
3942      end;      end;
3943    
3944      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3945    
3946      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
3947    
# Line 4056  begin Line 3982  begin
3982    else    else
3983      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3984  }  }
3985    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3986    
3987    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3988    CheckCode();    CheckCode();
# Line 4064  end; Line 3990  end;
3990    
3991  end;  end;
3992    
 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;  
3993    
3994  //  //
3995  // Bladhus ***  // Bladhus ***
# Line 4580  begin Line 4467  begin
4467    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
4468  end;  end;
4469    
4470  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4471  begin  begin
4472      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4473      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
4474  end;  end;
4475    
4476  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4477  const  const
4478    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4479    
# Line 4595  begin Line 4482  begin
4482      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
4483  end;  end;
4484    
4485  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4486  begin  begin
4487      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4488      begin      begin
# Line 4604  begin Line 4491  begin
4491      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
4492  end;  end;
4493    
 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;  
4494    
4495  // ToDo: PrintPakkeshopLabel()  // ToDo: PrintPakkeshopLabel()
4496  procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);
# Line 4624  var Line 4498  var
4498    XForm, XFormOld: TXForm; //Bruges til rotate X-formation    XForm, XFormOld: TXForm; //Bruges til rotate X-formation
4499    Angle: integer;    Angle: integer;
4500    gMode: integer;    gMode: integer;
   BarcodeArea: TRect;  
4501    Dirigering: string;    Dirigering: string;
4502    
4503  begin  begin
# Line 4777  var Line 4650  var
4650        end;        end;
4651    
4652    
4653      if (Scanningtype = '6') then  
4654        if (Scanningtype = '7') then
4655         begin
4656          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4657         end
4658        else if (Scanningtype = '6') then
4659       begin       begin
4660        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4661       end       end
4662      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4663       begin       begin
4664        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4665       end       end
4666      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4667       begin       begin
# Line 4907  var Line 4785  var
4785  //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  //                    stregkoderMedTjekkodeArray[linienr] := stregkode;
4786                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4787                    begin                    begin
4788                      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
4789                    end                    end
4790                    else                    else
4791                    begin                    begin
# Line 5189  begin Line 5067  begin
5067          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
5068          S := buffer;          S := buffer;
5069          SetLength(A,0);          SetLength(A,0);
5070          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
5071          if (length(A) < 2) then          if (length(A) < 2) then
5072          begin          begin
5073            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
5074          end;          end;
5075            if (length(A) > 1) then            if (length(A) > 1) then
5076            begin            begin
# Line 5266  begin Line 5144  begin
5144          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
5145          S := buffer;          S := buffer;
5146          SetLength(A,0);          SetLength(A,0);
5147          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
5148          if (length(A) < 3) then          if (length(A) < 3) then
5149          begin          begin
5150            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
5151          end;          end;
5152          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
5153          begin          begin
# Line 5470  begin Line 5348  begin
5348    end;    end;
5349  end;  end;
5350    
 function TMainForm.AdobeReaderExists: Boolean;  
 var  
   AReg: TRegistry;  
 begin  
   result:= false;  
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
 end;  
5351    
5352    
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   hSession, hfile: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
5353    
 end;  
5354    
5355    
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
 begin  
    with Control do  
    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;  
 end;  
5356    
5357  procedure TMainForm.CheckPrintQue(tjektype : string);  procedure TMainForm.CheckPrintQue(tjektype : string);
5358  type  type

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

  ViewVC Help
Powered by ViewVC 1.1.20