Eu faço desta forma, dentro da pasta do meu sistema crio uma pasta chamada Etiqueta. Esta pasta eu utilizo para armazenar temporariamente os arquivos com os códigos das etiquetas. Veja o exemplo comentado.
AssignFile(f,'c:\Sistema\Etiqueta\etiqueta.txt'); // Crio o arquivo na pasta do sistema
Rewrite(f);
// Esta é a tabela que me traz as informações que estarão na etiqueta
// o while vai percorrer ela gerando as etiquetas no arquivo criado.
while not dm_principal.tbl_etiqueta_comercial.Eof do
begin
// Estes 3 primeiros códigos referen-se a velocidade de impressão entre outros
Writeln(f,'N');
writeln(f,'D10');
Writeln(f,'S9');
// Esta numeração inicial refere-se a posição onde será impresso na etiqueta, por isso é interessante
// você criar o layout no ZebraDesigner primeiramente.
// após as posições você vai inserir a string.
Writeln(f,'A30,14,0,4,2,2,N,"Bento"');
Writeln(f,'A30,56,0,1,2,2,N,"Ambientes de Marca"');
// Caso o check estiver marcado ele adiciona a quantidade x volume na etiqueta
if CheckBox1.Checked then
Writeln(f,'A30,120,0,1,2,3,N,"Quant:'+dm_principal.tbl_etiqueta_comercial.FieldValues['quant']+'"');
Writeln(f,'A30,170,0,1,2,3,N,"OP:'+dm_principal.tbl_etiqueta_comercial.FieldValues['cod_item']+'"');
Writeln(f,'A30,220,0,1,2,3,N,"Descr.:'+dm_principal.tbl_etiqueta_comercial.FieldValues['descricao']+'"');
Writeln(f,'A30,270,0,1,2,3,N,"Destino:'+dm_principal.tbl_etiqueta_comercial.FieldValues['tipo']+'"');
// Writeln(f,'A30,379,0,2,1,1,N,"T.I Bento Ambientes de Marca"');
// Este P1 indica a quantidade de etiquetas a serem impressas.
Writeln(f,'P1');
dm_principal.tbl_etiqueta_comercial.Next;
end;
CloseFile(f);
AssignFile(f,'c:\SisBento\Etiqueta\etiqueta.txt');
Reset(f);
Depois é só mandar imprimir este arquivo diretamente na porta lpt1.