索书号= 分类号 + 排架号  比如 TP311.12/Y21S
到图书馆找书时想找《数据结构》这本书,先查到它的索书号TP311.12/Y21S,
找到TP311.12这一类图书的大致位置,然后根据Y21S就可以知道这本书在书架
的摆放位置。实际上可以把索书号看作一个字符串
问题是:如何把数据库中查询到的索书号打印在贴纸上,要求每个索书号
        都打印在整张贴纸的每个小方框内。谢谢!
______________________________________________________________________
|                                                                    |
|  _________________ ___________________ _________________           |              
| |                | |                 | |                |          |
| |  TP311.12/Y21S | |  TP311.12/Y223  | |  TP311.12/Y254 |          |
| |________________| |_________________| |________________|          |
|                                                                    |
|  _________________ ___________________ _________________           |              
| |                | |                 | |                |          |
| |  TP312.12/Y43T | |  TP312.12/Y21S  | |  TP312.12/E41S |          |
| |________________| |_________________| |________________|          |
|  _________________ ___________________ _________________           |              
| |                | |                 | |                |          |
| |  TP313.12/Y21S | |    ......       | |                |          |
| |________________| |_________________| |________________|          |
|  _________________ ___________________ _________________           |              
| |                | |                 | |                |          |
| |    .....       | |                 | |                |          |
| |________________| |_________________| |________________|          |
|                                                                    |
|____________________________________________________________________|

解决方案 »

  1.   

    用Delphi的QuickReport可以做吗?或者有什么好的控件可以用?
      

  2.   

    朋友,索书号不是这样的哦,索书号应该是=分类号/排架号/卷册号,如果打印在书标上,应该是
    分类号
    排架号
    卷册号
    才对哟,另外,别用QReport,试试其他的,QReport实现这种打印巨麻烦,很难保证对整齐,一般会出现上边整齐了,下边不停往下坠,到书标纸的末端简直就惨不忍睹了。
      

  3.   

    老实说我们没有很好的解决这个问题,我们将打印设置放到了1/100毫米,还是对不整齐,伤脑筋哟,你可以看看大连博菲特的软件,他们的打印书标做得比较好,好像也是用Delphi开发的
      

  4.   

    这只是一个例子.只是做的时候要调整好了,线都是自己画.
    我做的时候是这样弄的。procedure TPrintFrm.SpeedButton1Click(Sender: TObject);
    var
       Year,Month,Day:Word;
       DateTime:String;
    begin  DecodeDate(now,Year,Month,Day);
      DateTime:=Format('%d-%d-%d',[Year,Month,Day]);
      Printer.BeginDoc;
      Printer.Canvas.Font.Name:='宋体';
      Printer.Canvas.Font.Size:=10;
      //                     列   行
      Printer.Canvas.TextOut(480,130,DianFrm.Combobox2.text+'(电费交纳单)');
      Printer.Canvas.TextOut(100,190,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.polyline([Point(100,200),Point(100,530)]);//第一条线
      Printer.Canvas.Polyline([point(210,200),point(210,530)]);//第二条线
      Printer.Canvas.Polyline([point(380,200),point(380,460)]);//第三条线
      Printer.Canvas.Polyline([point(580,200),point(580,460)]);//第四条线
      Printer.Canvas.Polyline([point(780,200),point(780,460)]);//第五条线
      Printer.Canvas.Polyline([point(980,200),point(980,460)]);//第六条线
      Printer.Canvas.Polyline([point(1180,200),point(1180,530)]);//第七条线
      Printer.Canvas.Polyline([point(1330,200),point(1330,530)]);//最后一条线
      Printer.Canvas.TextOut(100,220,' 名称 ');
      Printer.Canvas.TextOut(220,220,DianFrm.Edit1.Text);
      Printer.Canvas.TextOut(400,220,'上期用电(度)');
      Printer.Canvas.TextOut(600,220,'本期用电(度)');
      Printer.Canvas.TextOut(800,220,'实际用电(度)');
      Printer.Canvas.TextOut(1000,220,'单价(度/元)');
      Printer.Canvas.TextOut(1200,220,'金额(元)');
      Printer.Canvas.TextOut(100,250,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,290,' 门市');
      Printer.Canvas.TextOut(220,290,DianFrm.Edit2.Text+DianFrm.Label1.caption+DianFrm.Edit3.text+DianFrm.Label2.caption+DianFrm.Edit4.text+DianFrm.Label3.Caption);
      Printer.Canvas.TextOut(440,290,DianFrm.Edit5.Text);
      Printer.Canvas.TextOut(640,290,DianFrm.Edit6.Text);
      Printer.Canvas.TextOut(860,290,DianFrm.Edit7.Text);
      Printer.Canvas.TextOut(1050,290,DianFrm.Edit8.Text);
      Printer.Canvas.TextOut(1230,290,DianFrm.Edit9.Text);
      Printer.Canvas.TextOut(100,320,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,360,' 住房');
      Printer.Canvas.TextOut(220,360,DianFrm.Edit10.Text+DianFrm.Label4.Caption+DianFrm.Edit11.Text+DianFrm.Label5.Caption+DianFrm.Edit12.Text+DianFrm.Label6.Caption);
      Printer.Canvas.TextOut(440,360,DianFrm.Edit13.Text);
      Printer.Canvas.TextOut(640,360,DianFrm.Edit14.Text);
      Printer.Canvas.TextOut(860,360,DianFrm.Edit15.Text);
      Printer.Canvas.TextOut(1050,360,DianFrm.Edit16.Text);
      Printer.Canvas.TextOut(1220,360,DianFrm.Edit17.Text);
      Printer.Canvas.TextOut(100,390,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,430,' 住房');
      Printer.Canvas.TextOut(220,430,DianFrm.Edit18.Text+DianFrm.Label7.Caption+DianFrm.Edit19.Text+DianFrm.Label8.Caption+DianFrm.Edit20.Text+DianFrm.Label10.Caption);
      Printer.Canvas.TextOut(440,430,DianFrm.Edit21.Text);
      Printer.Canvas.TextOut(640,430,DianFrm.Edit22.Text);
      Printer.Canvas.TextOut(860,430,DianFrm.Edit23.Text);
      Printer.Canvas.TextOut(1050,430,DianFrm.Edit24.Text);
      Printer.Canvas.TextOut(1220,430,DianFrm.Edit25.Text);
      Printer.Canvas.TextOut(100,460,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,500,'合计大写');
      Printer.Canvas.TextOut(220,500,DianFrm.Edit26.Text);
      Printer.Canvas.TextOut(1230,500,DianFrm.Edit27.Text);
      Printer.Canvas.TextOut(100,530,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,580,'收费单位:'+DianFrm.ComboBox2.Text);
      Printer.canvas.textout(580,580,'收费员:'+DianFrm.ComboBox1.Text);
      Printer.Canvas.TextOut(980,580,'时间:'+DateTime);
      Printer.EndDoc;
    end;
      

  5.   

    回复人: Tsc96() ( ) 信誉:99 谢谢贴纸上书标的格子本来就是印刷好的,只要把字符串对其打印进去就行了,
    看来不能做成报表一样的东西可以预览咯
    ---------------------------------------------------------------
    可以不用画线了。直接打印吧.就是控制格式有点麻烦
      

  6.   

    Ok,那就把每行的Top 每列Left在界面上可调的
    不过这样一次只能打印一页
    不过没关系,就这么办吧 :)