|
|
Заканчивает подготовку задания на печать и начинает печать документа.
// Главная форма frm=new TForm(); frm.Caption="JS+ - метод компонента TPrinter EndDoc"; frm.Width =700; frm.Height=525;
// Строка состояния stb=new TStatusBar(frm); stb.SimpleText=' Нажмите кнопку "Печать"';
// Принтер prn=Printer();
// Список доступных принтеров cmb=new TComboBox(frm); cmb.Style=csDropDownList; cmb.Left=cmb.Top=10; cmb.Items=prn.Printers; if (cmb.Items.Count==0) { cmb.Items.Add("Нет доступных принтеров"); stb.SimpleText=" "+cmb.Items[cmb.ItemIndex=0]; } else cmb.ItemIndex=prn.PrinterIndex;
// Кнопка btn=new TButton(frm); btn.Caption="Печать"; btn.Top=stb.Top-btn.Height-10; btn.OnClick=btn_Click; if (prn.Printers.Count==0) btn.Enabled=false;
// Панель закладок pgc=new TPageControl(frm); pgc.Left=cmb.Left; pgc.Top =cmb.Top+cmb.Height+10; pgc.Width =frm.ClientWidth-pgc.Left*2; pgc.Height=btn.Top-pgc.Top-10;
for (i=0;i<2;i++) { // Закладка tsh=new TTabSheet(pgc);
switch (i) { case 0: tsh.Caption="Изображение";
// Панель pnl=new TPanel(tsh); pnl.BorderStyle=bsSingle; pnl.Left=pnl.Top=10-tsh.Left; pnl.Width =tsh.ClientWidth-pnl.Left*2; pnl.Height=tsh.ClientHeight-pnl.Top*2;
// Изображение img=new TImage(pnl); img.Align=alClient; img.LoadFromFile( JSPlus.HelpDir+"IMAGE\\TPrinter\\Image.jpg");
img.Align=alNone; pnl.ClientWidth =img.Width; pnl.ClientHeight=img.Height; pgc.ClientWidth=pnl.Width+(pnl.Left+tsh.Left)*2; break;
case 1: tsh.Caption="Текст";
// Memo mem=new TMemo(tsh); mem.BorderStyle=bsSingle; mem.SetBounds( pnl.Left,pnl.Top,pnl.Width,pnl.Height); for (j=1;j<10;j++) mem.Lines.Add("Строка "+j); } }
frm.ClientWidth=pgc.Width+pgc.Left*2; cmb.Width=frm.ClientWidth-cmb.Left*2; btn.Left=cmb.Left+cmb.Width-btn.Width;
frm.ShowModal();
// Обработчик события OnClick function btn_Click(btn) { var i,y,dy,cnv,str_lst;
prn.PrinterIndex=cmb.ItemIndex; prn.BeginDoc();
switch (pgc.ActivePageIndex) { case 0: img.Print(prn,10,10); break; case 1: cnv=prn.Canvas; cnv.Font.Name="Tahoma"; cnv.Font.Size=9; dy=cnv.TextHeight("Q")*1.1; str_lst=mem.Text.split("\r\n"); for (i=y=0;i<str_lst.length;y+=dy,i++) cnv.TextOut(0,y,str_lst[i]); }
prn.EndDoc(); }
|
Совместимость
C++ Builder/Delphi
|
JS+ | Руководство пользователя
|
|
|
|
|
|