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

📄 bsskinprinter.pas

📁 一套非常优秀的皮肤组件包
💻 PAS
📖 第 1 页 / 共 5 页
字号:


  L3 := TbsSkinStdLabel.Create(Self);
  with L3 do
  begin
    Parent := PrinterGroupBox;
    Left := R.Left + 80;
    Top := R.Top + 80;
    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 + 100;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_COMMENT')
    else
      Caption := BS_PRNDLG_COMMENT;
  end;

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

  GetPrinterInfo(S1, S2, S3, S4);
  L1.Caption := S1;
  L2.Caption := S2;
  L3.Caption := S3;
  L4.Caption := S4;

  PrintRangeGroupBox := TbsSkinGroupBox.Create(Self);

  with PrintRangeGroupBox do
  begin
    Parent := Form;
    Left := 10;
    Top := PrinterGroupBox.Top + PrinterGroupBox.Height + 10;
    Width := (Form.ClientWidth - 20) div 2 + 30;
    Height := 120;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_PRINTRANGE')
    else
      Caption := BS_PRNDLG_PRINTRANGE;
  end;

  CopiesGroupBox := TbsSkinGroupBox.Create(Self);

  with CopiesGroupBox do
  begin
    Parent := Form;
    Left := PrintRangeGroupBox.Left + PrintRangeGroupBox.Width + 10;
    Top := PrinterGroupBox.Top + PrinterGroupBox.Height + 10;
    Width := (Form.ClientWidth - 20) div 2 - 40;
    Height := 120;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_COPIES')
    else
      Caption := BS_PRNDLG_COPIES;
  end;

  R := CopiesGroupBox.GetSkinClientRect;

  with TbsSkinStdLabel.Create(Self) do
  begin
    Parent := CopiesGroupBox;
    Left := R.Left + 5;
    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_NUMCOPIES')
    else
      Caption := BS_PRNDLG_NUMCOPIES;
  end;

  NumCopiesEdit := TbsSkinSpinEdit.Create(Self);
  with  NumCopiesEdit do
  begin
    Parent := CopiesGroupBox;
    MinValue := 1;
    MaxValue := 1000;
    if Self.Copies > 0
    then
      Printer.Copies := Self.Copies;
    Value := Printer.Copies;
    Increment := 1;
    Left := R.Right - 65;
    Top := R.Top + 5;
    Width := 60;
    SkinData := CtrlSkinData;
    OnChange := NumCopiesEditChange;
  end;

  CollateCheckBox := TbsSkinCheckRadioBox.Create(Self);
  with CollateCheckBox do
  begin
    Parent := CopiesGroupBox;
    Checked := GetCollate;
    Left := R.Right - 70;
    Top := R.Top + 50;
    Width := 60;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_COLLATE')
    else
      Caption := BS_PRNDLG_COLLATE;
    Enabled := Printer.Copies > 1;
    OnClick := CollateCheckBoxClick;
  end;

  CollateImage := TImage.Create(Self);
  with CollateImage do
  begin
    Left := R.Left + 5;
    Top := R.Bottom - 45;
    Parent := CopiesGroupBox;
    AutoSize := True;
    Transparent := True;
    if CollateCheckBox.Checked
    then
      Picture.Bitmap.LoadFromResourceName(HInstance, 'BS_COLLATE')
    else
      Picture.Bitmap.LoadFromResourceName(HInstance, 'BS_NOCOLLATE');
  end;

  with TbsSkinButton.Create(Form) do
  begin
    Parent := Form;
    DefaultFont := DefaultButtonFont;
    UseSkinFont := Self.UseSkinFont;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('MSG_BTN_OK')
    else
      Caption := BS_MSG_BTN_OK;
    ModalResult := mrOk;
    Default := True;
    SetBounds(Form.ClientWidth - 160,
              CopiesGroupBox.Top + CopiesGroupBox.Height + 10,
              70, 25);
    DefaultHeight := 25;
    SkinDataName := FButtonSkinDataName;
    SkinData := CtrlSkinData;
  end;

  with TbsSkinButton.Create(Form) do
  begin
    Parent := Form;
    DefaultFont := DefaultButtonFont;
    UseSkinFont := Self.UseSkinFont;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('MSG_BTN_CANCEL')
    else
      Caption := BS_MSG_BTN_CANCEL;
    ModalResult := mrCancel;
    Cancel := True;
    SetBounds(Form.ClientWidth - 80,
              CopiesGroupBox.Top + CopiesGroupBox.Height + 10,
              70, 25);
    SkinDataName := FButtonSkinDataName;
    SkinData := CtrlSkinData;
    Form.ClientHeight := Top + Height + 10;
  end;

  R := PrintRangeGroupBox.GetSkinClientRect;

  RBAll := TbsSkinCheckRadioBox.Create(Self);
  with RBAll do
  begin
    GroupIndex := 1;
    Parent := PrintRangeGroupBox;
    Checked := Self.PrintRange = bsprAllPages;
    Left := R.Left + 10;
    Top := R.Top + 5;
    Width := 70;
    Radio := True;
    SkinDataName := 'radiobox';
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_ALL')
    else
      Caption := BS_PRNDLG_ALL;
  end;

  RBPages := TbsSkinCheckRadioBox.Create(Self);
  with RBPages do
  begin
    GroupIndex := 1;
    Parent := PrintRangeGroupBox;
    Checked := Self.PrintRange = bsprPageNums;
    Left := R.Left + 10;
    Top := R.Top + 35;
    Width := 70;
    Radio := True;
    SkinDataName := 'radiobox';
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_PAGES')
    else
      Caption := BS_PRNDLG_PAGES;
    Enabled := bspoPageNums in Options;
  end;

  RBSelection := TbsSkinCheckRadioBox.Create(Self);
  with RBSelection do
  begin
    GroupIndex := 1;
    Parent := PrintRangeGroupBox;
    Checked := Self.PrintRange = bsprSelection;
    Left := R.Left + 10;
    Top := R.Top + 65;
    Width := 70;
    Radio := True;
    SkinDataName := 'radiobox';
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_SELECTION')
    else
      Caption := BS_PRNDLG_SELECTION;
    Enabled := bspoSelection in Options;
  end;

  fromL := TbsSkinStdLabel.Create(Self);

  with fromL do
  begin
    Parent := PrintRangeGroupBox;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_FROM')
    else
      Caption := BS_PRNDLG_FROM;
    Left := RBPages.Left + RBPages.Width + 10;
    Top := RBPages.Top + RBPages.Height div 2 - Height div 2 - 1;
    Enabled := bspoPageNums in Options;
  end;

  FromPageEdit := TbsSkinSpinEdit.Create(Self);
  with  FromPageEdit do
  begin
    Parent := PrintRangeGroupBox;
    MinValue := MinPage;
    MaxValue := MaxPage;
    Value := FromPage;
    Increment := 1;
    Left := fromL.Left + fromL.Width + 5;
    Top := RBPages.Top + RBPages.Height div 2 - Height div 2 - 1;
    Width := 50;
    SkinData := CtrlSkinData;
    Enabled := bspoPageNums in Options;
    OnChange := FromPageEditChange;
  end;

  ToL := TbsSkinStdLabel.Create(Self);

  with ToL do
  begin
    Parent := PrintRangeGroupBox;
    WordWrap := False;
    DefaultFont := DefaultLabelFont;
    UseSkinFont := Self.UseSkinFont;
    SkinData := CtrlSkinData;
    if (CtrlSkinData <> nil) and (CtrlSkinData.ResourceStrData <> nil)
    then
      Caption := CtrlSkinData.ResourceStrData.GetResStr('PRNDLG_TO')
    else
      Caption := BS_PRNDLG_TO;
    Left := FromPageEdit.Left +FromPageEdit.Width + 5;
    Top := RBPages.Top + RBPages.Height div 2 - Height div 2 - 1;
    Enabled := bspoPageNums in Options;
  end;

  ToPageEdit := TbsSkinSpinEdit.Create(Self);
  with  ToPageEdit do
  begin
    Parent := PrintRangeGroupBox;
    MinValue := MinPage;
    MaxValue := MaxPage;
    Value := ToPage;
    Increment := 1;
    Left := ToL.Left + ToL.Width + 5;
    Top := RBPages.Top + RBPages.Height div 2 - Height div 2 - 1;
    Width := 50;
    SkinData := CtrlSkinData;
    Enabled := bspoPageNums in Options;
    OnChange := ToPageEditChange;
  end;

  OldPrinterIndex := Printer.PrinterIndex;

  try
    if Form.ShowModal = mrOk
    then
      begin
        Result := True;
        FCollate := CollateCheckBox.Checked;
        FromPage := Round(FromPageEdit.Value);
        ToPage := Round(ToPageEdit.Value);
        Copies := Round(NumCopiesEdit.Value);
        if RBAll.Checked then PrintRange := bsprAllPages else
        if RBPages.Checked then PrintRange := bsprPageNums else
          PrintRange := bsprSelection;
        PrintToFile := PrintToFileCheckBox.Checked;   
      end
    else
      begin
        RestoreDocumentProperties;
        if Printer.PrinterIndex <> OldPrinterIndex
        then
          Printer.PrinterIndex := OldPrinterIndex;
        Result := False;
      end;
  finally
    Form.Free;
  end;

end;

procedure TbsSkinPrintDialog.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and (AComponent = FSD) then FSD := nil;
  if (Operation = opRemove) and (AComponent = FCtrlFSD) then FCtrlFSD := nil;
end;

procedure TbsSkinPrintDialog.SetDefaultButtonFont(Value: TFont);
begin
  FDefaultButtonFont.Assign(Value);
end;

procedure TbsSkinPrintDialog.SetDefaultLabelFont(Value: TFont);
begin
  FDefaultLabelFont.Assign(Value);
end;

procedure TbsSkinPrintDialog.SetDefaultSelectFont(Value: TFont);
begin
  FDefaultSelectFont.Assign(Value);
end;

function TbsSkinPrintDialog.GetTitle: string;
begin
  Result := FTitle;
end;

procedure TbsSkinPrintDialog.SetTitle(const Value: string);
begin
  FTitle := Value;
end;


{ TbsPaperInfo }

function TbsPaperInfo.IsEqual(Source: TbsPaperInfo): Boolean;
begin
  Result := (DMPaper = Source.DMPaper) and (FName = Source.Name) and
    EqPoints(Size, Source.Size);
end;

procedure TbsPaperInfo.Assign(Source: TbsPaperInfo);
begin
  FDMPaper := Source.FDMPaper;
  FName := Source.FName;
  FSize := Source.FSize;
end;

function TbsPaperInfo.GetSize(Index: Integer): Integer;
begin
  if Index = 0
  then
    Result := FSize.X
  else
    Result := FSize.Y;
end;

procedure TbsPaperInfo.SetSize(Index: Integer; Value: Integer);
begin
  if DMPaper < DMPAPER_USER then Exit;
  if Index = 0
  then
    FSize.X := Value
  else
    FSize.Y := Value;
end;

procedure GetPapers(APapers: TStrings);
const
  bsPaperNameLength = 64;
  bsPaperValueLength = SizeOf(Word);
  bsPaperSizeLength = SizeOf(TPoint);

⌨️ 快捷键说明

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