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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20