请问一下大家:如果不借用外部控件。怎么实现 图文的混打啊? 
最好来个例子!

解决方案 »

  1.   

    delphi本身就有EX的:
    procedure TForm1.Button1Click(Sender:TObject);var
      I, Start, Stop: Integer;
    begin
    PrintDialog1.Options := [poPageNums, poSelection];
    PrintDialog1.FromPage := 1;
    PrintDialog1.MinPage := 1;
    PrintDialog1.ToPage := PageControl1.PageCount;
    PrintDialog1.MaxPage := PageControl1.PageCount;
    if PrintDialog1.Execute then
      begin
       { determine the range the user wants to print }
        with PrintDialog1 do 
        begin
          if PrintRange = prAllPages then        begin
            Start := MinPage - 1;
            Stop := MaxPage - 1;
          end
          else if PrintRange = prSelection then
          begin
            Start := PageControl1.ActivePage.PageIndex;
            Stop := Start;
            end
          else  { PrintRange = prPageNums }
          begin
            Start := FromPage - 1;
            Stop := ToPage - 1;
          end;
        end;
        { now, print the pages }    with Printer do
        begin
          BeginDoc;
          for I := Start to Stop do
          begin
            PageControl1.Pages[I].PaintTo(Handle, 10, 10);
            if I <> Stop then
              NewPage;
          end;
          EndDoc;
        end;
      end;end;
      

  2.   


    Printr:TPrinter;
    begin
      Printr:=Printer();
      Printr.BeginDoc();
      //画Printr.Canvas
      Printr.EndDoc();
    end;
      

  3.   

    to  1楼  我看不出来你是怎么实现图文混打的
    to 2  楼 ,这个方法能打印图文,但是会把文字当做图片。 我要打印的文字是一段带格式符的文字。
    这样打出来就成一行了。没了格式符。
      

  4.   

    来自:车金明,   时间:2002-2-5   14:32:00,   ID:908271     
      用WinApi函数DrawText;   
      int   DrawText(   
        
              HDC   hDC, //   设备描述符句柄   
              LPCTSTR   lpString, //   显示的字符串   
              int   nCount, //   字符串长度   
              LPRECT   lpRect, //   字符串显示的限制矩形   
              UINT   uFormat   //   文本显示格式   
            );试试下面的例子   
      procedure   TForm1.Button1Click(Sender:   TObject);   
      const   
          str='D   F   W   大   富   翁   论   坛';   
      var   
          r:TRect;   
      begin   
          r:=Rect(20,30,35,150);   
          DrawText(printer.Canvas.Handle,pchar(str),length(str),r,DT_WORDBREAK   OR   DT_CENTER);   
      end; 
    这种方法可以带格式打印了。但还不不太好控制图片和文字的位置。请高手给个完美点的解决方法。