FastReport如何打印二维条形码?

解决方案 »

  1.   

    http://www.winu.cn/space-14160-do-blog-id-9754.html
      

  2.   

    barCode控件,通过它可以实现条形码的打印。   barCode如果想使用程序中某个变量作为条码值,那么首先设置barCode的值为变量。例如:barCodeValue。给这个变量赋值的方式同 给meotext中的变量赋值一样。   frVariables['barcode']   := somevalue;在使用条形码的时候,需要引入FR_BarC 单元。
      

  3.   

    barcode我用过一维的,通过设置应该可以达到二维的
      

  4.   

    1.更改FastReport源码
      找到frxBarcod.pas
     TfrxBarcodeType =
      (
      bcCode_2_5_interleaved,
      bcCode_2_5_industrial,
      bcCode_2_5_matrix,
      bcCode39,
      bcCode39Extended,
      bcCode128A,
      bcCode128B,
      bcCode128C,
      bcCode93,
      bcCode93Extended,
      bcCodeMSI,
      bcCodePostNet,
      bcCodeCodabar,
      bcCodeEAN8,
      bcCodeEAN13,
      bcCodeUPC_A,
      bcCodeUPC_E0,
      bcCodeUPC_E1,
      bcCodeUPC_Supp2,    { UPC 2 digit supplemental }
      bcCodeUPC_Supp5,    { UPC 5 digit supplemental }
      bcCodeEAN128A,
      bcCodeEAN128B,
      bcCodeEAN128C,
      这里添加二维条形码的名称
      );增加一个类似
    function Code_Supp2: AnsiString;的函数
    在procedure DrawBarcode(Canvas: TCanvas; ARect: TRect; ShowText: Boolean);里增加对二维条形码的算法。
            bcCodeUPC_E1:          // 7 digits, 6+1
              begin
                TextOutR(3, 3, 44, Copy(FText, 1, 6));
                TextOutR(BarWidth + 1, BarWidth + 1, BarWidth + 8, Copy(FText, 7, 1));
              end;
            else
              begin
                TxtWidth := TextWidth(String(FText));
                TextOutR((BarWidth - TxtWidth) div 2, 0, BarWidth, FText);
              end;
    //在这里添加算法来画
          end;其他的再调整一下就好了!
    重新编译FastReport!
    另外一种就是动态建立,然后采用图形赋值的方法!