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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2652 - (hide annotations) (download)
Sun Aug 23 10:38:56 2015 UTC (8 years, 9 months ago) by torben
File size: 203673 byte(s)
Rename CheckBox2 til chkAltidPrintLabel
1 torben 2645 unit Main;
2    
3     interface
4    
5     uses
6     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7     Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,
8     IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
9     Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
10     IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,
11     Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet
12     ;
13    
14     type
15     TStrArray = array of string;
16     TMainForm = class(TForm)
17     StregkodeST: TStaticText;
18     RuteNummerST: TStaticText;
19     BoghandlerNavnST: TStaticText;
20     IdHTTP1: TIdHTTP;
21     XMLDocument1: TXMLDocument;
22     ApplicationEvents1: TApplicationEvents;
23     CheckBox1: TCheckBox;
24     KommentarST: TStaticText;
25     MainMenu1: TMainMenu;
26     N1: TMenuItem;
27     Pakkernormal1: TMenuItem;
28     ReturpakkerfraDAO1: TMenuItem;
29     Returpakkerfraboghandler1: TMenuItem;
30     Hjlp1: TMenuItem;
31     Om1: TMenuItem;
32     Testforbindelsen1: TMenuItem;
33     Testprinter1: TMenuItem;
34     Afslut1: TMenuItem;
35     Sprgefterboghandlernummer1: TMenuItem;
36     Lukprogrammet1: TMenuItem;
37     N2: TMenuItem;
38     N3: TMenuItem;
39     RadioButton1: TRadioButton;
40     RadioButton2: TRadioButton;
41     N4: TMenuItem;
42     Storepakker1: TMenuItem;
43     Smpakker1: TMenuItem;
44     Panel1: TPanel;
45     Testlyd2: TMenuItem;
46     Button1: TButton;
47     Testlyd1: TMenuItem;
48     ListBox1: TListBox;
49     Budlevering1: TMenuItem;
50     DownloadButton01: TButton;
51     IdFTP1: TIdFTP;
52     Image1: TImage;
53     ListBox2: TListBox;
54     OpdaterListenButton01: TButton;
55     UploadButton01: TButton;
56     DownloadButton03: TButton;
57     Pakkeshoplevering1: TMenuItem;
58     PakkeshopText1: TStaticText;
59     PakkeshopNulstil: TButton;
60     Returpakkerfrapakkeshop1: TMenuItem;
61     Altidprintepakkelabel1: TMenuItem;
62 torben 2652 chkAltidPrintLabel: TCheckBox;
63 torben 2645 EKLoverforsel: TButton;
64     N5: TMenuItem;
65     Uploadlogfil1: TMenuItem;
66     Manual1: TMenuItem;
67     PrinterstatusStaticText1: TStaticText;
68     Timer1: TTimer;
69     CheckBox3: TCheckBox;
70     Scanogstjekkoden1: TMenuItem;
71     Automatisktjekkodestyring1: TMenuItem;
72     Automatiskvalg1: TMenuItem;
73     PanelValgA: TPanel;
74     PanelValg1: TPanel;
75     PanelValg2: TPanel;
76     PanelValg3: TPanel;
77     PanelValg4: TPanel;
78     PanelValg5: TPanel;
79     PanelValg6: TPanel;
80     Manualgenerel1: TMenuItem;
81     StaticTextManglendePakker: TStaticText;
82     PanelManglendePakker1: TPanel;
83     PanelManglendePakker2: TPanel;
84     PanelManglendePakker3: TPanel;
85     PanelManglendePakker4: TPanel;
86     PanelManglendePakker5: TPanel;
87     PanelManglendePakker6: TPanel;
88 torben 2650 PanelValg7: TPanel;
89 torben 2645
90     function Explode(var a: TStrArray; Border, S: string): Integer;
91     function BarCodeValid (ACode: string): boolean;
92     function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;
93     function TColorToHex(Color : TColor) : string;
94     function HexToTColor(sColor : string) : TColor;
95     function getProddato() : TDate;
96     function getProddag() : String;
97     function retRutenummer(rutenummer : String) : String;
98     function GetCurrentPrinterHandle() : THandle;
99     function SavePChar(p: PChar): PChar;
100     function AdobeReaderExists(): Boolean;
101     function FileTime2DateTime(FileTime: TFileTime): TDateTime;
102     function split(input: string; schar: Char; s: Integer): string;
103     function CheckUrl(url:string):boolean;
104    
105     procedure PlaySound(filename : PWideChar);
106     procedure StartScreen();
107     procedure InitScreen();
108     procedure InitBladhus();
109     procedure UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, Boghnr : String);
110     procedure InitLillePakke();
111     procedure InitStorPakke();
112     procedure InitForm(Farve,Titel,Url: String);
113     procedure FormKeyPress(Sender: TObject; var Key: Char);
114     procedure FormCreate(Sender: TObject);
115     procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
116     procedure RadioButton1Click(Sender: TObject);
117     procedure RadioButton2Click(Sender: TObject);
118     procedure CheckBox1Click(Sender: TObject);
119     procedure Pakkernormal1Click(Sender: TObject);
120     procedure Testforbindelsen1Click(Sender: TObject);
121     procedure Testprinter1Click(Sender: TObject);
122     procedure Om1Click(Sender: TObject);
123     procedure Lukprogrammet1Click(Sender: TObject);
124     procedure Sprgefterboghandlernummer1Click(Sender: TObject);
125     procedure ReturpakkerfraDAO1Click(Sender: TObject);
126     procedure Returpakkerfraboghandler1Click(Sender: TObject);
127     procedure Storepakker1Click(Sender: TObject);
128     procedure Smpakker1Click(Sender: TObject);
129     procedure Testlyd1Click(Sender: TObject);
130     procedure Testlyd2Click(Sender: TObject);
131     procedure Button1Click(Sender: TObject);
132     procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
133     procedure Budlevering1Click(Sender: TObject);
134     procedure DownloadButton01Click(Sender: TObject);
135     procedure OpdaterListenButton01Click(Sender: TObject);
136     procedure DownloadBladhusRuteskiftfil();
137     procedure DownloadBladhusKontrolfil();
138     procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
139     procedure UploadLogfilTilDAO();
140     procedure UploadInifilTilDAO();
141     procedure SletStregkodelinieFraListboks2(StregKode : String);
142     procedure FormDestroy(Sender: TObject);
143     procedure UploadButton01Click(Sender: TObject);
144     procedure DownloadButton03Click(Sender: TObject);
145     procedure Pakkeshoplevering1Click(Sender: TObject);
146     procedure PakkeshopNulstilClick(Sender: TObject);
147     procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
148     procedure InitNatxpresslevering();
149     procedure InitReturFraDao();
150     procedure InitReturFraKunde();
151     procedure InitDirektelevering();
152     procedure InitPakkeshoplevering();
153     procedure InitReturFraPakkeshop();
154 torben 2650 procedure InitIndleveringskode();
155    
156 torben 2645 procedure Altidprintepakkelabel1Click(Sender: TObject);
157 torben 2652 procedure chkAltidPrintLabelClick(Sender: TObject);
158 torben 2645 procedure EKLoverforselClick(Sender: TObject);
159     procedure Uploadlogfil1Click(Sender: TObject);
160     procedure Manual1Click(Sender: TObject);
161     procedure CheckPrintQue(tjektype : string);
162     procedure Timer1Timer(Sender: TObject);
163     procedure Scanogstjekkoden1Click(Sender: TObject);
164     procedure CheckBox3Click(Sender: TObject);
165     procedure Automatisktjekkodestyring1Click(Sender: TObject);
166     procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
167     procedure Automatiskvalg1Click(Sender: TObject);
168     procedure PanelValgAClick(Sender: TObject);
169     procedure PanelValg1Click(Sender: TObject);
170     procedure PanelValg2Click(Sender: TObject);
171     procedure PanelValg3Click(Sender: TObject);
172     procedure PanelValg4Click(Sender: TObject);
173     procedure PanelValg5Click(Sender: TObject);
174     procedure PanelValg6Click(Sender: TObject);
175     procedure NulstilAutomatiskValg();
176     procedure SletLogfiler(Path: string; FileList: TStrings);
177     procedure Manualgenerel1Click(Sender: TObject);
178     procedure TjekkerUrls();
179     // 20150310: start
180     procedure RoundCornerOf(Control: TWinControl);
181 torben 2650
182     procedure PanelValg7Click(Sender: TObject);
183 torben 2645 // 20150310: slut
184    
185     private
186     SpecialVersionSted, SpecialVersionScanningtype: String; // Bruges når programmet skal bruges udenfor DAO scanningssteder
187     Stregkode : String;
188     SkrivLog : String;
189     Sted : String;
190     StedNavn : String;
191     Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;
192     // 29150330: start
193     UrlEKLoverforselPakkeshop : String;
194     // 20150330: slut
195     UrlFindPakketype, UrlSendPrograminfo: String;
196     Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
197     ScanTjekkode : String;
198     ScanTjekkodeAutomatik : string;
199     Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;
200     Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;
201     LabelType : integer;
202     AlarmLyd : String;
203     ScannetOkLyd : String;
204     ScannetOkStorLyd : String;
205     // 20150317: start
206     ScannetOkTilTjekkodeLyd : String;
207     // 20150317: slut
208     PrinterNavn : String;
209     TjekPrinter : String;
210     XPosRute : integer;
211     YPosRute : integer;
212     FontSizeRute : integer;
213     FontSizeRuteLille : integer;
214     XPosKommentar : integer;
215     YPosKommentar : integer;
216     FontSizeKommentar : integer;
217     XPosBoghandler : integer;
218     YPosBoghandler : integer;
219     FontSizeBoghandler : integer;
220     XPosKoreliste : integer;
221     YPosKoreliste : integer;
222     FontSizeKoreliste : integer;
223     FontSizeKorelisteLille : integer;
224     XPosSorteringsfelt1 : integer;
225     YPosSorteringsfelt1 : integer;
226     FontSizeSorteringsfelt1 : integer;
227     XPosSorteringsfelt2 : integer;
228     YPosSorteringsfelt2 : integer;
229     FontSizeSorteringsfelt2 : integer;
230     XPosSmskode : integer;
231     YPosSmskode : integer;
232     FontSizeSmskode : integer;
233     Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
234     BladhusSted : Integer;
235     BladhusStedKode : Array of string;
236     BladhusStedNavn : Array of string;
237     BladhusRuteskiftfil_server : String;
238     BladhusRuteskiftfil_lokal : String;
239     BladhusKontrolfil_server : String;
240     BladhusKontrolfil_lokal : String;
241     logTekst : string;
242     PakkeshopStregkode, PakkeshopTjekkode : String;
243     BoghandlerStregkode, BoghandlerTjekkode : String;
244     TjekUrls : String;
245    
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 = '');
249     procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
250     procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
251     procedure CheckCode();
252     procedure IndlesManglendeScanninger();
253     procedure IndlesRuteskiftFil(var filnavn : string);
254     procedure IndlesKontrolFil(var filnavn : string);
255     procedure IndlesScanningLogFil();
256     procedure SkrivScanningLogFil(var tekst : string);
257     function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
258    
259     public
260     { Public declarations }
261     end;
262    
263     var
264     MainForm: TMainForm;
265    
266     // Globale variabler
267     ruteHverdagArray : Array of String;
268     ruteLordagArray : Array of String;
269     ruteArray : Array of String;
270     korelisteArray : Array of String;
271     stregkoderMedTjekkodeArray : Array of String;
272    
273     implementation
274     {$R *.dfm}
275    
276     function TMainForm.TColorToHex(Color : TColor) : string;
277     begin
278     Result :=
279     IntToHex(GetRValue(Color), 2) +
280     IntToHex(GetGValue(Color), 2) +
281     IntToHex(GetBValue(Color), 2) ;
282     end;
283    
284     function TMainForm.HexToTColor(sColor : string) : TColor;
285     begin
286     Result :=
287     RGB(
288     StrToInt('$'+Copy(sColor, 1, 2)),
289     StrToInt('$'+Copy(sColor, 3, 2)),
290     StrToInt('$'+Copy(sColor, 5, 2))
291     ) ;
292     end;
293    
294     procedure TMainForm.InitForm(Farve,Titel,Url : String);
295     begin
296    
297     // 20150309: startr
298     StaticTextManglendePakker.Caption := '';
299     // 20150309: slut
300    
301     PanelValg1.Color := clBtnFace;
302     if PanelValg1.Enabled = true then
303     begin
304     PanelValg1.Font.Color := clWindowText;
305     end;
306    
307     PanelValg2.Color := clBtnFace;
308     if PanelValg2.Enabled = true then
309     begin
310     PanelValg2.Font.Color := clWindowText;
311     end;
312    
313     PanelValg3.Color := clBtnFace;
314     if PanelValg3.Enabled = true then
315     begin
316     PanelValg3.Font.Color := clWindowText;
317     end;
318    
319     PanelValg4.Color := clBtnFace;
320     if PanelValg4.Enabled = true then
321     begin
322     PanelValg4.Font.Color := clWindowText;
323     end;
324    
325     PanelValg5.Color := clBtnFace;
326     if PanelValg5.Enabled = true then
327     begin
328     PanelValg5.Font.Color := clWindowText;
329     end;
330    
331     PanelValg6.Color := clBtnFace;
332     if PanelValg6.Enabled = true then
333     begin
334     PanelValg6.Font.Color := clWindowText;
335     end;
336    
337 torben 2650 PanelValg7.Color := clBtnFace;
338     if PanelValg7.Enabled = true then
339     begin
340     PanelValg7.Font.Color := clWindowText;
341     end;
342    
343 torben 2645 OpdaterListenButton01.Enabled := false;
344    
345     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
346     begin
347     if (StedNavn = '') then
348     begin
349     Titel := BladhusStedNavn[BladhusSted]+': '+Titel;
350     end
351     else
352     begin
353     Titel := StedNavn+': '+Titel;
354     end;
355     //Farve := 'D8D8D8'; // her kan vi evt. overrule ini fil
356     end
357     else
358     begin
359     //ShowMessage(Sted);
360     if (StedNavn = '') then
361     begin
362     if (Sted = 'B') then
363     begin StedNavn := 'Brabrand: '; end
364     else if (Sted = 'E') then
365     begin StedNavn := 'Erritsø: '; end
366     else if (Sted = 'AAL') then
367     begin StedNavn := 'Aalborg: '; end
368     else if (Sted = 'BR') then
369     begin StedNavn := 'Brøndby: '; end
370     else if (Sted = 'BK') then
371     begin StedNavn := 'Bladkompagniet: '; end
372     else if (Sted = 'DBK') then
373     begin StedNavn := 'DBK Køge: '; end
374     else if (Sted = '1') then
375     begin StedNavn := 'Ålborg: '; end
376     else if (Sted = '2') then
377     begin StedNavn := 'Herning: '; end
378     else if (Sted = '3') then
379     begin StedNavn := 'Hinnerup: '; end
380     else if (Sted = '4') then
381     begin StedNavn := 'Vejle: '; end
382     else
383     begin StedNavn := Sted+': '; end
384     end
385     else
386     begin
387     if (RightStr(StedNavn,2) <> ': ') then
388     begin
389     StedNavn := StedNavn + ': ';
390     end;
391     end;
392     Titel := Stednavn + Titel;
393     end;
394    
395     StartScreen();
396     MainForm.Caption := Titel;
397     MainForm.Color := HexToTColor(Farve);
398     MainForm.Farve := Farve;
399     MainForm.Titel := Titel;
400     MainForm.Url := Url;
401    
402     if PrinterstatusStaticText1.Color <> clWhite then // Hvis der IKKE er en alarm skal vi tilpasse baggrundsfarven her
403     begin
404     PrinterstatusStaticText1.Color := MainForm.Color;
405     end;
406    
407     if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
408     PakkeshopText1.Visible := true
409     else
410     PakkeshopText1.Visible := false;
411    
412     CheckBox3.Checked := false;
413     CheckBox3.Enabled := false;
414     Scanogstjekkoden1.Enabled := false;
415    
416     if (Scanningtype = '1') or (Scanningtype = '5') then
417     begin
418     if (ScanTjekkode = '1') then
419     begin
420     CheckBox3.Checked := true;
421     CheckBox3.Enabled := true;
422     Scanogstjekkoden1.Enabled := true;
423     end
424     else
425     begin
426     CheckBox3.Checked := false;
427     CheckBox3.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
428     Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
429     end;
430     end;
431    
432     if Automatisktjekkodestyring1.Checked then
433     begin
434     CheckBox3.Enabled := false;
435     Scanogstjekkoden1.Enabled := false;
436     end;
437    
438     logTekst := 'Overskrift: '+Titel;
439     SkrivScanningLogFil(logTekst);
440    
441     if SpecialVersionSted = '' then
442     begin
443     logTekst := 'Sted: '+Sted+', Stednavn: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase]);
444     SkrivScanningLogFil(logTekst);
445     end;
446    
447     if SpecialVersionSted <> '' then
448     begin
449     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
450     begin
451     if Stednavn = '' then
452     begin
453     logTekst := 'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
454     end
455     else
456     begin
457     logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
458     end;
459     SkrivScanningLogFil(logTekst);
460     end
461     else
462     begin
463     logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
464     SkrivScanningLogFil(logTekst);
465     end;
466     end;
467    
468     end;
469    
470     procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
471     begin
472    
473     if Altidprintepakkelabel1.Checked then
474     begin
475 torben 2652 chkAltidPrintLabel.Checked := true;
476 torben 2645 end
477     else
478     begin
479 torben 2652 chkAltidPrintLabel.Checked := false;
480 torben 2645 end;
481    
482     end;
483    
484     procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
485     begin
486     StregkodeST.Caption := Stregkode;
487     end;
488    
489     procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);
490     begin
491     if Automatisktjekkodestyring1.Checked then
492     begin
493     CheckBox3.Enabled := false;
494     Scanogstjekkoden1.Enabled := false;
495     end
496     else
497     begin
498     CheckBox3.Enabled := true;
499     Scanogstjekkoden1.Enabled := true;
500     end;
501    
502     end;
503    
504     procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
505     begin
506     // 20150317: start
507     (*
508     if Automatiskvalg1.Checked then
509     begin
510     AutomatiskValg1.Checked := true;
511     PanelValgA.Color := clGreen;
512     PanelValgA.Font.Color := clWhite;
513     end
514     else
515     begin
516     AutomatiskValg1.Checked := false;
517     PanelValgA.Color := clBtnFace;
518     PanelValgA.Font.Color := clWindowText;
519     end;
520     *)
521     // Skal ikke toggle men bare sætte funktionen on
522     // Fravælges ved at vælge en scanningstype
523     AutomatiskValg1.Checked := true;
524     PanelValgA.Color := clGreen;
525     PanelValgA.Font.Color := clWhite;
526     // 20150317: slut
527     end;
528    
529     procedure TMainForm.FormCreate(Sender: TObject);
530     const
531     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
532     var
533     printerInd : integer;
534     i : Integer;
535     // 20150310: start
536     gemScanningtype : String;
537     // 20150310: slut
538    
539     begin
540     // Initierer nogle variabler
541     BladhusSted := 00;
542     Application.ShowHint := True;
543     PrinterstatusStaticText1.Caption := '';
544     PrinterstatusStaticText1.Color := MainForm.Color;
545     // 20150306: start
546     PakkeshopNulstil.BringToFront;
547     // 20150306: slut
548     // 20150310: start
549     RoundCornerOf(PanelManglendePakker1);
550     RoundCornerOf(PanelManglendePakker2);
551     RoundCornerOf(PanelManglendePakker3);
552     RoundCornerOf(PanelManglendePakker4);
553     RoundCornerOf(PanelManglendePakker5);
554     RoundCornerOf(PanelManglendePakker6);
555     // 20150310: slut
556    
557     // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
558     if DirectoryExists('Docs') then
559     begin
560     Manualgenerel1.Enabled := true;
561     Manual1.Enabled := true;
562     end;
563    
564     // Sætter lige en default panel størrelse
565     MainForm.ClientWidth := 1000;
566 torben 2650 MainForm.ClientHeight := 750;
567 torben 2645
568     // Læser parametre fra ini filen
569     with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
570     try
571     SkrivLog := ReadString('Settings','SkrivLog','0');
572     Sted := ReadString('Settings','Sted','');
573     StedNavn := ReadString('Settings','Stednavn','');
574     UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
575     UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
576     UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
577     UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
578     UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
579     UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
580     UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
581     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
582     // 20150330: start
583     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
584     // 20150330: slut
585     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
586     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
587     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
588     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
589     LabelType := ReadInteger('Settings','LabelType',1);
590     FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
591     TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
592     FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
593     TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');
594     FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');
595     TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');
596     FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');
597     TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
598     FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
599     TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
600     FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
601     TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
602     SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
603     ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
604     ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
605     Scanningtype := ReadString('Settings','Scanningtype','A');
606     Pakketype := ReadString('Settings','Pakketype','0');
607     TestFunktionen := ReadString('Settings','TestFunktion','0');
608     AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
609     ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
610     ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
611     // 20150317: start
612     ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
613     // 20150317: slut
614     PrinterNavn := ReadString('Settings','PrinterNavn','');
615     TjekPrinter := ReadString('Settings','TjekPrinter','1');
616     TjekUrls := ReadString('Settings','TjekUrls','2');
617    
618     if (SkrivLog = '1') then
619     begin
620     logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
621     try
622     SkrivScanningLogFil(logTekst);
623     Uploadlogfil1.Enabled := true;
624     UploadButton01.Enabled := true;
625     logTekst := 'Programmet er installeret som: '+ParamStr(0);
626     SkrivScanningLogFil(logTekst);
627     // Oprydning i gamle logfiler
628     SletLogfiler('Logs\', ListBox1.Items);
629     except
630     SkrivLog := '0';
631     end;
632     end;
633    
634     if Scanningtype = 'A' then
635     begin
636     Automatiskvalg1.Checked := true;
637     Scanningtype := '1';
638     PanelValgA.Color := clGreen;
639     PanelValgA.Font.Color := clWhite;
640     end;
641    
642     if LabelType = 0 then
643     begin
644     XPosRute := ReadInteger('RuteBred','XPos',1);
645     YPosRute := ReadInteger('RuteBred','YPos',1);
646     FontSizeRute := ReadInteger('RuteBred','FontSize',72);
647     FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);
648     XPosKommentar := ReadInteger('KommentarBred','XPos',1);
649     YPosKommentar := ReadInteger('KommentarBred','YPos',250);
650     FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);
651     XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);
652     YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);
653     FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);
654     XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);
655     YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);
656     FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);
657     FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);
658     XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);
659     YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);
660     FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);
661     XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);
662     YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);
663     FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);
664     XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);
665     YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);
666     FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);
667     end
668     else
669     begin
670     XPosRute := ReadInteger('RuteSmal','XPos',1);
671     YPosRute := ReadInteger('RuteSmal','YPos',1);
672     FontSizeRute := ReadInteger('RuteSmal','FontSize',72);
673     FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);
674     XPosKommentar := ReadInteger('KommentarSmal','XPos',1);
675     YPosKommentar := ReadInteger('KommentarSmal','YPos',250);
676     FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);
677     XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);
678     YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);
679     FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);
680     XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);
681     YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);
682     FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);
683     FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);
684     XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);
685     YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);
686     FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);
687     XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);
688     YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);
689     FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);
690     XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);
691     YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);
692     FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);
693     if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3
694     begin
695     XPosRute := XPosRute * 3;
696     YPosRute := YPosRute * 3;
697     XPosKommentar := XPosKommentar * 3;
698     YPosKommentar := YPosKommentar * 3;
699     XPosBoghandler := XPosBoghandler * 3;
700     YPosBoghandler := YPosBoghandler * 3;
701     XPosKoreliste := XPosKoreliste * 3;
702     YPosKoreliste := YPosKoreliste * 3;
703     XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;
704     YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;
705     XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;
706     YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;
707     XPosSmskode := XPosSmskode * 3;
708     YPosSmskode := YPosSmskode * 3;
709     end;
710     end;
711    
712     if SporgEfterBoghandler = '1' then
713     begin
714     CheckBox1.Checked := true;
715     Sprgefterboghandlernummer1.Checked := true;
716     end
717     else
718     begin
719     CheckBox1.Checked := false;
720     Sprgefterboghandlernummer1.Checked := false;
721     end;
722    
723     if ScanTjekkode = '1' then
724     begin
725     CheckBox3.Checked := true;
726     Scanogstjekkoden1.Checked := true;
727     end
728     else
729     begin
730     CheckBox3.Checked := false;
731     Scanogstjekkoden1.Checked := false;
732     end;
733    
734     if ScanTjekkodeAutomatik = '1' then
735     begin
736     Automatisktjekkodestyring1.Checked := true;
737     CheckBox3.Enabled := false;
738     Scanogstjekkoden1.Enabled := false;
739     end;
740    
741     //
742     // specialversioner
743     //
744     // Hvis programmet skal bruges af andre distributører/scanningssteder end DAO
745     // skal vi ikke bruge hele ini-filen.
746     // Vi laver derfor en speciel opsætning her.
747    
748     SpecialVersionSted := ''; // Tom indikerer normal version hvor scanningtype er angivet i ini filen
749     SpecialVersionScanningtype := 'A'; // 'Automatisk valg'
750     // bruges sammen med nedenstående SpecialVersionSted for specialversioner af programmet
751    
752     // Ved compilering af en specialversion skal efterfølgende
753     // 2 felter sættes efter behov (SpecialVersionSted og SpecialVersionScanningtype).
754     // Det er p.t. ikke nødvendigt at ændre andre steder...
755    
756     // *************************** //
757     //SpecialVersionSted := 'BK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
758     //SpecialVersionSted := 'DBK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
759     //SpecialVersionSted := 'NS'; // NS - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
760     //SpecialVersionSted := 'FD'; // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
761     // *************************** //
762    
763     //SpecialVersionSted := '01'; // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
764     //SpecialVersionSted := '02'; // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
765     //SpecialVersionSted := '03'; // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
766     //SpecialVersionSted := '04'; // DBK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted DBK)
767    
768     //SpecialVersionScanningtype := '1'; // NAT X-PRESS (BRUGES IKKE)
769     //SpecialVersionScanningtype := '2'; // Retur fra DAO (BRUGES IKKE)
770     //SpecialVersionScanningtype := '3'; // Retur fra Kunde (BRUGES IKKE)
771     //SpecialVersionScanningtype := '4'; // DIREKTE
772     //SpecialVersionScanningtype := '5'; // PAKKESHOP (BRUGES IKKE)
773     //SpecialVersionScanningtype := '6'; // Retur fra pakkeshop (BRUGES IKKE)
774    
775     // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
776     // ændrer vi Sted og Scanningtype her:
777    
778     // 20150313: start
779     if SpecialVersionSted = 'NS' then
780     begin
781     SpecialVersionSted := '01';
782     SpecialVersionScanningtype := '4';
783     end;
784     if SpecialVersionSted = 'FD' then
785     begin
786     SpecialVersionSted := '03';
787     SpecialVersionScanningtype := '4';
788     end;
789     // 20150313: slut
790    
791     if SpecialVersionSted = 'BK' then
792     begin
793     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
794     Sted := SpecialVersionSted;
795     // her skal vi også disable de knapper BK ikke kan bruge
796     PanelValg2.Enabled := false;
797     PanelValg2.Font.Color := clInactiveCaption;
798     PanelValg3.Enabled := false;
799     PanelValg3.Font.Color := clInactiveCaption;
800     PanelValg6.Enabled := false;
801     PanelValg6.Font.Color := clInactiveCaption;
802     // her skal vi også disable de menupunkter BK ikke kan bruge
803     ReturpakkerfraDAO1.Enabled := false;
804     Returpakkerfraboghandler1.Enabled := false;
805     Returpakkerfrapakkeshop1.Enabled := false;
806     if SpecialVersionScanningtype = 'A' then
807     begin
808     Scanningtype := '1';
809     end
810     else
811     begin
812     Scanningtype := SpecialVersionScanningtype;
813     end;
814     end;
815    
816     if SpecialVersionSted = 'DBK' then
817     begin
818     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
819     Sted := SpecialVersionSted;
820     // her skal vi også disable de knapper DBK ikke kan bruge
821     PanelValg2.Enabled := false;
822     PanelValg2.Font.Color := clInactiveCaption;
823     PanelValg3.Enabled := false;
824     PanelValg3.Font.Color := clInactiveCaption;
825     PanelValg5.Enabled := false;
826     PanelValg5.Font.Color := clInactiveCaption;
827     PanelValg6.Enabled := false;
828     PanelValg6.Font.Color := clInactiveCaption;
829     // her skal vi også disable de menupunkter DBK ikke kan bruge
830     ReturpakkerfraDAO1.Enabled := false;
831     Returpakkerfraboghandler1.Enabled := false;
832     // 20150317: start
833     Pakkeshoplevering1.Enabled := false;
834     Returpakkerfrapakkeshop1.Enabled := false;
835     // 20150317: slut
836     if SpecialVersionScanningtype = 'A' then
837     begin
838     Scanningtype := '1';
839     end
840     else
841     begin
842     Scanningtype := SpecialVersionScanningtype;
843     end;
844     end;
845    
846     if (SpecialVersionSted = '01')
847     or (SpecialVersionSted = '02')
848     or (SpecialVersionSted = '03')
849     or (SpecialVersionSted = '04') then
850     begin
851     BladhusSted := StrToInt(SpecialVersionSted);
852     // her skal vi også disable de knapper 01, 02, 03 og 04 (NS, BK, FD og DBK) ikke kan bruge
853     PanelValg1.Enabled := false;
854     PanelValg1.Font.Color := clInactiveCaption;
855     PanelValg2.Enabled := false;
856     PanelValg2.Font.Color := clInactiveCaption;
857     PanelValg3.Enabled := false;
858     PanelValg3.Font.Color := clInactiveCaption;
859     PanelValg4.Enabled := false;
860     PanelValg4.Font.Color := clInactiveCaption;
861     PanelValg5.Enabled := false;
862     PanelValg5.Font.Color := clInactiveCaption;
863     PanelValg6.Enabled := false;
864     PanelValg6.Font.Color := clInactiveCaption;
865     // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
866     // 20150317: start
867     Automatiskvalg1.Enabled := false;
868     // 20150317: slut
869     Pakkernormal1.Enabled := false;
870     ReturpakkerfraDAO1.Enabled := false;
871     Returpakkerfraboghandler1.Enabled := false;
872     Budlevering1.Enabled := false;
873     Pakkeshoplevering1.Enabled := false;
874     Returpakkerfrapakkeshop1.Enabled := false;
875     if SpecialVersionScanningtype = 'A' then
876     begin
877     Scanningtype := '4';
878     Budlevering1.Enabled := true;
879     PanelValg4.Font.Color := clWindowText;
880     PanelValg4.Enabled := true;
881     end
882     else
883     begin
884     Scanningtype := SpecialVersionScanningtype;
885     PanelValgA.Enabled := false;
886     PanelValgA.Font.Color := clInactiveCaption;
887     AutomatiskValg1.Checked := false;
888     PanelValgA.Color := clBtnFace;
889     if Scanningtype = '1' then
890     begin
891     Pakkernormal1.Enabled := true;
892     PanelValg1.Enabled := true;
893     PanelValg1.Font.Color := clWindowText;
894     end;
895     if Scanningtype = '2' then
896     begin
897     ReturpakkerfraDAO1.Enabled := true;
898     PanelValg2.Enabled := true;
899     PanelValg2.Font.Color := clWindowText;
900     end;
901     if Scanningtype = '3' then
902     begin
903     Returpakkerfraboghandler1.Enabled := true;
904     PanelValg3.Enabled := true;
905     PanelValg3.Font.Color := clWindowText;
906     end;
907     if Scanningtype = '4' then
908     begin
909     Budlevering1.Enabled := true;
910     PanelValg4.Enabled := true;
911     PanelValg4.Font.Color := clWindowText;
912     end;
913     if Scanningtype = '5' then
914     begin
915     Pakkeshoplevering1.Enabled := true;
916     PanelValg5.Enabled := true;
917     PanelValg5.Font.Color := clWindowText;
918     end;
919     if Scanningtype = '6' then
920     begin
921     Returpakkerfrapakkeshop1.Enabled := true;
922     PanelValg6.Enabled := true;
923     PanelValg6.Font.Color := clWindowText;
924     end;
925     end;
926     Sted := SysUtils.Format('%.*d', [2, BladhusSted]);
927     //FarveBudlevering := '2E9AFE'; // her kan vi evt. overrule ini fil
928     end;
929    
930     SetLength(BladhusStedNavn, 5);
931     SetLength(BladhusStedKode, 5);
932     BladhusStedNavn[00] := 'bruges ikke';
933     BladhusStedKode[00] := '';
934     BladhusStedNavn[01] := 'Nordjyske';
935     BladhusStedKode[01] := 'NS';
936     BladhusStedNavn[02] := 'Bladkompagniet';
937     BladhusStedKode[02] := 'BK';
938     BladhusStedNavn[03] := 'Fyens Distribution';
939     BladhusStedKode[03] := 'FD';
940     BladhusStedNavn[04] := 'DBK Køge';
941     BladhusStedKode[04] := 'DBK';
942    
943     if (Trim(Sted) = '')
944     or (Length(Sted) > 3) then
945     begin
946     ShowMessage('Scanningsted "' + Sted + '" er ukendt - programmet afbrydes...');
947     Application.Terminate;
948     end;
949    
950     if TjekUrls = '1' then // Tjekker urls
951     begin
952     TjekkerUrls();
953     if TjekUrls = '-' then // så var der fejl i url - så vi stopper her
954     begin
955     PlaySound(PWideChar(AlarmLyd));
956     MainForm.Color := clRed;
957     RutenummerST.Caption := '';
958     BoghandlerNavnST.Caption := 'Fejl i urls';
959     KommentarST.Caption := 'Se log vinduet';
960     PakkeshopNulstil.Visible := true;
961     exit;
962     end;
963     end
964     else
965     begin // Tjekker ikke urls
966     logTekst := 'Tjekker IKKE urls i denne afvikling.';
967     SkrivScanningLogFil(logTekst);
968     end;
969    
970     if Scanningtype = '6' then
971     begin
972     InitReturFraPakkeshop();
973     end
974     else if Scanningtype = '5' then
975     begin
976     InitPakkeshoplevering();
977     end
978     else if Scanningtype = '4' then
979     begin
980     InitDirektelevering();
981     end
982     else if Scanningtype = '3' then
983     begin
984     InitReturFraKunde();
985     end
986     else if Scanningtype = '2' then
987     begin
988     InitReturFraDao();
989     end
990     else if (Scanningtype = '1') then
991     begin
992     InitNatxpressLevering();
993     end
994     else
995     begin
996     ShowMessage('Scanningtype er af ukendt type - programmet afbrydes...');
997     Application.Terminate;
998     end;
999    
1000     if Pakketype = '1' then
1001     begin
1002     Storepakker1.Checked := true;
1003     RadioButton1.Checked := true;
1004     end
1005     else
1006     begin
1007     Smpakker1.Checked := true;
1008     RadioButton2.Checked := true;
1009     end;
1010    
1011     if TestFunktionen = '1' then
1012     begin
1013     Testforbindelsen1.Visible := true;
1014     Testprinter1.Visible := true;
1015     Testlyd1.Visible := true;
1016     Testlyd2.Visible := true;
1017     end
1018     else if TestFunktionen = '2' then
1019     begin
1020     Testforbindelsen1.Enabled := false;
1021     Testprinter1.Enabled := false;
1022     Testlyd1.Enabled := false;
1023     Testlyd2.Enabled := false;
1024     end
1025     else
1026     begin
1027     Testforbindelsen1.Visible := false;
1028     Testprinter1.Visible := false;
1029     Testlyd1.Visible := false;
1030     Testlyd2.Visible := false;
1031     end;
1032    
1033     if not FileExists(AlarmLyd) then
1034     begin
1035     AlarmLyd := '';
1036     end;
1037    
1038     if not FileExists(ScannetOkLyd) then
1039     begin
1040     ScannetOkLyd := '';
1041     end;
1042    
1043     if not FileExists(ScannetOkStorLyd) then
1044     begin
1045     ScannetOkStorLyd := '';
1046     end;
1047    
1048     // 20150317: start
1049     if not FileExists(ScannetOkTilTjekkodeLyd) then
1050     begin
1051     ScannetOkTilTjekkodeLyd := '';
1052     end;
1053     // 20150317: slut
1054    
1055     if (PrinterNavn <> '') then
1056     begin
1057     printerInd := Printer.Printers.IndexOf(printerNavn);
1058     if printerInd >= 0 then
1059     Printer.PrinterIndex := printerInd;
1060     end;
1061    
1062     CheckPrintQue('Opstart');
1063    
1064     finally
1065     Free;
1066     end;
1067    
1068     // UBD skal p.t. ikke have adgang til flg. funktioner
1069     if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
1070     begin
1071     ReturpakkerfraDAO1.Visible := false;
1072     Returpakkerfraboghandler1.Visible := false;
1073     Budlevering1.Visible := false;
1074     Storepakker1.Visible := false;
1075     Smpakker1.Visible := false;
1076     Testprinter1.Visible := false;
1077     Pakkeshoplevering1.Visible := false;
1078     Returpakkerfrapakkeshop1.Visible := false;
1079     end;
1080    
1081     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
1082     begin
1083     InitBladhus();
1084     end;
1085    
1086     // 20150310: start
1087     // Opbygger PanelManglendePakker information
1088     gemScanningtype := Scanningtype;
1089    
1090     if PanelValg6.Enabled then
1091     begin
1092     Scanningtype := '6';
1093     IndlesManglendeScanninger();
1094     end;
1095    
1096     if PanelValg5.Enabled then
1097     begin
1098     Scanningtype := '5';
1099     IndlesManglendeScanninger();
1100     end;
1101    
1102     if PanelValg4.Enabled then
1103     begin
1104     Scanningtype := '4';
1105     IndlesManglendeScanninger();
1106     end;
1107    
1108     if PanelValg3.Enabled then
1109     begin
1110     Scanningtype := '3';
1111     IndlesManglendeScanninger();
1112     end;
1113    
1114     if PanelValg2.Enabled then
1115     begin
1116     Scanningtype := '2';
1117     IndlesManglendeScanninger();
1118     end;
1119    
1120     if PanelValg1.Enabled then
1121     begin
1122     Scanningtype := '1';
1123     IndlesManglendeScanninger();
1124     end;
1125    
1126     Scanningtype := gemScanningtype;
1127     // 20150310: slut
1128    
1129     SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1130     SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));
1131    
1132     end;
1133    
1134     procedure TMainForm.FormDestroy(Sender: TObject);
1135     begin
1136     logTekst := 'Program slut';
1137     SkrivScanningLogFil(logTekst);
1138     SendInfoTilServer(Sted, Scanningtype, 'End', '');
1139     end;
1140    
1141     procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
1142     var
1143     RuteNummer : String;
1144     Kommentar : String;
1145     BoghandlerNavn : String;
1146     Koreliste : String;
1147     PrintNyLabel : Boolean;
1148     List1msg : String;
1149     pakkeErScannet : Integer;
1150     pakkeForkertSted : Integer;
1151     tjekkodeMangler : Integer;
1152     SmsKode : String;
1153     DBKbane : String;
1154     Leveringssted : String;
1155     i : Integer;
1156     ClipboardData : String;
1157     numberString : string;
1158     float : Extended;
1159     errorPos : Integer;
1160     GemStregkode : String;
1161     WebSvar : String;
1162     URLStr : String;
1163     Pakketype : String;
1164     Pakkescanningtype : String;
1165    
1166     begin
1167    
1168     if Key = #22 then // ctrl-v
1169     begin
1170     ClipboardData := Clipboard.AsText;
1171     numberString := ClipboardData;
1172     Val(numberString, float, errorPos);
1173     // 20150311: start
1174     // if (ClipboardData <> '') and (errorPos = 0) then
1175     if (ClipboardData <> '') and (errorPos = 0)
1176     or (NumberString = 'Nulstil')
1177     or (NumberString = 'Indtast kundenummer')
1178     or (NumberString = 'Stor pakke')
1179     or (NumberString = 'Lille pakke')
1180     or (NumberString = 'Scan tjekkode')
1181     or (NumberString = 'Automatisk valg')
1182     or (NumberString = 'DAO NAT X-PRESS')
1183     or (NumberString = 'DAO NAT X+PRESS') // 20150323: pga stregkode programmet bruger et forkert karaktersæt
1184     or (NumberString = 'Retur fra DAO')
1185     or (NumberString = 'Retur fra kunde')
1186     or (NumberString = 'DAO DIREKTE')
1187     or (NumberString = 'DAO PAKKESHOP')
1188     or (NumberString = 'Retur fra pakkeshop') then
1189     // 20150311: slut
1190     begin
1191     Stregkode := Stregkode + ClipboardData;
1192     StregkodeST.Caption := StregKode;
1193     end
1194     else
1195     begin
1196     ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1197     end;
1198     end;
1199    
1200     if Key = #13 then // Enter
1201     begin
1202     // 20150306: start
1203     if (Length(Trim(Stregkode)) = 0) then
1204     begin
1205     PlaySound(PWideChar(AlarmLyd));
1206     List1msg := 'Der skal scannes en stregkode...';
1207     ListBox1.Items.Insert(0,List1Msg);
1208     MainForm.Color := clRed;
1209     // 20150316: start
1210     RuteNummerST.Caption := '';
1211     BoghandlerNavnST.Caption := '';
1212     // 20150316: slut
1213     KommentarST.Caption := List1msg;
1214     PakkeshopNulstil.Visible := true;
1215     exit;
1216     end;
1217     // 20150306: slut
1218    
1219     // 20150311: start
1220     if StregKode = 'Nulstil' then
1221     begin
1222     PakkeshopNulstil.Click();
1223     exit;
1224     end;
1225    
1226     if PakkeshopNulstil.Visible then
1227     begin
1228     PlaySound(PWideChar(AlarmLyd));
1229     // 20150312: start
1230     // List1msg := 'HUSK at trykke Nulstil før ny scanning...';
1231     List1msg := 'HUSK at klikke Nulstil før ny scanning...';
1232     // 20150312: slut
1233     ListBox1.Items.Insert(0,List1Msg);
1234     MainForm.Color := clRed;
1235     KommentarST.Caption := List1msg;
1236     // 20150312: start
1237     Stregkode := '';
1238     StregkodeST.Caption := StregKode;
1239     // 20150312: slut
1240     exit;
1241     end;
1242    
1243     if StregKode = 'Lille pakke' then
1244     begin
1245     if RadioButton2.Enabled = true then
1246     begin
1247     InitLillePakke();
1248     end
1249     else
1250     begin
1251     //ShowMessage('Ændring ikke tilladt');
1252     // Her skal komme en 'rød skærm' alarm
1253     PlaySound(PWideChar(AlarmLyd));
1254     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1255     ListBox1.Items.Insert(0,List1Msg);
1256     MainForm.Color := clRed;
1257     // 20150316: start
1258     RuteNummerST.Caption := '';
1259     BoghandlerNavnST.Caption := '';
1260     // 20150316: slut
1261     KommentarST.Caption := List1msg;
1262     PakkeshopNulstil.Visible := true;
1263     end;
1264     Stregkode := '';
1265     StregkodeST.Caption := StregKode;
1266     exit;
1267     end;
1268    
1269     if StregKode = 'Stor pakke' then
1270     begin
1271     if RadioButton1.Enabled = true then
1272     begin
1273     InitStorPakke();
1274     end
1275     else
1276     begin
1277     //ShowMessage('Ændring ikke tilladt');
1278     // Her skal komme en 'rød skærm' alarm
1279     PlaySound(PWideChar(AlarmLyd));
1280     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1281     ListBox1.Items.Insert(0,List1Msg);
1282     MainForm.Color := clRed;
1283     // 20150316: start
1284     RuteNummerST.Caption := '';
1285     BoghandlerNavnST.Caption := '';
1286     // 20150316: slut
1287     KommentarST.Caption := List1msg;
1288     PakkeshopNulstil.Visible := true;
1289     end;
1290     Stregkode := '';
1291     StregkodeST.Caption := StregKode;
1292     exit;
1293     end;
1294    
1295     if StregKode = 'Indtast kundenummer' then
1296     begin
1297     if CheckBox1.Enabled = true then
1298     begin
1299     if (CheckBox1.State = cbChecked) then
1300     begin
1301     CheckBox1.State := cbUnchecked;
1302     end
1303     else
1304     begin
1305     CheckBox1.State := cbChecked;
1306     end;
1307     end
1308     else
1309     begin
1310     //ShowMessage('Ændring ikke tilladt');
1311     // Her skal komme en 'rød skærm' alarm
1312     PlaySound(PWideChar(AlarmLyd));
1313     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1314     ListBox1.Items.Insert(0,List1Msg);
1315     MainForm.Color := clRed;
1316     // 20150316: start
1317     RuteNummerST.Caption := '';
1318     BoghandlerNavnST.Caption := '';
1319     // 20150316: slut
1320     KommentarST.Caption := List1msg;
1321     PakkeshopNulstil.Visible := true;
1322     end;
1323     Stregkode := '';
1324     StregkodeST.Caption := StregKode;
1325     exit;
1326     end;
1327    
1328     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1329     begin
1330     if CheckBox3.Enabled = true then
1331     begin
1332     if (CheckBox3.State = cbChecked) then
1333     begin
1334     CheckBox3.State := cbUnchecked;
1335     end
1336     else
1337     begin
1338     CheckBox3.State := cbChecked;
1339     end;
1340     end
1341     else
1342     begin
1343     //ShowMessage('Ændring ikke tilladt');
1344     // Her skal komme en 'rød skærm' alarm
1345     PlaySound(PWideChar(AlarmLyd));
1346     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1347     ListBox1.Items.Insert(0,List1Msg);
1348     MainForm.Color := clRed;
1349     // 20150316: start
1350     RuteNummerST.Caption := '';
1351     BoghandlerNavnST.Caption := '';
1352     // 20150316: slut
1353     KommentarST.Caption := List1msg;
1354     PakkeshopNulstil.Visible := true;
1355     end;
1356     Stregkode := '';
1357     StregkodeST.Caption := StregKode;
1358     exit;
1359     end;
1360    
1361     if StregKode = 'Automatisk valg' then
1362     begin
1363     if (PanelValgA.Enabled = true) then
1364     begin
1365     PanelValgAClick(PanelValgA);
1366     end
1367     else
1368     begin
1369     //ShowMessage('Ændring ikke tilladt');
1370     // Her skal komme en 'rød skærm' alarm
1371     PlaySound(PWideChar(AlarmLyd));
1372     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1373     ListBox1.Items.Insert(0,List1Msg);
1374     MainForm.Color := clRed;
1375     // 20150316: start
1376     RuteNummerST.Caption := '';
1377     BoghandlerNavnST.Caption := '';
1378     // 20150316: slut
1379     KommentarST.Caption := List1msg;
1380     PakkeshopNulstil.Visible := true;
1381     end;
1382     Stregkode := '';
1383     StregkodeST.Caption := StregKode;
1384     exit;
1385     end;
1386    
1387     // 20150323: start
1388     // if StregKode = 'DAO NAT X-PRESS' then
1389     if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
1390     // 20150323: slut
1391     begin
1392     if (PanelValg1.Enabled = true) then
1393     begin
1394     PanelValg1Click(PanelValg1);
1395     end
1396     else
1397     begin
1398     //ShowMessage('Ændring ikke tilladt');
1399     // Her skal komme en 'rød skærm' alarm
1400     PlaySound(PWideChar(AlarmLyd));
1401     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1402     ListBox1.Items.Insert(0,List1Msg);
1403     MainForm.Color := clRed;
1404     // 20150316: start
1405     RuteNummerST.Caption := '';
1406     BoghandlerNavnST.Caption := '';
1407     // 20150316: slut
1408     KommentarST.Caption := List1msg;
1409     PakkeshopNulstil.Visible := true;
1410     end;
1411     Stregkode := '';
1412     StregkodeST.Caption := StregKode;
1413     exit;
1414     end;
1415    
1416     if StregKode = 'Retur fra DAO' then
1417     begin
1418     if (PanelValg2.Enabled = true) then
1419     begin
1420     PanelValg2Click(PanelValg2);
1421     end
1422     else
1423     begin
1424     //ShowMessage('Ændring ikke tilladt');
1425     // Her skal komme en 'rød skærm' alarm
1426     PlaySound(PWideChar(AlarmLyd));
1427     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1428     ListBox1.Items.Insert(0,List1Msg);
1429     MainForm.Color := clRed;
1430     // 20150316: start
1431     RuteNummerST.Caption := '';
1432     BoghandlerNavnST.Caption := '';
1433     // 20150316: slut
1434     KommentarST.Caption := List1msg;
1435     PakkeshopNulstil.Visible := true;
1436     end;
1437     Stregkode := '';
1438     StregkodeST.Caption := StregKode;
1439     exit;
1440     end;
1441    
1442     if StregKode = 'Retur fra kunde' then
1443     begin
1444     if (PanelValg3.Enabled = true) then
1445     begin
1446     PanelValg3Click(PanelValg3);
1447     end
1448     else
1449     begin
1450     //ShowMessage('Ændring ikke tilladt');
1451     // Her skal komme en 'rød skærm' alarm
1452     PlaySound(PWideChar(AlarmLyd));
1453     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1454     ListBox1.Items.Insert(0,List1Msg);
1455     MainForm.Color := clRed;
1456     // 20150316: start
1457     RuteNummerST.Caption := '';
1458     BoghandlerNavnST.Caption := '';
1459     // 20150316: slut
1460     KommentarST.Caption := List1msg;
1461     PakkeshopNulstil.Visible := true;
1462     end;
1463     Stregkode := '';
1464     StregkodeST.Caption := StregKode;
1465     exit;
1466     end;
1467    
1468     if StregKode = 'DAO DIREKTE' then
1469     begin
1470     if (PanelValg4.Enabled = true) then
1471     begin
1472     PanelValg4Click(PanelValg4);
1473     end
1474     else
1475     begin
1476     //ShowMessage('Ændring ikke tilladt');
1477     // Her skal komme en 'rød skærm' alarm
1478     PlaySound(PWideChar(AlarmLyd));
1479     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1480     ListBox1.Items.Insert(0,List1Msg);
1481     MainForm.Color := clRed;
1482     // 20150316: start
1483     RuteNummerST.Caption := '';
1484     BoghandlerNavnST.Caption := '';
1485     // 20150316: slut
1486     KommentarST.Caption := List1msg;
1487     PakkeshopNulstil.Visible := true;
1488     end;
1489     Stregkode := '';
1490     StregkodeST.Caption := StregKode;
1491     exit;
1492     end;
1493    
1494     if StregKode = 'DAO PAKKESHOP' then
1495     begin
1496     if (PanelValg5.Enabled = true) then
1497     begin
1498     PanelValg5Click(PanelValg5);
1499     end
1500     else
1501     begin
1502     //ShowMessage('Ændring ikke tilladt');
1503     // Her skal komme en 'rød skærm' alarm
1504     PlaySound(PWideChar(AlarmLyd));
1505     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1506     ListBox1.Items.Insert(0,List1Msg);
1507     MainForm.Color := clRed;
1508     // 20150316: start
1509     RuteNummerST.Caption := '';
1510     BoghandlerNavnST.Caption := '';
1511     // 20150316: slut
1512     KommentarST.Caption := List1msg;
1513     PakkeshopNulstil.Visible := true;
1514     end;
1515     Stregkode := '';
1516     StregkodeST.Caption := StregKode;
1517     exit;
1518     end;
1519    
1520     if StregKode = 'Retur fra pakkeshop' then
1521     begin
1522     if (PanelValg6.Enabled = true) then
1523     begin
1524     PanelValg6Click(PanelValg6);
1525     end
1526     else
1527     begin
1528     //ShowMessage('Ændring ikke tilladt');
1529     // Her skal komme en 'rød skærm' alarm
1530     PlaySound(PWideChar(AlarmLyd));
1531     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1532     ListBox1.Items.Insert(0,List1Msg);
1533     MainForm.Color := clRed;
1534     // 20150316: start
1535     RuteNummerST.Caption := '';
1536     BoghandlerNavnST.Caption := '';
1537     // 20150316: slut
1538     KommentarST.Caption := List1msg;
1539     PakkeshopNulstil.Visible := true;
1540     end;
1541     Stregkode := '';
1542     StregkodeST.Caption := StregKode;
1543     exit;
1544     end;
1545     // 20150311: slut
1546    
1547     if (Length(Stregkode) > 8) then
1548     begin
1549     // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1550     URLStr := Format(UrlFindPakketype,[Stregkode]);
1551     try
1552     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1553     WebSvar := IdHTTP1.Get(URLStr);
1554     //IdHTTP1.Disconnect();
1555     except on e:EIdConnClosedGracefully do
1556     begin
1557     // Her skal vi ikke gøre noget - men vi skal forespørge igen
1558     logTekst := 'EIdConnClosedGracefully i FindPakketype';
1559     SkrivScanningLogFil(logTekst);
1560     try
1561     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1562     WebSvar := IdHTTP1.Get(URLStr);
1563     except on e:EIdConnClosedGracefully do
1564     begin
1565     logTekst := 'EIdConnClosedGracefully i FindPakketype igen';
1566     SkrivScanningLogFil(logTekst);
1567     WebSvar := IdHTTP1.Get(URLStr);
1568     end;
1569     end;
1570     end;
1571     end;
1572     XMLDocument1.LoadFromXML(WebSvar);
1573     try
1574     Pakketype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeType').Text;
1575     except on e:exception do
1576     Pakketype := 'Ukendt';
1577     end;
1578     try
1579     Pakkescanningtype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeScanningtype').Text;
1580     except on e:exception do
1581     Pakketype := 'Ukendt';
1582     end;
1583     if Pakketype = 'Ukendt' then
1584     begin
1585     Pakkescanningtype := Scanningtype;
1586     end;
1587     end
1588     else
1589     begin
1590     Pakkescanningtype := Scanningtype;
1591     end;
1592    
1593     if ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)
1594     or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)
1595     or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)
1596     or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)
1597     or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)
1598     or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) then
1599     begin // Her skal komme en alarm og rød skærm
1600     PlaySound(PWideChar(AlarmLyd));
1601     List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';
1602     ListBox1.Items.Insert(0,List1Msg);
1603     MainForm.Color := clRed;
1604     // 20150316: start
1605     RuteNummerST.Caption := '';
1606     BoghandlerNavnST.Caption := '';
1607     // 20150316: slut
1608     KommentarST.Caption := List1msg;
1609     PakkeshopNulstil.Visible := true;
1610     // 20150311: start
1611     StregKode := '';
1612     StregkodeST.Caption := StregKode;
1613     // 20150311: slut
1614     exit;
1615     end;
1616    
1617     if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then
1618     begin
1619     GemStregkode := Stregkode;
1620     if Pakketype = 'NatXpress' then
1621     begin
1622     if Scanningtype <> '1' then
1623     begin
1624     Scanningtype := '1';
1625     InitNatxpresslevering();
1626     end;
1627     end
1628     // Retur kan ikke scannes med 'Automatisk valg'
1629     (*
1630     else if Pakketype = 'NatXpressReturDAO' then
1631     begin
1632     if Scanningtype <> '2' then
1633     begin
1634     Scanningtype := '2';
1635     InitReturFraDao();
1636     end;
1637     end
1638     else if Pakketype = 'NatXpressReturKunde' then
1639     begin
1640     if Scanningtype <> '3' then
1641     begin
1642     Scanningtype := '3';
1643     InitReturFraKunde();
1644     end;
1645     end
1646     *)
1647     else if Pakketype = 'Direkte' then
1648     begin
1649     if Scanningtype <> '4' then
1650     begin
1651     Scanningtype := '4';
1652     InitDirektelevering();
1653     end;
1654     end
1655     else if Pakketype = 'Pakkeshop' then
1656     begin
1657     if Scanningtype <> '5' then
1658     begin
1659     Scanningtype := '5';
1660     InitPakkeshoplevering();
1661     end;
1662     end
1663     // Retur kan ikke scannes med 'Automatisk valg'
1664     (*
1665     else if Pakketype = 'PakkeshopRetur' then
1666     begin
1667     if Scanningtype <> '6' then
1668     begin
1669     Scanningtype := '6';
1670     InitReturFraPakkeshop();
1671     end;
1672     end
1673     *)
1674     else
1675     begin // Her skal komme en alarm og rød skærm
1676     PlaySound(PWideChar(AlarmLyd));
1677     List1msg := 'Pakken kan ikke scannes med automatisk valg';
1678     ListBox1.Items.Insert(0,List1Msg);
1679     MainForm.Color := clRed;
1680     // 20150316: start
1681     RuteNummerST.Caption := '';
1682     BoghandlerNavnST.Caption := '';
1683     // 20150316: slut
1684     KommentarST.Caption := List1msg;
1685     PakkeshopNulstil.Visible := true;
1686     // 20150311: start
1687     StregKode := '';
1688     StregkodeST.Caption := StregKode;
1689     // 20150311: slut
1690     exit;
1691     end;
1692     Stregkode := GemStregkode;
1693     end
1694     else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1695     begin
1696     PlaySound(PWideChar(AlarmLyd));
1697     List1msg := 'Pakkenummer ikke gyldigt (for kort)';
1698     ListBox1.Items.Insert(0,List1Msg);
1699     MainForm.Color := clRed;
1700     // 20150316: start
1701     RuteNummerST.Caption := '';
1702     BoghandlerNavnST.Caption := '';
1703     // 20150316: slut
1704     KommentarST.Caption := List1msg;
1705     PakkeshopNulstil.Visible := true;
1706     // 20150312: start
1707     StregKode := '';
1708     StregkodeST.Caption := StregKode;
1709     // 20150312: slut
1710     exit;
1711     end;
1712    
1713     if not Automatiskvalg1.Checked then
1714     begin
1715     if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1716     begin
1717     PlaySound(PWideChar(AlarmLyd));
1718     List1msg := 'Pakke findes som pakketype: ' + Pakketype;
1719     ListBox1.Items.Insert(0,List1Msg);
1720     MainForm.Color := clRed;
1721     // 20150316: start
1722     RuteNummerST.Caption := '';
1723     BoghandlerNavnST.Caption := '';
1724     // 20150316: slut
1725     KommentarST.Caption := List1msg;
1726     PakkeshopNulstil.Visible := true;
1727     // 20150312: start
1728     StregKode := '';
1729     StregkodeST.Caption := StregKode;
1730     // 20150312: slut
1731     exit;
1732     end;
1733     end;
1734    
1735     // 20150311: start
1736     (*
1737     if StregKode = 'Nulstil' then
1738     begin
1739     PakkeshopNulstil.Click();
1740     exit;
1741     end;
1742    
1743     if PakkeshopNulstil.Visible then
1744     begin
1745     PlaySound(PWideChar(AlarmLyd));
1746     List1msg := 'HUSK at trykke Nulstil før ny scanning...';
1747     ListBox1.Items.Insert(0,List1Msg);
1748     MainForm.Color := clRed;
1749     KommentarST.Caption := List1msg;
1750     exit;
1751     end;
1752    
1753     if StregKode = 'Lille pakke' then
1754     begin
1755     InitLillePakke();
1756     exit;
1757     end;
1758    
1759     if StregKode = 'Stor pakke' then
1760     begin
1761     InitStorPakke();
1762     exit;
1763     end;
1764    
1765     if StregKode = 'Indtast kundenummer' then
1766     begin
1767     if (CheckBox1.State = cbChecked) then
1768     begin
1769     CheckBox1.State := cbUnchecked;
1770     end
1771     else
1772     begin
1773     CheckBox1.State := cbChecked;
1774     end;
1775     Stregkode := '';
1776     exit;
1777     end;
1778    
1779     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1780     begin
1781     if (CheckBox3.State = cbChecked) then
1782     begin
1783     CheckBox3.State := cbUnchecked;
1784     end
1785     else
1786     begin
1787     CheckBox3.State := cbChecked;
1788     end;
1789     Stregkode := '';
1790     exit;
1791     end;
1792     *)
1793     // 20150311: slut
1794    
1795    
1796     if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1797     begin
1798     CheckBox3.Checked := false;
1799     for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1800     begin
1801     if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1802     begin
1803     CheckBox3.Checked := true;
1804     Scanogstjekkoden1.Checked := true;
1805     end;
1806     end;
1807     end;
1808    
1809     if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then
1810     begin
1811     // Når vi ikke kræver tjekkode er alt ok her
1812     BoghandlerStregkode := Stregkode;
1813     BoghandlerTjekkode := '';
1814     PakkeshopText1.Caption := 'Stregkode';
1815     PakkeshopNulstil.Visible := false;
1816     Stregkode := '';
1817     InitScreen();
1818     end
1819     else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then
1820     begin
1821     // Når vi ikke kræver tjekkode er alt ok her
1822     PakkeshopStregkode := Stregkode;
1823     PakkeshopTjekkode := '-1';
1824     BoghandlerStregkode := Stregkode;
1825     BoghandlerTjekkode := '-1';
1826     PakkeshopText1.Caption := 'Stregkode';
1827     PakkeshopNulstil.Visible := false;
1828     Stregkode := '';
1829     InitScreen();
1830     end
1831     else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
1832     if PakkeshopText1.Caption = 'Stregkode' then
1833     begin
1834     if length(Stregkode) > 5 then
1835     begin
1836     PakkeshopStregkode := Stregkode;
1837     BoghandlerStregkode := Stregkode;
1838     PakkeshopText1.Caption := 'Tjekkode';
1839     // 20150317: start
1840     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1841     // 20150317: slut
1842     end
1843     else
1844     begin
1845     List1msg := 'Du skal scanne en stregkode';
1846     ListBox1.Items.Insert(0,List1Msg);
1847     //logTekst := RightStr(List1Msg, Length(List1Msg)-10);
1848     //SkrivScanningLogFil(logTekst);
1849     PlaySound(PWideChar(AlarmLyd));
1850     PakkeshopNulstil.Visible := true;
1851     MainForm.Color := clRed;
1852     end;
1853     Stregkode := '';
1854     InitScreen();
1855     end
1856     else
1857     begin
1858     if length(Stregkode) = 5 then
1859     begin
1860     PakkeshopTjekkode := Stregkode;
1861     BoghandlerTjekkode := Stregkode;
1862     PakkeshopText1.Caption := 'Stregkode';
1863     if (PakkeshopLevering1.Checked) then
1864     MainForm.Color := HexToTColor(FarvePakkeshoplevering);
1865     if (Pakkernormal1.Checked) then
1866     MainForm.Color := HexToTColor(FarveNormal);
1867     PakkeshopNulstil.Visible := false;
1868     end
1869     else
1870     begin
1871     if (PakkeshopLevering1.Checked) then
1872     List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;
1873     if (Pakkernormal1.Checked) then
1874     List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;
1875     KommentarST.Caption := List1msg;
1876     ListBox1.Items.Insert(0,List1Msg);
1877     //logTekst := RightStr(List1Msg, Length(List1Msg)-10);
1878     //SkrivScanningLogFil(logTekst);
1879     PlaySound(PWideChar(AlarmLyd));
1880     PakkeshopNulstil.Visible := true;
1881     MainForm.Color := clRed;
1882     // 20150323: start
1883     StregKode := '';
1884     StregkodeST.Caption := StregKode;
1885     // 20150323: slut
1886     exit;
1887     end;
1888     Stregkode := '';
1889     InitScreen();
1890     end;
1891    
1892     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
1893     begin
1894     if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1895     StregKode := PakkeshopStregkode;
1896     if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1897     StregKode := BoghandlerStregkode;
1898     StregkodeST.Caption := StregKode;
1899     try
1900     InitScreen();
1901     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, '');
1902     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
1903     // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1904     if Rutenummer = 'sql fejl' then
1905     begin // Her skal komme en alarm og rød skærm
1906     PlaySound(PWideChar(AlarmLyd));
1907     //List1msg := 'SQL fejl: ' + Kommentar;
1908     //ListBox1.Items.Insert(0,List1Msg);
1909     MainForm.Color := clRed;
1910     //KommentarST.Caption := List1msg;
1911     PakkeshopNulstil.Visible := true;
1912     exit;
1913     end;
1914     if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
1915     begin
1916     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1917     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
1918     if pakkeErScannet = 0 then
1919     begin
1920     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
1921     end;
1922     if pakkeErScannet = 0 then
1923     begin
1924     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
1925     end;
1926     pakkeForkertSted := pos('burde være hos', Kommentar);
1927     tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1928     if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1929     begin
1930     PlaySound(PWideChar(AlarmLyd));
1931     PakkeshopNulstil.Visible := true;
1932     MainForm.Color := clRed;
1933     end;
1934     end;
1935     if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1936     begin
1937     MainForm.Color := HexToTColor(Farve);
1938     if Storepakker1.Checked then
1939     begin
1940     PlaySound(PWideChar(ScannetOkStorLyd));
1941     end
1942     else
1943     begin
1944     PlaySound(PWideChar(ScannetOkLyd));
1945     end;
1946     PakkeshopNulstil.Visible := false;
1947     end
1948     else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1949     begin
1950     MainForm.Color := HexToTColor(Farve);
1951     if Storepakker1.Checked then
1952     begin
1953     PlaySound(PWideChar(ScannetOkStorLyd));
1954     end
1955     else
1956     begin
1957     PlaySound(PWideChar(ScannetOkLyd));
1958     end;
1959     PakkeshopNulstil.Visible := false;
1960     end
1961     else if Copy(Kommentar,1,8) = 'OPRETTET' then
1962     begin
1963     List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';
1964     ListBox1.Items.Insert(0,List1Msg);
1965     MainForm.Color := clRed;
1966     PlaySound(PWideChar(AlarmLyd));
1967     PakkeshopNulstil.Visible := true;
1968     end
1969     else if Kommentar = StregKode then // budlevering til 'Ukendt tur'
1970     begin
1971     end
1972     else
1973     begin
1974     MainForm.Color := clRed;
1975     PlaySound(PWideChar(AlarmLyd));
1976     PakkeshopNulstil.Visible := true;
1977     end;
1978     if not PakkeshopNulstil.Visible then
1979     begin
1980     // 20150310: start
1981     // SletStregkodelinieFraListboks2(StregKode);
1982     // 20150310: slut
1983     If (Budlevering1.Checked) then
1984     begin
1985     if Storepakker1.Checked then
1986     begin
1987     PlaySound(PWideChar(ScannetOkStorLyd));
1988     end
1989     else
1990     begin
1991     PlaySound(PWideChar(ScannetOkLyd));
1992     end;
1993     InitLillePakke();
1994     end;
1995     end;
1996     // 20150310: start
1997     SletStregkodelinieFraListboks2(StregKode);
1998     // 20150310: slut
1999     PakkeshopStregkode := '';
2000     PakkeshopTjekkode := '';
2001     BoghandlerStregkode := '';
2002     BoghandlerTjekkode := '';
2003     finally
2004     Stregkode := '';
2005     end
2006     end
2007     end
2008     else
2009     begin
2010     if (Key <> #22) then
2011     begin
2012     Stregkode := Stregkode + Key;
2013     end;
2014     StregkodeST.Caption := StregKode;
2015     end;
2016    
2017     if Key = #8 then // backspace key
2018     begin
2019     StregKode := LeftStr(StregKode,Length(StregKode)-2);
2020     end;
2021    
2022     if Key = #27 then // esc key
2023     begin
2024     Stregkode := '';
2025     end;
2026    
2027     Key := #0;
2028    
2029     end;
2030    
2031     procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
2032     const
2033     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2034     var
2035     WebSvar : String;
2036     URLStr : String;
2037     begin
2038     if UrlSendPrograminfo <> '' then
2039     begin
2040     URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
2041     try
2042     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2043     WebSvar := IdHTTP1.Get(URLStr);
2044     //IdHTTP1.Disconnect();
2045     except on e:exception do
2046     begin
2047     // ShowMessage(e.Message);
2048     // raise exception.CreateFmt('Fejl i forbindelse til server: %s',[e.Message]);
2049     logTekst := 'Der er opstået en fejl i kommunikationen med serveren.' + crlf + crlf + 'Programmet afsluttes... ' + crlf + crlf + 'Program rutine: SendTilServeren' + crlf + 'Fejl: ' + e.Message;
2050     ShowMessage(logTekst);
2051     SkrivScanningLogFil(logTekst);
2052     // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
2053     UrlSendPrograminfo := '';
2054     Application.Terminate;
2055     end;
2056     end;
2057     if (WebSvar <> '') and (pos('Error', WebSvar) > 0) then
2058     begin
2059     ShowMessage(WebSvar);
2060     end;
2061     end;
2062     end;
2063    
2064     procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
2065     var
2066     // 20150309: start
2067     // i:integer;
2068     i : Integer;
2069     wrkAntal : String;
2070     wrkAntalIdag, wrkAntalSenere : Integer;
2071     // 20150309: slut
2072    
2073     begin
2074     if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then
2075     begin
2076     for i := ListBox2.items.count-1 downto 0 do
2077     if pos(StregKode,ListBox2.items[i]) <> 0 then
2078     begin
2079     // 20150309: start
2080     // Ajourføring af tæller for manglende pakker (scanninger)
2081     wrkAntal := StaticTextManglendePakker.Caption;
2082     if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
2083     begin
2084     wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
2085     wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));
2086     // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
2087     // ShowMessage(SPLIT('data/another/','/',3));
2088     // ShowMessage(SPLIT('data/another','/',3));
2089     wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));
2090     end
2091     else // kun idag
2092     begin
2093     wrkAntalIdag := StrToInt(wrkAntal);
2094     end;
2095     if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
2096     begin
2097     //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
2098     wrkAntalSenere := wrkAntalSenere - 1;
2099     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
2100     end
2101     else
2102     begin
2103     // ShowMessage('Idag');
2104     wrkAntalIdag := wrkAntalIdag - 1;
2105     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
2106     end;
2107     if (wrkAntalSenere > 0) then
2108     begin
2109     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
2110     end
2111     else
2112     begin
2113     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
2114     end;
2115     // 20150309: slut
2116    
2117     // 20150310: start
2118     if (Scanningtype = '1') then
2119     begin
2120     PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2121     if (wrkAntalIdag + wrkAntalSenere > 0) then
2122     begin
2123     PanelManglendePakker1.Visible := true;
2124     end
2125     else
2126     begin
2127     PanelManglendePakker1.Visible := false;
2128     end;
2129     end;
2130    
2131     if (Scanningtype = '2') then
2132     begin
2133     PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2134     if (wrkAntalIdag + wrkAntalSenere > 0) then
2135     begin
2136     PanelManglendePakker2.Visible := true;
2137     end
2138     else
2139     begin
2140     PanelManglendePakker2.Visible := false;
2141     end;
2142     end;
2143    
2144     if (Scanningtype = '3') then
2145     begin
2146     PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2147     if (wrkAntalIdag + wrkAntalSenere > 0) then
2148     begin
2149     PanelManglendePakker3.Visible := true;
2150     end
2151     else
2152     begin
2153     PanelManglendePakker3.Visible := false;
2154     end;
2155     end;
2156    
2157     if (Scanningtype = '4') then
2158     begin
2159     PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2160     if (wrkAntalIdag + wrkAntalSenere > 0) then
2161     begin
2162     PanelManglendePakker4.Visible := true;
2163     end
2164     else
2165     begin
2166     PanelManglendePakker4.Visible := false;
2167     end;
2168     end;
2169    
2170     if (Scanningtype = '5') then
2171     begin
2172     PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2173     if (wrkAntalIdag + wrkAntalSenere > 0) then
2174     begin
2175     PanelManglendePakker5.Visible := true;
2176     end
2177     else
2178     begin
2179     PanelManglendePakker5.Visible := false;
2180     end;
2181     end;
2182    
2183     if (Scanningtype = '6') then
2184     begin
2185     PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2186     if (wrkAntalIdag + wrkAntalSenere > 0) then
2187     begin
2188     PanelManglendePakker6.Visible := true;
2189     end
2190     else
2191     begin
2192     PanelManglendePakker6.Visible := false;
2193     end;
2194     end;
2195     // 20150310: slut
2196     ListBox2.items.delete(i);
2197     end;
2198     end;
2199     end;
2200    
2201     procedure TMainForm.StartScreen();
2202     begin
2203     if Org_RuteNummerST = '' then
2204     Org_RuteNummerST := RuteNummerST.Caption;
2205     if Org_BoghandlerNavnST = '' then
2206     Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
2207     if Org_KommentarST = '' then
2208     Org_KommentarST := KommentarST.Caption;
2209     RuteNummerST.Caption := Org_RuteNummerST;
2210     BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
2211     KommentarST.Caption := Org_KommentarST;
2212     end;
2213    
2214     procedure TMainForm.InitScreen();
2215     begin
2216     RuteNummerST.Caption := '';
2217     KommentarST.Caption := '';
2218     BoghandlerNavnST.Caption := '';
2219     end;
2220    
2221     procedure TMainForm.InitBladhus();
2222     var
2223     LogFilnavn : string;
2224    
2225     begin
2226     Altidprintepakkelabel1.Enabled := false;
2227     Pakkernormal1.Visible := false;
2228     ReturpakkerfraDAO1.Visible := false;
2229     Returpakkerfraboghandler1.Visible := false;
2230     Sprgefterboghandlernummer1.Enabled := false;
2231     ListBox1.Visible := true;
2232     // TestFunktionen := '1';
2233     // 20150317: start
2234     (*
2235     if TestFunktionen = '1' then
2236     begin
2237     Testforbindelsen1.Visible := true;
2238     Testprinter1.Visible := true;
2239     Testlyd1.Visible := true;
2240     Testlyd2.Visible := true;
2241     end
2242     else if TestFunktionen = '2' then
2243     begin
2244     Testforbindelsen1.Enabled := false;
2245     Testprinter1.Enabled := false;
2246     Testlyd1.Enabled := false;
2247     Testlyd2.Enabled := false;
2248     end
2249     else
2250     begin
2251     Testforbindelsen1.Visible := false;
2252     Testprinter1.Visible := false;
2253     Testlyd1.Visible := false;
2254     Testlyd2.Visible := false;
2255     end;
2256     Testprinter1.Visible := false;
2257     AlarmLyd := 'Sounds\Alarm.wav';
2258     if not FileExists(AlarmLyd) then
2259     begin
2260     AlarmLyd := '';
2261     end;
2262     ScannetOkLyd := 'Sounds\Ok.wav';
2263     if not FileExists(ScannetOkLyd) then
2264     begin
2265     ScannetOkLyd := '';
2266     end;
2267     ScannetOkStorLyd := 'Sounds\Ok_stor.wav';
2268     if not FileExists(ScannetOkStorLyd) then
2269     begin
2270     ScannetOkStorLyd := '';
2271     end;
2272     *)
2273     // 20150317: slut
2274     if Budlevering1.Checked then
2275     begin
2276     IndlesScanningLogFil();
2277     end;
2278    
2279     //
2280     // Bladhus ***
2281     //
2282     case BladhusSted of
2283     01 :
2284     begin; // NS
2285     Testprinter1.Visible := true;
2286     DownloadButton01.Enabled := true;
2287     OpdaterListenButton01.Enabled := true;
2288     IdFTP1.Passive := true;
2289     IdFTP1.PassiveUseControlHost := true;
2290     BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
2291     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2292     DownloadBladhusKontrolfil();
2293     IndlesManglendeScanninger();
2294     end;
2295     02 :
2296     begin; // BK
2297     Testprinter1.Visible := true;
2298     Smpakker1.Enabled := true;
2299     Storepakker1.Enabled := true;
2300     RadioButton1.Enabled := true;
2301     RadioButton2.Enabled := true;
2302     DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2303     OpdaterListenButton01.Enabled := true;
2304     IdFTP1.Passive := true;
2305     IdFTP1.PassiveUseControlHost := true;
2306     IndlesManglendeScanninger();
2307     end;
2308     03 :
2309     begin; // FD
2310     Testprinter1.Visible := true;
2311     if (getProddag() = 'lørdag') then
2312     begin
2313     DownloadButton03.Visible := false;
2314     end
2315     else
2316     begin
2317     DownloadButton03.Visible := false;
2318     end;
2319     DownloadButton01.Enabled := true;
2320     OpdaterListenButton01.Enabled := true;
2321     IdFTP1.Passive := true;
2322     IdFTP1.PassiveUseControlHost := true;
2323     BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2324     BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2325     if (getProddag() = 'lørdag') then
2326     begin
2327     //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2328     end;
2329     BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2330     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2331     DownloadBladhusKontrolfil();
2332     IndlesManglendeScanninger();
2333     end;
2334     04 : begin; // DBK
2335     Testprinter1.Visible := true;
2336     Smpakker1.Enabled := true;
2337     Storepakker1.Enabled := true;
2338     RadioButton1.Enabled := true;
2339     RadioButton2.Enabled := true;
2340     DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2341     OpdaterListenButton01.Enabled := true;
2342     IdFTP1.Passive := true;
2343     IdFTP1.PassiveUseControlHost := true;
2344     end;
2345     else
2346     //ShowMessage('Ukendt Bladhus sted ???') ;
2347     end;
2348    
2349     end;
2350    
2351     procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2352     var
2353     WebSvar : String;
2354     URLStr : String;
2355     pakkestorrelse : String;
2356     PrintNyLabelInteger : Integer;
2357     begin
2358     if RadioButton1.Checked then
2359     begin
2360     pakkestorrelse := 'Stor';
2361     end;
2362     if RadioButton2.Checked then
2363     begin
2364     pakkestorrelse := 'Lille';
2365     end;
2366     if Pakkernormal1.Checked then
2367     begin
2368     if (BoghandlerTjekkode = '') then
2369     begin
2370     BoghandlerTjekkode := '-1';
2371     end;
2372     URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2373     end
2374     else if ReturpakkerfraDAO1.Checked then
2375     begin
2376     URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2377     end
2378     else if Returpakkerfraboghandler1.Checked then
2379     begin
2380     URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2381     end
2382     else if Budlevering1.Checked then
2383     begin
2384     URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2385     end
2386     else if Pakkeshoplevering1.Checked then
2387     begin
2388     URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2389     end
2390     else if Returpakkerfrapakkeshop1.Checked then
2391     begin
2392     URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2393     end
2394     else
2395     begin
2396     exit;
2397     end;
2398     try
2399     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2400     WebSvar := IdHTTP1.Get(URLStr);
2401     //IdHTTP1.Disconnect();
2402     except on e:EIdConnClosedGracefully do
2403     begin
2404     // Her skal vi ikke gøre noget - men vi skal forespørge igen
2405     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
2406     SkrivScanningLogFil(logTekst);
2407     try
2408     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2409     WebSvar := IdHTTP1.Get(URLStr);
2410     except on e:EIdConnClosedGracefully do
2411     begin
2412     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2413     SkrivScanningLogFil(logTekst);
2414     WebSvar := IdHTTP1.Get(URLStr);
2415     end;
2416     end;
2417     end;
2418     end;
2419     XMLDocument1.LoadFromXML(WebSvar);
2420     try
2421     if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
2422     begin
2423     RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2424     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2425     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2426     BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2427     PrintNyLabel := False;
2428     // 20150310: start
2429     if Pakkeshoplevering1.Checked then
2430     begin
2431     // 20150310: slut
2432     try
2433     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2434     except on e:exception do
2435     PrintNyLabelInteger := 0;
2436     end;
2437     if (PrintNyLabelInteger = 1) then
2438     begin
2439     PrintNyLabel := True;
2440     end;
2441     // 20150310: start
2442     end;
2443     // 20150310: slut
2444     end
2445     else
2446     begin
2447     RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2448     Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2449     Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2450     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2451     Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2452     if Budlevering1.Checked then
2453     begin
2454     try
2455     SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2456     except on e:exception do
2457     SmsKode := '';
2458     end;
2459     try
2460     DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2461     except on e:exception do
2462     DBKbane := '';
2463     end;
2464     end;
2465     PrintNyLabel := False;
2466     try
2467     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2468     except on e:exception do
2469     PrintNyLabelInteger := 0;
2470     end;
2471     PrintNyLabel := False;
2472     if (PrintNyLabelInteger = 1) then
2473     begin
2474     PrintNyLabel := True;
2475     end;
2476     end;
2477     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2478     begin
2479     if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2480     begin
2481     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2482     PrintNyLabel := False;
2483     end;
2484     end
2485     else if (Budlevering1.Checked) and (Leveringssted <> Sted) then
2486     begin
2487     if (Leveringssted = 'E') and (Sted = 'DBK') then
2488     begin
2489     // Det er ok at DBK scanner pakker til E (Schenker)
2490     end
2491     else
2492     begin
2493     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2494     PrintNyLabel := False;
2495     end;
2496     end;
2497     except on e:exception do
2498     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2499     end;
2500     end;
2501    
2502    
2503     procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2504     var
2505     List1Msg, List1Pakkestorrelse : String;
2506     begin
2507     RuteNummerST.Caption := RuteNummer;
2508     KommentarST.Caption := Kommentar;
2509     KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2510     KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2511     //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2512     BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2513     List1msg := TimeToStr(now) + '; ';
2514     if Pakkeshoplevering1.Checked then
2515     List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2516     List1Pakkestorrelse := '';
2517     if RadioButton1.Checked then
2518     begin
2519     List1Pakkestorrelse := 'Stor pakke';
2520     end;
2521     if RadioButton2.Checked then
2522     begin
2523     List1Pakkestorrelse := 'Lille pakke';
2524     end;
2525     List1msg := List1msg + BoghandlerNavn + '; ';
2526     if ReturpakkerfraDAO1.Checked then
2527     begin
2528     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2529     end;
2530     if Returpakkerfraboghandler1.Checked then
2531     begin
2532     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2533     end;
2534     if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then
2535     List1msg := List1msg + '; ' + List1Pakkestorrelse;
2536     if length(BoghNr) > 0 then
2537     begin
2538     List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2539     end;
2540     if Budlevering1.Checked then
2541     begin
2542     List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2543     if (RadioButton1.Checked) then
2544     begin
2545     List1msg := List1msg + '; Stor pakke';
2546     end;
2547     if (RadioButton2.Checked) then
2548     begin
2549     List1msg := List1msg + '; Lille pakke';
2550     end;
2551     end;
2552     if Returpakkerfrapakkeshop1.Checked then
2553     begin
2554     List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2555     end;
2556     if Pakkernormal1.Checked then
2557     begin
2558     if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2559     or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2560     or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2561     begin
2562     List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2563     end
2564     else
2565     begin
2566     List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2567     end;
2568     end;
2569     ListBox1.Items.Insert(0,List1Msg);
2570     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2571     SkrivScanningLogFil(logTekst);
2572     end;
2573    
2574     procedure TMainForm.UploadButton01Click(Sender: TObject);
2575     begin
2576     UploadLogfilTilDAO();
2577     UploadInifilTilDAO();
2578     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2579     end;
2580    
2581     procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2582     var
2583     ClickedOK: Boolean;
2584     pakkeErScannet : Integer;
2585     pakkeForkertSted : Integer;
2586     List1Msg : String;
2587     kontrolKoreliste : string;
2588     nytRuteNummer, nyFarve : String;
2589     begin
2590     if Budlevering1.Checked then
2591     RuteNummerST.Color := HexToTColor(Farve);
2592    
2593     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2594     if pakkeErScannet = 0 then
2595     begin
2596     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2597     end;
2598     if pakkeErScannet = 0 then
2599     begin
2600     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2601     end;
2602     pakkeForkertSted := pos('burde være hos', Kommentar);
2603    
2604     // 20150306: start
2605     // if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then
2606     if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2607     // 20150306: slut
2608     begin
2609     if (RuteNummer = 'Ukendt') then
2610     begin
2611     repeat
2612     begin
2613     ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2614     end
2615     until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2616     if not ClickedOK then
2617     begin
2618     exit;
2619     end;
2620     if (Length(BoghandlerNummer) > 2) then
2621     begin
2622     InitScreen();
2623     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2624     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2625     end;
2626     end;
2627     end
2628     else
2629     if Budlevering1.Checked then
2630     begin
2631     if (BoghandlerNavn = 'Ukendt pakke') then
2632     begin
2633     PrintNyLabel := false;
2634     // 20150306: start
2635     // PlaySound(PWideChar(AlarmLyd));
2636     PlaySound(PWideChar(AlarmLyd));
2637     MainForm.Color := clRed;
2638     PakkeshopNulstil.Visible := true;
2639     // 20150306: slut
2640     end
2641     else
2642     begin
2643     nytRuteNummer := retRutenummer(RuteNummer);
2644     if (nytRuteNummer <> RuteNummer) then
2645     begin
2646     PrintNyLabel := true;
2647     RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2648     nyFarve := Farve;
2649     RuteNummerST.Color := HexToTColor(nyFarve);
2650     List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2651     RuteNummer := nytRuteNummer;
2652     ListBox1.Items.Insert(0,List1Msg);
2653     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2654     SkrivScanningLogFil(logTekst);
2655     // 20150213: start
2656     if (PrinterNavn = 'Ingen') then
2657     begin
2658     PrintNyLabel := false;
2659     end;
2660     // 20150313: slut
2661     // 20150306: start
2662     // PlaySound(PWideChar(AlarmLyd));
2663     if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2664     begin
2665     PlaySound(PWideChar(AlarmLyd));
2666     MainForm.Color := clRed;
2667     PakkeshopNulstil.Visible := true;
2668     end;
2669     // 20150306: slut
2670     end;
2671     kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2672     if (kontrolKoreliste <> RuteNummer) then
2673     begin
2674     PrintNyLabel := true;
2675     List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2676     if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2677     begin
2678     PrintNyLabel := false;
2679     RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2680     end
2681     else
2682     begin
2683     RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2684     end;
2685     ListBox1.Items.Insert(0,List1Msg);
2686     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2687     SkrivScanningLogFil(logTekst);
2688     // 20150306: start
2689     // PlaySound(PWideChar(AlarmLyd));
2690     if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2691     begin
2692     PlaySound(PWideChar(AlarmLyd));
2693     MainForm.Color := clRed;
2694     PakkeshopNulstil.Visible := true;
2695     end;
2696     // 20150306: slut
2697     // 20150306: start
2698     // end
2699     // else
2700     // begin
2701     end;
2702     end;
2703    
2704     end;
2705    
2706     if Budlevering1.Checked then
2707     begin
2708     case BladhusSted of
2709     00 : begin;
2710     // 20150304: start
2711     // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2712     // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2713     // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2714     // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2715     if PrintNyLabel or (RuteNummer = 'Rutenr') then
2716     // 20150304: slut
2717     begin
2718     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2719     end;
2720     end;
2721     01 : begin;
2722     if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2723     // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2724     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2725     begin
2726     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2727     end;
2728     end;
2729     02 : begin;
2730     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2731     begin
2732     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2733     end;
2734     end;
2735     03 : begin;
2736     if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2737     // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2738     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2739     begin
2740     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2741     end;
2742     end;
2743     04 : begin;
2744     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2745     begin
2746     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2747     end;
2748     end;
2749     else
2750     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2751     end;
2752     end;
2753    
2754     // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2755     if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2756     begin
2757     exit;
2758     end;
2759    
2760     if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2761     begin
2762     end
2763     else
2764     begin
2765 torben 2652 if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2766 torben 2645 begin
2767     logTekst := 'Printer label type ';
2768 torben 2652 if (chkAltidPrintLabel.Checked) then
2769 torben 2645 begin
2770     logTekst := logTekst + 'Alle ';
2771     end
2772     else if (PrintNyLabel) then
2773     begin
2774     logTekst := logTekst + 'Rute ';
2775     end
2776     else
2777     begin
2778     logTekst := logTekst + 'Ukendt ';
2779     end;
2780     logTekst := logTekst + ' for '+BoghandlerNavn;
2781     SkrivScanningLogFil(logTekst);
2782     with Printer do
2783     begin
2784     BeginDoc;
2785     Canvas.Font.Size := FontSizeRute;
2786     if (Length(RuteNummer) > 7) then
2787     begin
2788     Canvas.Font.Size := FontSizeRuteLille;
2789     end;
2790     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2791     Canvas.Font.Size := FontSizeKommentar;
2792     Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2793     if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then
2794     begin
2795     Kommentar := '';
2796     end;
2797     if (BoghandlerNavn = 'PAKKE ER SCANNET') then
2798     begin
2799     BoghandlerNavn := '';
2800     end;
2801     Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2802     Canvas.Font.Size := FontSizeBoghandler;
2803     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2804     EndDoc;
2805     end;
2806     end;
2807     end;
2808    
2809     end;
2810    
2811     procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2812     begin
2813     with Printer do
2814     begin
2815     BeginDoc;
2816     Canvas.Font.Size := FontSizeRuteLille;
2817     if (kontrolKoreliste <> '') then
2818     begin
2819     Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);
2820     end
2821     else
2822     begin
2823     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2824     end;
2825     Canvas.Font.Size := FontSizeKorelisteLille;
2826     Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);
2827     if (Sted = 'DBK') or (Sted = '04') then
2828     begin
2829     Canvas.Font.Size := FontSizeSorteringsfelt1;
2830     Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane); // sorteringsoplysning 1
2831     Canvas.Font.Size := FontSizeSorteringsfelt1;
2832     Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted); // sorteringsoplysning 2
2833     end;
2834     Canvas.Font.Size := FontSizeKommentar;
2835     Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2836     // 20150304: start
2837     Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);
2838     // 20150304: slut
2839     Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2840     if SmsKode <> '' then
2841     begin
2842     Canvas.Font.Size := FontSizeSmskode;
2843     Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));
2844     end;
2845     Canvas.Font.Size := FontSizeBoghandler;
2846     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2847     EndDoc;
2848     end;
2849     end;
2850    
2851    
2852     procedure TMainForm.RadioButton1Click(Sender: TObject);
2853     begin
2854     Storepakker1.Checked := true;
2855     RadioButton1.Checked := true;
2856     end;
2857    
2858     procedure TMainForm.RadioButton2Click(Sender: TObject);
2859     begin
2860     Smpakker1.Checked := true;
2861     RadioButton2.Checked := true;
2862     end;
2863    
2864    
2865     procedure TMainForm.CheckBox1Click(Sender: TObject);
2866     begin
2867     if CheckBox1.Checked then
2868     begin
2869     Sprgefterboghandlernummer1.Checked := true;
2870     end
2871     else
2872     begin
2873     Sprgefterboghandlernummer1.Checked := false;
2874     end;
2875     end;
2876    
2877    
2878 torben 2652 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2879 torben 2645 begin
2880 torben 2652 if chkAltidPrintLabel.Checked then
2881 torben 2645 begin
2882     Altidprintepakkelabel1.Checked := true;
2883     end
2884     else
2885     begin
2886     Altidprintepakkelabel1.Checked := false;
2887     end;
2888    
2889     end;
2890    
2891     procedure TMainForm.CheckBox3Click(Sender: TObject);
2892     begin
2893     if CheckBox3.Checked then
2894     begin
2895     Scanogstjekkoden1.Checked := true;
2896     end
2897     else
2898     begin
2899     Scanogstjekkoden1.Checked := false;
2900     end;
2901     end;
2902    
2903     procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);
2904     begin
2905     Scanningtype := '5';
2906     InitPakkeshoplevering();
2907     NulstilAutomatiskValg();
2908     end;
2909    
2910     procedure TMainForm.NulstilAutomatiskValg();
2911     begin
2912     Automatiskvalg1.Checked := false;
2913     PanelValgA.Color := clBtnFace;
2914     PanelValgA.Font.Color := clWindowText;
2915     // 20150317: start
2916     if (SpecialVersionSted = '01')
2917     or (SpecialVersionSted = '02')
2918     or (SpecialVersionSted = '03')
2919     or (SpecialVersionSted = '04') then
2920     begin
2921     // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2922     PanelValgA.Enabled := false;
2923     PanelValgA.Font.Color := clInactiveCaption;
2924     Automatiskvalg1.Enabled := false;
2925     end;
2926     // 20150317: slut
2927     end;
2928    
2929     procedure TMainForm.TjekkerUrls();
2930     const
2931     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2932     var
2933     urlFejl : Integer;
2934     begin
2935     urlFejl := 0;
2936     //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2937     ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2938    
2939     // Tjekker urls
2940     logTekst := 'Tjekker urls.';
2941     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2942     SkrivScanningLogFil(logTekst);
2943    
2944     // Tjekker UrlNormal
2945     if PanelValg1.Enabled = true then
2946     begin
2947     if CheckUrl(UrlNormal) then
2948     begin
2949     logTekst := 'UrlNormal accepteret: ' + UrlNormal;
2950     SkrivScanningLogFil(logTekst);
2951     end
2952     else
2953     begin
2954     inc(urlFejl); // Optæller antal fejl
2955     logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;
2956     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2957     if TjekUrls = '1' then
2958     begin
2959     TjekUrls := '-'; // markerer at der var fejl
2960     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2961     end;
2962     SkrivScanningLogFil(logTekst);
2963     if TjekUrls = '1' then
2964     begin
2965     ShowMessage(logTekst);
2966     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2967     Application.Terminate;
2968     exit;
2969     end;
2970     end;
2971     end;
2972    
2973     // Tjekker UrlReturDAO
2974     if PanelValg2.Enabled = true then
2975     begin
2976     if CheckUrl(UrlReturDAO) then
2977     begin
2978     logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;
2979     SkrivScanningLogFil(logTekst);
2980     end
2981     else
2982     begin
2983     inc(urlFejl); // Optæller antal fejl
2984     logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
2985     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2986     if TjekUrls = '1' then
2987     begin
2988     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2989     end;
2990     SkrivScanningLogFil(logTekst);
2991     if TjekUrls = '1' then
2992     begin
2993     ShowMessage(logTekst);
2994     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2995     Application.Terminate;
2996     exit;
2997     end;
2998     end;
2999     end;
3000    
3001     // Tjekker UrlReturBoghandler
3002     if PanelValg3.Enabled = true then
3003     begin
3004     if CheckUrl(UrlReturBoghandler) then
3005     begin
3006     logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;
3007     SkrivScanningLogFil(logTekst);
3008     end
3009     else
3010     begin
3011     inc(urlFejl); // Optæller antal fejl
3012     logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
3013     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3014     if TjekUrls = '1' then
3015     begin
3016     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3017     end;
3018     SkrivScanningLogFil(logTekst);
3019     if TjekUrls = '1' then
3020     begin
3021     ShowMessage(logTekst);
3022     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3023     Application.Terminate;
3024     exit;
3025     end;
3026     end;
3027     end;
3028    
3029     // Tjekker UrlBudlevering
3030     if PanelValg4.Enabled = true then
3031     begin
3032     if CheckUrl(UrlBudlevering) then
3033     begin
3034     logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;
3035     SkrivScanningLogFil(logTekst);
3036     end
3037     else
3038     begin
3039     inc(urlFejl); // Optæller antal fejl
3040     logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;
3041     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3042     if TjekUrls = '1' then
3043     begin
3044     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3045     end;
3046     SkrivScanningLogFil(logTekst);
3047     if TjekUrls = '1' then
3048     begin
3049     ShowMessage(logTekst);
3050     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3051     Application.Terminate;
3052     exit;
3053     end;
3054     end;
3055     end;
3056    
3057     // Tjekker UrlPakkeshoplevering
3058     if PanelValg5.Enabled = true then
3059     begin
3060     if CheckUrl(UrlPakkeshoplevering) then
3061     begin
3062     logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;
3063     SkrivScanningLogFil(logTekst);
3064     end
3065     else
3066     begin
3067     inc(urlFejl); // Optæller antal fejl
3068     logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;
3069     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3070     if TjekUrls = '1' then
3071     begin
3072     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3073     end;
3074     SkrivScanningLogFil(logTekst);
3075     if TjekUrls = '1' then
3076     begin
3077     ShowMessage(logTekst);
3078     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3079     Application.Terminate;
3080     exit;
3081     end;
3082     end;
3083     end;
3084    
3085     // Tjekker UrlReturPakkeshop
3086     if PanelValg6.Enabled = true then
3087     begin
3088     if CheckUrl(UrlReturPakkeshop) then
3089     begin
3090     logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;
3091     SkrivScanningLogFil(logTekst);
3092     end
3093     else
3094     begin
3095     inc(urlFejl); // Optæller antal fejl
3096     logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;
3097     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3098     if TjekUrls = '1' then
3099     begin
3100     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3101     end;
3102     SkrivScanningLogFil(logTekst);
3103     if TjekUrls = '1' then
3104     begin
3105     ShowMessage(logTekst);
3106     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3107     Application.Terminate;
3108     exit;
3109     end;
3110     end;
3111     end;
3112    
3113     // Tjekker UrlManglendeScanninger
3114     if (PanelValg1.Enabled = true)
3115     or (PanelValg4.Enabled = true) then
3116     begin
3117     if CheckUrl(UrlManglendeScanninger) then
3118     begin
3119     logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;
3120     SkrivScanningLogFil(logTekst);
3121     end
3122     else
3123     begin
3124     inc(urlFejl); // Optæller antal fejl
3125     logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;
3126     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3127     if TjekUrls = '1' then
3128     begin
3129     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3130     end;
3131     SkrivScanningLogFil(logTekst);
3132     if TjekUrls = '1' then
3133     begin
3134     ShowMessage(logTekst);
3135     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3136     Application.Terminate;
3137     exit;
3138     end;
3139     end;
3140     end;
3141    
3142     // Tjekker UrlPakkeshopManglendeScanninger
3143     if PanelValg5.Enabled = true then
3144     begin
3145     if CheckUrl(UrlPakkeshopManglendeScanninger) then
3146     begin
3147     logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;
3148     SkrivScanningLogFil(logTekst);
3149     end
3150     else
3151     begin
3152     inc(urlFejl); // Optæller antal fejl
3153     logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;
3154     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3155     if TjekUrls = '1' then
3156     begin
3157     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3158     end;
3159     SkrivScanningLogFil(logTekst);
3160     if TjekUrls = '1' then
3161     begin
3162     ShowMessage(logTekst);
3163     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3164     Application.Terminate;
3165     exit;
3166     end;
3167     end;
3168     end;
3169    
3170     // Tjekker UrlPakkeshopManglendeReturScanninger
3171     if PanelValg6.Enabled = true then
3172     begin
3173     if CheckUrl(UrlPakkeshopManglendeReturScanninger) then
3174     begin
3175     logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;
3176     SkrivScanningLogFil(logTekst);
3177     end
3178     else
3179     begin
3180     inc(urlFejl); // Optæller antal fejl
3181     logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;
3182     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3183     if TjekUrls = '1' then
3184     begin
3185     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3186     end;
3187     SkrivScanningLogFil(logTekst);
3188     if TjekUrls = '1' then
3189     begin
3190     ShowMessage(logTekst);
3191     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3192     Application.Terminate;
3193     exit;
3194     end;
3195     end;
3196     end;
3197    
3198     // Tjekker UrlEKLoverforsel
3199     if PanelValg1.Enabled = true then
3200     begin
3201     if CheckUrl(UrlEKLoverforsel) then
3202     begin
3203     logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;
3204     SkrivScanningLogFil(logTekst);
3205     end
3206     else
3207     begin
3208     inc(urlFejl); // Optæller antal fejl
3209     logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;
3210     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3211     if TjekUrls = '1' then
3212     begin
3213     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3214     end;
3215     SkrivScanningLogFil(logTekst);
3216     if TjekUrls = '1' then
3217     begin
3218     ShowMessage(logTekst);
3219     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3220     Application.Terminate;
3221     exit;
3222     end;
3223     end;
3224     end;
3225    
3226     // 20150330: start
3227     // Tjekker UrlEKLoverforselPakkeshop
3228     if PanelValg5.Enabled = true then
3229     begin
3230     if CheckUrl(UrlEKLoverforselPakkeshop) then
3231     begin
3232     logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;
3233     SkrivScanningLogFil(logTekst);
3234     end
3235     else
3236     begin
3237     inc(urlFejl); // Optæller antal fejl
3238     logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;
3239     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3240     if TjekUrls = '1' then
3241     begin
3242     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3243     end;
3244     SkrivScanningLogFil(logTekst);
3245     if TjekUrls = '1' then
3246     begin
3247     ShowMessage(logTekst);
3248     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3249     Application.Terminate;
3250     exit;
3251     end;
3252     end;
3253     end;
3254     // 20150330: slut
3255    
3256     // Tjekker UrlFindPakketype
3257     if CheckUrl(UrlFindPakketype) then
3258     begin
3259     logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;
3260     SkrivScanningLogFil(logTekst);
3261     end
3262     else
3263     begin
3264     inc(urlFejl); // Optæller antal fejl
3265     logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;
3266     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3267     if TjekUrls = '1' then
3268     begin
3269     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3270     end;
3271     SkrivScanningLogFil(logTekst);
3272     if TjekUrls = '1' then
3273     begin
3274     ShowMessage(logTekst);
3275     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3276     Application.Terminate;
3277     exit;
3278     end;
3279     end;
3280    
3281     // Tjekker UrlSendPrograminfo
3282     if CheckUrl(UrlSendPrograminfo) then
3283     begin
3284     logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;
3285     SkrivScanningLogFil(logTekst);
3286     end
3287     else
3288     begin
3289     inc(urlFejl); // Optæller antal fejl
3290     logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;
3291     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3292     if TjekUrls = '1' then
3293     begin
3294     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3295     end;
3296     SkrivScanningLogFil(logTekst);
3297     if TjekUrls = '1' then
3298     begin
3299     ShowMessage(logTekst);
3300     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3301     Application.Terminate;
3302     exit;
3303     end;
3304     end;
3305    
3306     if urlFejl > 0 then
3307     begin
3308     TjekUrls := '-'; // markerer at der var fejl
3309     end
3310     else
3311     begin
3312     logTekst := 'urls er ok';
3313     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3314     SkrivScanningLogFil(logTekst);
3315     end;
3316    
3317     end;
3318    
3319     function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;
3320     var
3321     LocalFileTime: TFileTime;
3322     SystemTime: TSystemTime;
3323     begin
3324     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;
3325     FileTimeToSystemTime(LocalFileTime, SystemTime) ;
3326     Result := SystemTimeToDateTime(SystemTime) ;
3327     end;
3328    
3329     procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
3330     var
3331     SR: TSearchRec;
3332     dt: TDateTime;
3333     CreationTime: TFileTime;
3334     dtCreation: TDateTime;
3335     BemTxt : String;
3336     begin
3337     logTekst := 'Logfiler tjekkes for sletning.';
3338     SkrivScanningLogFil(logTekst);
3339     FileList.Insert(0,logTekst);
3340     if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
3341     begin
3342     repeat
3343     if (SR.Attr <> faDirectory) then
3344     begin
3345     dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
3346     CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
3347     dtCreation := FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
3348     // Selvom creation date godt kan være forskellig fra modified date,
3349     // skal vi alligevel altid tjekke filens alder ud fra modified date
3350     // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
3351     BemTxt := '';
3352     if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
3353     begin
3354     BemTxt := ' (skal slettes)';
3355     end;
3356     logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
3357     if DaysBetween(dtCreation, dt) > 1 then
3358     begin
3359     logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
3360     end;
3361     FileList.Insert(0,logTekst);
3362     SkrivScanningLogFil(logTekst);
3363     if BemTxt = ' (skal slettes)' then
3364     begin
3365     if DeleteFile(Path + SR.Name) then
3366     begin
3367     logTekst := 'Logfil er slettet.';
3368     FileList.Insert(0,logTekst);
3369     SkrivScanningLogFil(logTekst);
3370     end
3371     else
3372     begin
3373     logTekst := 'Logfil kunne IKKE slettes.';
3374     FileList.Insert(0,logTekst);
3375     SkrivScanningLogFil(logTekst);
3376     end;
3377     end;
3378     end;
3379     until FindNext(SR) <> 0;
3380     FindClose(SR);
3381     end;
3382     end;
3383    
3384     procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);
3385     begin
3386     PakkeshopStregkode := '';
3387     PakkeshopTjekkode := '';
3388     PakkeshopNulstil.Visible := false;
3389     PakkeshopText1.Caption := 'Stregkode';
3390     BoghandlerStregkode := '';
3391     BoghandlerTjekkode := '';
3392     Stregkode := '';
3393     // 20150312: start
3394     if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
3395     begin
3396     ShowMessage('Programmet afbrydes...');
3397     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3398     Application.Terminate;
3399     exit;
3400     end;
3401     // 20150312: slut
3402     InitScreen();
3403     // MainForm.Color := HexToTColor(Farve);
3404     if Farve <> '' then
3405     begin
3406     MainForm.Color := HexToTColor(Farve);
3407     // 20150312: start
3408     (*
3409     end
3410     else
3411     begin
3412     ShowMessage('Programmet afbrydes...');
3413     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3414     Application.Terminate;
3415     *)
3416     // 20150312: slut
3417     end;
3418     if (Budlevering1.Checked) then
3419     begin
3420     InitLillePakke();
3421     end;
3422     PrinterstatusStaticText1.Caption := '';
3423     PrinterstatusStaticText1.Color := MainForm.Color;
3424     end;
3425    
3426 torben 2650
3427 torben 2645 procedure TMainForm.PanelValg1Click(Sender: TObject);
3428     begin
3429     Scanningtype := '1';
3430     InitNatxpresslevering();
3431     NulstilAutomatiskValg();
3432     end;
3433    
3434     procedure TMainForm.PanelValg2Click(Sender: TObject);
3435     begin
3436     Scanningtype := '2';
3437     InitReturFraDao();
3438     NulstilAutomatiskValg();
3439     end;
3440    
3441     procedure TMainForm.PanelValg3Click(Sender: TObject);
3442     begin
3443     Scanningtype := '3';
3444     InitReturFraKunde();
3445     NulstilAutomatiskValg();
3446     end;
3447    
3448     procedure TMainForm.PanelValg4Click(Sender: TObject);
3449     begin
3450     Scanningtype := '4';
3451     InitDirektelevering();
3452     NulstilAutomatiskValg();
3453     end;
3454    
3455     procedure TMainForm.PanelValg5Click(Sender: TObject);
3456     begin
3457     Scanningtype := '5';
3458     InitPakkeshoplevering();
3459     NulstilAutomatiskValg();
3460     end;
3461    
3462     procedure TMainForm.PanelValg6Click(Sender: TObject);
3463     begin
3464     Scanningtype := '6';
3465     InitReturFraPakkeshop();
3466     NulstilAutomatiskValg();
3467     end;
3468    
3469 torben 2650
3470     procedure TMainForm.PanelValg7Click(Sender: TObject);
3471     begin
3472     Scanningtype := '7';
3473     InitIndleveringskode();
3474     NulstilAutomatiskValg();
3475    
3476     end;
3477    
3478 torben 2645 procedure TMainForm.PanelValgAClick(Sender: TObject);
3479     begin
3480     // 20150311: start
3481     (*
3482     if PanelValgA.Color = clBtnFace then
3483     begin
3484     AutomatiskValg1.Checked := true;
3485     PanelValgA.Color := clGreen;
3486     PanelValgA.Font.Color := clWhite;
3487     end
3488     else
3489     begin
3490     AutomatiskValg1.Checked := false;
3491     PanelValgA.Color := clBtnFace;
3492     PanelValgA.Font.Color := clWindowText;
3493     end;
3494     *)
3495     // Skal ikke toggle men bare sætte funktionen on
3496     // Fravælges ved at vælge en scanningstype
3497     AutomatiskValg1.Checked := true;
3498     PanelValgA.Color := clGreen;
3499     PanelValgA.Font.Color := clWhite;
3500     // 20150311: slut
3501     end;
3502    
3503     procedure TMainForm.Pakkernormal1Click(Sender: TObject);
3504     begin
3505     Scanningtype := '1';
3506     NulstilAutomatiskValg();
3507     InitNatxpresslevering();
3508     end;
3509    
3510     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
3511     var
3512     RuteNummer : String;
3513     Kommentar : String;
3514     BoghandlerNavn : String;
3515     Koreliste : String;
3516     Falsk : Boolean;
3517     Sand : Boolean;
3518     SmsKode : String;
3519     DBKbane : String;
3520     Leveringssted : String;
3521     orgTjekUrls : String;
3522     begin
3523     orgTjekUrls := TjekUrls;
3524     if (TjekUrls = '1') or (TjekUrls = '2') then
3525     begin
3526     TjekkerUrls();
3527     end;
3528     if TjekUrls = '-' then
3529     begin
3530     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
3531     RuteNummer := '';
3532     Kommentar := 'Se log vinduet';
3533     BoghandlerNavn := 'Fejl i forbindelse til server';
3534     Koreliste := '';
3535     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3536     // Her kommer en alarm og rød skærm
3537     PlaySound(PWideChar(AlarmLyd));
3538     MainForm.Color := clRed;
3539     PakkeshopNulstil.Visible := true;
3540     end
3541     else
3542     begin
3543     Falsk := False;
3544     Sand := True;
3545     HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
3546     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3547     SmsKode := '999999';
3548     DBKbane := '999';
3549     Leveringssted := 'XXX';
3550     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3551     FocusControl(StregkodeST);
3552     end;
3553     TjekUrls := orgTjekUrls;
3554    
3555     end;
3556    
3557     procedure TMainForm.Testprinter1Click(Sender: TObject);
3558     var
3559     RuteNummer : String;
3560     Kommentar : String;
3561     BoghandlerNavn : String;
3562     Koreliste : String;
3563     Falsk : Boolean;
3564     Sand : Boolean;
3565     SmsKode : String;
3566     DBKbane : String;
3567     Leveringssted : String;
3568     begin
3569     RuteNummer := 'Rutenr';
3570     Kommentar := '***** Kommentar *****';
3571     BoghandlerNavn := 'Modtagernavn';
3572     Falsk := False;
3573     Sand := True;
3574    
3575     if (Printer.Printers.Count = 0) then
3576     begin
3577     ShowMessage('Der er ikke installeret en printer på denne PC.');
3578     end
3579     else if PrinterNavn = 'Ingen' then
3580     begin
3581     ShowMessage('Der er fravalgt printer i dette program.');
3582     end
3583     else
3584     begin
3585     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3586     SmsKode := '999999';
3587     DBKbane := '999';
3588     Leveringssted := 'XXX';
3589     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3590     CheckPrintQue('Test');
3591     end;
3592     FocusControl(StregkodeST);
3593     end;
3594    
3595     procedure TMainForm.Timer1Timer(Sender: TObject);
3596     begin
3597     if (TjekPrinter = '1') then
3598     begin
3599     CheckPrintQue('Timer');
3600     end
3601     else
3602     begin
3603     PrinterstatusStaticText1.Caption := '';
3604     PrinterstatusStaticText1.Color := MainForm.Color;
3605     end;
3606     end;
3607    
3608     {
3609     VERY fast split function
3610     this function returns part of a string based on
3611     constant defineable delimiters, such as ";". So
3612     SPLIT('this is a test ',' ',3) = 'is' or
3613     SPLIT('data;another;yet;again;more;',';',4) = 'yet'
3614    
3615     Split function shifts index integer by two to
3616     be compatible with commonly used PD split function
3617     gpl 2004 / Juhani Suhonen
3618     }
3619     function TMainForm.split(input: string; schar: Char; s: Integer): string;
3620     var
3621     c: array of Integer;
3622     b, t: Integer;
3623     begin
3624     Dec(s, 2); // for compatibility with very old & slow split function
3625     t := 0; // variable T needs to be initialized...
3626     setlength(c, Length(input));
3627     for b := 0 to pred(High(c)) do
3628     begin
3629     c[b + 1] := posex(schar, input, succ(c[b]));
3630     // BREAK LOOP if posex looped (position before previous)
3631     // or wanted position reached..
3632     if (c[b + 1] < c[b]) or (s < t) then break
3633     else
3634     Inc(t);
3635     end;
3636     Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));
3637     end;
3638    
3639     procedure TMainForm.Om1Click(Sender: TObject);
3640     const
3641     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3642     var
3643     tekst, filversion : String;
3644     begin
3645    
3646     filversion := Sto_GetFmtFileVersion('','');
3647     tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3648    
3649     tekst := tekst+crlf+crlf;
3650     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
3651     tekst := tekst+crlf;
3652    
3653     if SpecialVersionSted = '' then
3654     begin
3655     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
3656     end;
3657    
3658     if SpecialVersionSted <> '' then
3659     begin
3660     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
3661     begin
3662     if Stednavn = '' then
3663     begin
3664     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
3665     end
3666     else
3667     begin
3668     tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
3669     end;
3670     end
3671     else
3672     begin
3673     tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
3674     end;
3675     end;
3676    
3677     if (Pos('omdeling.info',Url) = 0) then
3678     begin
3679     tekst := tekst+crlf+crlf;
3680     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3681     tekst := tekst+crlf+crlf;
3682     tekst := tekst+crlf+crlf+'Url: '+url;
3683     end;
3684    
3685     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3686    
3687     end;
3688    
3689     procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3690     Rect: TRect; State: TOwnerDrawState);
3691     var
3692     ListBox1MaxLinLgd,i : Integer;
3693     myColor: TColor;
3694     myBrush: TBrush;
3695     begin
3696     ListBox1MaxLinLgd := 0;
3697     myBrush := TBrush.Create;
3698     with (Control as TListBox).Canvas do
3699     begin
3700     if not Odd(Index) then
3701     myColor := clWhite
3702     else
3703     myColor := clSilver;
3704    
3705     if odSelected in State then
3706     begin
3707     myColor := MainForm.Color;
3708     font.Color := clBlack;
3709     end;
3710    
3711     myBrush.Style := bsSolid;
3712     myBrush.Color := myColor;
3713     Windows.FillRect(handle, Rect, myBrush.Handle) ;
3714     Brush.Style := bsClear;
3715     TextOut(Rect.Left, Rect.Top,
3716     (Control as TListBox).Items[Index]) ;
3717     MyBrush.Free;
3718     end;
3719    
3720     for i := 0 to (ListBox1.Items.Count - 1) do
3721     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3722     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3723     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3724     end;
3725    
3726     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3727     begin
3728    
3729     Application.Terminate;
3730    
3731     end;
3732    
3733     procedure TMainForm.Manual1Click(Sender: TObject);
3734     var
3735     fileName : string;
3736     begin
3737     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3738    
3739     if FileExists(fileName) then
3740     begin
3741     if AdobeReaderExists then
3742     begin
3743     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3744     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3745     end
3746     else
3747     begin
3748     ShowMessage('Acrobat Reader er ikke installeret!');
3749     end;
3750     end
3751     else
3752     begin
3753     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3754     end;
3755     end;
3756    
3757     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3758     var
3759     fileName : string;
3760     begin
3761     fileName := 'Docs\Manual_0.pdf';
3762    
3763     if FileExists(fileName) then
3764     begin
3765     if AdobeReaderExists then
3766     begin
3767     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3768     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3769     end
3770     else
3771     begin
3772     ShowMessage('Acrobat Reader er ikke installeret!');
3773     end;
3774     end
3775     else
3776     begin
3777     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3778     end;
3779     end;
3780    
3781     procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3782     begin
3783    
3784     if Sprgefterboghandlernummer1.Checked then
3785     begin
3786     CheckBox1.Checked := true;
3787     end
3788     else
3789     begin
3790     CheckBox1.Checked := false;
3791     end;
3792    
3793    
3794     end;
3795    
3796     procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);
3797     begin
3798     Scanningtype := '2';
3799     NulstilAutomatiskValg();
3800     InitReturFraDao();
3801     end;
3802    
3803     procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);
3804     begin
3805     Scanningtype := '6';
3806     InitReturFraPakkeshop();
3807     NulstilAutomatiskValg();
3808     end;
3809    
3810     procedure TMainForm.InitNatxpresslevering();
3811     begin
3812     AutomatiskTjekkodeStyring1.Enabled := true;
3813     PakkeshopNulstil.Visible := false;
3814     Pakkernormal1.Checked := true;
3815     InitForm(FarveNormal,TitelNormal,UrlNormal);
3816     PanelValg1.Color := clGreen;
3817     PanelValg1.Font.Color := clWhite;
3818     CheckBox1.Enabled := true;
3819 torben 2652 chkAltidPrintLabel.Enabled := true;
3820 torben 2645 Altidprintepakkelabel1.Enabled := true;
3821     Altidprintepakkelabel1.Checked := false;
3822 torben 2652 chkAltidPrintLabel.Checked := false;
3823 torben 2645 Sprgefterboghandlernummer1.Checked := false;
3824     CheckBox1.Checked := false;
3825     Sprgefterboghandlernummer1.Enabled := true;
3826     Smpakker1.Enabled := false;
3827     Storepakker1.Enabled := false;
3828     RadioButton1.Enabled := false;
3829     RadioButton2.Enabled := false;
3830     ListBox1.Visible := true;
3831     OpdaterListenButton01.Enabled := true;
3832     EKLoverforsel.Enabled := true;
3833     InitLillePakke();
3834     ListBox1.Items.Clear;
3835     if BladhusSted = 0 then
3836     begin
3837     IndlesScanningLogFil();
3838     IndlesManglendeScanninger();
3839     end;
3840     end;
3841    
3842     procedure TMainForm.InitReturFraDao();
3843     begin
3844     AutomatiskTjekkodeStyring1.Enabled := false;
3845     ReturpakkerfraDAO1.Checked := true;
3846     PakkeshopNulstil.Visible := false;
3847     InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3848     PanelValg2.Color := clGreen;
3849     PanelValg2.Font.Color := clWhite;
3850     CheckBox1.Enabled := false;
3851 torben 2652 chkAltidPrintLabel.Enabled := false;
3852 torben 2645 Altidprintepakkelabel1.Enabled := false;
3853 torben 2652
3854 torben 2645 Altidprintepakkelabel1.Checked := false;
3855     Sprgefterboghandlernummer1.Checked := false;
3856     CheckBox1.Checked := false;
3857     Sprgefterboghandlernummer1.Enabled := false;
3858     Smpakker1.Enabled := true;
3859     Storepakker1.Enabled := true;
3860     RadioButton1.Enabled := true;
3861     RadioButton2.Enabled := true;
3862     ListBox1.Visible := true;
3863     ListBox1.Items.Clear;
3864     ListBox2.Items.Clear;
3865     EKLoverforsel.Enabled := false;
3866     InitLillePakke();
3867     end;
3868    
3869     procedure TMainForm.InitReturFraKunde();
3870     begin
3871     AutomatiskTjekkodeStyring1.Enabled := false;
3872     Returpakkerfraboghandler1.Checked := true;
3873     PakkeshopNulstil.Visible := false;
3874     InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3875     PanelValg3.Color := clGreen;
3876     PanelValg3.Font.Color := clWhite;
3877     CheckBox1.Enabled := false;
3878 torben 2652 chkAltidPrintLabel.Enabled := false;
3879 torben 2645 Altidprintepakkelabel1.Enabled := false;
3880     Altidprintepakkelabel1.Checked := false;
3881     Sprgefterboghandlernummer1.Checked := false;
3882     CheckBox1.Checked := false;
3883     Sprgefterboghandlernummer1.Enabled := false;
3884     Smpakker1.Enabled := true;
3885     Storepakker1.Enabled := true;
3886     RadioButton1.Enabled := true;
3887     RadioButton2.Enabled := true;
3888     ListBox1.Visible := true;
3889     ListBox1.Items.Clear;
3890     ListBox2.Items.Clear;
3891     EKLoverforsel.Enabled := false;
3892     InitLillePakke();
3893     end;
3894    
3895     procedure TMainForm.InitDirektelevering();
3896     begin
3897     AutomatiskTjekkodeStyring1.Enabled := false;
3898     Budlevering1.Checked := true;
3899     PakkeshopNulstil.Visible := false;
3900     InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3901     PanelValg4.Color := clGreen;
3902     PanelValg4.Font.Color := clWhite;
3903     CheckBox1.Enabled := false;
3904 torben 2652 chkAltidPrintLabel.Enabled := false;
3905 torben 2645 Altidprintepakkelabel1.Enabled := false;
3906 torben 2652
3907 torben 2645 Altidprintepakkelabel1.Checked := false;
3908     Sprgefterboghandlernummer1.Checked := false;
3909     CheckBox1.Checked := false;
3910     Sprgefterboghandlernummer1.Enabled := false;
3911     Smpakker1.Enabled := true;
3912     Storepakker1.Enabled := true;
3913     RadioButton1.Enabled := true;
3914     RadioButton2.Enabled := true;
3915     ListBox1.Visible := true;
3916     ListBox1.Items.Clear;
3917     DownloadButton01.Enabled := false;
3918     OpdaterListenButton01.Enabled := true;
3919     DownloadButton03.Visible := false;
3920     EKLoverforsel.Enabled := false;
3921     IdFTP1.Passive := true;
3922     IdFTP1.PassiveUseControlHost := true;
3923     if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3924     begin
3925     IndlesScanningLogFil();
3926     IndlesManglendeScanninger();
3927     end;
3928    
3929     end;
3930    
3931     procedure TMainForm.InitPakkeshoplevering();
3932     begin
3933     AutomatiskTjekkodeStyring1.Enabled := true;
3934     Pakkeshoplevering1.Checked := true;
3935     PakkeshopNulstil.Visible := false;
3936     InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3937     PanelValg5.Color := clGreen;
3938     PanelValg5.Font.Color := clWhite;
3939     CheckBox1.Enabled := false;
3940 torben 2652 chkAltidPrintLabel.Enabled := false;
3941 torben 2645 Altidprintepakkelabel1.Enabled := false;
3942 torben 2652
3943 torben 2645 Altidprintepakkelabel1.Checked := false;
3944     Sprgefterboghandlernummer1.Checked := false;
3945     CheckBox1.Checked := false;
3946     Sprgefterboghandlernummer1.Enabled := false;
3947     Smpakker1.Enabled := false;
3948     Storepakker1.Enabled := false;
3949     RadioButton1.Enabled := false;
3950     RadioButton2.Enabled := false;
3951     ListBox1.Visible := true;
3952     ListBox1.Items.Clear;
3953     DownloadButton01.Enabled := false;
3954     OpdaterListenButton01.Enabled := true;
3955     // 20150330: start
3956     // EKLoverforsel.Enabled := false;
3957     EKLoverforsel.Enabled := true;
3958     // 20150330: slut
3959     InitLillePakke();
3960     IndlesScanningLogFil();
3961     if BladhusSted = 0 then
3962     begin
3963     IndlesManglendeScanninger();
3964     end;
3965     IdFTP1.Passive := true;
3966     IdFTP1.PassiveUseControlHost := true;
3967     end;
3968    
3969     procedure TMainForm.InitReturFraPakkeshop();
3970     begin
3971     AutomatiskTjekkodeStyring1.Enabled := false;
3972     Returpakkerfrapakkeshop1.Checked := true;
3973     PakkeshopNulstil.Visible := false;
3974     InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3975     PanelValg6.Color := clGreen;
3976     PanelValg6.Font.Color := clWhite;
3977     CheckBox1.Enabled := false;
3978 torben 2652 chkAltidPrintLabel.Enabled := false;
3979 torben 2645 Altidprintepakkelabel1.Enabled := false;
3980 torben 2652
3981 torben 2645 Altidprintepakkelabel1.Checked := false;
3982     Sprgefterboghandlernummer1.Checked := false;
3983     CheckBox1.Checked := false;
3984     Sprgefterboghandlernummer1.Enabled := false;
3985     Smpakker1.Enabled := false;
3986     Storepakker1.Enabled := false;
3987     RadioButton1.Enabled := false;
3988     RadioButton2.Enabled := false;
3989     ListBox1.Visible := true;
3990     ListBox1.Items.Clear;
3991     DownloadButton01.Enabled := false;
3992     OpdaterListenButton01.Enabled := true;
3993     EKLoverforsel.Enabled := false;
3994     InitLillePakke();
3995     IndlesScanningLogFil();
3996     if BladhusSted = 0 then
3997     begin
3998     IndlesManglendeScanninger();
3999     end;
4000     IdFTP1.Passive := true;
4001     IdFTP1.PassiveUseControlHost := true;
4002     end;
4003    
4004     procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
4005     begin
4006     Scanningtype := '3';
4007     NulstilAutomatiskValg();
4008     InitReturFraKunde();
4009     end;
4010    
4011 torben 2650 procedure TMainForm.InitIndleveringskode();
4012     begin
4013     AutomatiskTjekkodeStyring1.Enabled := false;
4014     Returpakkerfrapakkeshop1.Checked := true;
4015     PakkeshopNulstil.Visible := false;
4016     InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
4017     PanelValg7.Color := clGreen;
4018     PanelValg7.Font.Color := clWhite;
4019     CheckBox1.Enabled := false;
4020 torben 2652 chkAltidPrintLabel.Enabled := false;
4021 torben 2650 Altidprintepakkelabel1.Enabled := false;
4022 torben 2652
4023 torben 2650 Altidprintepakkelabel1.Checked := false;
4024     Sprgefterboghandlernummer1.Checked := false;
4025     CheckBox1.Checked := false;
4026     Sprgefterboghandlernummer1.Enabled := false;
4027     Smpakker1.Enabled := false;
4028     Storepakker1.Enabled := false;
4029     RadioButton1.Enabled := false;
4030     RadioButton2.Enabled := false;
4031     ListBox1.Visible := true;
4032     ListBox1.Items.Clear;
4033     DownloadButton01.Enabled := false;
4034     OpdaterListenButton01.Enabled := true;
4035     EKLoverforsel.Enabled := false;
4036     InitLillePakke();
4037     IndlesScanningLogFil();
4038     if BladhusSted = 0 then
4039     begin
4040     IndlesManglendeScanninger();
4041     end;
4042     IdFTP1.Passive := true;
4043     IdFTP1.PassiveUseControlHost := true;
4044     end;
4045    
4046    
4047 torben 2645 procedure TMainForm.Storepakker1Click(Sender: TObject);
4048     begin
4049     InitStorPakke();
4050     end;
4051    
4052     procedure TMainForm.Smpakker1Click(Sender: TObject);
4053     begin
4054     InitLillePakke();
4055     end;
4056    
4057     procedure TMainForm.InitLillePakke();
4058     begin
4059     RadioButton2.Checked := true;
4060     Smpakker1.Checked := true;
4061     // 20150310: start
4062     // Stregkode := '';
4063     // 20150310: slut
4064     end;
4065    
4066     procedure TMainForm.InitStorPakke();
4067     begin
4068     RadioButton1.Checked := true;
4069     Storepakker1.Checked := true;
4070     // 20150310: start
4071     // Stregkode := '';
4072     // 20150310: slut
4073     end;
4074    
4075     /// <summary>
4076     /// This function reads the file resource of "FileName" and returns
4077     /// the version number as formatted text.</summary>
4078     /// <example>
4079     /// Sto_GetFmtFileVersion() = '4.13.128.0'
4080     /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
4081     /// </example>
4082     /// <remarks>If "Fmt" is invalid, the function may raise an
4083     /// EConvertError exception.</remarks>
4084     /// <param name="FileName">Full path to exe or dll. If an empty
4085     /// string is passed, the function uses the filename of the
4086     /// running exe or dll.</param>
4087     /// <param name="Fmt">Format string, you can use at most four integer
4088     /// values.</param>
4089     /// <returns>Formatted version number of file, '' if no version
4090     /// resource found.</returns>
4091     function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';
4092     const Fmt: String = '%d.%d.%d.%d'): String;
4093     var
4094     sFileName: String;
4095     iBufferSize: DWORD;
4096     iDummy: DWORD;
4097     pBuffer: Pointer;
4098     pFileInfo: Pointer;
4099     iVer: array[1..4] of Word;
4100     S : String;
4101     begin
4102     // set default value
4103     Result := '';
4104     // get filename of exe/dll if no filename is specified
4105     sFileName := Trim(FileName);
4106     if (sFileName = '') then
4107     sFileName := GetModuleName(HInstance);
4108     // get size of version info (0 if no version info exists)
4109     iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
4110     if (iBufferSize > 0) then
4111     begin
4112     GetMem(pBuffer, iBufferSize);
4113     try
4114     // get fixed file info (language independent)
4115     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
4116     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
4117     // read version blocks
4118     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4119     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4120     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4121     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4122     finally
4123     FreeMem(pBuffer);
4124     end;
4125     // format result string
4126     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
4127    
4128     // Hvorfor virker ovenstående ikke ???
4129     S := '';
4130     Str(iVer[1],Result);
4131     S := S+Result+'.';
4132     Str(iVer[2],Result);
4133     S := S+Result+'.';
4134     Str(iVer[3],Result);
4135     S := S+Result+'.';
4136     Str(iVer[4],Result);
4137     S := S+Result+'';
4138     Result := S;
4139     end;
4140     end;
4141    
4142     procedure TMainForm.PlaySound(filename : PWideChar);
4143     begin
4144     if (filename <> '') then
4145     begin
4146     sndPlaySound(filename,
4147     SND_NODEFAULT Or SND_ASYNC);
4148     end;
4149     end;
4150    
4151     procedure TMainForm.Testlyd1Click(Sender: TObject);
4152     begin
4153     if AlarmLyd <> '' then
4154     begin
4155     PlaySound(PWideChar(AlarmLyd));
4156     end
4157     else
4158     begin
4159     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
4160     end;
4161     end;
4162    
4163     procedure TMainForm.Testlyd2Click(Sender: TObject);
4164     begin
4165     // 20150317: start
4166     if (PakkeshopText1.Caption = 'Tjekkode') then
4167     begin
4168     if ScannetOkTilTjekkodeLyd <> '' then
4169     begin
4170     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
4171     end
4172     else
4173     begin
4174     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
4175     end;
4176     exit;
4177     end;
4178     // 20150317: slut
4179    
4180     if Smpakker1.Checked then
4181     if ScannetOkLyd <> '' then
4182     begin
4183     PlaySound(PWideChar(ScannetOkLyd));
4184     end
4185     else
4186     begin
4187     // 20150317: start
4188     // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);
4189     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
4190     // 20150317: slut
4191     end;
4192     if Storepakker1.Checked then
4193     if ScannetOkStorLyd <> '' then
4194     begin
4195     PlaySound(PWideChar(ScannetOkStorLyd));
4196     end
4197     else
4198     begin
4199     // 20150317: start
4200     // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);
4201     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
4202     // 20150317: slut
4203     end;
4204     end;
4205    
4206    
4207     procedure TMainForm.Budlevering1Click(Sender: TObject);
4208     begin
4209     Scanningtype := '4';
4210     NulstilAutomatiskValg();
4211     InitDirektelevering();
4212     end;
4213    
4214     procedure TMainForm.Button1Click(Sender: TObject);
4215     begin;
4216     CheckCode();
4217     end;
4218    
4219     procedure TMainForm.EKLoverforselClick(Sender: TObject);
4220     var
4221     WebSvar : String;
4222     URLStr : String;
4223     StedKode : String;
4224     Node: IXMLNode;
4225     I: Integer;
4226     status, kommentar : String;
4227    
4228     begin
4229     EKLoverforsel.Enabled := false;
4230    
4231     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
4232     logTekst := 'Overfører de scannede pakker til EKL';
4233     SkrivScanningLogFil(logTekst);
4234     StedKode := Sted;
4235     URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
4236     // 20150330: start
4237     if PanelValg5.Color = clGreen then
4238     begin
4239     URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
4240     end;
4241     // 20150330: slut
4242    
4243     try
4244     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4245     WebSvar := IdHTTP1.Get(URLStr);
4246     except
4247     on e:EIdConnClosedGracefully do
4248     begin
4249     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4250     WebSvar := IdHTTP1.Get(URLStr);
4251     end;
4252     on e:exception do
4253     begin
4254     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4255     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4256     SkrivScanningLogFil(logTekst);
4257     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4258     end;
4259     end;
4260     try
4261     XMLDocument1.LoadFromXML(WebSvar);
4262     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4263     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4264     if Node.NodeType = ntElement then begin
4265     if Node.NodeName = 'Status' then begin
4266     if not VarIsNull(Node.NodeValue) then
4267     status := Node.NodeValue;
4268     end;
4269     if Node.NodeName = 'Kommentar' then begin
4270     if not VarIsNull(Node.NodeValue) then
4271     kommentar := Node.NodeValue;
4272     end;
4273     end;
4274     end;
4275    
4276     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
4277     logTekst := 'Overførsel til EKL: ' + status;
4278     SkrivScanningLogFil(logTekst);
4279    
4280     except on e:exception do
4281     begin
4282     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
4283     logTekst := 'Overførsel til EKL: ' + status;
4284     SkrivScanningLogFil(logTekst);
4285     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4286     logTekst := 'Fejl i XML-format: '+e.Message;
4287     SkrivScanningLogFil(logTekst);
4288     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4289     end;
4290     end;
4291    
4292     EKLoverforsel.Enabled := true;
4293    
4294     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4295    
4296     // Hvis der var fejl i overførslen skal dette fejlmeldes her
4297     if status = 'Fejl' then
4298     begin // Her skal komme en alarm og rød skærm
4299     PlaySound(PWideChar(AlarmLyd));
4300     MainForm.Color := clRed;
4301     RutenummerST.Caption := 'EKL overførsel';
4302     BoghandlerNavnST.Caption := 'Fejl:';
4303     if (pos('Deadlock', Kommentar) > 0) then
4304     begin
4305     RutenummerST.Caption := 'EKL overførsel fejlet';
4306     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
4307     end;
4308     KommentarST.Caption := Kommentar;
4309     PakkeshopNulstil.Visible := true;
4310     end;
4311    
4312     end;
4313    
4314     procedure TMainForm.CheckCode();
4315     var
4316     Barcode, Svar : String;
4317     ClickedOK : Boolean;
4318     begin
4319     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4320     if ClickedOk then
4321     begin
4322     { if (BarCodeValid(Barcode)) then
4323     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4324     else
4325     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4326     }
4327     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4328     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4329     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4330     else
4331     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4332     }
4333     Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4334    
4335     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4336     CheckCode();
4337     end;
4338    
4339     end;
4340    
4341     function TMainForm.BarCodeValid (ACode: string): boolean;
4342     var
4343     I: integer;
4344     SumOdd, SumEven: integer;
4345     ADigit, AChecksumDigit: integer;
4346     begin
4347     SumOdd := 0;
4348     SumEven := 0;
4349     for I := 1 to (Length (ACode) - 1) do begin
4350     ADigit := StrToIntDef (ACode [I], 0);
4351     if (I MOD 2 = 0) then begin
4352     SumEven := SumEven + ADigit;
4353     end else begin
4354     SumOdd := SumOdd + ADigit;
4355     end; {if}
4356     end; {for}
4357     AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);
4358     Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);
4359     end; {--BarCodeValid--}
4360    
4361     { used for EAN 8/13 }
4362     function TMainForm.CheckSumModulo10(const data:string):string;
4363     var i,fak,sum : Integer;
4364     begin
4365     sum := 0;
4366     fak := Length(data);
4367     for i:=1 to Length(data) do
4368     begin
4369     if (fak mod 2) = 0 then
4370     sum := sum + (StrToInt(data[i])*1)
4371     else
4372     sum := sum + (StrToInt(data[i])*3);
4373     dec(fak);
4374     end;
4375     if (sum mod 10) = 0 then
4376     result := data+'0'
4377     else
4378     result := data+IntToStr(10-(sum mod 10));
4379     end;
4380    
4381     //
4382     // Bladhus ***
4383     //
4384     procedure TMainForm.DownloadBladhusRuteskiftfil();
4385     const
4386     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4387    
4388     var
4389     filnavn_input : string;
4390     filnavn_output : string;
4391     buttonSelected : Integer;
4392    
4393     begin
4394     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4395     filnavn_output := BladhusRuteskiftfil_lokal;
4396    
4397     case BladhusSted of
4398     00 : begin;
4399     end;
4400     01 : begin;
4401     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4402     if buttonSelected = mrOK then
4403     begin
4404     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4405     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4406     SkrivScanningLogFil(logTekst);
4407     try
4408     try
4409    
4410     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4411     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4412     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4413     IdFTP1.Connect;
4414    
4415     //IdFTP1.TransferType := ftASCII;
4416     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4417     try
4418     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4419     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4420     except on e:EIdConnClosedGracefully do
4421     begin
4422     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4423     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4424     end;
4425     end;
4426     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4427    
4428     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4429     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4430     SkrivScanningLogFil(logTekst);
4431    
4432     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4433     logTekst := 'Ruteskift fil tjekkes.';
4434     SkrivScanningLogFil(logTekst);
4435    
4436     finally
4437     IdFTP1.Disconnect;
4438     end;
4439    
4440     except on e:exception do
4441     begin
4442     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4443     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4444     SkrivScanningLogFil(logTekst);
4445     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4446     [e.Message
4447     + CrLf + 'Host: '+IdFTP1.host
4448     + CrLf + 'Username: '+IdFTP1.Username
4449     ]
4450     );
4451     end;
4452     end;
4453     end
4454     else
4455     begin
4456     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4457     logTekst := 'Download af ruteskiftfil annulleret';
4458     SkrivScanningLogFil(logTekst);
4459     end;
4460     IndlesRuteskiftFil(filnavn_output);
4461     end;
4462     02 : begin;
4463     end;
4464     03 : begin;
4465     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4466     if buttonSelected = mrOK then
4467     begin
4468     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4469     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4470     SkrivScanningLogFil(logTekst);
4471     try
4472     try
4473    
4474     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4475     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4476     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4477     IdFTP1.Connect;
4478    
4479     //IdFTP1.TransferType := ftASCII;
4480     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4481     try
4482     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4483     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4484     except on e:EIdConnClosedGracefully do
4485     begin
4486     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4487     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4488     end;
4489     end;
4490     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4491    
4492     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4493     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4494     SkrivScanningLogFil(logTekst);
4495    
4496     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4497     logTekst := 'Ruteskift fil tjekkes.';
4498     SkrivScanningLogFil(logTekst);
4499    
4500     finally
4501     IdFTP1.Disconnect;
4502     end;
4503    
4504     except on e:exception do
4505     begin
4506     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4507     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4508     SkrivScanningLogFil(logTekst);
4509     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4510     [e.Message
4511     + CrLf + 'Host: '+IdFTP1.host
4512     + CrLf + 'Username: '+IdFTP1.Username
4513     ]
4514     );
4515     end;
4516     end;
4517     end
4518     else
4519     begin
4520     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4521     logTekst := 'Download af ruteskiftfil annulleret';
4522     SkrivScanningLogFil(logTekst);
4523     end;
4524     IndlesRuteskiftFil(filnavn_output);
4525     end;
4526     04 : begin;
4527     end;
4528     else
4529     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4530     end;
4531    
4532     end;
4533    
4534     procedure TMainForm.DownloadBladhusKontrolfil();
4535     const
4536     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4537    
4538     var
4539     filnavn_input : string;
4540     filnavn_output : string;
4541     buttonSelected : Integer;
4542    
4543     begin
4544     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4545     filnavn_output := BladhusKontrolfil_lokal;
4546    
4547     case BladhusSted of
4548     01 :
4549     begin;
4550     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4551     if buttonSelected = mrOK then
4552     begin
4553     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4554     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4555     SkrivScanningLogFil(logTekst);
4556     try
4557     try
4558    
4559     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4560     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4561     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4562     IdFTP1.Connect;
4563    
4564     //IdFTP1.TransferType := ftASCII;
4565     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4566     try
4567     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4568     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4569     except on e:EIdConnClosedGracefully do
4570     begin
4571     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4572     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4573     end;
4574     end;
4575     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4576    
4577     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4578     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4579     SkrivScanningLogFil(logTekst);
4580    
4581     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4582     logTekst := 'Rute kontrol fil tjekkes.';
4583     SkrivScanningLogFil(logTekst);
4584    
4585     finally
4586     IdFTP1.Disconnect;
4587     end;
4588    
4589     except on e:exception do
4590     begin
4591     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4592     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4593     SkrivScanningLogFil(logTekst);
4594     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4595     [e.Message
4596     + CrLf + 'Host: '+IdFTP1.host
4597     + CrLf + 'Username: '+IdFTP1.Username
4598     ]
4599     );
4600     end;
4601     end;
4602     end
4603     else
4604     begin
4605     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4606     logTekst := 'Download af kontrolfil annulleret';
4607     SkrivScanningLogFil(logTekst);
4608     end;
4609     IndlesKontrolFil(filnavn_output);
4610     end;
4611     02 : begin;
4612     end;
4613     03 : begin;
4614     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4615     if buttonSelected = mrOK then
4616     begin
4617     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4618     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4619     SkrivScanningLogFil(logTekst);
4620     try
4621     try
4622    
4623     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4624     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4625     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4626     IdFTP1.Connect;
4627    
4628     //IdFTP1.TransferType := ftASCII;
4629     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4630     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4631    
4632     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4633     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4634     SkrivScanningLogFil(logTekst);
4635    
4636     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4637     logTekst := 'Rute kontrol fil tjekkes.';
4638     SkrivScanningLogFil(logTekst);
4639    
4640     finally
4641     IdFTP1.Disconnect;
4642     end;
4643    
4644     except on e:exception do
4645     begin
4646     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4647     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4648     SkrivScanningLogFil(logTekst);
4649     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4650     [e.Message
4651     + CrLf + 'Host: '+IdFTP1.host
4652     + CrLf + 'Username: '+IdFTP1.Username
4653     ]
4654     );
4655     end;
4656     end;
4657     end
4658     else
4659     begin
4660     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4661     logTekst := 'Download af kontrolfil annulleret';
4662     SkrivScanningLogFil(logTekst);
4663     end;
4664     IndlesKontrolFil(filnavn_output);
4665     end;
4666     04 : begin;
4667     end;
4668     else
4669     ShowMessage('Ukendt Bladhus sted ???') ;
4670     end;
4671    
4672     end;
4673    
4674     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4675     const
4676     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4677    
4678     var
4679     testsystem : String;
4680    
4681     begin
4682     testsystem := '';
4683     if (Pos('omdeling.info',Url) = 0) then
4684     begin
4685     testsystem := 'TEST_';
4686     end;
4687     filnavn_output := testsystem + filnavn_output;
4688    
4689     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4690     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4691     SkrivScanningLogFil(logTekst);
4692     try
4693     try
4694    
4695     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4696     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4697     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4698     IdFTP1.Connect;
4699    
4700     //IdFTP1.TransferType := ftASCII;
4701     try
4702     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4703     IdFTP1.ChangeDir('fraScannerprogram');
4704     IdFTP1.Put(filnavn_input, filnavn_output, True);
4705     except on e:EIdConnClosedGracefully do
4706     begin
4707     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4708     IdFTP1.Put(filnavn_input, filnavn_output, True);
4709     end;
4710     end;
4711     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4712    
4713     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4714     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4715     SkrivScanningLogFil(logTekst);
4716    
4717     finally
4718     IdFTP1.Disconnect;
4719     end;
4720    
4721     except on e:exception do
4722     begin
4723     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4724     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4725     SkrivScanningLogFil(logTekst);
4726     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4727     [e.Message
4728     + CrLf + 'Host: '+IdFTP1.host
4729     + CrLf + 'Username: '+IdFTP1.Username
4730     ]
4731     );
4732     end;
4733     end;
4734     end;
4735    
4736     procedure TMainForm.UploadLogfilTilDAO();
4737     const
4738     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4739    
4740     var
4741     idag, imorgen : TDateTime;
4742     imorgenYmd : string;
4743     logFilnavn : string;
4744     filnavn_input : string;
4745     filnavn_output : string;
4746     buttonSelected : Integer;
4747     openDialog : TOpenDialog;
4748    
4749     begin
4750     idag := Now;
4751     imorgen := IncDay(idag, 1); //adds 1 day(s)
4752     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4753     if (FormatDateTime('hh:nn',idag) < '12:00') then
4754     begin
4755     imorgen := idag;
4756     end;
4757     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4758     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4759     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4760     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4761    
4762     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4763     if buttonSelected = mrOK then
4764     begin
4765     SendFilTilDao('Log', filnavn_input, filnavn_output);
4766     end
4767     else
4768     begin
4769     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4770     if buttonSelected = mrOK then
4771     begin
4772     // Create the open dialog object - assign to our open dialog variable
4773     openDialog := TOpenDialog.Create(self);
4774    
4775     // Set up the starting directory to be the current one
4776     openDialog.InitialDir := GetCurrentDir + '\Logs';
4777    
4778     // Only allow existing files to be selected
4779     openDialog.Options := [ofFileMustExist];
4780    
4781     // Allow only .log files to be selected
4782     openDialog.Filter := 'Log filer|*.log';
4783    
4784     // Display the open file dialog
4785     if openDialog.Execute then
4786     begin
4787     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4788     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4789     SendFilTilDao('Log', filnavn_input, filnavn_output);
4790     end
4791     else
4792     begin
4793     logTekst := 'Upload af log fil annulleret';
4794     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4795     SkrivScanningLogFil(logTekst);
4796     end;
4797    
4798     // Free up the dialog
4799     openDialog.Free;
4800     end
4801     else
4802     begin
4803     logTekst := 'Upload af log fil annulleret';
4804     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4805     SkrivScanningLogFil(logTekst);
4806     end;
4807     end;
4808    
4809     end;
4810    
4811     procedure TMainForm.UploadInifilTilDAO();
4812     const
4813     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4814    
4815     var
4816     idag, imorgen : TDateTime;
4817     imorgenYmd : string;
4818     iniFilnavn : string;
4819     filnavn_input : string;
4820     filnavn_output : string;
4821     buttonSelected : Integer;
4822    
4823     begin
4824     idag := Now;
4825     imorgen := IncDay(idag, 1); //adds 1 day(s)
4826     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4827     if (FormatDateTime('hh:nn',idag) < '12:00') then
4828     begin
4829     imorgen := idag;
4830     end;
4831     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4832     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4833     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4834     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4835    
4836     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4837     if buttonSelected = mrOK then
4838     begin
4839     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4840     end
4841     else
4842     begin
4843     logTekst := 'Upload af ini fil annulleret';
4844     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4845     SkrivScanningLogFil(logTekst);
4846     end;
4847    
4848     end;
4849    
4850     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4851     begin
4852     UploadLogfilTilDAO();
4853     UploadInifilTilDAO();
4854     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4855     end;
4856    
4857     procedure TMainForm.DownloadButton01Click(Sender: TObject);
4858     begin
4859     DownloadBladhusKontrolfil();
4860     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4861     end;
4862    
4863     procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4864     const
4865     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4866    
4867     begin
4868     IndlesManglendeScanninger();
4869     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4870     end;
4871    
4872     procedure TMainForm.DownloadButton03Click(Sender: TObject);
4873     begin
4874     if (getProddag() = 'lørdag') then
4875     begin
4876     DownloadBladhusRuteskiftfil();
4877     end;
4878     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4879     end;
4880    
4881     function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;
4882     var
4883     S2: string;
4884     begin
4885     Result := 0;
4886     S2 := S + Border;
4887     repeat
4888     SetLength(A, Length(A) + 1);
4889     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
4890     Delete(S2, 1,Length(a[Result] + Border));
4891     Inc(Result);
4892     until S2 = '';
4893     end;
4894    
4895     procedure TMainForm.IndlesManglendeScanninger();
4896     var
4897     WebSvar : String;
4898     URLStr : String;
4899     StedKode : String;
4900     Node: IXMLNode;
4901     I: Integer;
4902     stregkode, modtagernavn, modtageradresse, kommentar : string;
4903     pakketype, tjekkodestatus : String;
4904     pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4905     pakketyper : TStrings;
4906     antlin : Integer;
4907     // 20150306: start
4908     antlinIdag, antlinSenere : Integer;
4909     // 20150306: slut
4910     XmlFelter : TStrings;
4911    
4912     begin
4913     XmlFelter := TStringList.Create;
4914     pakketyper := TStringList.Create;
4915     linienr := 0;
4916     ListBox2.Clear;
4917     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4918     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4919     SkrivScanningLogFil(logTekst);
4920     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4921     begin
4922     StedKode := BladhusStedKode[BladhusSted];
4923     end
4924     else
4925     begin
4926     StedKode := Sted;
4927     end;
4928    
4929     // 20150310: start
4930     (*
4931     if Returpakkerfrapakkeshop1.Checked then
4932     begin
4933     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4934     end
4935     else if Pakkeshoplevering1.Checked then
4936     begin
4937     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4938     end
4939     else if Pakkernormal1.Checked then
4940     begin
4941     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4942     end
4943     else
4944     begin
4945     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4946     end;
4947     *)
4948     if (Scanningtype = '6') then
4949     begin
4950     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4951     end
4952     else if (Scanningtype = '5') then
4953     begin
4954     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4955     end
4956     else if (Scanningtype = '1') then
4957     begin
4958     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4959     end
4960     else if (Scanningtype = '4') then
4961     begin
4962     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4963     end
4964     else
4965     begin
4966     exit;
4967     end;
4968     // 20150310: slut
4969    
4970     try
4971     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4972     // URLStr := string(Utf8Encode(URLStr));
4973     WebSvar := IdHTTP1.Get(URLStr);
4974     except
4975     on e:EIdConnClosedGracefully do
4976     begin
4977     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4978     WebSvar := IdHTTP1.Get(URLStr);
4979     end;
4980     on e:exception do
4981     begin
4982     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4983     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4984     SkrivScanningLogFil(logTekst);
4985     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4986     end;
4987     end;
4988     try
4989     XMLDocument1.LoadFromXML(WebSvar);
4990    
4991     // 20150206: start
4992     antlin := 0;
4993     antlinIdag := 0;
4994     antlinSenere := 0;
4995     // 20150306: slut
4996     antalFelterFundet := 0;
4997     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4998     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4999     if Node.NodeType = ntElement then begin
5000     if Node.NodeName = 'Stregkode' then
5001     begin
5002     antlin := antlin + 1;
5003     // 20150306: start
5004     if not VarIsNull(Node.NodeValue) then
5005     begin
5006     if (pos('(', Node.NodeValue) = 0) then
5007     begin
5008     antlinIdag := antlinIdag + 1;
5009     end
5010     else
5011     begin
5012     antlinSenere := antlinSenere + 1;
5013     end;
5014     end;
5015     // 20150306: slut
5016     end;
5017     end;
5018     if (XmlFelter.values[Node.NodeName] <> '') then
5019     XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
5020     else
5021     XmlFelter.values[Node.NodeName] := '1';
5022    
5023     end;
5024     antalLiniefelter := XmlFelter.Count;
5025     antalFelterFundet := 0;
5026     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
5027     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
5028     // 20150206: start
5029     // logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';
5030     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5031     if (antlinSenere > 0) then
5032     begin
5033     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5034     end;
5035     logTekst := logTekst + '.';
5036     // 20150306: slut
5037     SkrivScanningLogFil(logTekst);
5038     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
5039     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
5040     if Node.NodeType = ntElement then begin
5041     if Node.NodeName = 'Stregkode' then begin
5042     if not VarIsNull(Node.NodeValue) then
5043     stregkode := Node.NodeValue;
5044     antalFelterFundet := antalFelterFundet + 1;
5045     end;
5046     if Node.NodeName = 'ModtagerNavn' then begin
5047     if not VarIsNull(Node.NodeValue) then
5048     modtagernavn := Node.NodeValue;
5049     antalFelterFundet := antalFelterFundet + 1;
5050     end;
5051     if Node.NodeName = 'ModtagerAdresse' then begin
5052     if not VarIsNull(Node.NodeValue) then
5053     modtageradresse := Node.NodeValue;
5054     antalFelterFundet := antalFelterFundet + 1;
5055     end;
5056     if Node.NodeName = 'Kommentar' then begin
5057     if not VarIsNull(Node.NodeValue) then
5058     kommentar := Node.NodeValue;
5059     antalFelterFundet := antalFelterFundet + 1;
5060     end;
5061     if Node.NodeName = 'PakkeType' then begin
5062     if not VarIsNull(Node.NodeValue) then
5063     pakketype := Node.NodeValue;
5064     antalFelterFundet := antalFelterFundet + 1;
5065     if (pakketyper.values[pakketype] <> '') then
5066     pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
5067     else
5068     pakketyper.values[pakketype] := '1';
5069     end;
5070     if Node.NodeName = 'TjekkodeStatus' then begin
5071     if not VarIsNull(Node.NodeValue) then
5072     tjekkodestatus := Node.NodeValue;
5073     antalFelterFundet := antalFelterFundet + 1;
5074     if (tjekkodestatus = '-1') then
5075     begin
5076     // 20150306: start
5077     // stregkoderMedTjekkodeArray[linienr] := stregkode;
5078     if (pos(' ', stregkode) > 0) then
5079     begin
5080     stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
5081     end
5082     else
5083     begin
5084     stregkoderMedTjekkodeArray[linienr] := stregkode;
5085     end;
5086     // 20150306: slut
5087     linienr := linienr + 1;
5088     end;
5089     end;
5090     if antalFelterFundet = antalLiniefelter then
5091     begin
5092     if (ScanningType = '1') then
5093     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5094     else if (ScanningType = '4') then
5095     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
5096     else if (ScanningType = '5') then
5097     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5098     else
5099     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
5100     antalFelterFundet := 0;
5101     tjekkodestatus := '';
5102     end;
5103     end;
5104     end;
5105     for pakketypeix := 0 to pakketyper.Count-1 do
5106     begin
5107     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
5108     end;
5109    
5110     // Free up the list object
5111     pakketyper.Free;
5112     // 20150306: start
5113     // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
5114     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5115     if (antlinSenere > 0) then
5116     begin
5117     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5118     end;
5119     logTekst := logTekst + '.';
5120     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
5121     // 20150306: slut
5122     // 20150309: start
5123     if (antlinSenere > 0) then
5124     begin
5125     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
5126     end
5127     else
5128     begin
5129     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
5130     end;
5131     // 20150309: slut
5132    
5133     // 20150310: start
5134     if (Scanningtype = '1') then
5135     begin
5136     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
5137     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
5138     if (antlinIdag + antlinSenere > 0) then
5139     begin
5140     PanelManglendePakker1.Visible := true;
5141     end
5142     else
5143     begin
5144     PanelManglendePakker1.Visible := false;
5145     end;
5146     end;
5147    
5148     if (Scanningtype = '2') then
5149     begin
5150     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
5151     if (antlinIdag + antlinSenere > 0) then
5152     begin
5153     PanelManglendePakker2.Visible := true;
5154     end
5155     else
5156     begin
5157     PanelManglendePakker2.Visible := false;
5158     end;
5159     end;
5160    
5161     if (Scanningtype = '3') then
5162     begin
5163     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
5164     if (antlinIdag + antlinSenere > 0) then
5165     begin
5166     PanelManglendePakker3.Visible := true;
5167     end
5168     else
5169     begin
5170     PanelManglendePakker3.Visible := false;
5171     end;
5172     end;
5173    
5174     if (Scanningtype = '4') then
5175     begin
5176     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
5177     if (antlinIdag + antlinSenere > 0) then
5178     begin
5179     PanelManglendePakker4.Visible := true;
5180     end
5181     else
5182     begin
5183     PanelManglendePakker4.Visible := false;
5184     end;
5185     end;
5186    
5187     if (Scanningtype = '5') then
5188     begin
5189     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
5190     if (antlinIdag + antlinSenere > 0) then
5191     begin
5192     PanelManglendePakker5.Visible := true;
5193     end
5194     else
5195     begin
5196     PanelManglendePakker5.Visible := false;
5197     end;
5198     end;
5199    
5200     if (Scanningtype = '6') then
5201     begin
5202     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
5203     if (antlinIdag + antlinSenere > 0) then
5204     begin
5205     PanelManglendePakker6.Visible := true;
5206     end
5207     else
5208     begin
5209     PanelManglendePakker6.Visible := false;
5210     end;
5211     end;
5212     // 20150310: slut
5213    
5214     except on e:exception do
5215     begin
5216     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
5217     logTekst := 'Fejl i XML-format: '+e.Message;
5218     SkrivScanningLogFil(logTekst);
5219     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
5220     end;
5221     end;
5222    
5223     end;
5224    
5225     procedure TMainForm.IndlesScanningLogFil();
5226     var
5227     SomeTxtFile : TextFile;
5228     buffer : string;
5229     S: string;
5230     idag, imorgen : TDateTime;
5231     imorgenYmd : string;
5232     logFilnavn : string;
5233    
5234     begin
5235     idag := Now;
5236     imorgen := IncDay(idag, 1); //adds 1 day(s)
5237     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5238     if (FormatDateTime('hh:nn',idag) < '12:00') then
5239     begin
5240     imorgen := idag;
5241     end;
5242     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5243     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
5244     if FileExists(logFilnavn) then
5245     begin
5246     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
5247     logTekst := logFilnavn+' indlæses.';
5248     SkrivScanningLogFil(logTekst);
5249     AssignFile(SomeTxtFile, logFilnavn);
5250     try
5251     Reset(SomeTxtFile);
5252     while not EOF(SomeTxtFile) do
5253     begin
5254     ReadLn(SomeTxtFile, buffer) ;
5255     S := buffer;
5256     ListBox1.Items.Insert(0, S);
5257     end;
5258     finally
5259     CloseFile(SomeTxtFile);
5260     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
5261     ListBox1.Items.Insert(0,'');
5262     ListBox1.Items.Insert(0,'');
5263     ListBox1.Items.Insert(0,'');
5264     ListBox1.Items.Insert(0,'');
5265     ListBox1.Items.Insert(0,'');
5266     ListBox1.Items.Insert(0,'');
5267     end;
5268     end;
5269     end;
5270    
5271     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
5272     var
5273     SomeTxtFile : TextFile;
5274     buffer : string;
5275     S: string;
5276     idag, imorgen : TDateTime;
5277     imorgenYmd : string;
5278     logFilnavn : string;
5279     error : Integer;
5280    
5281     begin
5282     if (SkrivLog = '1') then
5283     begin
5284     idag := Now;
5285     imorgen := IncDay(idag, 1); //adds 1 day(s)
5286     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5287     if (FormatDateTime('hh:nn',idag) < '12:00') then
5288     begin
5289     imorgen := idag;
5290     end;
5291     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5292     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
5293     // Get the current directory
5294     // dir := GetCurrentDir;
5295     // ShowMessage('Current directory = '+dir);
5296     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
5297     // ShowMessage('logFilnavn = '+logFilnavn);
5298    
5299     if not DirectoryExists('Logs') then
5300     begin
5301     CreateDir('Logs');
5302     end;
5303    
5304     AssignFile(SomeTxtFile, logFilnavn);
5305     if FileExists(logFilnavn) then
5306     begin
5307     try
5308     try
5309     Append(SomeTxtFile);
5310     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5311     except on e:exception do
5312     //ShowMessageFmt('File create failed with error %d',[error]);
5313     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
5314     end;
5315     finally
5316     CloseFile(SomeTxtFile);
5317     end;
5318     end
5319     else
5320     begin
5321     try
5322     try
5323     ReWrite(SomeTxtFile);
5324     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5325     except on e:exception do
5326     // ShowMessageFmt('File create failed with error %d',[error]);
5327     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
5328     end;
5329     finally
5330     CloseFile(SomeTxtFile);
5331     end;
5332     end;
5333     end;
5334     end;
5335    
5336     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
5337     var
5338     SomeTxtFile : TextFile;
5339     buffer : string;
5340     linnr : integer;
5341     S: string;
5342     A: TStrArray;
5343     idag, imorgen : TDateTime;
5344     imorgenYmd : string;
5345    
5346     begin
5347     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5348     logTekst := filnavn+' indlæses.';
5349     SkrivScanningLogFil(logTekst);
5350     SetLength(ruteHverdagArray, 1);
5351     SetLength(ruteLordagArray, 1);
5352     idag := Now;
5353     imorgen := IncDay(idag, 1); //adds 1 day(s)
5354     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5355     if (FormatDateTime('hh:nn',idag) < '12:00') then
5356     begin
5357     imorgen := idag;
5358     end;
5359     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5360     if FileExists(filnavn) then
5361     begin
5362     AssignFile(SomeTxtFile, filnavn);
5363     linnr := 0;
5364     try
5365     Reset(SomeTxtFile);
5366     while not EOF(SomeTxtFile) do
5367     begin
5368     ReadLn(SomeTxtFile, buffer) ;
5369     S := buffer;
5370     SetLength(A,0);
5371     Explode(A, ';', S);
5372     if (length(A) < 2) then
5373     begin
5374     Explode(A, ',', S);
5375     end;
5376     if (length(A) > 1) then
5377     begin
5378     SetLength(ruteHverdagArray, linnr+1);
5379     SetLength(ruteLordagArray, linnr+1);
5380     ruteHverdagArray[linnr] := A[0];
5381     ruteLordagArray[linnr] := A[1];
5382     linnr := linnr+1;
5383     end;
5384     end;
5385     finally
5386     //ShowMessage(IntToStr(length(A)));
5387     CloseFile(SomeTxtFile);
5388     //ShowMessage(IntToStr(length(ruteHverdagArray)));
5389     if (linnr > 0) then
5390     begin
5391     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5392     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5393     SkrivScanningLogFil(logTekst);
5394     end
5395     else
5396     begin
5397     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5398     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5399     SkrivScanningLogFil(logTekst);
5400     PlaySound(PWideChar(AlarmLyd));
5401     end;
5402     end;
5403     end
5404     else
5405     begin
5406     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5407     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5408     SkrivScanningLogFil(logTekst);
5409     PlaySound(PWideChar(AlarmLyd));
5410     end;
5411     end;
5412    
5413     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5414     var
5415     SomeTxtFile : TextFile;
5416     buffer : string;
5417     linnr : integer;
5418     S: string;
5419     A: TStrArray;
5420     idag, imorgen : TDateTime;
5421     imorgenYmd : string;
5422    
5423     begin
5424     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5425     logTekst := filnavn+' indlæses.';
5426     SkrivScanningLogFil(logTekst);
5427     SetLength(ruteArray, 1);
5428     SetLength(korelisteArray, 1);
5429     idag := Now;
5430     imorgen := IncDay(idag, 1); //adds 1 day(s)
5431     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5432     if (FormatDateTime('hh:nn',idag) < '12:00') then
5433     begin
5434     imorgen := idag;
5435     end;
5436     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5437     if FileExists(filnavn) then
5438     begin
5439     AssignFile(SomeTxtFile, filnavn);
5440     linnr := 0;
5441     try
5442     Reset(SomeTxtFile);
5443     while not EOF(SomeTxtFile) do
5444     begin
5445     ReadLn(SomeTxtFile, buffer) ;
5446     S := buffer;
5447     SetLength(A,0);
5448     Explode(A, ';', S);
5449     if (length(A) < 3) then
5450     begin
5451     Explode(A, ',', S);
5452     end;
5453     if (A[0]=imorgenYmd) then
5454     begin
5455     if (length(A) > 2) then
5456     begin
5457     SetLength(ruteArray, linnr+1);
5458     SetLength(korelisteArray, linnr+1);
5459     ruteArray[linnr] := A[1];
5460     korelisteArray[linnr] := A[2];
5461     linnr := linnr+1;
5462     end;
5463     end;
5464     end;
5465     finally
5466     //ShowMessage(IntToStr(length(A)));
5467     CloseFile(SomeTxtFile);
5468     //ShowMessage(IntToStr(length(ruteArray)));
5469     if (linnr > 0) then
5470     begin
5471     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5472     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5473     SkrivScanningLogFil(logTekst);
5474     end
5475     else
5476     begin
5477     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5478     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5479     SkrivScanningLogFil(logTekst);
5480     PlaySound(PWideChar(AlarmLyd));
5481     end;
5482     end;
5483     end
5484     else
5485     begin
5486     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5487     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5488     SkrivScanningLogFil(logTekst);
5489     PlaySound(PWideChar(AlarmLyd));
5490     end;
5491     end;
5492    
5493     //
5494     // Bladhus ***
5495     //
5496     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5497     var
5498     i : Integer;
5499     svar : String;
5500    
5501     begin
5502     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5503     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5504     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5505     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5506    
5507     svar := 'Køreliste ikke i kontrolfil';
5508     case BladhusSted of
5509     01 :
5510     begin;
5511     for i := 0 to length(ruteArray)-1 do
5512     begin
5513     if (Koreliste=ruteArray[i]) then
5514     begin
5515     svar := korelisteArray[i]; // returnerer den forventede køreliste
5516     end;
5517     end;
5518     end;
5519     // 02 : begin;
5520     //ShowMessage('02') ;
5521     // end;
5522     03 : begin;
5523     for i := 0 to length(ruteArray)-1 do
5524     begin
5525     if (Koreliste=ruteArray[i]) then
5526     begin
5527     svar := korelisteArray[i]; // returnerer den forventede køreliste
5528     end;
5529     end;
5530     end;
5531     // 04 : begin;
5532     //ShowMessage('04') ;
5533     // end;
5534     else
5535     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5536     end;
5537     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5538     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5539    
5540     result := svar;
5541     end;
5542    
5543     function TMainForm.getProddato() : TDate;
5544     var
5545     idag, imorgen : TDateTime;
5546     imorgenYmd : string;
5547    
5548     begin
5549     idag := Now;
5550     imorgen := IncDay(idag, 1); //adds 1 day(s)
5551     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5552     if (FormatDateTime('hh:nn',idag) < '12:00') then
5553     begin
5554     imorgen := idag;
5555     end;
5556     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
5557     result := StrToDateTime(imorgenYmd);
5558     end;
5559    
5560     function TMainForm.getProddag() : String;
5561     begin
5562     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
5563 torben 2650 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
5564 torben 2645 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
5565     end;
5566    
5567     function TMainForm.retRutenummer(rutenummer : String) : String;
5568     var
5569     i : Integer;
5570     svar : String;
5571    
5572     begin
5573     svar := rutenummer;
5574     case BladhusSted of
5575     01 :
5576     begin;
5577     //ShowMessage('01') ;
5578     end;
5579     // 02 : begin;
5580     //ShowMessage('02') ;
5581     // end;
5582     03 : begin;
5583     for i := 0 to length(ruteHverdagArray)-1 do
5584     begin
5585     if (rutenummer=ruteHverdagArray[i]) then
5586     begin
5587     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5588     end;
5589     end;
5590     end;
5591     // 04 : begin;
5592     //ShowMessage('04') ;
5593     // end;
5594     else
5595     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5596     end;
5597     result := svar;
5598     end;
5599    
5600     function TMainForm.GetCurrentPrinterHandle: THandle;
5601     var
5602     Device, Driver, Port: array[0..255] of Char;
5603     hDeviceMode: THandle;
5604     begin
5605     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5606     if not OpenPrinter(@Device, Result, nil) then
5607     RaiseLastWin32Error;
5608     end;
5609    
5610     function TMainForm.SavePChar(p: PChar): PChar;
5611     const
5612     error: PChar = 'Nil';
5613     begin
5614     if not Assigned(p) then
5615     Result := error
5616     else
5617     Result := p;
5618     end;
5619    
5620     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5621     begin
5622     if Scanogstjekkoden1.Checked then
5623     begin
5624     CheckBox3.Checked := true;
5625     end
5626     else
5627     begin
5628     CheckBox3.Checked := false;
5629     end;
5630     end;
5631    
5632     function TMainForm.AdobeReaderExists: Boolean;
5633     var
5634     AReg: TRegistry;
5635     begin
5636     result:= false;
5637     AReg := TRegistry.Create;
5638     AReg.RootKey := HKEY_LOCAL_MACHINE;
5639     if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then
5640     result:= True;
5641     AReg.Free;
5642     end;
5643    
5644     procedure TMainForm.CheckPrintQue(tjektype : string);
5645     type
5646     TJobs = array [0..1000] of JOB_INFO_1;
5647     PJobs = ^TJobs;
5648     var
5649     hPrinter: THandle;
5650     bytesNeeded, numJobs, i: Cardinal;
5651     pJ: PJobs;
5652     printerTxt, statusTxt, dokumentTxt: String;
5653     begin
5654    
5655     // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5656     // 'Test' skal vise alarmlinie, samt opdatere listbox1
5657     // 'Timer' skal kun vise alarmlinie
5658    
5659     if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5660     begin
5661     printerTxt := 'Der er fravalgt printer i dette program';
5662     ListBox1.Items.Insert(0,printerTxt);
5663     SkrivScanningLogFil(printerTxt);
5664     end
5665     else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5666     begin
5667     printerTxt := 'Der er ikke installeret en printer på denne PC';
5668     ListBox1.Items.Insert(0,printerTxt);
5669     SkrivScanningLogFil(printerTxt);
5670     end
5671     else
5672     begin
5673     hPrinter := GetCurrentPrinterHandle;
5674     try
5675     EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5676     pJ := AllocMem(bytesNeeded);
5677     if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5678     RaiseLastWin32Error;
5679    
5680     if numJobs = 0 then
5681     begin
5682     if (tjektype = 'Test') then
5683     begin
5684     logTekst := printerTxt + ': Ingen dokumenter i kø';
5685     ListBox1.Items.Insert(0,logTekst);
5686     SkrivScanningLogFil(logTekst);
5687     end;
5688     PrinterstatusStaticText1.Caption := '';
5689     PrinterstatusStaticText1.Color := MainForm.Color;
5690     end
5691     else // så er der kø til printeren
5692     begin
5693     printerTxt := SavePChar(pJ^[0].pPrinterName);
5694     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5695     begin
5696     logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5697     ListBox1.Items.Insert(0,logTekst);
5698     SkrivScanningLogFil(logTekst);
5699     end;
5700     for i := 0 to Pred(numJobs) do
5701     begin
5702     printerTxt := SavePChar(pJ^[i].pPrinterName);
5703     statusTxt := 'Ukendt';
5704     if (IntToStr(pJ^[i].Status) = '0') then
5705     statusTxt := 'Venter...';
5706     if (IntToStr(pJ^[i].Status) = '4096') then
5707     statusTxt := 'Printer...';
5708     if (IntToStr(pJ^[i].Status) = '8210') then
5709     statusTxt := 'Printerfejl';
5710     if (IntToStr(pJ^[i].Status) = '8214') then
5711     statusTxt := 'Sletter print...';
5712    
5713     dokumentTxt := SavePChar(pJ^[i].pDocument);
5714     if (dokumentTxt = '') then
5715     dokumentTxt := 'Uden navn';
5716    
5717     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5718     begin
5719     logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5720     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5721     ListBox1.Items.Insert(0,logTekst);
5722     SkrivScanningLogFil(logTekst);
5723     end;
5724    
5725     if (i = 0) then
5726     begin
5727     PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5728     PrinterstatusStaticText1.Font.Color := clBlack;
5729     PrinterstatusStaticText1.Color := MainForm.Color;
5730     PrinterstatusStaticText1.Transparent := True;
5731     if (numJobs > 3) then
5732     begin
5733     PrinterstatusStaticText1.Font.Color := clRed;
5734     PrinterstatusStaticText1.Color := clWhite;
5735     PrinterstatusStaticText1.Transparent := true;
5736     end;
5737     end;
5738    
5739     end;
5740     end
5741     finally
5742     ClosePrinter(hPrinter);
5743     end;
5744     end;
5745     end;
5746    
5747     function TMainForm.CheckUrl(url:string):boolean;
5748     var
5749     hSession, hfile, hRequest: hInternet;
5750     dwindex,dwcodelen :dword;
5751     dwcode:array[1..20] of char;
5752     res : pchar;
5753     begin
5754     if pos('http://',lowercase(url))=0 then
5755     url := 'http://'+url;
5756     Result := false;
5757     hSession := InternetOpen('InetURL:/1.0',
5758     INTERNET_OPEN_TYPE_PRECONFIG,
5759     nil,
5760     nil,
5761     0);
5762     if assigned(hsession) then
5763     begin
5764     hfile := InternetOpenUrl(hsession,
5765     pchar(url),
5766     nil,
5767     0,
5768     INTERNET_FLAG_RELOAD,
5769     0);
5770     dwIndex := 0;
5771     dwCodeLen := 10;
5772     HttpQueryInfo(hfile,
5773     HTTP_QUERY_STATUS_CODE,
5774     @dwcode,
5775     dwcodeLen,
5776     dwIndex);
5777     res := pchar(@dwcode);
5778     result:= (res ='200') or (res ='302');
5779     if assigned(hfile) then
5780     InternetCloseHandle(hfile);
5781     InternetCloseHandle(hsession);
5782     end;
5783    
5784     end;
5785    
5786     // 20150310: start
5787     procedure TMainForm.RoundCornerOf(Control: TWinControl);
5788     var
5789     R: TRect;
5790     Rgn: HRGN;
5791     begin
5792     with Control do
5793     begin
5794     R := ClientRect;
5795     // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
5796     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;
5797     // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;
5798     Perform(EM_GETRECT, 0, lParam(@r)) ;
5799     InflateRect(r, - 4, - 4) ;
5800     Perform(EM_SETRECTNP, 0, lParam(@r)) ;
5801     SetWindowRgn(Handle, rgn, True) ;
5802     Invalidate;
5803     end;
5804     end;
5805     // 20150310: slut
5806    
5807     end.
5808    

  ViewVC Help
Powered by ViewVC 1.1.20