Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

Контроль печати...   Найти похожие ветки 

 
Dion   (2004-06-08 16:10) [0]

Люди, помогите разобраться.
Вот код
unit pr1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   ListBox2: TListBox;
   Button1: TButton;
   Label1: TLabel;
   procedure FormActivate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 //type

var
 Form1: TForm1;

implementation
uses WinSpool;

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
type t=array [0..20] of PRINTER_INFO_2;
var pj:^t;
  need, ret: DWord;
  i: integer;
begin
//Pj:=AllocMem(SizeOf(pj));
EnumPrinters(PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL or PRINTER_ENUM_SHARED or PRINTER_ENUM_NETWORK , nil, 2, nil, 0, need, ret);
if need=0 then exit;
pj:=AllocMem(need );
if EnumPrinters(PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL or PRINTER_ENUM_SHARED or PRINTER_ENUM_NETWORK , nil, 2, Pj, need, need, ret) then
// showmessage("find");
// showmessage(inttostr(need));
{ if EnumPrinters(PRINTER_ENUM_LOCAL , nil, 2, @Pj, sizeof(pj), need, ret)
then
}   begin
    //ShowMessage(inttostr(ret));
    ListBox1.Clear;
    for i := 0 to ret - 1 do
      ListBox1.Items.Add(Pj[i].pPrinterName);
    ListBox1.ItemIndex := 0;
    Button1.Enabled := true;
  end;
freemem(pj);
end;

procedure TForm1.Button1Click(Sender: TObject);
type t=array [0..20] of job_Info_2;

var ID: cardinal;
  pj:^t;
  dp:devmode;
  d:LongInt;
  need, ret: cardinal;
  i,j: integer;
begin
OpenPrinter(PChar(ListBox1.Items[ListBox1.ItemIndex]), ID, nil);
EnumJobs(ID, 0, 20, 2, nil, 0, need, ret);
if need <> 0 then
begin
pj:=allocmem(need);
if EnumJobs(ID, 0, 20, 2, Pj, need, need, ret) then
   begin
    listBox2.Clear;
    for i := 0 to ret - 1 do
    begin
    j:=Pj[i].pDevMode.dmCopies;
    end;
    end;
  freemem(pj);
 end;
ClosePrinter(ID);
end;

end.

Колличество листов он возвращает правильно. А как быть с колличеством копий...
При нажатии выдает 1, не зависимо от загнанных копий...
В чем трабла. не пойму, может кто-нить подскажет????


 
YuRock ©   (2004-06-08 18:37) [1]

А что ты понимаешь под фразой "загнанных копий"?
Кол-во копий задается при инициализации принтера, т.е. если одну страницу отправть на печать 12 раз, то кол-во копий не будет равно 12.


 
Dion   (2004-06-09 06:57) [2]

Загнанных, это те, которые задаются в окне настроек печати документа... При распечатке (допустим) 1 страницы в 3 -х копиях...
Вот именно это и нужно отловить...

...т.е. если одну страницу отправть на печать 12 раз, то кол-во копий не будет равно 12.

- это уже другая история, здесь будут считаться задания...



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.061 c
14-1088993145
Паниковский
2004-07-05 06:05
2004.07.25
Как вы начинали программировать?


14-1088875636
Sanek_metaller
2004-07-03 21:27
2004.07.25
Мисс Вселенная 2004


14-1089181691
Alex____
2004-07-07 10:28
2004.07.25
SystemRestore?!


1-1089210302
rolex
2004-07-07 18:25
2004.07.25
Как узнать открыто ли PopupMenu или нет?


1-1089310224
limon_
2004-07-08 22:10
2004.07.25
JPEG и масштаб