亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bsskinprinter.pas

?? delphi 皮膚控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
    PRINTER_STATUS_PROCESSING:
      Result := BS_PRNSTATUS_Processing;
    PRINTER_STATUS_TONER_LOW:
      Result := BS_PRNSTATUS_TonerLow;
    PRINTER_STATUS_USER_INTERVENTION:
      Result := BS_PRNSTATUS_UserIntervention;
    PRINTER_STATUS_WAITING:
      Result := BS_PRNSTATUS_Waiting;
    PRINTER_STATUS_WARMING_UP:
      Result := BS_PRNSTATUS_WarningUp;
  else
    Result := '';
  end;
end;

procedure CallDocumentPropertiesDialog(H: HWND);
var
  PPrinterDevMode: PDevMode;
  DevModeHandle: THandle;
  hPrinter: THandle;
  PrinterName, Driver, Port: array[0..79] of Char;
begin
  Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);
  if not OpenPrinter(PrinterName, hPrinter, nil)
  then
    raise EPrinter.Create(SysErrorMessage(GetLastError ));
  PPrinterDevMode := GlobalLock(DevModeHandle);
  DocumentProperties(H, hPrinter, PrinterName, PPrinterDevMode^, PPrinterDevMode^, DM_OUT_BUFFER or DM_IN_BUFFER or DM_IN_PROMPT);
  GlobalUnlock(DevModeHandle);
  ClosePrinter(hPrinter);
end;

procedure SetCollate(Value: Boolean);
var
  PPrinterDevMode: PDevMode;
  DevModeHandle: THandle;
  hPrinter: THandle;
  PrinterName, Driver, Port: array[0..79] of Char;
begin
  Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);
  if not OpenPrinter(PrinterName, hPrinter, nil)
  then
    raise EPrinter.Create(SysErrorMessage(GetLastError ));
  PPrinterDevMode := GlobalLock(DevModeHandle);
  if Value
  then PPrinterDevMode^.dmCollate := 1
  else PPrinterDevMode^.dmCollate := 0;
  DocumentProperties(0, hPrinter, PrinterName, PPrinterDevMode^, PPrinterDevMode^, DM_OUT_BUFFER or DM_IN_BUFFER);
  GlobalUnlock(DevModeHandle);
  ClosePrinter(hPrinter);
end;

function GetCollate: Boolean;
var
  PPrinterDevMode: PDevMode;
  DevModeHandle: THandle;
  hPrinter: THandle;
  PrinterName, Driver, Port: array[0..79] of Char;
begin
  Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);
  if not OpenPrinter(PrinterName, hPrinter, nil)
  then
    raise EPrinter.Create(SysErrorMessage(GetLastError ));
  PPrinterDevMode := GlobalLock(DevModeHandle);
  DocumentProperties(0, hPrinter, PrinterName, PPrinterDevMode^, PPrinterDevMode^, DM_OUT_BUFFER or DM_IN_BUFFER);
  Result := PPrinterDevMode^.dmCollate > 0;
  GlobalUnlock(DevModeHandle);
  ClosePrinter(hPrinter);
end;

procedure RestoreDocumentProperties;
var
  PPrinterDevMode: PDevMode;
  DevModeHandle: THandle;
  hPrinter: THandle;
  PrinterName, Driver, Port: array[0..79] of Char;
begin
  Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);
  if not OpenPrinter(PrinterName, hPrinter, nil)
  then
    raise EPrinter.Create(SysErrorMessage(GetLastError ));
  PPrinterDevMode := GlobalLock(DevModeHandle);
  DocumentProperties(0, hPrinter, PrinterName, PPrinterDevMode^, PPrinterDevMode^, DM_OUT_BUFFER);
  GlobalUnlock(DevModeHandle);
  ClosePrinter(hPrinter);
end;

procedure GetPrinterInfo(var AStatus, AType, APort, AComment: String);
var
  Flags, ACount, NumInfo: DWORD;
  Buffer, PInfo: PChar;
  PrinterName, Driver, Port: array[0..79] of Char;
  DevModeHandle: THandle;
  I: Integer;
  S1, S2: String;
begin
  Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);

  Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
  ACount := 0;
  EnumPrinters(Flags, nil, 2, nil, 0, ACount, NumInfo);
  if ACount = 0 then Exit;
  GetMem(Buffer, ACount);
  if not EnumPrinters(Flags, nil, 2, PByte(Buffer), ACount, ACount, NumInfo)
  then
    begin
      FreeMem(Buffer, ACount);
      Exit;
    end;

  PInfo := Buffer;

  S1 := PrinterName;
  for i := 0 to NumInfo - 1 do
  begin
    S2 := PPrinterInfo2(PInfo)^.pPrinterName;
    if S1 = S2
    then
      Break
    else
      Inc(PInfo, Sizeof(TPrinterInfo2));
  end;

  AStatus := GetStatusString(PPrinterInfo2(PInfo)^.Status);
  AType := PPrinterInfo2(PInfo)^.pDriverName;
  APort := PPrinterInfo2(PInfo)^.pPortName;
  AComment := PPrinterInfo2(PInfo)^.pComment;

  FreeMem(Buffer, ACount);
end;


constructor TbsSkinPrintDialog.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FGroupBoxTransparentMode := False;

  FTitle := 'Print';

  FAlphaBlend := False;
  FAlphaBlendAnimation := False;
  FAlphaBlendValue := 200;

  FButtonSkinDataName := 'button';
  FLabelSkinDataName  := 'stdlabel';
  FSelectSkinDataName := 'combobox';

  FDefaultLabelFont := TFont.Create;
  FDefaultButtonFont := TFont.Create;
  FDefaultSelectFont := TFont.Create;

  StopCheck := False;

  FUseSkinFont := True;

  with FDefaultLabelFont do
  begin
    Name := 'Arial';
    Style := [];
    Height := 14;
  end;

  with FDefaultButtonFont do
  begin
    Name := 'Arial';
    Style := [];
    Height := 14;
  end;

  with FDefaultSelectFont do
  begin
    Name := 'Arial';
    Style := [];
    Height := 14;
  end;
end;

destructor TbsSkinPrintDialog.Destroy;
begin
  FDefaultLabelFont.Free;
  FDefaultButtonFont.Free;
  FDefaultSelectFont.Free;
  inherited;
end;

procedure TbsSkinPrintDialog.FromPageEditChange(Sender: TObject);
begin
  RBPages.Checked := True;
end;

procedure TbsSkinPrintDialog.ToPageEditChange(Sender: TObject);
begin
  RBPages.Checked := True;
end;

procedure TbsSkinPrintDialog.PropertiesButtonClick(Sender: TObject);
begin
  CallDocumentPropertiesDialog(Form.Handle);
  StopCheck := True;
  NumCopiesEdit.Value :=  Printer.Copies;
  CollateCheckBox.Checked := GetCollate;
  StopCheck := False;
end;

procedure TbsSkinPrintDialog.PrinterComboBoxChange(Sender: TObject);
var
  S1, S2, S3, S4: String;
begin
  Printer.PrinterIndex := PrinterComboBox.ItemIndex;
  GetPrinterInfo(S1, S2, S3, S4);
  L1.Caption := S1;
  L2.Caption := S2;
  L3.Caption := S3;
  L4.Caption := S4;
  StopCheck := True;
  NumCopiesEdit.Value := Printer.Copies;
  CollateCheckBox.Checked := GetCollate;
  StopCheck := False;
end;

procedure TbsSkinPrintDialog.CollateCheckBoxClick(Sender: TObject);
begin
  if not StopCheck then SetCollate(CollateCheckBox.Checked);
  if CollateCheckBox.Checked
  then
    CollateImage.Picture.Bitmap.LoadFromResourceName(HInstance, 'BS_COLLATE')
  else
    CollateImage.Picture.Bitmap.LoadFromResourceName(HInstance, 'BS_NOCOLLATE');
end;

procedure TbsSkinPrintDialog.NumCopiesEditChange(Sender: TObject);
begin
  Printer.Copies := Round(NumCopiesEdit.Value);
  CollateCheckBox.Enabled := NumCopiesEdit.Value > 1;
end;

procedure TbsSkinPrintDialog.SetNumCopies(Value: Integer);
begin
  FCopies := Value;
  Printer.Copies := Value;
end;

function TbsSkinPrintDialog.Execute;
var
  BSF: TbsBusinessSkinForm;
  OldPrinterIndex: Integer;
  PrinterGroupBox: TbsSkinGroupBox;
  PrintRangeGroupBox: TbsSkinGroupBox;
  CopiesGroupBox: TbsSkinGroupBox;
  R: TRect;
  S1, S2, S3, S4: String;
  fromL, toL: TbsSkinStdLabel;
  SkinMessage: TbsSkinMessage;
  S: String;
begin
  if (Printer = nil) or (Printer.Printers.Count = 0)
  then
    begin
      SkinMessage := TbsSkinMessage.Create(Self);
      SkinMessage.SkinData := Self.SkinData;
      SkinMessage.CtrlSkinData := Self.CtrlSkinData;
      if (SkinData <> nil) and (SkinData.ResourceStrData <> nil)
      then
        S:= SkinData.ResourceStrData.GetResStr('PRNDLG_WARNING')
      else
        S := BS_PRNDLG_WARNING;
      SkinMessage.MessageDlg(S, mtError, [mbOk], 0);
      SkinMessage.Free;
      Exit;
    end;
  Form := TForm.Create(Application);
  Form.BorderStyle := bsDialog;
  Form.Position := poScreenCenter;
  Form.Caption := FTitle;
  BSF := TbsBusinessSkinForm.Create(Form);
  BSF.BorderIcons := [];
  BSF.SkinData := SkinData;
  BSF.MenusSkinData := CtrlSkinData;
  BSF.AlphaBlend := AlphaBlend;
  BSF.AlphaBlendAnimation := AlphaBlendAnimation;
  BSF.AlphaBlendValue := AlphaBlendValue;

  Form.ClientWidth :=  470;
  Form.ClientHeight := 340;

  PrinterGroupBox := TbsSkinGroupBox.Create(Self);

  with PrinterGroupBox do
  begin
    Parent := Form;
    Left := 10;
    Top := 10;
    Width := Form.ClientWidth - 20;
    Height := 150;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_PRINTER')
    else
      Caption := BS_PRNDLG_PRINTER;
    if FGroupBoxTransparentMode then TransparentMode := True; 
  end;

  R := PrinterGroupBox.GetSkinClientRect;

  PrintToFileCheckBox := TbsSkinCheckRadioBox.Create(Self);
  with PrintToFileCheckBox do
  begin
    Parent := PrinterGroupBox;
    Checked := Self.PrintToFile;
    Left := R.Right - 100;
    Top := R.Bottom - 35;
    Width := 80;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_PRINTTOFILE')
    else
      Caption := BS_PRNDLG_PRINTTOFILE;
    Enabled := not (bspoDisablePrintToFile in Options);
    Visible := bspoPrintToFile in Options;
    OnClick := CollateCheckBoxClick;
  end;

  with TbsSkinStdLabel.Create(Self) do
  begin
    Parent := PrinterGroupBox;
    Left := R.Left + 10;
    Top := R.Top + 10;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_NAME')
    else
      Caption := BS_PRNDLG_NAME;
  end;

  PrinterCombobox := TbsSkinCombobox.Create(Form);
  with PrinterCombobox do
  begin
    Parent := PrinterGroupBox;
    DefaultFont := DefaultComboboxFont;
    UseSkinFont := Self.UseSkinFont;
    Items.Assign(Printer.Printers);
    ItemIndex := Printer.PrinterIndex;
    SkinDataName := FSelectSkinDataName;
    SkinData := CtrlSkinData;
    OnChange := PrinterComboBoxChange;
    Top := R.Top + 7;
    Left := R.Left + 80;
    Width := RectWidth(R) - 180;
   end;

  with TbsSkinButton.Create(Self) do
  begin
    Parent := PrinterGroupBox;
    Left := PrinterCombobox.Left + PrinterCombobox.Width + 10;
    Top := R.Top + 5;
    Width := 80;
    DefaultFont := DefaultButtonFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_PROPERTIES')
    else
      Caption := BS_PRNDLG_PROPERTIES;
    OnClick := PropertiesButtonClick;
  end;

  with TbsSkinStdLabel.Create(Self) do
  begin
    Parent := PrinterGroupBox;
    Left := R.Left + 10;
    Top := R.Top + 40;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_STATUS')
    else
      Caption := BS_PRNDLG_STATUS;
  end;

  L1 := TbsSkinStdLabel.Create(Self);
  with L1 do
  begin
    Parent := PrinterGroupBox;
    Left := R.Left + 80;
    Top := R.Top + 40;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    Caption := '';
  end;

  with TbsSkinStdLabel.Create(Self) do
  begin
    Parent := PrinterGroupBox;
    Left := R.Left + 10;
    Top := R.Top + 60;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_TYPE')
    else
      Caption := BS_PRNDLG_TYPE;
  end;

  L2 := TbsSkinStdLabel.Create(Self);
  with L2 do
  begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国视频一区二区| 中文字幕亚洲精品在线观看| 2023国产精华国产精品| 中文字幕在线不卡视频| 看国产成人h片视频| 成人av手机在线观看| 欧美不卡一区二区三区四区| 亚洲欧洲制服丝袜| 东方aⅴ免费观看久久av| 欧美精品乱码久久久久久| 中文字幕在线不卡一区| 国产精一区二区三区| 日韩免费一区二区| 亚洲电影在线免费观看| a4yy欧美一区二区三区| 久久综合九色综合久久久精品综合| 一区二区三区久久| 91色.com| 国产精品久久久久影院| 波波电影院一区二区三区| 国产亚洲精品超碰| 国内精品不卡在线| 26uuu欧美日本| 精东粉嫩av免费一区二区三区| 欧美伦理电影网| 亚洲国产精品欧美一二99| 色综合欧美在线| 亚洲丝袜美腿综合| 91免费精品国自产拍在线不卡| 欧美激情一区二区三区在线| 韩国精品主播一区二区在线观看 | 一区二区三区四区亚洲| 99re成人在线| 亚洲精品videosex极品| 色偷偷88欧美精品久久久| 亚洲猫色日本管| 欧洲一区二区三区在线| 亚洲综合一二三区| 色婷婷综合五月| 亚洲国产成人av好男人在线观看| 欧美无乱码久久久免费午夜一区 | 91久久线看在观草草青青| 亚洲欧美偷拍另类a∨色屁股| 99精品久久久久久| 亚洲激情五月婷婷| 欧美日本一区二区在线观看| 午夜激情久久久| 91精品国产一区二区三区| 久久99深爱久久99精品| 久久久久国产免费免费| 国产成人免费视频网站 | 精品99一区二区| 高清成人免费视频| 亚洲久草在线视频| 欧美精品日韩一本| 国产成人在线网站| 亚洲九九爱视频| 日韩午夜中文字幕| 成人伦理片在线| 亚洲国产精品麻豆| 精品国产99国产精品| 成人中文字幕在线| 亚洲精品免费电影| 日韩精品一区二区三区中文精品| 粉嫩嫩av羞羞动漫久久久| 亚洲欧美日韩系列| 日韩午夜激情电影| 大白屁股一区二区视频| 亚洲成人动漫av| 欧美激情一区二区三区在线| 欧洲精品在线观看| 国产毛片精品一区| 亚洲曰韩产成在线| 精品福利一二区| 成人开心网精品视频| 亚洲高清免费视频| 亚洲国产精品精华液2区45| 欧美色国产精品| 国产一区二区不卡| 婷婷成人综合网| 亚洲品质自拍视频网站| www成人在线观看| 欧美日韩亚洲国产综合| 丁香婷婷深情五月亚洲| 全部av―极品视觉盛宴亚洲| 亚洲色图欧洲色图婷婷| 精品国产乱码久久| 欧美精品在线观看一区二区| 99久久伊人精品| 国产福利精品一区| 青青草国产成人99久久| 夜夜揉揉日日人人青青一国产精品| 国产三级欧美三级日产三级99| 欧美精品一卡二卡| 欧美性欧美巨大黑白大战| 成人一区二区三区在线观看| 免播放器亚洲一区| 午夜电影一区二区三区| 亚洲精选视频在线| 中文字幕一区二区三区在线不卡 | 91精品国产色综合久久ai换脸| 91视频你懂的| 99国产一区二区三精品乱码| 国产一区视频导航| 韩国在线一区二区| 久久99国产精品成人| 日本成人在线视频网站| 五月婷婷欧美视频| 亚洲成人自拍一区| 亚洲一线二线三线视频| 亚洲特黄一级片| 亚洲日本成人在线观看| 亚洲欧洲精品天堂一级| 国产精品美女一区二区在线观看| 久久综合九色综合欧美就去吻| 精品日本一线二线三线不卡| 欧美精三区欧美精三区| 欧美日韩国产不卡| 欧美人狂配大交3d怪物一区| 欧美猛男gaygay网站| 欧美高清www午色夜在线视频| 欧美视频日韩视频| 91麻豆精品国产91久久久| 3d动漫精品啪啪| 亚洲精品在线观看视频| 国产欧美一区二区三区在线看蜜臀| 国产精品久久国产精麻豆99网站| 国产精品欧美一级免费| 《视频一区视频二区| 成人免费小视频| 亚洲不卡在线观看| 乱中年女人伦av一区二区| 久久99精品久久久久| 国产成人av电影| 99re成人精品视频| 欧美区视频在线观看| 欧美一区二区在线免费播放| 精品美女一区二区| 国产精品无码永久免费888| 亚洲三级在线观看| 日本欧美一区二区在线观看| 狠狠色丁香久久婷婷综| 99精品欧美一区二区三区小说| 欧洲亚洲国产日韩| 日韩精品一区二区三区视频播放 | 亚洲美女区一区| 天堂va蜜桃一区二区三区 | 欧美一区二区福利在线| 中文字幕免费不卡在线| 五月天激情综合网| 国产精品一区免费在线观看| 91欧美一区二区| 日韩欧美的一区| 日韩一区在线播放| 久久99精品久久久久婷婷| 色综合欧美在线| 欧美大片在线观看一区| 一区二区久久久久| 国产精品影视在线观看| 欧美日韩你懂得| 久久久久97国产精华液好用吗| 尤物视频一区二区| 国产一区二区免费看| 欧美亚洲动漫精品| 亚洲国产精品精华液2区45| 亚洲va韩国va欧美va| 成人一区在线观看| 欧美一二三四在线| 亚洲一区二区三区中文字幕在线 | 国产日产欧美一区| 奇米影视一区二区三区| 99视频一区二区| 精品国产乱子伦一区| 亚洲综合另类小说| 99久久99久久精品免费看蜜桃| 日韩女优毛片在线| 天使萌一区二区三区免费观看| 丰满少妇在线播放bd日韩电影| 欧美电影免费观看高清完整版在线 | 亚洲尤物视频在线| 粉嫩aⅴ一区二区三区四区| 欧美一区二区三区四区在线观看 | 国产精品美女久久久久久久| 日韩精品91亚洲二区在线观看| 91亚洲精品久久久蜜桃| 国产日韩欧美高清在线| 久久精品国产精品亚洲红杏| 欧美日韩在线观看一区二区 | 久久爱www久久做| 欧美高清视频一二三区 | 高清视频一区二区| 久久亚洲精品国产精品紫薇| 天堂va蜜桃一区二区三区漫画版| 欧洲精品一区二区| 亚洲综合色丁香婷婷六月图片| 99麻豆久久久国产精品免费优播| 国产天堂亚洲国产碰碰| 国产在线麻豆精品观看| 日韩精品一区二区三区在线观看 | 波多野结衣中文一区|