--- dao/DelphiScanner/Main.pas 2015/09/04 09:36:19 2703 +++ dao/DelphiScanner/Main.pas 2016/03/15 13:44:38 2977 @@ -1,24 +1,37 @@ unit Main; +// ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf +// ToDo: flyt flere parametre til TConfiguration + +// ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring +// ToDo: flyt mere funktionalitet fra interface layer til application layer klasser +// ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ? +// ToDo: alternativt kan man bruge en Enum til de forskellige typer +// ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder + + interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection, + Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts, Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils, - IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException, - Winspool, ShellApi, ClipBrd, Buttons, wininet, + IdExplicitTLSClientServerBase, IdFTP, IdException, + ShellApi, ClipBrd, Buttons, wininet, UITypes, PakkeshopLabels, - StBarC, - Math, // DegToRad() bruges i PrintPakkeshopLabel - Utils + Utils, + ParentForm, + LabelPrint, + Configuration, + Vcl.Imaging.pngimage, + Generics.Collections ; type - TMainForm = class(TForm) + TMainForm = class(TForm, IParentForm) StregkodeST: TStaticText; RuteNummerST: TStaticText; BoghandlerNavnST: TStaticText; @@ -92,12 +105,13 @@ PanelManglendePakker5: TPanel; PanelManglendePakker6: TPanel; menuIndlevering: TMenuItem; + chkForstorTilDirekte: TCheckBox; + + function getProddato() : TDate; function getProddag() : String; function retRutenummer(rutenummer : String) : String; - function GetCurrentPrinterHandle() : THandle; - function SavePChar(p: PChar): PChar; procedure PlaySound(filename : PWideChar); procedure StartScreen(); @@ -178,8 +192,12 @@ procedure menuIndleveringClick(Sender: TObject); - procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel); - procedure CheckPrintQue(tjektype : string); + + + //Nedarvet fra IParentForm + procedure LogMessage( msg : string); + procedure SetPrinterstatusText( txt: string; alert: boolean); + function GetFormObject() : TForm; private @@ -188,17 +206,23 @@ SkrivLog : String; Sted : String; StedNavn : String; - Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String; -// 29150330: start + Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, + UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke, + UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String; + UrlEKLoverforselPakkeshop : String; -// 20150330: slut + UrlFindPakketype, UrlSendPrograminfo: String; Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String; ScanTjekkode : String; ScanTjekkodeAutomatik : string; - Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String; - Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String; - LabelType : integer; + + Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, + FarveIndlevering : String; + + Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, + TitelIndlevering : String; + AlarmLyd : String; ScannetOkLyd : String; ScannetOkStorLyd : String; @@ -207,29 +231,7 @@ PrinterNavn : String; TjekPrinter : String; - XPosRute : integer; - YPosRute : integer; - FontSizeRute : integer; - FontSizeRuteLille : integer; - XPosKommentar : integer; - YPosKommentar : integer; - FontSizeKommentar : integer; - XPosBoghandler : integer; - YPosBoghandler : integer; - FontSizeBoghandler : integer; - XPosKoreliste : integer; - YPosKoreliste : integer; - FontSizeKoreliste : integer; - FontSizeKorelisteLille : integer; - XPosSorteringsfelt1 : integer; - YPosSorteringsfelt1 : integer; - FontSizeSorteringsfelt1 : integer; - XPosSorteringsfelt2 : integer; - YPosSorteringsfelt2 : integer; - FontSizeSorteringsfelt2 : integer; - XPosSmskode : integer; - YPosSmskode : integer; - FontSizeSmskode : integer; + Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String; BladhusSted : Integer; BladhusStedKode : Array of string; @@ -242,12 +244,13 @@ PakkeshopStregkode, PakkeshopTjekkode : String; BoghandlerStregkode, BoghandlerTjekkode : String; TjekUrls : String; + Config : TConfiguration; - Barcode : TStBarcode; + LabelPrint: TLabelPrint; procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = ''); - procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); + procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = ''); procedure CheckCode(); procedure IndlesManglendeScanninger(); @@ -262,8 +265,6 @@ { Public declarations } end; - function GetPixelsPerInchX(): Integer; - function GetPixelsPerInchY(): Integer; var MainForm: TMainForm; @@ -279,14 +280,13 @@ {$R *.dfm} +//FormCreate kaldes før InitForm + procedure TMainForm.InitForm(Farve,Titel,Url : String); begin -// 20150309: startr StaticTextManglendePakker.Caption := ''; -// 20150309: slut - Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component PanelValg1.Color := clBtnFace; if PanelValg1.Enabled = true then @@ -358,9 +358,11 @@ else if (Sted = 'BR') then begin StedNavn := 'Brøndby: '; end else if (Sted = 'BK') then - begin StedNavn := 'Bladkompagniet: '; end + begin StedNavn := 'Bladkompagniet/ISV: '; end + else if (Sted = 'TK') then + begin StedNavn := 'BK/Trykkompagniet: '; end else if (Sted = 'DBK') then - begin StedNavn := 'DBK Køge: '; end + begin StedNavn := 'DBK/Køge: '; end else if (Sted = '1') then begin StedNavn := 'Ålborg: '; end else if (Sted = '2') then @@ -455,6 +457,7 @@ end; end; + end; procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject); @@ -500,14 +503,17 @@ PanelValgA.Font.Color := clWhite; end; + +//InitForm kaldes før FormCreate procedure TMainForm.FormCreate(Sender: TObject); const crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed var - printerInd : integer; gemScanningtype : String; begin + + // Initierer nogle variabler BladhusSted := 00; Application.ShowHint := True; @@ -535,9 +541,15 @@ MainForm.ClientWidth := 1000; MainForm.ClientHeight := 750; + Config := TConfiguration.Create(); + Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ); //ToDo: clean up duplicate ini ref + Config.Sted := Sted; + // Læser parametre fra ini filen with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do try + + SkrivLog := ReadString('Settings','SkrivLog','0'); Sted := ReadString('Settings','Sted',''); StedNavn := ReadString('Settings','Stednavn',''); @@ -560,10 +572,11 @@ UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s'); UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s'); + URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s'); + - LabelType := ReadInteger('Settings','LabelType',1); FarveNormal := ReadString('Settings','FarveNormal','D8D8D8'); TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker'); FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9'); @@ -622,75 +635,7 @@ PanelValgA.Font.Color := clWhite; end; - if LabelType = 0 then - begin - XPosRute := ReadInteger('RuteBred','XPos',1); - YPosRute := ReadInteger('RuteBred','YPos',1); - FontSizeRute := ReadInteger('RuteBred','FontSize',72); - FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20); - XPosKommentar := ReadInteger('KommentarBred','XPos',1); - YPosKommentar := ReadInteger('KommentarBred','YPos',250); - FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16); - XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1); - YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400); - FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16); - XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1); - YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100); - FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72); - FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20); - XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700); - YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100); - FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16); - XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700); - YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150); - FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16); - XPosSmskode := ReadInteger('SmskodeSmal','XPos',1); - YPosSmskode := ReadInteger('SmskodeSmal','YPos',300); - FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32); - end - else - begin - XPosRute := ReadInteger('RuteSmal','XPos',1); - YPosRute := ReadInteger('RuteSmal','YPos',1); - FontSizeRute := ReadInteger('RuteSmal','FontSize',72); - FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20); - XPosKommentar := ReadInteger('KommentarSmal','XPos',1); - YPosKommentar := ReadInteger('KommentarSmal','YPos',250); - FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16); - XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1); - YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400); - FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16); - XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1); - YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100); - FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72); - FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20); - XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700); - YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100); - FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16); - XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700); - YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150); - FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16); - XPosSmskode := ReadInteger('SmskodeSmal','XPos',1); - YPosSmskode := ReadInteger('SmskodeSmal','YPos',300); - FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32); - if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3 - begin - XPosRute := XPosRute * 3; - YPosRute := YPosRute * 3; - XPosKommentar := XPosKommentar * 3; - YPosKommentar := YPosKommentar * 3; - XPosBoghandler := XPosBoghandler * 3; - YPosBoghandler := YPosBoghandler * 3; - XPosKoreliste := XPosKoreliste * 3; - YPosKoreliste := YPosKoreliste * 3; - XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3; - YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3; - XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3; - YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3; - XPosSmskode := XPosSmskode * 3; - YPosSmskode := YPosSmskode * 3; - end; - end; + if SporgEfterBoghandler = '1' then begin @@ -746,6 +691,9 @@ {$IfDef STED_BK} SpecialVersionSted := 'BK'; {$EndIf} +{$IfDef STED_TK} + SpecialVersionSted := 'TK';// BK-Trykkompagniet +{$EndIf} {$IfDef STED_DBK} SpecialVersionSted := 'DBK'; {$EndIf} @@ -783,7 +731,7 @@ SpecialVersionScanningtype := '4'; end; - if SpecialVersionSted = 'BK' then + if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then begin //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil Sted := SpecialVersionSted; @@ -792,12 +740,15 @@ PanelValg2.Font.Color := clInactiveCaption; PanelValg3.Enabled := false; PanelValg3.Font.Color := clInactiveCaption; - PanelValg6.Enabled := false; - PanelValg6.Font.Color := clInactiveCaption; + //PanelValg6.Enabled := false; + //PanelValg6.Font.Color := clInactiveCaption; + // her skal vi også disable de menupunkter BK ikke kan bruge ReturpakkerfraDAO1.Enabled := false; Returpakkerfraboghandler1.Enabled := false; - Returpakkerfrapakkeshop1.Enabled := false; + + //Returpakkerfrapakkeshop1.Enabled := false; + if SpecialVersionScanningtype = 'A' then begin Scanningtype := '1'; @@ -821,8 +772,7 @@ PanelValg5.Font.Color := clInactiveCaption; PanelValg6.Enabled := false; PanelValg6.Font.Color := clInactiveCaption; - PanelValg7.Enabled := false; - PanelValg7.Font.Color := clInactiveCaption; + // her skal vi også disable de menupunkter DBK ikke kan bruge ReturpakkerfraDAO1.Enabled := false; @@ -1052,14 +1002,10 @@ end; - if (PrinterNavn <> '') then - begin - printerInd := Printer.Printers.IndexOf(printerNavn); - if printerInd >= 0 then - Printer.PrinterIndex := printerInd; - end; - CheckPrintQue('Opstart'); + + LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn ); + LabelPrint.CheckPrintQue('Opstart', PrinterNavn); finally Free; @@ -1183,6 +1129,9 @@ or (NumberString = 'Retur fra kunde') or (NumberString = 'DAO DIREKTE') or (NumberString = 'DAO PAKKESHOP') + or (NumberString = 'DAO PAKKESHOP') + or (LowerCase(NumberString) = 'for stor hjemmelevering' ) + or (LowerCase(NumberString) = 'for stor daodirekte' ) or (NumberString = 'Retur fra pakkeshop') then begin @@ -1193,11 +1142,15 @@ begin ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift'); end; - end; + end; // Slut ctrl-v if Key = #13 then // Enter begin - if (Length(Trim(Stregkode)) = 0) then + + // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes + Stregkode := Trim(Stregkode); + + if (Length(Stregkode) = 0) then begin VisAlarmSkaerm( 'Der skal scannes en stregkode...' ); @@ -1247,6 +1200,22 @@ exit; end; + if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then + begin + if chkForstorTilDirekte.Enabled then + begin + chkForstorTilDirekte.Checked := true; + end + else + begin + VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' ); + end; + Stregkode := ''; + StregkodeST.Caption := StregKode; + exit; + end; + + if StregKode = 'Indtast kundenummer' then begin if chkSporgEfterKunde.Enabled = true then @@ -1444,19 +1413,19 @@ Pakkescanningtype := Scanningtype; end; - if ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) - or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) - or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) - or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) - or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) - or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) then + if ( ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) ) + or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) ) + or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) ) + or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) ) + or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) ) + or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then begin // Her skal komme en alarm og rød skærm VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' ); exit; end; - if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then + if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then begin GemStregkode := Stregkode; if Pakketype = 'NatXpress' then @@ -1490,7 +1459,8 @@ else begin // Her skal komme en alarm og rød skærm - VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' ); + //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' ); + VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' ); exit; end; @@ -1726,8 +1696,15 @@ Key := #0; + + + + + end; //End of OnKeyPress + + procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String); const crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed @@ -1888,7 +1865,7 @@ PanelManglendePakker6.Visible := false; end; end; -// 20150310: slut + ListBox2.items.delete(i); end; end; @@ -1924,47 +1901,7 @@ Sprgefterboghandlernummer1.Enabled := false; ListBox1.Visible := true; // TestFunktionen := '1'; -// 20150317: start -(* - if TestFunktionen = '1' then - begin - Testforbindelsen1.Visible := true; - Testprinter1.Visible := true; - Testlyd1.Visible := true; - Testlyd2.Visible := true; - end - else if TestFunktionen = '2' then - begin - Testforbindelsen1.Enabled := false; - Testprinter1.Enabled := false; - Testlyd1.Enabled := false; - Testlyd2.Enabled := false; - end - else - begin - Testforbindelsen1.Visible := false; - Testprinter1.Visible := false; - Testlyd1.Visible := false; - Testlyd2.Visible := false; - end; - Testprinter1.Visible := false; - AlarmLyd := 'Sounds\Alarm.wav'; - if not FileExists(AlarmLyd) then - begin - AlarmLyd := ''; - end; - ScannetOkLyd := 'Sounds\Ok.wav'; - if not FileExists(ScannetOkLyd) then - begin - ScannetOkLyd := ''; - end; - ScannetOkStorLyd := 'Sounds\Ok_stor.wav'; - if not FileExists(ScannetOkStorLyd) then - begin - ScannetOkStorLyd := ''; - end; -*) -// 20150317: slut + if Budlevering1.Checked then begin IndlesScanningLogFil(); @@ -2097,6 +2034,12 @@ begin exit; end; + + if chkForstorTilDirekte.Checked then // Denne skal være efter if/else kæden da den overrider de øvrige URL'er + begin + URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]); + end; + try //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST WebSvar := IdHTTP1.Get(URLStr); @@ -2118,6 +2061,7 @@ end; end; end; + XMLDocument1.LoadFromXML(WebSvar); try if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then @@ -2141,7 +2085,7 @@ end; end; end - else if menuIndlevering.Checked then + else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then begin @@ -2155,7 +2099,8 @@ RuteNummer := PakkeshopLabel.Koreliste + ' -> ' + PakkeshopLabel.PakkeshopTurid; Stregkode := PakkeshopLabel.Stregkode; - PrintPakkeshopLabel( PakkeshopLabel ); + LabelPrint.PrintPakkeshopLabel( PakkeshopLabel ); + chkForstorTilDirekte.Checked := false; end; @@ -2433,7 +2378,7 @@ if PrintNyLabel or (RuteNummer = 'Rutenr') then // 20150304: slut begin - SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); end; end; 01 : begin; @@ -2441,13 +2386,13 @@ // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr') begin - SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); end; end; 02 : begin; if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test begin - SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); end; end; 03 : begin; @@ -2455,13 +2400,13 @@ // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr') begin - SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); end; end; 04 : begin; if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test begin - SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); + LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer); end; end; else @@ -2497,74 +2442,14 @@ end; logTekst := logTekst + ' for '+BoghandlerNavn; SkrivScanningLogFil(logTekst); - with Printer do - begin - BeginDoc; - Canvas.Font.Size := FontSizeRute; - if (Length(RuteNummer) > 7) then - begin - Canvas.Font.Size := FontSizeRuteLille; - end; - Canvas.TextOut(XPosRute,YPosRute, RuteNummer); - Canvas.Font.Size := FontSizeKommentar; - Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]); - if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then - begin - Kommentar := ''; - end; - if (BoghandlerNavn = 'PAKKE ER SCANNET') then - begin - BoghandlerNavn := ''; - end; - Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme) - Canvas.Font.Size := FontSizeBoghandler; - Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn); - EndDoc; - end; + + LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ; + end; end; end; -procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); -begin - with Printer do - begin - BeginDoc; - Canvas.Font.Size := FontSizeRuteLille; - if (kontrolKoreliste <> '') then - begin - Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste); - end - else - begin - Canvas.TextOut(XPosRute,YPosRute, RuteNummer); - end; - Canvas.Font.Size := FontSizeKorelisteLille; - Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste); - if (Sted = 'DBK') or (Sted = '04') then - begin - Canvas.Font.Size := FontSizeSorteringsfelt1; - Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane); // sorteringsoplysning 1 - Canvas.Font.Size := FontSizeSorteringsfelt1; - Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted); // sorteringsoplysning 2 - end; - Canvas.Font.Size := FontSizeKommentar; - - Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]); - Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]); - - Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme) - if SmsKode <> '' then - begin - Canvas.Font.Size := FontSizeSmskode; - Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode)); - end; - Canvas.Font.Size := FontSizeBoghandler; - Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn); - EndDoc; - end; -end; procedure TMainForm.radioStorPakkeClick(Sender: TObject); @@ -2871,16 +2756,6 @@ if Farve <> '' then begin MainForm.Color := TUtils.HexToTColor(Farve); -// 20150312: start -(* - end - else - begin - ShowMessage('Programmet afbrydes...'); - UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut - Application.Terminate; -*) -// 20150312: slut end; if (Budlevering1.Checked) then begin @@ -3024,7 +2899,7 @@ Falsk := False; - if (Printer.Printers.Count = 0) then + if (LabelPrint.GetPrinterCount() = 0) then begin ShowMessage('Der er ikke installeret en printer på denne PC.'); end @@ -3039,7 +2914,7 @@ DBKbane := '999'; Leveringssted := 'XXX'; PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk); - CheckPrintQue('Test'); + LabelPrint.CheckPrintQue('Test', PrinterNavn); end; FocusControl(StregkodeST); end; @@ -3048,7 +2923,7 @@ begin if (TjekPrinter = '1') then begin - CheckPrintQue('Timer'); + LabelPrint.CheckPrintQue('Timer', PrinterNavn); end else begin @@ -3262,6 +3137,10 @@ BtnEKLoverforsel.Enabled := true; InitLillePakke(); ListBox1.Items.Clear; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + if BladhusSted = 0 then begin IndlesScanningLogFil(); @@ -3293,6 +3172,10 @@ ListBox1.Items.Clear; ListBox2.Items.Clear; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + InitLillePakke(); end; @@ -3319,6 +3202,10 @@ ListBox1.Items.Clear; ListBox2.Items.Clear; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + InitLillePakke(); end; @@ -3350,6 +3237,10 @@ BtnEKLoverforsel.Enabled := false; IdFTP1.Passive := true; IdFTP1.PassiveUseControlHost := true; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := true; + if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then begin IndlesScanningLogFil(); @@ -3385,6 +3276,9 @@ BtnEKLoverforsel.Enabled := true; + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := true; + InitLillePakke(); IndlesScanningLogFil(); if BladhusSted = 0 then @@ -3420,6 +3314,11 @@ BtnDownloadKontrolfil.Enabled := false; BtnOpdaterListen.Enabled := true; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + + InitLillePakke(); IndlesScanningLogFil(); if BladhusSted = 0 then @@ -3467,6 +3366,11 @@ BtnDownloadKontrolfil.Enabled := false; BtnOpdaterListen.Enabled := true; BtnEKLoverforsel.Enabled := false; + + chkForstorTilDirekte.Checked := false; + chkForstorTilDirekte.Enabled := false; + + InitLillePakke(); IndlesScanningLogFil(); if BladhusSted = 0 then @@ -3592,12 +3496,12 @@ SkrivScanningLogFil(logTekst); StedKode := Sted; URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]); -// 20150330: start + if PanelValg5.Color = clGreen then begin URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]); end; -// 20150330: slut + try //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST @@ -4199,128 +4103,6 @@ end; -// ToDo: PrintPakkeshopLabel() -procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel); -var - XForm, XFormOld: TXForm; //Bruges til rotate X-formation - Angle: integer; - gMode: integer; - Dirigering: string; - -begin - with Printer do - begin - BeginDoc(); - - - 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; - procedure TMainForm.IndlesManglendeScanninger(); var @@ -4332,16 +4114,25 @@ stregkode, modtagernavn, modtageradresse, kommentar : string; pakketype, tjekkodestatus : String; pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer; - pakketyper : TStrings; + //pakketyper : TStrings; + pakketyper : TDictionary; + tmpAntal : Integer; + + + antlin : Integer; antlinIdag, antlinSenere : Integer; - XmlFelter : TStrings; + //XmlFelter : TStrings; + XmlFelter : TDictionary; begin - XmlFelter := TStringList.Create; - pakketyper := TStringList.Create; + + + XmlFelter := TDictionary.Create; + pakketyper := TDictionary.Create; + linienr := 0; ListBox2.Clear; ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget'); @@ -4356,6 +4147,8 @@ StedKode := Sted; end; + Application.Processmessages; //Ugly Hack to improve User Experience when switching modes + if (Scanningtype = '7') then @@ -4415,26 +4208,31 @@ if Node.NodeType = ntElement then begin if Node.NodeName = 'Stregkode' then begin - antlin := antlin + 1; + Inc(antlin); // 20150306: start if not VarIsNull(Node.NodeValue) then begin if (pos('(', Node.NodeValue) = 0) then begin - antlinIdag := antlinIdag + 1; + Inc(antlinIdag); end else begin - antlinSenere := antlinSenere + 1; + Inc(antlinSenere); end; end; // 20150306: slut end; end; - if (XmlFelter.values[Node.NodeName] <> '') then - XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1) + if ( XmlFelter.ContainsKey(Node.NodeName) ) then + begin + XmlFelter.TryGetValue(Node.NodeName, tmpAntal); + XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1); + end else - XmlFelter.values[Node.NodeName] := '1'; + begin + XmlFelter.Add(Node.NodeName, 1); + end; end; antalLiniefelter := XmlFelter.Count; @@ -4442,6 +4240,9 @@ SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array + + Application.Processmessages; //Ugly Hack to improve User Experience when switching modes + logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget'; if (antlinSenere > 0) then begin @@ -4450,6 +4251,8 @@ logTekst := logTekst + '.'; SkrivScanningLogFil(logTekst); + + for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin Node:= XMLDocument1.DocumentElement.ChildNodes[I]; if Node.NodeType = ntElement then begin @@ -4457,39 +4260,41 @@ if not VarIsNull(Node.NodeValue) then stregkode := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; - end; - if Node.NodeName = 'ModtagerNavn' then begin + end + else if Node.NodeName = 'ModtagerNavn' then begin if not VarIsNull(Node.NodeValue) then modtagernavn := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; - end; - if Node.NodeName = 'ModtagerAdresse' then begin + end + else if Node.NodeName = 'ModtagerAdresse' then begin if not VarIsNull(Node.NodeValue) then modtageradresse := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; - end; - if Node.NodeName = 'Kommentar' then begin + end + else if Node.NodeName = 'Kommentar' then begin if not VarIsNull(Node.NodeValue) then kommentar := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; - end; - if Node.NodeName = 'PakkeType' then begin + end + else if Node.NodeName = 'PakkeType' then begin if not VarIsNull(Node.NodeValue) then pakketype := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; - if (pakketyper.values[pakketype] <> '') then - pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1) + if ( pakketyper.ContainsKey(pakketype) ) then + begin + pakketyper.TryGetValue(pakketype, tmpAntal); + pakketyper.AddOrSetValue(pakketype, tmpAntal + 1); + end else - pakketyper.values[pakketype] := '1'; - end; - if Node.NodeName = 'TjekkodeStatus' then begin + pakketyper.Add(pakketype, 1); + end + else if Node.NodeName = 'TjekkodeStatus' then begin if not VarIsNull(Node.NodeValue) then tjekkodestatus := Node.NodeValue; antalFelterFundet := antalFelterFundet + 1; if (tjekkodestatus = '-1') then begin -// 20150306: start -// stregkoderMedTjekkodeArray[linienr] := stregkode; + if (pos(' ', stregkode) > 0) then begin stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet @@ -4501,6 +4306,8 @@ linienr := linienr + 1; end; end; + + if antalFelterFundet = antalLiniefelter then begin if (ScanningType = '1') then @@ -4516,13 +4323,22 @@ end; end; end; - for pakketypeix := 0 to pakketyper.Count-1 do - begin - ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget'); - end; - // Free up the list object + + Application.Processmessages; //Ugly Hack to improve User Experience when switching modes + + + for pakketype in pakketyper.Keys do + begin + pakketyper.TryGetValue(pakketype, tmpAntal); + ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget'); + end; + + // Free up the dictionary object pakketyper.Free; + + + // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.'); logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget'; if (antlinSenere > 0) then @@ -5023,25 +4839,6 @@ result := svar; end; -function TMainForm.GetCurrentPrinterHandle: THandle; -var - Device, Driver, Port: array[0..255] of Char; - hDeviceMode: THandle; -begin - Printer.GetPrinter(Device, Driver, Port, hDeviceMode); - if not OpenPrinter(@Device, Result, nil) then - RaiseLastWin32Error; -end; - -function TMainForm.SavePChar(p: PChar): PChar; -const - error: PChar = 'Nil'; -begin - if not Assigned(p) then - Result := error - else - Result := p; -end; procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject); begin @@ -5057,113 +4854,38 @@ +//Nedarvet fra IParentForm +procedure TMainForm.LogMessage( msg : string); +begin + ListBox1.Items.Insert(0, msg); + SkrivScanningLogFil(msg); +end; - - -procedure TMainForm.CheckPrintQue(tjektype : string); -type - TJobs = array [0..1000] of JOB_INFO_1; - PJobs = ^TJobs; -var - hPrinter: THandle; - bytesNeeded, numJobs, i: Cardinal; - pJ: PJobs; - printerTxt, statusTxt, dokumentTxt: String; +//Nedarvet fra IParentForm +procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean); begin -// tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1 -// 'Test' skal vise alarmlinie, samt opdatere listbox1 -// 'Timer' skal kun vise alarmlinie - - if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then - begin - printerTxt := 'Der er fravalgt printer i dette program'; - ListBox1.Items.Insert(0,printerTxt); - SkrivScanningLogFil(printerTxt); - end - else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then + PrinterstatusStaticText1.Caption := txt; + if (alert) then begin - printerTxt := 'Der er ikke installeret en printer på denne PC'; - ListBox1.Items.Insert(0,printerTxt); - SkrivScanningLogFil(printerTxt); + PrinterstatusStaticText1.Font.Color := clBlack; + PrinterstatusStaticText1.Color := MainForm.Color; + PrinterstatusStaticText1.Transparent := True; end else begin - hPrinter := GetCurrentPrinterHandle; - try - EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs); - pJ := AllocMem(bytesNeeded); - if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then - RaiseLastWin32Error; - - if numJobs = 0 then - begin - if (tjektype = 'Test') then - begin - logTekst := printerTxt + ': Ingen dokumenter i kø'; - ListBox1.Items.Insert(0,logTekst); - SkrivScanningLogFil(logTekst); - end; - PrinterstatusStaticText1.Caption := ''; - PrinterstatusStaticText1.Color := MainForm.Color; - end - else // så er der kø til printeren - begin - printerTxt := SavePChar(pJ^[0].pPrinterName); - if (tjektype = 'Opstart') or (tjektype = 'Test') then - begin - logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt; - ListBox1.Items.Insert(0,logTekst); - SkrivScanningLogFil(logTekst); - end; - for i := 0 to Pred(numJobs) do - begin - printerTxt := SavePChar(pJ^[i].pPrinterName); - statusTxt := 'Ukendt'; - if (IntToStr(pJ^[i].Status) = '0') then - statusTxt := 'Venter...'; - if (IntToStr(pJ^[i].Status) = '4096') then - statusTxt := 'Printer...'; - if (IntToStr(pJ^[i].Status) = '8210') then - statusTxt := 'Printerfejl'; - if (IntToStr(pJ^[i].Status) = '8214') then - statusTxt := 'Sletter print...'; - - dokumentTxt := SavePChar(pJ^[i].pDocument); - if (dokumentTxt = '') then - dokumentTxt := 'Uden navn'; - - if (tjektype = 'Opstart') or (tjektype = 'Test') then - begin - logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s', - [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]); - ListBox1.Items.Insert(0,logTekst); - SkrivScanningLogFil(logTekst); - end; - - if (i = 0) then - begin - PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt; - PrinterstatusStaticText1.Font.Color := clBlack; - PrinterstatusStaticText1.Color := MainForm.Color; - PrinterstatusStaticText1.Transparent := True; - if (numJobs > 3) then - begin - PrinterstatusStaticText1.Font.Color := clRed; - PrinterstatusStaticText1.Color := clWhite; - PrinterstatusStaticText1.Transparent := true; - end; - end; - - end; - end - finally - ClosePrinter(hPrinter); - end; + PrinterstatusStaticText1.Font.Color := clRed; + PrinterstatusStaticText1.Color := clWhite; + PrinterstatusStaticText1.Transparent := true; end; end; +//Nedarvet fra IParentForm +function TMainForm.GetFormObject() : TForm; +begin + Result := self; +end; end.