Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.300 Beiträge
 
Delphi 12 Athens
 
#3

AW: Etikettendruck auf Brother QL-1060N

  Alt 24. Jul 2015, 18:54
Hallo...

Brother hat für seine Etikettendrucker ein SDK. http://www.brother.com/product/dev/label/bpac/
Daraus erzeugt man die TLB. (Hast du schon im Anhang). Leider haben die eine Klasse TPrinter genannt. Im Zweifelsfalle umbenennen. Damit kannst du mit dem Editor erzeugte Etiketten (Datei) laden, ausfüllen und zum Drucker schicken. Treiber logischerweise vorausgesetzt.
Empfehlung: Beschäftigung mit dem SDK...

Ein Druck über Reportgenerator würde zwar auch gehen, aber die spezifischen Funktionen wie z.B. wann geschnitten wird, sind dann nicht verfügbar.

Weil bald Weihnachten ist... Beispielcode:
Delphi-Quellcode:
uses ... bpac_TLB,

FPTouchDocument: IDocument;
.
.
FPTouchDocument:= CreateComObject(CLASS_Document) as IDocument;
.
.
function TdBK_Preferences.GetLabelPrinters: TStrings;
var
  I: Integer;
  PTouchPrinter: IPrinter;

begin
  Result:= FLabelPrinterList;
  FIsSDKRegistered:= False;

  try
    PTouchPrinter:= CreateComObject(CLASS_Printer) as IPrinter; // SDK Test
    FIsSDKRegistered:= True;
  except
    // SDK nicht registriert
  end;

  FLabelPrinterList.Clear;
  for I := 0 to Printer.Printers.Count - 1 do
  begin
    FLabelPrinterList.Add(Printer.Printers[I]);
  end;
end;
.
.
procedure TdBK_Print.PrintLabel(Article: TdBK_DataArticle; LabelType: TdBK_LabelType; Count: Cardinal);
var
  CurrentLabel: string;

  function FormatText(aText: string): string;
  begin
    Result:= ' '; // Leerzeichen bei leerem Text da sonst Fehler.
    if aText <> 'then
    begin
      Result:= aText;
    end;
  end;

begin
  case LabelType of
    ltNormal:
    begin
      CurrentLabel:= dm.dBK.Preferences.Print.FileNameLabelNormal;
    end;
    ltOffer:
    begin
      CurrentLabel:= dm.dBK.Preferences.Print.FileNameLabelOffer;
    end;
  end;

  if FileExists(CurrentLabel) then
  begin
    try
      FPTouchDocument.SetPrinter(dm.dBK.Preferences.Print.LabelPrinterName, False);
      FPTouchDocument.Open(CurrentLabel);
      try
        FPTouchDocument.StartPrint('dBK Label', bpoCutAtEnd);

        FPTouchDocument.GetObject('Text1').Text:= FormatText(Article.ArticleName);
        FPTouchDocument.GetObject('Text2').Text:= FormatText(Article.ArticleCaption);
        FPTouchDocument.GetObject('ValueNormal').Text:= FormatText(FloatToStrF(Article.CostGross, ffFixed, 8, 2) + ' ' + conCurrencyString);
        case LabelType of
          ltNormal:
          begin
            FPTouchDocument.SetBarcodeData(0, Article.ArticleNumber);
          end;
          ltOffer:
          begin
            FPTouchDocument.GetObject('ValueOffer').Text:= FormatText(FloatToStrF(Article.CostOffer, ffFixed, 8, 2) + ' ' + conCurrencyString);
            FPTouchDocument.SetBarcodeData(0, '_' + Article.ArticleNumber);
          end;
        end;

        FPTouchDocument.PrintOut(Count, bpoDefault);
        FPTouchDocument.EndPrint;
      finally
        FPTouchDocument.Close;
      end;
    except
      MessageDlg('Die Vorlagendatei ' + QuotedStr(CurrentLabel) + ' konnte nicht verarbeitet werden. Bitte prüfen Sie das Layout.', mtError, [mbOK], 0);
    end;
  end
  else begin
    MessageDlg('Die Vorlagendatei ' + QuotedStr(CurrentLabel) + ' konnte nicht gefunden werden. Bitte prüfen Sie die Einstellungen.', mtError, [mbOK], 0);
  end;
end;
Angehängte Dateien
Dateityp: pas bpac_TLB.pas (88,2 KB, 50x aufgerufen)

Geändert von haentschman (25. Jul 2015 um 05:46 Uhr)
  Mit Zitat antworten Zitat