⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_prn_set.pas

📁 学员管理的软件
💻 PAS
字号:
unit U_prn_set;

interface

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

type
  TF_prn_set = class(TForm)
    GroupBox1: TGroupBox;
    ComboBox1: TComboBox;
    BitBtn1: TBitBtn;
    Memo1: TMemo;
    BitBtn2: TBitBtn;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    ComboBox2: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox4: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn3: TBitBtn;
    Label5: TLabel;
    Label6: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
  private
    procedure repprn;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_prn_set: TF_prn_set;
  show_right:boolean=false;

implementation
const techno:array[0..6] of string=('Plotter','Grid-screen',
'Grid-Printer','?',
'Sign-Printer','Metafile',
'?');
{$R *.dfm}
procedure setpapersize(x,y:integer);
var
device:array[0..255] of char;
driver:array[0..255] of char;
port:array[0..255] of char;
hdmode:Thandle;
pdmode:PDEVMODE;
begin
//printer.PrinterIndex:=printer.PrinterIndex;
printer.GetPrinter(device,driver,port,hDmode);
if hDmode<> 0 then
begin
  pdmode:=globallock(hdmode);
  if pdmode<> nil then
  begin
    if (x=0) or (y=0) then
    begin
      pdmode^.dmFields:=pdmode^.dmFields or dm_papersize;
      pdmode^.dmPaperSize:=dmpaper_fanfold_us;
    end
    else
    begin
      pdmode^.dmFields:=pdmode^.dmFields or
      dm_papersize or
      dm_paperwidth or
      dm_paperlength;
      pdmode^.dmPaperSize:=dmpaper_user;
      if pdmode^.dmOrientation = dmorient_landscape then
      begin
        pdmode^.dmPaperWidth:=x;
        pdmode^.dmPaperLength:=y;
      end
      else
      begin
        pdmode^.dmPaperWidth:=y;
        pdmode^.dmPaperLength:=x;
      end;
    end;
    globalunlock(hdmode);
  end;
end;
printer.PrinterIndex:=printer.PrinterIndex;
end;
procedure TF_prn_set.repprn;
var dc:Thandle;
n,i:integer;
begin

  memo1.Clear;
  dc:=Printer.Handle;
  memo1.Lines.Add('打印机名称:'+Printer.Printers[printer.printerindex]);
  memo1.Lines.Add('驱动程序版本:'+inttostr(getdevicecaps(dc,
  driverversion)));
  memo1.Lines.Add('技术支持:'+techno[getdevicecaps(dc,technology)]);
  memo1.Lines.Add('纸张宽度(mm):'+inttostr(getdevicecaps(dc,horzsize)));
  memo1.Lines.Add('纸张高度(mm):'+inttostr(getdevicecaps(dc,vertsize)));
  memo1.Lines.Add('宽(象素):'+inttostr(getdevicecaps(dc,horzres)));
  memo1.Lines.Add('高(象素):'+inttostr(getdevicecaps(dc,vertres)));
  memo1.Lines.Add('页面左边距(象素):'+inttostr(getdevicecaps(dc,PHYSICALOFFSETX)));
  memo1.Lines.Add('页面上边距(象素):'+inttostr(getdevicecaps(dc,PHYSICALOFFSETY)));
  memo1.Lines.Add('分辨率:'+inttostr(getdevicecaps(dc,logpixelsx))+'*'+
  inttostr(getdevicecaps(dc,logpixelsy)));
  memo1.Lines.Add('色彩:'+inttostr(getdevicecaps(dc,numcolors)));
  memo1.Lines.Add('支持的字体:'+inttostr(printer.Fonts.Count)+'种');

end;


procedure TF_prn_set.BitBtn1Click(Sender: TObject);
var
device:array[0..255] of char;
driver:array[0..255] of char;
port:array[0..255] of char;
s:array[0..255] of char;
hdevicemode:Thandle;
begin

printer.PrinterIndex:=combobox1.ItemIndex;
printer.GetPrinter(device,driver,port,hdevicemode);
strcat(s,device);
strcat(s,',');
strcat(s,driver);
strcat(s,',');
strcat(s,port);
writeprofilestring('windows','device',s);
strcopy(s,'windows');
sendmessage(HWND_BROADCAST,WM_WININICHANGE,0,longint(@s));
repprn;
messagedlg('打印机配置成功',mtinformation,[mbok],0);

end;

procedure TF_prn_set.FormActivate(Sender: TObject);
var
dc:Thandle;
begin
dc:=printer.Handle;
label6.Caption:=inttostr(getdevicecaps(dc,vertsize));
label5.Caption:=inttostr(getdevicecaps(dc,horzsize));
edit1.Text:=label5.Caption;
edit2.Text:=label6.Caption;
combobox2.Text:=combobox2.SelText;
combobox1.Items:=printer.Printers;
combobox1.ItemIndex:=printer.PrinterIndex;
groupbox4.Visible:=false;
end;

procedure TF_prn_set.BitBtn2Click(Sender: TObject);
begin
show_right:=not show_right;
if show_right then
f_prn_set.Width:=f_prn_set.Width+150
else
f_prn_set.Width:=f_prn_set.Width-150;
end;

procedure TF_prn_set.BitBtn3Click(Sender: TObject);
var
dc:Thandle;
begin
setpapersize(strtoint(edit1.Text),strtoint(edit2.Text));
dc:=printer.Handle;
label6.Caption:=inttostr(getdevicecaps(dc,vertsize));
label5.Caption:=inttostr(getdevicecaps(dc,horzsize));
messagedlg('正确更改了纸张大小',mtinformation,[mbok],0);
end;

procedure TF_prn_set.ComboBox2Change(Sender: TObject);
begin
if trim(combobox2.Text)='A4' then
begin
edit1.Text:='2100';
edit2.Text:='2970';
end
else if trim(combobox2.Text)='A5' then
begin
edit1.Text:='1480';
edit2.Text:='2100';
end;
if trim(combobox2.Text)='定制' then
begin
groupbox4.Visible:=true;
end
else
groupbox4.Visible:=false;
bitbtn3.Click;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -