--- dao/DelphiScanner/Main.pas 2015/08/26 06:50:48 2676 +++ dao/DelphiScanner/Main.pas 2015/08/26 13:09:38 2677 @@ -10,7 +10,10 @@ IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException, Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet, UITypes, - PakkeshopLabels + PakkeshopLabels, + StBarC, + Math // DegToRad() bruges i PrintPakkeshopLabel + ; @@ -94,7 +97,7 @@ function Explode(var a: TStrArray; Border, S: string): Integer; function BarCodeValid (ACode: string): boolean; - function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String; + function Sto_GetFmtFileVersion(const FileName: String = ''): String; function TColorToHex(Color : TColor) : string; function HexToTColor(sColor : string) : TColor; function getProddato() : TDate; @@ -251,6 +254,8 @@ BoghandlerStregkode, BoghandlerTjekkode : String; TjekUrls : String; + Barcode : TStBarcode; + PakkeshopLabel: TPakkeshopLabel; function CheckSumModulo10(const data:string):string; { used for EAN 8/13 } @@ -271,6 +276,9 @@ { Public declarations } end; + function GetPixelsPerInchX(): Integer; + function GetPixelsPerInchY(): Integer; + var MainForm: TMainForm; @@ -309,6 +317,8 @@ StaticTextManglendePakker.Caption := ''; // 20150309: slut + Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component + PanelValg1.Color := clBtnFace; if PanelValg1.Enabled = true then begin @@ -634,7 +644,7 @@ if (SkrivLog = '1') then begin - logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now); + logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now); try SkrivScanningLogFil(logTekst); Uploadlogfil1.Enabled := true; @@ -1148,7 +1158,7 @@ Scanningtype := gemScanningtype; SendInfoTilServer(Sted, Scanningtype, 'Begin', ''); - SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('','')); + SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('')); end; @@ -3070,6 +3080,7 @@ repeat if (SR.Attr <> faDirectory) then begin + dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse dtCreation := FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse @@ -3369,7 +3380,7 @@ tekst, filversion : String; begin - filversion := Sto_GetFmtFileVersion('',''); + filversion := Sto_GetFmtFileVersion(''); tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO'; tekst := tekst+crlf+crlf; @@ -3823,16 +3834,14 @@ /// values. /// Formatted version number of file, '' if no version /// resource found. -function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''; - const Fmt: String = '%d.%d.%d.%d'): String; +function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String; var sFileName: String; iBufferSize: DWORD; iDummy: DWORD; pBuffer: Pointer; pFileInfo: Pointer; - iVer: array[1..4] of Word; - S : String; + iVer: array[1..4] of Integer; begin // set default value Result := ''; @@ -3857,20 +3866,10 @@ finally FreeMem(pBuffer); end; + // format result string - Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]); + Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]); - // Hvorfor virker ovenstående ikke ??? - S := ''; - Str(iVer[1], Result); - S := S+Result+'.'; - Str(iVer[2], Result); - S := S+Result+'.'; - Str(iVer[3], Result); - S := S+Result+'.'; - Str(iVer[4], Result); - S := S+Result+''; - Result := S; end; end; @@ -4619,21 +4618,127 @@ until S2 = ''; end; -// ToDo: Færdiggør implementationen +// ToDo: PrintPakkeshopLabel() procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel); +var + XForm, XFormOld: TXForm; //Bruges til rotate X-formation + Angle: integer; + gMode: integer; + BarcodeArea: TRect; + Dirigering: string; + begin with Printer do begin BeginDoc(); - Canvas.Font.Size := FontSizeRuteLille; - Canvas.Font.Size := FontSizeKorelisteLille; - Canvas.TextOut(XPosKoreliste,YPosKoreliste, PakkeshopLabel.Navn); + + Canvas.Font.Size := 16; + Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + ' ' + PakkeshopLabel.Overskrift); + + + + Canvas.TextOut(25, 90, PakkeshopLabel.Navn ); + Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn ); + Canvas.TextOut(25, 180, PakkeshopLabel.Postnr ); + + + Canvas.Font.Size := 9; + Canvas.TextOut(110, 240, 'Pakkeshop:'); + Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn); + Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr); + Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr); + + Canvas.TextOut(350, 240, 'Afsender:'); + Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn); + Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse); + Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr); + + Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr; + if ( PakkeshopLabel.Koreliste <> '') then + begin + Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste; + end; + + + Canvas.Font.Size := 12; + Canvas.TextOut(15, 370, Dirigering); + + + + //Tegn adskillelses linier + Canvas.Pen.Width := 2; + //Øverste linie + Canvas.MoveTo(20,80); + Canvas.LineTo(600,80); + + // Midterste linie + Canvas.MoveTo( 20, 240); + Canvas.LineTo(600, 240); + + //Nederste linie + Canvas.MoveTo( 20, 370); + Canvas.LineTo(600, 370); + + + //Tegn skrå streger over afsender + Canvas.Pen.Width := 1; + Canvas.MoveTo(600, 250); + Canvas.LineTo(350, 360); + Canvas.MoveTo(600, 360); + Canvas.LineTo(350, 250); + + + + + // Resten af rutinen vedr genering og placering af Barcode + + BarCode.BarCodeType := bcCode128; + BarCode.Code128Subset := csCodeC; + BarCode.Code := PakkeshopLabel.Stregkode; + BarCode.Validate(True); + + //Start X-formation + //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) ); + GetWorldTransform(Canvas.Handle, XFormOld); + + Angle := 270; + XForm.eM11 := Cos(DegToRad(Angle)); + XForm.eM12 := Sin(DegToRad(Angle)); + XForm.eM21 := -Sin(DegToRad(Angle)); + XForm.eM22 := Cos(DegToRad(Angle)); + XForm.eDx := 0; + XForm.eDy := 0; + + gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED); + SetWorldTransform(Canvas.Handle, XForm); + + // PaintToCanvasSize arbejder i Inches + // Første pos argument bliver nu Y og skal være negativ for at rykke den ned + //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre + + BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4); + + + SetWorldTransform(Canvas.Handle, XFormOld); + SetGraphicsMode(Canvas.Handle, gMode); + EndDoc(); end; + +end; + +function GetPixelsPerInchX(): Integer; +begin + Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX) +end; + +function GetPixelsPerInchY(): Integer; +begin + Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY) end; @@ -4992,7 +5097,7 @@ idag, imorgen : TDateTime; imorgenYmd : string; logFilnavn : string; - error : Integer; + //error : Integer; begin if (SkrivLog = '1') then @@ -5380,7 +5485,7 @@ function TMainForm.CheckUrl(url:string):boolean; var - hSession, hfile, hRequest: hInternet; + hSession, hfile: hInternet; dwindex,dwcodelen :dword; dwcode:array[1..20] of char; res : pchar;