首先在uses增加Printers,再准备一个列表框ComboBox1,其属性Visible设为FALSE,然后在打印之前执行下列语句,那么就可以检测到是否存在打印机了:procedure TForm1.ButtonClick(Sender: Tobject);
begin
ComboBox1.Clear;
ComboBox1.Items.Assign(Printer.Printers);
if ComboBox1.Items.CommaText='' then
Messagedlg('你需要安装打印机才能打印!',mtError,[mbOk],0);
else
Form1.Print; 
end;

解决方案 »

  1.   

    //////////////////////memo//////////////////////////////////
    implementation
    uses printers;
    {$R *.DFM}
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      printersetupdialog1.execute;  //选择输出的打印机以及其他打印控制选项
    end;
    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
      lines:integer;
      prntext:system.text; 
    //将PRNTEXT声名为一个在SYSTEM程序单元当中定义的文本文件
    begin
       if printdialog1.execute then
       assignprn(prntext); //将PRNTEST分配给打印机
       rewrite(prntext); //调用REWRITE函数,为输出打开已分配的文件
       printer.canvas.font:=memo1.font; 
       //把当前MEMO1的字体指定给打印对象的CANVAS的字体属性
       for lines:=0 to memo1.lines.count-1 do
       writeln(prntext,memo1.lines[lines]);
       //把MEMO的内容写到打印机对象
       system.close(prntext); //关闭打印文件
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      memo1.lines.loadfromfile('c:\dos\os2.txt');
    //在FORM建立时读入C:\DOS\OS2.TXT文件  
    end;
    end.
          
    /////////////////image////////////////////////////////////
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    if printdialog1.execute then begin
      printer.begindoc;
      printer.canvas.draw(0,0,image1.picture.graphic);
      printer.enddoc;
      end;
    end;
      

  2.   

    u2m(随波逐流,漂泊一生) :
    printdialog1怎么用?能详细点吗?