CTI13
Messages postés7Date d'inscriptionlundi 15 février 2010StatutMembreDernière intervention15 juillet 2015
-
29 mars 2012 à 14:23
pierrotk10d
Messages postés109Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention17 février 2023
-
31 mars 2012 à 21:43
Bonjour à tous,
Je cherche du code source pour imprimer sur une imprimante étiquette du type ZEBRA, DYMO ou autre un datamatrix avec police ECC200
pierrotk10d
Messages postés109Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention17 février 20233 29 mars 2012 à 21:48
Bonjour,
Du temps ou je travaillais, c'était en 2002 environ, j'avais écrit une application pour éditer des étiquettes sur imprimantes Zebra (Ref S600 je crois). Il y avait 2 formats d'étiquettes à imprimer, donc 2 imprimantes Zebra.
J' utilisais le langage ZPL. Je générais une TStrinList avec les codes zebra et les infos à imprimer. Les codes commencent tous par le chapeau '^' ^FD par exemple et ensuite j'envoyais la TStringList à la bonne imprimante.
Je dois avoir les sources de cette appli à la maison si tu es intéressé je regarderais
pierrotk10d
Messages postés109Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention17 février 20233 31 mars 2012 à 21:43
Bonjour,
Voici les procédures avec Delphi 4:
Remplissage de la TStringList et son impression sur imprimante Zebra.
(Pour le langage ZPL voir chez Zebra).
Cette appli était bilingue c'est pour cette raison que les messages d'erreur sont dans un tableau.
La fonction Padr n'existait pas sous Delphi 4 j'avais écrit cette fonction pour formater le texte du code sur 15 caractères.
Les tables étaient en relation par le modèle
{$DEFINE FRANCE}
Const
{$IFDEF FRANCE} // Français
aMsg: Array[0..10] of string = ();
{$ELSE} // Anglais
aMsg: Array[0..10] of string = ();
{$ENDIF}
Procedure TfEtiquette.Imprime(ts: TStringList);
Var i: Integer;
Prt: TextFile;
begin
AssignPrn(Prt);
Try
Rewrite(Prt); // Création et ouverture d'un nouveau fichier
Try
For i := 0 To ts.Count-1 do
WriteLn(Prt, ts[i]);
Finally
System.CloseFile(Prt);
end;
Except // 'Erreur d''impression'
On EInOutError do MessageDlg(aMsg[2], mtError, [mbOk],0);
End;
end;
Procedure FillTs(ts: TStringList);
// Remplissage de la TStringList passée à la procédure
Var cModele, cRoot, cCodeSur15: string;
Begin
With fDM do begin // fDM + DataModule
// tCde = Table des commandes
cModele := tCde.FieldByName('Modele').AsString;
cCodeSur15 := fEtiquette.Padr(cModele + tCde.FieldByName('Opva').AsString, 15);
tEnsb.SetKey;
tEnsb.FieldByName('Modele').AsString := cModele;
tEnsb.GotoKey;
cRoot := cPathData + tInfo.FieldByName('Root').AsString;
// tInfo = Table contenant les infos à rechercher en fonction du modèle
With ts do begin
LoadFromFile(cRoot); // Partie fixe du programme d'impression
Add('^FO436,49^FD' + tCde.FieldByName('IT').AsString + '^FS');
If cModele = 'P500' then
Add('^FO70,49^FD' + tCde.FieldByName('IUn').AsString + '^FS');
Add('^FO28,20^FD' + cModele + '^FS'); // Modele grande étiquette
Add('^FO114,20^FD' + fEtiquette.CodeCR(cCodeSur15) + '^FS');
Add('^FO444,82^FD' + FormatNumCde(tCde.FieldByName('NumCde').AsString,
tCde.FieldByName('NumLig').AsString) + '^FS');
Add('^FO20,146^FD' + tInfo.FieldByName('Diagram').AsString + '-' +
tInfo.FieldByName('IndDiag').AsString);
Add('^FO448,181^FD' + FormatDateTime('mm.yy',Now) + '^FS');
Add('^FWB^FS'); // Modele dans la petite étiquette
Add('^CF0,35,31^FS'); // Changement de fonte
Add('^FO640,72^FD' + cModele + '^FS');
Add('^CFE,28,15^FS'); // Fonte standard
Add('^FWN^FS');
Add('^FO344,146^CFD^SN F dummy,1,Y^FS'); // N° de série
Add('^PQ3,0,3,Y^FS'); // ^PQ = Nb d'étiquettes identiques à imprimer
Add('^EG^XZ');
End;
End;
{* Pour info Syntaxe de SN: SNtexte,v,n,z ou v= N° de départ, n= increment,
z= Yes ou No complément avec des zéros si nécessaire *}
end;