Fiz essa verificação para quebrar um galho e pelo ao menos deixar o cliente satisfeito por em quanto,
-veriifiquei no Before Print se o código de barras for igual a 4, igual a 5 ou igual a 7 ele muda a propriedadde BarcodeType para 2/5 Industry, esse codigo de barras é tipo um "universal" (o leitor le toda e qualquer numeração informada) mas a barra fica bem extensa, então 4, 5, e 7 digitos são pequenos e cabe na minha etiqueta;
-Se tiver 6, 8, 10,12 ou 14 digitos mudei a propriedade para 2/5 Intervaled, essa propriedade imprime corretamente apenas códigos com numeros pares,
-Se for 9 ou 11 digitos mudei a propriedade para bcCode128C onde é menor que o 2/5 Industry e le perfeitamente com essas duas numerações;
-Se for 13 ditos deichei o EAN13 dai la no campo também só faz a verificação do dígito verificador se tiver 13 digitos.
procedure TFFEstoque.RLDetailGrid9BeforePrint(Sender: TObject; var PrintIt: Boolean);
begin
if (Length(DataM.ADQTempCAMPO5.AsString) = 4) or (Length(DataM.ADQTempCAMPO5.AsString) = 5) or (Length(DataM.ADQTempCAMPO5.AsString) = 7) then
RLDBBarcode2.barcodetype := bcCode2OF5Industry;
if (Length(DataM.ADQTempCAMPO5.AsString) = 6) or (Length(DataM.ADQTempCAMPO5.AsString)= 8) or (Length(DataM.ADQTempCAMPO5.AsString)= 10) or (Length(DataM.ADQTempCAMPO5.AsString) = 12) or (Length(DataM.ADQTempCAMPO5.AsString) = 14) then
RLDBBarcode2.barcodetype := bcCode2OF5Interleaved;
if (Length(DataM.ADQTempCAMPO5.AsString) = 11) or (Length(DataM.ADQTempCAMPO5.AsString) = 9) then
RLDBBarcode2.barcodetype := bcCode128C;
//Aqui só cod barras com dígito verificador
if Length(DataM.ADQTempCAMPO5.AsString) = 13 then
RLDBBarcode2.barcodetype := bcEAN13;
end;
Lembrando que isso é para códigos de barras internos, e também se alguem tem uma maneira mais prática para fazer me digam. Obrgado.