AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Etikettendruck auf Brother QL-1060N
Thema durchsuchen
Ansicht
Themen-Optionen

Etikettendruck auf Brother QL-1060N

Ein Thema von waldforest · begonnen am 24. Jul 2015 · letzter Beitrag vom 25. Jul 2015
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Etikettendruck auf Brother QL-1060N

  Alt 24. Jul 2015, 16:30
Hallo,
ich möchte über meine Anwendung auf einen Netzwerk Etikettendrucker "Brother QL-1060N" drucken.

Erstes Problem ist den Drucker übs Netz anzusprechen, das zweite ist die Etikette.
Wie gehe ich hier am Besten vor, über Quickreport oder direkt an den Drucker senden ?

Für den Drucker gibt's ja auch einen Labelcreator, wie kann man fertige Labels ansprechen ?
mfg wf

Geändert von waldforest (24. Jul 2015 um 16:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Etikettendruck auf Brother QL-1060N

  Alt 24. Jul 2015, 16:36
Du musst den Drucker und damit dessen Treiber auf der Workstation auf der die Anwendung läuft installieren. Dann erstellst Du ganz normale Druckstücke und druckst diese. Wenn es auf Performance ankommt, musst Du den Drucker evtl. als RAW installieren (Server UND Workstation) und schickst einen Druckdatenstrom. Ansonsten rendert der Treiber das evtl. als Grafik und schickt die dann zum Drucker.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Etikettendruck auf Brother QL-1060N

  Alt 24. Jul 2015, 19: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 06:46 Uhr)
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Etikettendruck auf Brother QL-1060N

  Alt 25. Jul 2015, 09:33
Hallo,
vielen Dank, das schau ich mir mal an, bringt mich weiter

Das mit der SDK eröffnet mir noch ein paar Möglichkeiten mehr.
mfg wf
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Etikettendruck auf Brother QL-1060N

  Alt 25. Jul 2015, 09:44
Aber bitte nicht das Exception-Handling so übernehmen, da kräuseln sich mir die Fussnägel.

So in der Art wäre das schon viel besser (und vor allem aussagekräftiger):
Delphi-Quellcode:
unit de.company.FooFramework;

interface

uses
  System.SysUtils;

type
  EFooException = class( Exception );
  EFooNoPrinterException = class( EFooException );
  EFooTemplateParseException = class( EFooException );

type
  TFoo = class
    /// <summary>
    /// Druckt ein Etikett auf einem Etiketten-Drucker aus
    /// </summary>
    /// <exception cref="EFooTemplateParseException">
    /// <see cref="EFooTemplateParseException">EFooTemplateParseException</see>
    /// Bei einem Parser-Fehler
    /// </exception>
    /// <exception cref="EFileNotFoundException">
    /// <see cref="EFileNotFoundException">EFileNotFoundException</see>
    /// Wenn die Vorlage nicht gefunden wurde
    /// </exception>
    procedure PrintLabel( );
  end;

implementation

{ TFoo }

procedure TFoo.PrintLabel;
var
  CurrentLabel: string;
begin

  if not FileExists( CurrentLabel ) then
    raise EFileNotFoundException.CreateFmt( 'Datei %s wurde nicht gefunden', [ CurrentLabel ] );

  try

    // Parsen der Datei

  except
    // Wir wrappen alle auftretenden Ausnahmen mit unserer Exception-Klasse
    raise EFooTemplateParseException.CreateFmt( 'Fehler beim Parsen der Datei %s', [ CurrentLabel ] );
  end;
end;

end.
Wichtig ist die Dokumentation, welche Exceptions auftreten können.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (25. Jul 2015 um 10:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz