Nu bliver det mere mystisk det her. På en windows 2003 server er der installeret 3 labelsprintere og en almindelig printer. A, B og C er labelprinter. D er den alm printer. Labelprinter A har labels der er dobbelt så stor som B og C. Dvs. B og C har samme type label. Nu kommer det underlige.
Senario 1.
Hvis jeg sætter D, som default printer og skriver ud på alle 3 labelprintere sker der det, at på A kommer der print ud, men med en positionforskydning af tekst. På B og C kommer der ikke skrift på labelen, men labels bliver spyttet ud.
Senario 2.
Hvis jeg sætter C, som default printer og skriver ud på alle 3 labelprintere sker der det, at på A kommer der print ud, men i halv størrelse. Samme størrelse som det print der kommer ud på B og C.
Dette er koden som jeg bruger. Er der nogen ting som jeg ikke opmærksom på? Sætter gerne flere points på opgaven.
procedure TForm1.ProcessCmdLineParameters;
var Count : Byte;
begin
For count := 1 to ParamCount do
Begin
Case ParamStr(Count)[2] Of
'F','f' : FileName := Copy ( ParamStr(Count), 4, Length ( ParamStr(Count)) - 3);
'T','t' : TestAktiv := true;
'P','p' : begin
TestPrinterSat := true;
LabelPrint := Copy ( ParamStr(Count), 4, Length ( ParamStr(Count)) - 3);
end;
end;
End;
end;
procedure TForm1.BarcodeSetup;
begin
Barcode1 := TAsBarcode.Create(self);
Barcode1.Top := 5;
Barcode1.Left := 3;
Barcode1.Typ := bcCode_2_5_industrial;
Barcode1.Modul := 2;
Barcode1.Ratio := 2.0;
Barcode1.Height := 25;
Barcode1.OnChange := Self.Barcode1Change;
Barcode1.Text := '12345';
end;
procedure TForm1.Barcode1Change(Sender: TObject);
begin
Image2.Picture := nil;
Barcode1.DrawBarcode(Image2.Canvas);
end;
procedure TForm1.ItemLabelPrint;
begin
printer.PrinterIndex := printer.Printers.IndexOf(LabelPrint);
printer.Copies := 1;
// printer.Orientation := poLandScape;
printer.Orientation := poPortrait;
printer.BeginDoc;
printer.Canvas.Font.Name := 'Times New Roman';
printer.Canvas.Font.Size := 16;
printer.Canvas.Font.Style := [fsBold];
if PrintOn then
begin
Printer.Canvas.TextOut(60,70,'Genuine');
Printer.Canvas.TextOut(40,120,'spare parts');
end;
if LogoOn then
printer.Canvas.Draw(280,40,Image1.Picture.Graphic);
printer.Canvas.Font.Size := 12;
Printer.Canvas.TextOut(40,215,'Item no.:');
Printer.Canvas.TextOut(40,250,'Description:');
Printer.Canvas.TextOut(40,285,'Quantity:');
printer.Canvas.Font.Size := 10;
printer.Canvas.Font.Style := [fsBold];
printer.Canvas.TextOut(280,215,ItemNo.Caption);
printer.Canvas.TextOut(280,250,Description.Caption);
printer.Canvas.TextOut(280,285,Quantity.Caption);
printer.Canvas.Font.Size := 10;
printer.Canvas.Font.Style := [];
Printer.Canvas.TextOut(40,340,'Alsis product:');
Printer.Canvas.TextOut(40,370,'Alsis scope:');
Printer.Canvas.TextOut(40,400,'Alteq ref.:');
Printer.Canvas.TextOut(40,430,'Country of origin:');
printer.Canvas.TextOut(280,340,AlsisProduct.Caption);
printer.Canvas.TextOut(280,370,AlsisScope.Caption);
printer.Canvas.TextOut(280,400,AlteqRef.Caption);
printer.Canvas.TextOut(280,430,Country.Caption);
printer.Canvas.MoveTo(15,470);
printer.Canvas.LineTo(785,470);
printer.Canvas.TextOut(40,480,FirmName.Caption);
printer.Canvas.TextOut(40,510,FirmAdress.Caption);
printer.Canvas.TextOut(40,540,FirmPhone.Caption);
printer.EndDoc;
end;
procedure TForm1.PackageLabelPrint;
begin
printer.PrinterIndex := printer.Printers.IndexOf(LabelPrint);
printer.Copies := 1;
printer.Orientation := poLandscape;
printer.BeginDoc;
printer.Canvas.Font.Name := 'Times New Roman';
printer.Canvas.Font.Size := 16;
printer.Canvas.Font.Style := [fsBold];
printer.Canvas.TextOut(40,100,Dato.Caption);
printer.Canvas.TextOut(40,525 - (printer.Canvas.TextHeight('BOX') Div 2),'BOX:');
printer.Canvas.TextOut(40,635 - (printer.Canvas.TextHeight('KGS') Div 2),'KG(S):');
printer.Canvas.TextOut(170,525 - (printer.Canvas.TextHeight(Box1.Caption) Div 2),Box1.Caption);
printer.Canvas.TextOut(240,525 - (printer.Canvas.TextHeight(Box2.Caption) Div 2),Box2.Caption);
printer.Canvas.TextOut(200,635 - (printer.Canvas.TextHeight('of') Div 2),KGS.Caption);
printer.Canvas.Draw(715,20,Image1.Picture.Graphic);
printer.Canvas.Font.Size := 10;
printer.Canvas.Font.Style := [];
printer.Canvas.TextOut(40,210,'Our ref:');
printer.Canvas.TextOut(40,300,'Your ref:');
printer.Canvas.TextOut(40,390,'Tracking No:');
printer.Canvas.TextOut(340,210,'TO:');
printer.Canvas.TextOut(340,480,'Shipping Marks:');
printer.Canvas.TextOut((printer.PageWidth Div 2) - (printer.Canvas.TextWidth(AdrFrom1.Caption) Div 2),700,AdrFrom1.Caption);
printer.Canvas.TextOut((printer.PageWidth Div 2) - (printer.Canvas.TextWidth(AdrFrom2.Caption) Div 2),730,AdrFrom2.Caption);
printer.Canvas.TextOut((printer.PageWidth Div 2) - (printer.Canvas.TextWidth(AdrFrom3.Caption) Div 2),760,AdrFrom3.Caption);
printer.Canvas.Font.Size := 12;
printer.Canvas.Font.Style := [fsBold];
printer.Canvas.TextOut(40,245,OurRef.Caption);
printer.Canvas.TextOut(40,335,YourRef.Caption);
printer.Canvas.TextOut(40,425,TrackNo.Caption);
printer.Canvas.TextOut(400,210,AdrTo1.Caption);
printer.Canvas.TextOut(400,250,AdrTo2.Caption);
printer.Canvas.TextOut(400,290,AdrTo3.Caption);
printer.Canvas.TextOut(400,320,AdrTo4.Caption);
printer.Canvas.TextOut(400,360,AdrTo5.Caption);
printer.Canvas.TextOut(340,515,ShipMark1.Caption);
printer.Canvas.TextOut(340,550,ShipMark2.Caption);
printer.Canvas.TextOut(340,585,ShipMark3.Caption);
printer.Canvas.TextOut(340,620,ShipMark4.Caption);
printer.Canvas.TextOut(200,525 - (printer.Canvas.TextHeight('of') Div 2),'of');
printer.Canvas.Pen.Width := 2;
printer.Canvas.MoveTo(15,200);
printer.Canvas.LineTo(printer.PageWidth-15,200);
printer.Canvas.MoveTo(15,290);
printer.Canvas.LineTo(300,290);
printer.Canvas.MoveTo(15,380);
printer.Canvas.LineTo(300,380);
printer.Canvas.MoveTo(15,470);
printer.Canvas.LineTo(printer.PageWidth-15,470);
printer.Canvas.MoveTo(15,580);
printer.Canvas.LineTo(300,580);
printer.Canvas.MoveTo(15,690);
printer.Canvas.LineTo(printer.PageWidth-15,690);
printer.Canvas.MoveTo(300,200);
printer.Canvas.LineTo(300,690);
printer.EndDoc;
end;
procedure TForm1.Udskriv;
var LabelFormat : integer;
begin
if (LabelPrint = 'DKISPR0020') or (LabelPrint = 'DKISPR0021') then
LabelFormat := 0
else
LabelFormat := 1;
case LabelFormat of
0 : begin
ItemLabelPrint;
end;
1 : begin
PackageLabelPrint;
end;
end;
end;
procedure TForm1.LabelText;
var count : integer;
Tmp : string;
begin
List := TStringList.Create;
List.LoadFromFile(FileName);
for count := 0 to List.Count-1 do
begin
if list.Strings[count] <> '' then
begin
Tmp := List.Strings[count];
if Pos('PRINTER_A',Tmp) <> 0 then
begin
Dato.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
OurRef.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
YourRef.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
TrackNo.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
Box1.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
box2.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
KGS.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrTo1.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrTo2.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrTo3.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrTo4.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrTo5.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
ShipMark1.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
ShipMark2.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
ShipMark3.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
ShipMark4.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrFrom1.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrFrom2.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AdrFrom3.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
LabelPrint := Tmp;
Delete(Tmp,1,length(Tmp));
end;
if (Pos('PRINTER_B',Tmp) <> 0) or (Pos('PRINTER_C',Tmp) <> 0) then
begin
ItemNo.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
Description.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
Quantity.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
Quantity.Caption := Quantity.Caption + ' ' + copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AlsisProduct.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AlsisScope.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
AlteqRef.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
Country.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
FirmName.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
FirmAdress.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
FirmPhone.Caption := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
LabelPrint := copy(Tmp,1,pos(',',Tmp)-1);
Delete(Tmp,1,pos(',',Tmp));
if Tmp <> '0' then
LogoOn := true
else
LogoOn := false;
if AlsisScope.Caption = 'A' then
PrintOn := false
else
PrintOn := true;
end;
end;
Udskriv;
end;
List.Free;
end;
procedure TForm1.TestLabels;
var stor : string;
begin
{ printer.PrinterIndex := printer.Printers.IndexOf(printer.Printers.Strings[printer.printerIndex]);}
printer.Copies := 1;
printer.Orientation := poportrait;
printer.Canvas.Font.Name := 'Times New Roman';
printer.Canvas.Font.Size := 16;
printer.Canvas.Font.Style := [fsBold];
printer.BeginDoc;
printer.Canvas.Rectangle(0,0,printer.PageWidth,printer.PageHeight);
printer.Canvas.Textout(printer.PageWidth div 2,printer.PageHeight div 2,'TEST');
printer.Canvas.TextOut(10,10,'TEST');
printer.Canvas.TextOut(printer.PageWidth - (printer.Canvas.TextWidth('TEST')+10),10,'TEST');
printer.Canvas.TextOut(10,printer.PageHeight -(printer.Canvas.TextHeight('TEST')+10),'TEST');
printer.Canvas.TextOut(printer.PageWidth - (printer.Canvas.TextWidth('TEST')+10),printer.PageHeight -(printer.Canvas.TextHeight('TEST')+10),'TEST');
printer.Canvas.TextOut(10,printer.canvas.TextHeight('T'),'E');
printer.Canvas.TextOut(10,(printer.canvas.TextHeight('TEST')*2),'S');
printer.Canvas.TextOut(10,(printer.canvas.TextHeight('TEST')*3),'T');
printer.EndDoc;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ProcessCmdLineParameters;
BarcodeSetup;
if TestAktiv then
begin
if PrintDialog1.Execute then
begin
TestLabels;
MessageDlg('Printer Navn: ' + printer.Printers.Strings[printer.printerindex], mtInformation,[mbOk], 0);
end
else
begin
MessageDlg('Ingen testprinter valgt.', mtInformation,[mbOk], 0);
end;
end
else LabelText;
PostMessage(Self.Handle, WM_CLOSE, 0, 0);
end;