RT
UP没分!
UP没分!
解决方案 »
- SkinPack以及themeengine 控件有谁用过?
- 大家有没有遇到过Delphi不能编译的情况
- image控件是否支持.jpeg,jpe,rle,dib格式的图片
- 在adoquery中sql属性中执行update语句,怎样知道执行结果?
- 怎样得到数据库里面重复的记录,并把这些记录显示在DATAGRID同一行上?
- 急寻找 文魁,碁峰 或 儒林 or 松岗出版社 的网址或联系方法
- 动态创建CheckBox问题
- /***************在串口通信中如何设置RTS信号?*******************/
- 谁有dsgnintf.pas这个文件, 本人急需!此文件位置如下在
- 如何在form的onshow事件里关闭该form?
- 请教如何驱除控件干扰
- 关于数据库中的时间字段的显示查询问题,有点难度的
监控能做到
但是没有楼主说的得到其中颜色
楼主参考
==============================
procedure TForm2.Timer1Timer(Sender: TObject);
Function AbreImpresoraPorDefecto: THandle;
const
Defaults:
TPrinterDefaults = ( pDatatype : nil;
pDevMode : nil;
DesiredAccess : PRINTER_ACCESS_USE or PRINTER_ACCESS_ADMINISTER );
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, @Defaults) then Sysutils.RaiseLastWin32Error;
end; type
TTrabajos = array [0..9000] of JOB_INFO_1;
PTrabajos = ^TTrabajos; var
Device : array[0..cchDeviceName-1] of Char;
Driver : array[0..MAX_PATH-1] of Char;
Port : array[0..32]of Char;
hDMode : THandle;
pDMode : PDevMode;
MangoPrinter : Thandle;
PTrabajo : PTrabajos;
BytesRecibidos : DWord;
TrabajosRecibidos : DWord;
i : integer;
papercolor : string;
papersize : string;
begin
SetWindowLong(application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
Form1.Label6.Caption:='当前的时间是:'+Datetimetostr(now);
MangoPrinter:=AbreImpresoraPorDefecto;
try
{Hallamos cuantos bytes ocupara la enumeracion de trabajos}
EnumJobs( MangoPrinter,0,9000,1,Nil,0,
BytesRecibidos,
TrabajosRecibidos ); {Reservamos memoria para la respuesta}
PTrabajo := AllocMem( BytesRecibidos );
try
{Enumeramos los trabajos}
if NOT EnumJobs( MangoPrinter,
0, //Empezando por el primero
9000, //Numero de jobs a enumerar
1,
PTrabajo,
BytesRecibidos,
BytesRecibidos,
TrabajosRecibidos) then SysUtils.RaiseLastWin32Error;
if ((TrabajosRecibidos)=0) then
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('delete from PrMon where PrintNumber=:PrintNumber');
Parameters.ParamByName('PrintNumber').Value:='0';
ExecSQL;
end else
if((TrabajosRecibidos)>0) then
begin
//Memo1.Lines.Clear;
Printer.GetPrinter(Device,Driver,Port,hDMode);
if hDMode<>0 then
begin
pDMode:=GlobalLock(hDMode);
end
else pDMode:=nil;
if pDMode <> nil then
begin
pDMode.dmFields := pDMode.dmFields or dm_Color;
pDMode.dmColor := DMCOLOR_COLOR;
GlobalUnlock(hDMode);
end;
case pDMode^.dmPaperSize of
DMPAPER_USER: showmessage('纸张类型:自定义');
DMPAPER_A3: papersize:='A3';
DMPAPER_A4: papersize:='A4';
DMPAPER_A5: papersize:='A5';
DMPAPER_B4: papersize:='B4';
DMPAPER_B5: papersize:='B5';
DMPAPER_LETTER: papersize:='letter';
DMPAPER_9X11: papersize:='9X11';
DMPAPER_10X11 :papersize:='10X11 ';
DMPAPER_15X11:papersize:='15X11';
DMPAPER_A4_EXTRA :papersize:='A4_EXTRA ';
DMPAPER_A4_TRANSVERSE:papersize:='A4_TRANSVERSE';
DMPAPER_A5_TRANSVERSE:papersize:='A5_TRANSVERSE';
DMPAPER_B5_TRANSVERSE:papersize:='B5_TRANSVERSE';
DMPAPER_A3_EXTRA:papersize:='A3_EXTRA';
DMPAPER_A5_EXTRA :papersize:='A5_EXTRA ';
DMPAPER_B5_EXTRA:papersize:='B5_EXTRA';
DMPAPER_A2 :papersize:='A2';
DMPAPER_A3_TRANSVERSE:papersize:='A3_TRANSVERSE';
DMPAPER_A3_EXTRA_TRANSVERSE:papersize:='A3_EXTRA_TRANSVERSE';
else papersize:='Others';
end;
case Printer.Canvas.Font.Color of
clBlack: papercolor:='Black';
clMaroon: papercolor:='Maroon';
clGreen : papercolor:='Green';
clOlive: papercolor:='Olive';
clNavy: papercolor:='Navy';
clPurple: papercolor:='Purple';
clTeal: papercolor:='Teal';
clGray: papercolor:='Gray';
clSilver: papercolor:='Silver';
clRed: papercolor:='red';
clYellow: papercolor:='Yellow';
clBlue: papercolor:='Blue';
clWhite: papercolor:='White';
clNone: papercolor:='None';
clDefault: papercolor:='Default';
else papercolor:= 'Others';
end; for i:= 0 to Pred(TrabajosRecibidos) do
try
with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('delete from PrMon where DocumentName=:DocumentName or PrintNumber=:PrintNumber');
Parameters.ParamByName('DocumentName').Value:=STRPAS(PTrabajo^[i].pDocument);
Parameters.ParamByName('PrintNumber').Value:='0';
ExecSQL;
end; with DataModuleADO.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('insert into PrMon (DocumentName,ComputerName,PrinterName,UserName,PrintNumber,PaperSize,DocumentColor,Copies,PrintDate)'+
'values (:DocumentName,:ComputerName,:PrinterName,:UserName,:PrintNumber,:PaperSize,:DocumentColor,:Copies,:PrintDate)');
Parameters.ParamByName('DocumentName').Value:=STRPAS(PTrabajo^[i].pDocument);
Parameters.ParamByName('ComputerName').Value:=STRPAS(PTrabajo^[i].pMachineName);
Parameters.ParamByName('PrinterName').Value:=STRPAS(PTrabajo^[i].pPrinterName);
Parameters.ParamByName('UserName').Value:=STRPAS(PTrabajo^[i].pUserName);
Parameters.ParamByName('PrintNumber').Value:=InttoStr(PTrabajo^[i].TotalPages);
Parameters.ParamByName('PaperSize').Value:=papersize;
Parameters.ParamByName('DocumentColor').Value:=papercolor;
Parameters.ParamByName('Copies').Value:=(pDmode^.dmCopies);
Parameters.ParamByName('PrintDate').Value:=now;
ExecSQL;
end; Except
MessageDlg('入库出错',mtError,[mbok],0);
end;
end;
finally
{Liberamos la memoria usada en la respuesta}
FreeMem( PTrabajo );
end;
finally
{Cerramos la impresora}
ClosePrinter(MangoPrinter);
end;end;