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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2650 - (hide annotations) (download)
Thu Aug 20 20:58:26 2015 UTC (8 years, 9 months ago) by torben
File size: 203729 byte(s)
Form resize and added new panel
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     CheckBox2: TCheckBox;
63     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     procedure CheckBox2Click(Sender: TObject);
158     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     CheckBox2.Checked := true;
476     end
477     else
478     begin
479     CheckBox2.Checked := false;
480     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     if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or CheckBox2.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2766     begin
2767     logTekst := 'Printer label type ';
2768     if (CheckBox2.Checked) then
2769     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     procedure TMainForm.CheckBox2Click(Sender: TObject);
2879     begin
2880     if CheckBox2.Checked then
2881     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     CheckBox2.Enabled := true;
3820     Altidprintepakkelabel1.Enabled := true;
3821     Altidprintepakkelabel1.Checked := false;
3822     CheckBox2.Checked := false;
3823     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     CheckBox2.Enabled := false;
3852     Altidprintepakkelabel1.Enabled := false;
3853     CheckBox2.Checked := false;
3854     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     CheckBox2.Enabled := false;
3879     Altidprintepakkelabel1.Enabled := false;
3880     CheckBox2.Checked := false;
3881     Altidprintepakkelabel1.Checked := false;
3882     Sprgefterboghandlernummer1.Checked := false;
3883     CheckBox1.Checked := false;
3884     Sprgefterboghandlernummer1.Enabled := false;
3885     Smpakker1.Enabled := true;
3886     Storepakker1.Enabled := true;
3887     RadioButton1.Enabled := true;
3888     RadioButton2.Enabled := true;
3889     ListBox1.Visible := true;
3890     ListBox1.Items.Clear;
3891     ListBox2.Items.Clear;
3892     EKLoverforsel.Enabled := false;
3893     InitLillePakke();
3894     end;
3895    
3896     procedure TMainForm.InitDirektelevering();
3897     begin
3898     AutomatiskTjekkodeStyring1.Enabled := false;
3899     Budlevering1.Checked := true;
3900     PakkeshopNulstil.Visible := false;
3901     InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3902     PanelValg4.Color := clGreen;
3903     PanelValg4.Font.Color := clWhite;
3904     CheckBox1.Enabled := false;
3905     CheckBox2.Enabled := false;
3906     Altidprintepakkelabel1.Enabled := false;
3907     CheckBox2.Checked := false;
3908     Altidprintepakkelabel1.Checked := false;
3909     Sprgefterboghandlernummer1.Checked := false;
3910     CheckBox1.Checked := false;
3911     Sprgefterboghandlernummer1.Enabled := false;
3912     Smpakker1.Enabled := true;
3913     Storepakker1.Enabled := true;
3914     RadioButton1.Enabled := true;
3915     RadioButton2.Enabled := true;
3916     ListBox1.Visible := true;
3917     ListBox1.Items.Clear;
3918     DownloadButton01.Enabled := false;
3919     OpdaterListenButton01.Enabled := true;
3920     DownloadButton03.Visible := false;
3921     EKLoverforsel.Enabled := false;
3922     IdFTP1.Passive := true;
3923     IdFTP1.PassiveUseControlHost := true;
3924     if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3925     begin
3926     IndlesScanningLogFil();
3927     IndlesManglendeScanninger();
3928     end;
3929    
3930     end;
3931    
3932     procedure TMainForm.InitPakkeshoplevering();
3933     begin
3934     AutomatiskTjekkodeStyring1.Enabled := true;
3935     Pakkeshoplevering1.Checked := true;
3936     PakkeshopNulstil.Visible := false;
3937     InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3938     PanelValg5.Color := clGreen;
3939     PanelValg5.Font.Color := clWhite;
3940     CheckBox1.Enabled := false;
3941     CheckBox2.Enabled := false;
3942     Altidprintepakkelabel1.Enabled := false;
3943     CheckBox2.Checked := false;
3944     Altidprintepakkelabel1.Checked := false;
3945     Sprgefterboghandlernummer1.Checked := false;
3946     CheckBox1.Checked := false;
3947     Sprgefterboghandlernummer1.Enabled := false;
3948     Smpakker1.Enabled := false;
3949     Storepakker1.Enabled := false;
3950     RadioButton1.Enabled := false;
3951     RadioButton2.Enabled := false;
3952     ListBox1.Visible := true;
3953     ListBox1.Items.Clear;
3954     DownloadButton01.Enabled := false;
3955     OpdaterListenButton01.Enabled := true;
3956     // 20150330: start
3957     // EKLoverforsel.Enabled := false;
3958     EKLoverforsel.Enabled := true;
3959     // 20150330: slut
3960     InitLillePakke();
3961     IndlesScanningLogFil();
3962     if BladhusSted = 0 then
3963     begin
3964     IndlesManglendeScanninger();
3965     end;
3966     IdFTP1.Passive := true;
3967     IdFTP1.PassiveUseControlHost := true;
3968     end;
3969    
3970     procedure TMainForm.InitReturFraPakkeshop();
3971     begin
3972     AutomatiskTjekkodeStyring1.Enabled := false;
3973     Returpakkerfrapakkeshop1.Checked := true;
3974     PakkeshopNulstil.Visible := false;
3975     InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3976     PanelValg6.Color := clGreen;
3977     PanelValg6.Font.Color := clWhite;
3978     CheckBox1.Enabled := false;
3979     CheckBox2.Enabled := false;
3980     Altidprintepakkelabel1.Enabled := false;
3981     CheckBox2.Checked := false;
3982     Altidprintepakkelabel1.Checked := false;
3983     Sprgefterboghandlernummer1.Checked := false;
3984     CheckBox1.Checked := false;
3985     Sprgefterboghandlernummer1.Enabled := false;
3986     Smpakker1.Enabled := false;
3987     Storepakker1.Enabled := false;
3988     RadioButton1.Enabled := false;
3989     RadioButton2.Enabled := false;
3990     ListBox1.Visible := true;
3991     ListBox1.Items.Clear;
3992     DownloadButton01.Enabled := false;
3993     OpdaterListenButton01.Enabled := true;
3994     EKLoverforsel.Enabled := false;
3995     InitLillePakke();
3996     IndlesScanningLogFil();
3997     if BladhusSted = 0 then
3998     begin
3999     IndlesManglendeScanninger();
4000     end;
4001     IdFTP1.Passive := true;
4002     IdFTP1.PassiveUseControlHost := true;
4003     end;
4004    
4005     procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
4006     begin
4007     Scanningtype := '3';
4008     NulstilAutomatiskValg();
4009     InitReturFraKunde();
4010     end;
4011    
4012 torben 2650 procedure TMainForm.InitIndleveringskode();
4013     begin
4014     AutomatiskTjekkodeStyring1.Enabled := false;
4015     Returpakkerfrapakkeshop1.Checked := true;
4016     PakkeshopNulstil.Visible := false;
4017     InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
4018     PanelValg7.Color := clGreen;
4019     PanelValg7.Font.Color := clWhite;
4020     CheckBox1.Enabled := false;
4021     CheckBox2.Enabled := false;
4022     Altidprintepakkelabel1.Enabled := false;
4023     CheckBox2.Checked := false;
4024     Altidprintepakkelabel1.Checked := false;
4025     Sprgefterboghandlernummer1.Checked := false;
4026     CheckBox1.Checked := false;
4027     Sprgefterboghandlernummer1.Enabled := false;
4028     Smpakker1.Enabled := false;
4029     Storepakker1.Enabled := false;
4030     RadioButton1.Enabled := false;
4031     RadioButton2.Enabled := false;
4032     ListBox1.Visible := true;
4033     ListBox1.Items.Clear;
4034     DownloadButton01.Enabled := false;
4035     OpdaterListenButton01.Enabled := true;
4036     EKLoverforsel.Enabled := false;
4037     InitLillePakke();
4038     IndlesScanningLogFil();
4039     if BladhusSted = 0 then
4040     begin
4041     IndlesManglendeScanninger();
4042     end;
4043     IdFTP1.Passive := true;
4044     IdFTP1.PassiveUseControlHost := true;
4045     end;
4046    
4047    
4048 torben 2645 procedure TMainForm.Storepakker1Click(Sender: TObject);
4049     begin
4050     InitStorPakke();
4051     end;
4052    
4053     procedure TMainForm.Smpakker1Click(Sender: TObject);
4054     begin
4055     InitLillePakke();
4056     end;
4057    
4058     procedure TMainForm.InitLillePakke();
4059     begin
4060     RadioButton2.Checked := true;
4061     Smpakker1.Checked := true;
4062     // 20150310: start
4063     // Stregkode := '';
4064     // 20150310: slut
4065     end;
4066    
4067     procedure TMainForm.InitStorPakke();
4068     begin
4069     RadioButton1.Checked := true;
4070     Storepakker1.Checked := true;
4071     // 20150310: start
4072     // Stregkode := '';
4073     // 20150310: slut
4074     end;
4075    
4076     /// <summary>
4077     /// This function reads the file resource of "FileName" and returns
4078     /// the version number as formatted text.</summary>
4079     /// <example>
4080     /// Sto_GetFmtFileVersion() = '4.13.128.0'
4081     /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
4082     /// </example>
4083     /// <remarks>If "Fmt" is invalid, the function may raise an
4084     /// EConvertError exception.</remarks>
4085     /// <param name="FileName">Full path to exe or dll. If an empty
4086     /// string is passed, the function uses the filename of the
4087     /// running exe or dll.</param>
4088     /// <param name="Fmt">Format string, you can use at most four integer
4089     /// values.</param>
4090     /// <returns>Formatted version number of file, '' if no version
4091     /// resource found.</returns>
4092     function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';
4093     const Fmt: String = '%d.%d.%d.%d'): String;
4094     var
4095     sFileName: String;
4096     iBufferSize: DWORD;
4097     iDummy: DWORD;
4098     pBuffer: Pointer;
4099     pFileInfo: Pointer;
4100     iVer: array[1..4] of Word;
4101     S : String;
4102     begin
4103     // set default value
4104     Result := '';
4105     // get filename of exe/dll if no filename is specified
4106     sFileName := Trim(FileName);
4107     if (sFileName = '') then
4108     sFileName := GetModuleName(HInstance);
4109     // get size of version info (0 if no version info exists)
4110     iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
4111     if (iBufferSize > 0) then
4112     begin
4113     GetMem(pBuffer, iBufferSize);
4114     try
4115     // get fixed file info (language independent)
4116     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
4117     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
4118     // read version blocks
4119     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4120     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4121     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4122     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4123     finally
4124     FreeMem(pBuffer);
4125     end;
4126     // format result string
4127     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
4128    
4129     // Hvorfor virker ovenstående ikke ???
4130     S := '';
4131     Str(iVer[1],Result);
4132     S := S+Result+'.';
4133     Str(iVer[2],Result);
4134     S := S+Result+'.';
4135     Str(iVer[3],Result);
4136     S := S+Result+'.';
4137     Str(iVer[4],Result);
4138     S := S+Result+'';
4139     Result := S;
4140     end;
4141     end;
4142    
4143     procedure TMainForm.PlaySound(filename : PWideChar);
4144     begin
4145     if (filename <> '') then
4146     begin
4147     sndPlaySound(filename,
4148     SND_NODEFAULT Or SND_ASYNC);
4149     end;
4150     end;
4151    
4152     procedure TMainForm.Testlyd1Click(Sender: TObject);
4153     begin
4154     if AlarmLyd <> '' then
4155     begin
4156     PlaySound(PWideChar(AlarmLyd));
4157     end
4158     else
4159     begin
4160     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
4161     end;
4162     end;
4163    
4164     procedure TMainForm.Testlyd2Click(Sender: TObject);
4165     begin
4166     // 20150317: start
4167     if (PakkeshopText1.Caption = 'Tjekkode') then
4168     begin
4169     if ScannetOkTilTjekkodeLyd <> '' then
4170     begin
4171     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
4172     end
4173     else
4174     begin
4175     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
4176     end;
4177     exit;
4178     end;
4179     // 20150317: slut
4180    
4181     if Smpakker1.Checked then
4182     if ScannetOkLyd <> '' then
4183     begin
4184     PlaySound(PWideChar(ScannetOkLyd));
4185     end
4186     else
4187     begin
4188     // 20150317: start
4189     // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);
4190     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
4191     // 20150317: slut
4192     end;
4193     if Storepakker1.Checked then
4194     if ScannetOkStorLyd <> '' then
4195     begin
4196     PlaySound(PWideChar(ScannetOkStorLyd));
4197     end
4198     else
4199     begin
4200     // 20150317: start
4201     // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);
4202     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
4203     // 20150317: slut
4204     end;
4205     end;
4206    
4207    
4208     procedure TMainForm.Budlevering1Click(Sender: TObject);
4209     begin
4210     Scanningtype := '4';
4211     NulstilAutomatiskValg();
4212     InitDirektelevering();
4213     end;
4214    
4215     procedure TMainForm.Button1Click(Sender: TObject);
4216     begin;
4217     CheckCode();
4218     end;
4219    
4220     procedure TMainForm.EKLoverforselClick(Sender: TObject);
4221     var
4222     WebSvar : String;
4223     URLStr : String;
4224     StedKode : String;
4225     Node: IXMLNode;
4226     I: Integer;
4227     status, kommentar : String;
4228    
4229     begin
4230     EKLoverforsel.Enabled := false;
4231    
4232     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
4233     logTekst := 'Overfører de scannede pakker til EKL';
4234     SkrivScanningLogFil(logTekst);
4235     StedKode := Sted;
4236     URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
4237     // 20150330: start
4238     if PanelValg5.Color = clGreen then
4239     begin
4240     URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
4241     end;
4242     // 20150330: slut
4243    
4244     try
4245     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4246     WebSvar := IdHTTP1.Get(URLStr);
4247     except
4248     on e:EIdConnClosedGracefully do
4249     begin
4250     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4251     WebSvar := IdHTTP1.Get(URLStr);
4252     end;
4253     on e:exception do
4254     begin
4255     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4256     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4257     SkrivScanningLogFil(logTekst);
4258     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4259     end;
4260     end;
4261     try
4262     XMLDocument1.LoadFromXML(WebSvar);
4263     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4264     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4265     if Node.NodeType = ntElement then begin
4266     if Node.NodeName = 'Status' then begin
4267     if not VarIsNull(Node.NodeValue) then
4268     status := Node.NodeValue;
4269     end;
4270     if Node.NodeName = 'Kommentar' then begin
4271     if not VarIsNull(Node.NodeValue) then
4272     kommentar := Node.NodeValue;
4273     end;
4274     end;
4275     end;
4276    
4277     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
4278     logTekst := 'Overførsel til EKL: ' + status;
4279     SkrivScanningLogFil(logTekst);
4280    
4281     except on e:exception do
4282     begin
4283     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
4284     logTekst := 'Overførsel til EKL: ' + status;
4285     SkrivScanningLogFil(logTekst);
4286     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4287     logTekst := 'Fejl i XML-format: '+e.Message;
4288     SkrivScanningLogFil(logTekst);
4289     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4290     end;
4291     end;
4292    
4293     EKLoverforsel.Enabled := true;
4294    
4295     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4296    
4297     // Hvis der var fejl i overførslen skal dette fejlmeldes her
4298     if status = 'Fejl' then
4299     begin // Her skal komme en alarm og rød skærm
4300     PlaySound(PWideChar(AlarmLyd));
4301     MainForm.Color := clRed;
4302     RutenummerST.Caption := 'EKL overførsel';
4303     BoghandlerNavnST.Caption := 'Fejl:';
4304     if (pos('Deadlock', Kommentar) > 0) then
4305     begin
4306     RutenummerST.Caption := 'EKL overførsel fejlet';
4307     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
4308     end;
4309     KommentarST.Caption := Kommentar;
4310     PakkeshopNulstil.Visible := true;
4311     end;
4312    
4313     end;
4314    
4315     procedure TMainForm.CheckCode();
4316     var
4317     Barcode, Svar : String;
4318     ClickedOK : Boolean;
4319     begin
4320     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4321     if ClickedOk then
4322     begin
4323     { if (BarCodeValid(Barcode)) then
4324     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4325     else
4326     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4327     }
4328     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4329     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4330     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4331     else
4332     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4333     }
4334     Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4335    
4336     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4337     CheckCode();
4338     end;
4339    
4340     end;
4341    
4342     function TMainForm.BarCodeValid (ACode: string): boolean;
4343     var
4344     I: integer;
4345     SumOdd, SumEven: integer;
4346     ADigit, AChecksumDigit: integer;
4347     begin
4348     SumOdd := 0;
4349     SumEven := 0;
4350     for I := 1 to (Length (ACode) - 1) do begin
4351     ADigit := StrToIntDef (ACode [I], 0);
4352     if (I MOD 2 = 0) then begin
4353     SumEven := SumEven + ADigit;
4354     end else begin
4355     SumOdd := SumOdd + ADigit;
4356     end; {if}
4357     end; {for}
4358     AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);
4359     Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);
4360     end; {--BarCodeValid--}
4361    
4362     { used for EAN 8/13 }
4363     function TMainForm.CheckSumModulo10(const data:string):string;
4364     var i,fak,sum : Integer;
4365     begin
4366     sum := 0;
4367     fak := Length(data);
4368     for i:=1 to Length(data) do
4369     begin
4370     if (fak mod 2) = 0 then
4371     sum := sum + (StrToInt(data[i])*1)
4372     else
4373     sum := sum + (StrToInt(data[i])*3);
4374     dec(fak);
4375     end;
4376     if (sum mod 10) = 0 then
4377     result := data+'0'
4378     else
4379     result := data+IntToStr(10-(sum mod 10));
4380     end;
4381    
4382     //
4383     // Bladhus ***
4384     //
4385     procedure TMainForm.DownloadBladhusRuteskiftfil();
4386     const
4387     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4388    
4389     var
4390     filnavn_input : string;
4391     filnavn_output : string;
4392     buttonSelected : Integer;
4393    
4394     begin
4395     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4396     filnavn_output := BladhusRuteskiftfil_lokal;
4397    
4398     case BladhusSted of
4399     00 : begin;
4400     end;
4401     01 : begin;
4402     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4403     if buttonSelected = mrOK then
4404     begin
4405     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4406     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4407     SkrivScanningLogFil(logTekst);
4408     try
4409     try
4410    
4411     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4412     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4413     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4414     IdFTP1.Connect;
4415    
4416     //IdFTP1.TransferType := ftASCII;
4417     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4418     try
4419     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4420     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4421     except on e:EIdConnClosedGracefully do
4422     begin
4423     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4424     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4425     end;
4426     end;
4427     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4428    
4429     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4430     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4431     SkrivScanningLogFil(logTekst);
4432    
4433     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4434     logTekst := 'Ruteskift fil tjekkes.';
4435     SkrivScanningLogFil(logTekst);
4436    
4437     finally
4438     IdFTP1.Disconnect;
4439     end;
4440    
4441     except on e:exception do
4442     begin
4443     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4444     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4445     SkrivScanningLogFil(logTekst);
4446     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4447     [e.Message
4448     + CrLf + 'Host: '+IdFTP1.host
4449     + CrLf + 'Username: '+IdFTP1.Username
4450     ]
4451     );
4452     end;
4453     end;
4454     end
4455     else
4456     begin
4457     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4458     logTekst := 'Download af ruteskiftfil annulleret';
4459     SkrivScanningLogFil(logTekst);
4460     end;
4461     IndlesRuteskiftFil(filnavn_output);
4462     end;
4463     02 : begin;
4464     end;
4465     03 : begin;
4466     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4467     if buttonSelected = mrOK then
4468     begin
4469     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4470     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4471     SkrivScanningLogFil(logTekst);
4472     try
4473     try
4474    
4475     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4476     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4477     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4478     IdFTP1.Connect;
4479    
4480     //IdFTP1.TransferType := ftASCII;
4481     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4482     try
4483     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4484     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4485     except on e:EIdConnClosedGracefully do
4486     begin
4487     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4488     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4489     end;
4490     end;
4491     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4492    
4493     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4494     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4495     SkrivScanningLogFil(logTekst);
4496    
4497     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4498     logTekst := 'Ruteskift fil tjekkes.';
4499     SkrivScanningLogFil(logTekst);
4500    
4501     finally
4502     IdFTP1.Disconnect;
4503     end;
4504    
4505     except on e:exception do
4506     begin
4507     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4508     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4509     SkrivScanningLogFil(logTekst);
4510     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4511     [e.Message
4512     + CrLf + 'Host: '+IdFTP1.host
4513     + CrLf + 'Username: '+IdFTP1.Username
4514     ]
4515     );
4516     end;
4517     end;
4518     end
4519     else
4520     begin
4521     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4522     logTekst := 'Download af ruteskiftfil annulleret';
4523     SkrivScanningLogFil(logTekst);
4524     end;
4525     IndlesRuteskiftFil(filnavn_output);
4526     end;
4527     04 : begin;
4528     end;
4529     else
4530     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4531     end;
4532    
4533     end;
4534    
4535     procedure TMainForm.DownloadBladhusKontrolfil();
4536     const
4537     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4538    
4539     var
4540     filnavn_input : string;
4541     filnavn_output : string;
4542     buttonSelected : Integer;
4543    
4544     begin
4545     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4546     filnavn_output := BladhusKontrolfil_lokal;
4547    
4548     case BladhusSted of
4549     01 :
4550     begin;
4551     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4552     if buttonSelected = mrOK then
4553     begin
4554     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4555     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4556     SkrivScanningLogFil(logTekst);
4557     try
4558     try
4559    
4560     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4561     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4562     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4563     IdFTP1.Connect;
4564    
4565     //IdFTP1.TransferType := ftASCII;
4566     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4567     try
4568     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4569     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4570     except on e:EIdConnClosedGracefully do
4571     begin
4572     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4573     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4574     end;
4575     end;
4576     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4577    
4578     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4579     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4580     SkrivScanningLogFil(logTekst);
4581    
4582     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4583     logTekst := 'Rute kontrol fil tjekkes.';
4584     SkrivScanningLogFil(logTekst);
4585    
4586     finally
4587     IdFTP1.Disconnect;
4588     end;
4589    
4590     except on e:exception do
4591     begin
4592     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4593     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4594     SkrivScanningLogFil(logTekst);
4595     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4596     [e.Message
4597     + CrLf + 'Host: '+IdFTP1.host
4598     + CrLf + 'Username: '+IdFTP1.Username
4599     ]
4600     );
4601     end;
4602     end;
4603     end
4604     else
4605     begin
4606     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4607     logTekst := 'Download af kontrolfil annulleret';
4608     SkrivScanningLogFil(logTekst);
4609     end;
4610     IndlesKontrolFil(filnavn_output);
4611     end;
4612     02 : begin;
4613     end;
4614     03 : begin;
4615     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4616     if buttonSelected = mrOK then
4617     begin
4618     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4619     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4620     SkrivScanningLogFil(logTekst);
4621     try
4622     try
4623    
4624     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4625     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4626     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4627     IdFTP1.Connect;
4628    
4629     //IdFTP1.TransferType := ftASCII;
4630     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4631     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4632    
4633     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4634     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4635     SkrivScanningLogFil(logTekst);
4636    
4637     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4638     logTekst := 'Rute kontrol fil tjekkes.';
4639     SkrivScanningLogFil(logTekst);
4640    
4641     finally
4642     IdFTP1.Disconnect;
4643     end;
4644    
4645     except on e:exception do
4646     begin
4647     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4648     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4649     SkrivScanningLogFil(logTekst);
4650     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4651     [e.Message
4652     + CrLf + 'Host: '+IdFTP1.host
4653     + CrLf + 'Username: '+IdFTP1.Username
4654     ]
4655     );
4656     end;
4657     end;
4658     end
4659     else
4660     begin
4661     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4662     logTekst := 'Download af kontrolfil annulleret';
4663     SkrivScanningLogFil(logTekst);
4664     end;
4665     IndlesKontrolFil(filnavn_output);
4666     end;
4667     04 : begin;
4668     end;
4669     else
4670     ShowMessage('Ukendt Bladhus sted ???') ;
4671     end;
4672    
4673     end;
4674    
4675     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4676     const
4677     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4678    
4679     var
4680     testsystem : String;
4681    
4682     begin
4683     testsystem := '';
4684     if (Pos('omdeling.info',Url) = 0) then
4685     begin
4686     testsystem := 'TEST_';
4687     end;
4688     filnavn_output := testsystem + filnavn_output;
4689    
4690     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4691     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4692     SkrivScanningLogFil(logTekst);
4693     try
4694     try
4695    
4696     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4697     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4698     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4699     IdFTP1.Connect;
4700    
4701     //IdFTP1.TransferType := ftASCII;
4702     try
4703     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4704     IdFTP1.ChangeDir('fraScannerprogram');
4705     IdFTP1.Put(filnavn_input, filnavn_output, True);
4706     except on e:EIdConnClosedGracefully do
4707     begin
4708     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4709     IdFTP1.Put(filnavn_input, filnavn_output, True);
4710     end;
4711     end;
4712     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4713    
4714     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4715     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4716     SkrivScanningLogFil(logTekst);
4717    
4718     finally
4719     IdFTP1.Disconnect;
4720     end;
4721    
4722     except on e:exception do
4723     begin
4724     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4725     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4726     SkrivScanningLogFil(logTekst);
4727     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4728     [e.Message
4729     + CrLf + 'Host: '+IdFTP1.host
4730     + CrLf + 'Username: '+IdFTP1.Username
4731     ]
4732     );
4733     end;
4734     end;
4735     end;
4736    
4737     procedure TMainForm.UploadLogfilTilDAO();
4738     const
4739     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4740    
4741     var
4742     idag, imorgen : TDateTime;
4743     imorgenYmd : string;
4744     logFilnavn : string;
4745     filnavn_input : string;
4746     filnavn_output : string;
4747     buttonSelected : Integer;
4748     openDialog : TOpenDialog;
4749    
4750     begin
4751     idag := Now;
4752     imorgen := IncDay(idag, 1); //adds 1 day(s)
4753     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4754     if (FormatDateTime('hh:nn',idag) < '12:00') then
4755     begin
4756     imorgen := idag;
4757     end;
4758     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4759     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4760     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4761     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4762    
4763     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4764     if buttonSelected = mrOK then
4765     begin
4766     SendFilTilDao('Log', filnavn_input, filnavn_output);
4767     end
4768     else
4769     begin
4770     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4771     if buttonSelected = mrOK then
4772     begin
4773     // Create the open dialog object - assign to our open dialog variable
4774     openDialog := TOpenDialog.Create(self);
4775    
4776     // Set up the starting directory to be the current one
4777     openDialog.InitialDir := GetCurrentDir + '\Logs';
4778    
4779     // Only allow existing files to be selected
4780     openDialog.Options := [ofFileMustExist];
4781    
4782     // Allow only .log files to be selected
4783     openDialog.Filter := 'Log filer|*.log';
4784    
4785     // Display the open file dialog
4786     if openDialog.Execute then
4787     begin
4788     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4789     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4790     SendFilTilDao('Log', filnavn_input, filnavn_output);
4791     end
4792     else
4793     begin
4794     logTekst := 'Upload af log fil annulleret';
4795     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4796     SkrivScanningLogFil(logTekst);
4797     end;
4798    
4799     // Free up the dialog
4800     openDialog.Free;
4801     end
4802     else
4803     begin
4804     logTekst := 'Upload af log fil annulleret';
4805     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4806     SkrivScanningLogFil(logTekst);
4807     end;
4808     end;
4809    
4810     end;
4811    
4812     procedure TMainForm.UploadInifilTilDAO();
4813     const
4814     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4815    
4816     var
4817     idag, imorgen : TDateTime;
4818     imorgenYmd : string;
4819     iniFilnavn : string;
4820     filnavn_input : string;
4821     filnavn_output : string;
4822     buttonSelected : Integer;
4823    
4824     begin
4825     idag := Now;
4826     imorgen := IncDay(idag, 1); //adds 1 day(s)
4827     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4828     if (FormatDateTime('hh:nn',idag) < '12:00') then
4829     begin
4830     imorgen := idag;
4831     end;
4832     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4833     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4834     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4835     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4836    
4837     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4838     if buttonSelected = mrOK then
4839     begin
4840     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4841     end
4842     else
4843     begin
4844     logTekst := 'Upload af ini fil annulleret';
4845     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4846     SkrivScanningLogFil(logTekst);
4847     end;
4848    
4849     end;
4850    
4851     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4852     begin
4853     UploadLogfilTilDAO();
4854     UploadInifilTilDAO();
4855     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4856     end;
4857    
4858     procedure TMainForm.DownloadButton01Click(Sender: TObject);
4859     begin
4860     DownloadBladhusKontrolfil();
4861     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4862     end;
4863    
4864     procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4865     const
4866     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4867    
4868     begin
4869     IndlesManglendeScanninger();
4870     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4871     end;
4872    
4873     procedure TMainForm.DownloadButton03Click(Sender: TObject);
4874     begin
4875     if (getProddag() = 'lørdag') then
4876     begin
4877     DownloadBladhusRuteskiftfil();
4878     end;
4879     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4880     end;
4881    
4882     function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;
4883     var
4884     S2: string;
4885     begin
4886     Result := 0;
4887     S2 := S + Border;
4888     repeat
4889     SetLength(A, Length(A) + 1);
4890     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
4891     Delete(S2, 1,Length(a[Result] + Border));
4892     Inc(Result);
4893     until S2 = '';
4894     end;
4895    
4896     procedure TMainForm.IndlesManglendeScanninger();
4897     var
4898     WebSvar : String;
4899     URLStr : String;
4900     StedKode : String;
4901     Node: IXMLNode;
4902     I: Integer;
4903     stregkode, modtagernavn, modtageradresse, kommentar : string;
4904     pakketype, tjekkodestatus : String;
4905     pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4906     pakketyper : TStrings;
4907     antlin : Integer;
4908     // 20150306: start
4909     antlinIdag, antlinSenere : Integer;
4910     // 20150306: slut
4911     XmlFelter : TStrings;
4912    
4913     begin
4914     XmlFelter := TStringList.Create;
4915     pakketyper := TStringList.Create;
4916     linienr := 0;
4917     ListBox2.Clear;
4918     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4919     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4920     SkrivScanningLogFil(logTekst);
4921     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4922     begin
4923     StedKode := BladhusStedKode[BladhusSted];
4924     end
4925     else
4926     begin
4927     StedKode := Sted;
4928     end;
4929    
4930     // 20150310: start
4931     (*
4932     if Returpakkerfrapakkeshop1.Checked then
4933     begin
4934     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4935     end
4936     else if Pakkeshoplevering1.Checked then
4937     begin
4938     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4939     end
4940     else if Pakkernormal1.Checked then
4941     begin
4942     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4943     end
4944     else
4945     begin
4946     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4947     end;
4948     *)
4949     if (Scanningtype = '6') then
4950     begin
4951     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4952     end
4953     else if (Scanningtype = '5') then
4954     begin
4955     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4956     end
4957     else if (Scanningtype = '1') then
4958     begin
4959     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4960     end
4961     else if (Scanningtype = '4') then
4962     begin
4963     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4964     end
4965     else
4966     begin
4967     exit;
4968     end;
4969     // 20150310: slut
4970    
4971     try
4972     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4973     // URLStr := string(Utf8Encode(URLStr));
4974     WebSvar := IdHTTP1.Get(URLStr);
4975     except
4976     on e:EIdConnClosedGracefully do
4977     begin
4978     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4979     WebSvar := IdHTTP1.Get(URLStr);
4980     end;
4981     on e:exception do
4982     begin
4983     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4984     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4985     SkrivScanningLogFil(logTekst);
4986     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4987     end;
4988     end;
4989     try
4990     XMLDocument1.LoadFromXML(WebSvar);
4991    
4992     // 20150206: start
4993     antlin := 0;
4994     antlinIdag := 0;
4995     antlinSenere := 0;
4996     // 20150306: slut
4997     antalFelterFundet := 0;
4998     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4999     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
5000     if Node.NodeType = ntElement then begin
5001     if Node.NodeName = 'Stregkode' then
5002     begin
5003     antlin := antlin + 1;
5004     // 20150306: start
5005     if not VarIsNull(Node.NodeValue) then
5006     begin
5007     if (pos('(', Node.NodeValue) = 0) then
5008     begin
5009     antlinIdag := antlinIdag + 1;
5010     end
5011     else
5012     begin
5013     antlinSenere := antlinSenere + 1;
5014     end;
5015     end;
5016     // 20150306: slut
5017     end;
5018     end;
5019     if (XmlFelter.values[Node.NodeName] <> '') then
5020     XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
5021     else
5022     XmlFelter.values[Node.NodeName] := '1';
5023    
5024     end;
5025     antalLiniefelter := XmlFelter.Count;
5026     antalFelterFundet := 0;
5027     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
5028     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
5029     // 20150206: start
5030     // logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';
5031     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5032     if (antlinSenere > 0) then
5033     begin
5034     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5035     end;
5036     logTekst := logTekst + '.';
5037     // 20150306: slut
5038     SkrivScanningLogFil(logTekst);
5039     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
5040     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
5041     if Node.NodeType = ntElement then begin
5042     if Node.NodeName = 'Stregkode' then begin
5043     if not VarIsNull(Node.NodeValue) then
5044     stregkode := Node.NodeValue;
5045     antalFelterFundet := antalFelterFundet + 1;
5046     end;
5047     if Node.NodeName = 'ModtagerNavn' then begin
5048     if not VarIsNull(Node.NodeValue) then
5049     modtagernavn := Node.NodeValue;
5050     antalFelterFundet := antalFelterFundet + 1;
5051     end;
5052     if Node.NodeName = 'ModtagerAdresse' then begin
5053     if not VarIsNull(Node.NodeValue) then
5054     modtageradresse := Node.NodeValue;
5055     antalFelterFundet := antalFelterFundet + 1;
5056     end;
5057     if Node.NodeName = 'Kommentar' then begin
5058     if not VarIsNull(Node.NodeValue) then
5059     kommentar := Node.NodeValue;
5060     antalFelterFundet := antalFelterFundet + 1;
5061     end;
5062     if Node.NodeName = 'PakkeType' then begin
5063     if not VarIsNull(Node.NodeValue) then
5064     pakketype := Node.NodeValue;
5065     antalFelterFundet := antalFelterFundet + 1;
5066     if (pakketyper.values[pakketype] <> '') then
5067     pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
5068     else
5069     pakketyper.values[pakketype] := '1';
5070     end;
5071     if Node.NodeName = 'TjekkodeStatus' then begin
5072     if not VarIsNull(Node.NodeValue) then
5073     tjekkodestatus := Node.NodeValue;
5074     antalFelterFundet := antalFelterFundet + 1;
5075     if (tjekkodestatus = '-1') then
5076     begin
5077     // 20150306: start
5078     // stregkoderMedTjekkodeArray[linienr] := stregkode;
5079     if (pos(' ', stregkode) > 0) then
5080     begin
5081     stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
5082     end
5083     else
5084     begin
5085     stregkoderMedTjekkodeArray[linienr] := stregkode;
5086     end;
5087     // 20150306: slut
5088     linienr := linienr + 1;
5089     end;
5090     end;
5091     if antalFelterFundet = antalLiniefelter then
5092     begin
5093     if (ScanningType = '1') then
5094     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5095     else if (ScanningType = '4') then
5096     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
5097     else if (ScanningType = '5') then
5098     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5099     else
5100     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
5101     antalFelterFundet := 0;
5102     tjekkodestatus := '';
5103     end;
5104     end;
5105     end;
5106     for pakketypeix := 0 to pakketyper.Count-1 do
5107     begin
5108     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
5109     end;
5110    
5111     // Free up the list object
5112     pakketyper.Free;
5113     // 20150306: start
5114     // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
5115     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5116     if (antlinSenere > 0) then
5117     begin
5118     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5119     end;
5120     logTekst := logTekst + '.';
5121     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
5122     // 20150306: slut
5123     // 20150309: start
5124     if (antlinSenere > 0) then
5125     begin
5126     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
5127     end
5128     else
5129     begin
5130     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
5131     end;
5132     // 20150309: slut
5133    
5134     // 20150310: start
5135     if (Scanningtype = '1') then
5136     begin
5137     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
5138     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
5139     if (antlinIdag + antlinSenere > 0) then
5140     begin
5141     PanelManglendePakker1.Visible := true;
5142     end
5143     else
5144     begin
5145     PanelManglendePakker1.Visible := false;
5146     end;
5147     end;
5148    
5149     if (Scanningtype = '2') then
5150     begin
5151     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
5152     if (antlinIdag + antlinSenere > 0) then
5153     begin
5154     PanelManglendePakker2.Visible := true;
5155     end
5156     else
5157     begin
5158     PanelManglendePakker2.Visible := false;
5159     end;
5160     end;
5161    
5162     if (Scanningtype = '3') then
5163     begin
5164     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
5165     if (antlinIdag + antlinSenere > 0) then
5166     begin
5167     PanelManglendePakker3.Visible := true;
5168     end
5169     else
5170     begin
5171     PanelManglendePakker3.Visible := false;
5172     end;
5173     end;
5174    
5175     if (Scanningtype = '4') then
5176     begin
5177     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
5178     if (antlinIdag + antlinSenere > 0) then
5179     begin
5180     PanelManglendePakker4.Visible := true;
5181     end
5182     else
5183     begin
5184     PanelManglendePakker4.Visible := false;
5185     end;
5186     end;
5187    
5188     if (Scanningtype = '5') then
5189     begin
5190     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
5191     if (antlinIdag + antlinSenere > 0) then
5192     begin
5193     PanelManglendePakker5.Visible := true;
5194     end
5195     else
5196     begin
5197     PanelManglendePakker5.Visible := false;
5198     end;
5199     end;
5200    
5201     if (Scanningtype = '6') then
5202     begin
5203     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
5204     if (antlinIdag + antlinSenere > 0) then
5205     begin
5206     PanelManglendePakker6.Visible := true;
5207     end
5208     else
5209     begin
5210     PanelManglendePakker6.Visible := false;
5211     end;
5212     end;
5213     // 20150310: slut
5214    
5215     except on e:exception do
5216     begin
5217     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
5218     logTekst := 'Fejl i XML-format: '+e.Message;
5219     SkrivScanningLogFil(logTekst);
5220     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
5221     end;
5222     end;
5223    
5224     end;
5225    
5226     procedure TMainForm.IndlesScanningLogFil();
5227     var
5228     SomeTxtFile : TextFile;
5229     buffer : string;
5230     S: string;
5231     idag, imorgen : TDateTime;
5232     imorgenYmd : string;
5233     logFilnavn : string;
5234    
5235     begin
5236     idag := Now;
5237     imorgen := IncDay(idag, 1); //adds 1 day(s)
5238     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5239     if (FormatDateTime('hh:nn',idag) < '12:00') then
5240     begin
5241     imorgen := idag;
5242     end;
5243     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5244     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
5245     if FileExists(logFilnavn) then
5246     begin
5247     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
5248     logTekst := logFilnavn+' indlæses.';
5249     SkrivScanningLogFil(logTekst);
5250     AssignFile(SomeTxtFile, logFilnavn);
5251     try
5252     Reset(SomeTxtFile);
5253     while not EOF(SomeTxtFile) do
5254     begin
5255     ReadLn(SomeTxtFile, buffer) ;
5256     S := buffer;
5257     ListBox1.Items.Insert(0, S);
5258     end;
5259     finally
5260     CloseFile(SomeTxtFile);
5261     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
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     ListBox1.Items.Insert(0,'');
5268     end;
5269     end;
5270     end;
5271    
5272     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
5273     var
5274     SomeTxtFile : TextFile;
5275     buffer : string;
5276     S: string;
5277     idag, imorgen : TDateTime;
5278     imorgenYmd : string;
5279     logFilnavn : string;
5280     error : Integer;
5281    
5282     begin
5283     if (SkrivLog = '1') then
5284     begin
5285     idag := Now;
5286     imorgen := IncDay(idag, 1); //adds 1 day(s)
5287     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5288     if (FormatDateTime('hh:nn',idag) < '12:00') then
5289     begin
5290     imorgen := idag;
5291     end;
5292     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5293     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
5294     // Get the current directory
5295     // dir := GetCurrentDir;
5296     // ShowMessage('Current directory = '+dir);
5297     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
5298     // ShowMessage('logFilnavn = '+logFilnavn);
5299    
5300     if not DirectoryExists('Logs') then
5301     begin
5302     CreateDir('Logs');
5303     end;
5304    
5305     AssignFile(SomeTxtFile, logFilnavn);
5306     if FileExists(logFilnavn) then
5307     begin
5308     try
5309     try
5310     Append(SomeTxtFile);
5311     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5312     except on e:exception do
5313     //ShowMessageFmt('File create failed with error %d',[error]);
5314     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
5315     end;
5316     finally
5317     CloseFile(SomeTxtFile);
5318     end;
5319     end
5320     else
5321     begin
5322     try
5323     try
5324     ReWrite(SomeTxtFile);
5325     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5326     except on e:exception do
5327     // ShowMessageFmt('File create failed with error %d',[error]);
5328     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
5329     end;
5330     finally
5331     CloseFile(SomeTxtFile);
5332     end;
5333     end;
5334     end;
5335     end;
5336    
5337     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
5338     var
5339     SomeTxtFile : TextFile;
5340     buffer : string;
5341     linnr : integer;
5342     S: string;
5343     A: TStrArray;
5344     idag, imorgen : TDateTime;
5345     imorgenYmd : string;
5346    
5347     begin
5348     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5349     logTekst := filnavn+' indlæses.';
5350     SkrivScanningLogFil(logTekst);
5351     SetLength(ruteHverdagArray, 1);
5352     SetLength(ruteLordagArray, 1);
5353     idag := Now;
5354     imorgen := IncDay(idag, 1); //adds 1 day(s)
5355     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5356     if (FormatDateTime('hh:nn',idag) < '12:00') then
5357     begin
5358     imorgen := idag;
5359     end;
5360     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5361     if FileExists(filnavn) then
5362     begin
5363     AssignFile(SomeTxtFile, filnavn);
5364     linnr := 0;
5365     try
5366     Reset(SomeTxtFile);
5367     while not EOF(SomeTxtFile) do
5368     begin
5369     ReadLn(SomeTxtFile, buffer) ;
5370     S := buffer;
5371     SetLength(A,0);
5372     Explode(A, ';', S);
5373     if (length(A) < 2) then
5374     begin
5375     Explode(A, ',', S);
5376     end;
5377     if (length(A) > 1) then
5378     begin
5379     SetLength(ruteHverdagArray, linnr+1);
5380     SetLength(ruteLordagArray, linnr+1);
5381     ruteHverdagArray[linnr] := A[0];
5382     ruteLordagArray[linnr] := A[1];
5383     linnr := linnr+1;
5384     end;
5385     end;
5386     finally
5387     //ShowMessage(IntToStr(length(A)));
5388     CloseFile(SomeTxtFile);
5389     //ShowMessage(IntToStr(length(ruteHverdagArray)));
5390     if (linnr > 0) then
5391     begin
5392     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5393     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5394     SkrivScanningLogFil(logTekst);
5395     end
5396     else
5397     begin
5398     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5399     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5400     SkrivScanningLogFil(logTekst);
5401     PlaySound(PWideChar(AlarmLyd));
5402     end;
5403     end;
5404     end
5405     else
5406     begin
5407     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5408     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5409     SkrivScanningLogFil(logTekst);
5410     PlaySound(PWideChar(AlarmLyd));
5411     end;
5412     end;
5413    
5414     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5415     var
5416     SomeTxtFile : TextFile;
5417     buffer : string;
5418     linnr : integer;
5419     S: string;
5420     A: TStrArray;
5421     idag, imorgen : TDateTime;
5422     imorgenYmd : string;
5423    
5424     begin
5425     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5426     logTekst := filnavn+' indlæses.';
5427     SkrivScanningLogFil(logTekst);
5428     SetLength(ruteArray, 1);
5429     SetLength(korelisteArray, 1);
5430     idag := Now;
5431     imorgen := IncDay(idag, 1); //adds 1 day(s)
5432     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5433     if (FormatDateTime('hh:nn',idag) < '12:00') then
5434     begin
5435     imorgen := idag;
5436     end;
5437     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5438     if FileExists(filnavn) then
5439     begin
5440     AssignFile(SomeTxtFile, filnavn);
5441     linnr := 0;
5442     try
5443     Reset(SomeTxtFile);
5444     while not EOF(SomeTxtFile) do
5445     begin
5446     ReadLn(SomeTxtFile, buffer) ;
5447     S := buffer;
5448     SetLength(A,0);
5449     Explode(A, ';', S);
5450     if (length(A) < 3) then
5451     begin
5452     Explode(A, ',', S);
5453     end;
5454     if (A[0]=imorgenYmd) then
5455     begin
5456     if (length(A) > 2) then
5457     begin
5458     SetLength(ruteArray, linnr+1);
5459     SetLength(korelisteArray, linnr+1);
5460     ruteArray[linnr] := A[1];
5461     korelisteArray[linnr] := A[2];
5462     linnr := linnr+1;
5463     end;
5464     end;
5465     end;
5466     finally
5467     //ShowMessage(IntToStr(length(A)));
5468     CloseFile(SomeTxtFile);
5469     //ShowMessage(IntToStr(length(ruteArray)));
5470     if (linnr > 0) then
5471     begin
5472     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5473     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5474     SkrivScanningLogFil(logTekst);
5475     end
5476     else
5477     begin
5478     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5479     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5480     SkrivScanningLogFil(logTekst);
5481     PlaySound(PWideChar(AlarmLyd));
5482     end;
5483     end;
5484     end
5485     else
5486     begin
5487     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5488     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5489     SkrivScanningLogFil(logTekst);
5490     PlaySound(PWideChar(AlarmLyd));
5491     end;
5492     end;
5493    
5494     //
5495     // Bladhus ***
5496     //
5497     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5498     var
5499     i : Integer;
5500     svar : String;
5501    
5502     begin
5503     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5504     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5505     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5506     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5507    
5508     svar := 'Køreliste ikke i kontrolfil';
5509     case BladhusSted of
5510     01 :
5511     begin;
5512     for i := 0 to length(ruteArray)-1 do
5513     begin
5514     if (Koreliste=ruteArray[i]) then
5515     begin
5516     svar := korelisteArray[i]; // returnerer den forventede køreliste
5517     end;
5518     end;
5519     end;
5520     // 02 : begin;
5521     //ShowMessage('02') ;
5522     // end;
5523     03 : begin;
5524     for i := 0 to length(ruteArray)-1 do
5525     begin
5526     if (Koreliste=ruteArray[i]) then
5527     begin
5528     svar := korelisteArray[i]; // returnerer den forventede køreliste
5529     end;
5530     end;
5531     end;
5532     // 04 : begin;
5533     //ShowMessage('04') ;
5534     // end;
5535     else
5536     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5537     end;
5538     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5539     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5540    
5541     result := svar;
5542     end;
5543    
5544     function TMainForm.getProddato() : TDate;
5545     var
5546     idag, imorgen : TDateTime;
5547     imorgenYmd : string;
5548    
5549     begin
5550     idag := Now;
5551     imorgen := IncDay(idag, 1); //adds 1 day(s)
5552     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5553     if (FormatDateTime('hh:nn',idag) < '12:00') then
5554     begin
5555     imorgen := idag;
5556     end;
5557     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
5558     result := StrToDateTime(imorgenYmd);
5559     end;
5560    
5561     function TMainForm.getProddag() : String;
5562     begin
5563     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
5564 torben 2650 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
5565 torben 2645 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
5566     end;
5567    
5568     function TMainForm.retRutenummer(rutenummer : String) : String;
5569     var
5570     i : Integer;
5571     svar : String;
5572    
5573     begin
5574     svar := rutenummer;
5575     case BladhusSted of
5576     01 :
5577     begin;
5578     //ShowMessage('01') ;
5579     end;
5580     // 02 : begin;
5581     //ShowMessage('02') ;
5582     // end;
5583     03 : begin;
5584     for i := 0 to length(ruteHverdagArray)-1 do
5585     begin
5586     if (rutenummer=ruteHverdagArray[i]) then
5587     begin
5588     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5589     end;
5590     end;
5591     end;
5592     // 04 : begin;
5593     //ShowMessage('04') ;
5594     // end;
5595     else
5596     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5597     end;
5598     result := svar;
5599     end;
5600    
5601     function TMainForm.GetCurrentPrinterHandle: THandle;
5602     var
5603     Device, Driver, Port: array[0..255] of Char;
5604     hDeviceMode: THandle;
5605     begin
5606     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5607     if not OpenPrinter(@Device, Result, nil) then
5608     RaiseLastWin32Error;
5609     end;
5610    
5611     function TMainForm.SavePChar(p: PChar): PChar;
5612     const
5613     error: PChar = 'Nil';
5614     begin
5615     if not Assigned(p) then
5616     Result := error
5617     else
5618     Result := p;
5619     end;
5620    
5621     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5622     begin
5623     if Scanogstjekkoden1.Checked then
5624     begin
5625     CheckBox3.Checked := true;
5626     end
5627     else
5628     begin
5629     CheckBox3.Checked := false;
5630     end;
5631     end;
5632    
5633     function TMainForm.AdobeReaderExists: Boolean;
5634     var
5635     AReg: TRegistry;
5636     begin
5637     result:= false;
5638     AReg := TRegistry.Create;
5639     AReg.RootKey := HKEY_LOCAL_MACHINE;
5640     if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then
5641     result:= True;
5642     AReg.Free;
5643     end;
5644    
5645     procedure TMainForm.CheckPrintQue(tjektype : string);
5646     type
5647     TJobs = array [0..1000] of JOB_INFO_1;
5648     PJobs = ^TJobs;
5649     var
5650     hPrinter: THandle;
5651     bytesNeeded, numJobs, i: Cardinal;
5652     pJ: PJobs;
5653     printerTxt, statusTxt, dokumentTxt: String;
5654     begin
5655    
5656     // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5657     // 'Test' skal vise alarmlinie, samt opdatere listbox1
5658     // 'Timer' skal kun vise alarmlinie
5659    
5660     if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5661     begin
5662     printerTxt := 'Der er fravalgt printer i dette program';
5663     ListBox1.Items.Insert(0,printerTxt);
5664     SkrivScanningLogFil(printerTxt);
5665     end
5666     else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5667     begin
5668     printerTxt := 'Der er ikke installeret en printer på denne PC';
5669     ListBox1.Items.Insert(0,printerTxt);
5670     SkrivScanningLogFil(printerTxt);
5671     end
5672     else
5673     begin
5674     hPrinter := GetCurrentPrinterHandle;
5675     try
5676     EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5677     pJ := AllocMem(bytesNeeded);
5678     if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5679     RaiseLastWin32Error;
5680    
5681     if numJobs = 0 then
5682     begin
5683     if (tjektype = 'Test') then
5684     begin
5685     logTekst := printerTxt + ': Ingen dokumenter i kø';
5686     ListBox1.Items.Insert(0,logTekst);
5687     SkrivScanningLogFil(logTekst);
5688     end;
5689     PrinterstatusStaticText1.Caption := '';
5690     PrinterstatusStaticText1.Color := MainForm.Color;
5691     end
5692     else // så er der kø til printeren
5693     begin
5694     printerTxt := SavePChar(pJ^[0].pPrinterName);
5695     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5696     begin
5697     logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5698     ListBox1.Items.Insert(0,logTekst);
5699     SkrivScanningLogFil(logTekst);
5700     end;
5701     for i := 0 to Pred(numJobs) do
5702     begin
5703     printerTxt := SavePChar(pJ^[i].pPrinterName);
5704     statusTxt := 'Ukendt';
5705     if (IntToStr(pJ^[i].Status) = '0') then
5706     statusTxt := 'Venter...';
5707     if (IntToStr(pJ^[i].Status) = '4096') then
5708     statusTxt := 'Printer...';
5709     if (IntToStr(pJ^[i].Status) = '8210') then
5710     statusTxt := 'Printerfejl';
5711     if (IntToStr(pJ^[i].Status) = '8214') then
5712     statusTxt := 'Sletter print...';
5713    
5714     dokumentTxt := SavePChar(pJ^[i].pDocument);
5715     if (dokumentTxt = '') then
5716     dokumentTxt := 'Uden navn';
5717    
5718     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5719     begin
5720     logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5721     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5722     ListBox1.Items.Insert(0,logTekst);
5723     SkrivScanningLogFil(logTekst);
5724     end;
5725    
5726     if (i = 0) then
5727     begin
5728     PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5729     PrinterstatusStaticText1.Font.Color := clBlack;
5730     PrinterstatusStaticText1.Color := MainForm.Color;
5731     PrinterstatusStaticText1.Transparent := True;
5732     if (numJobs > 3) then
5733     begin
5734     PrinterstatusStaticText1.Font.Color := clRed;
5735     PrinterstatusStaticText1.Color := clWhite;
5736     PrinterstatusStaticText1.Transparent := true;
5737     end;
5738     end;
5739    
5740     end;
5741     end
5742     finally
5743     ClosePrinter(hPrinter);
5744     end;
5745     end;
5746     end;
5747    
5748     function TMainForm.CheckUrl(url:string):boolean;
5749     var
5750     hSession, hfile, hRequest: hInternet;
5751     dwindex,dwcodelen :dword;
5752     dwcode:array[1..20] of char;
5753     res : pchar;
5754     begin
5755     if pos('http://',lowercase(url))=0 then
5756     url := 'http://'+url;
5757     Result := false;
5758     hSession := InternetOpen('InetURL:/1.0',
5759     INTERNET_OPEN_TYPE_PRECONFIG,
5760     nil,
5761     nil,
5762     0);
5763     if assigned(hsession) then
5764     begin
5765     hfile := InternetOpenUrl(hsession,
5766     pchar(url),
5767     nil,
5768     0,
5769     INTERNET_FLAG_RELOAD,
5770     0);
5771     dwIndex := 0;
5772     dwCodeLen := 10;
5773     HttpQueryInfo(hfile,
5774     HTTP_QUERY_STATUS_CODE,
5775     @dwcode,
5776     dwcodeLen,
5777     dwIndex);
5778     res := pchar(@dwcode);
5779     result:= (res ='200') or (res ='302');
5780     if assigned(hfile) then
5781     InternetCloseHandle(hfile);
5782     InternetCloseHandle(hsession);
5783     end;
5784    
5785     end;
5786    
5787     // 20150310: start
5788     procedure TMainForm.RoundCornerOf(Control: TWinControl);
5789     var
5790     R: TRect;
5791     Rgn: HRGN;
5792     begin
5793     with Control do
5794     begin
5795     R := ClientRect;
5796     // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
5797     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;
5798     // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;
5799     Perform(EM_GETRECT, 0, lParam(@r)) ;
5800     InflateRect(r, - 4, - 4) ;
5801     Perform(EM_SETRECTNP, 0, lParam(@r)) ;
5802     SetWindowRgn(Handle, rgn, True) ;
5803     Invalidate;
5804     end;
5805     end;
5806     // 20150310: slut
5807    
5808     end.
5809    

  ViewVC Help
Powered by ViewVC 1.1.20