
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8623 8e941d3f-bd1b-0410-a28a-d453659cc2b4
140 lines
4.0 KiB
ObjectPascal
140 lines
4.0 KiB
ObjectPascal
unit GridPrnScalingForm;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
|
|
Spin,
|
|
GridPrn;
|
|
|
|
type
|
|
|
|
{ TGridPrinterScalingForm }
|
|
|
|
TGridPrinterScalingForm = class(TForm)
|
|
ButtonPanel: TButtonPanel;
|
|
fseScalingFactor: TFloatSpinEdit;
|
|
lblPagesHor: TLabel;
|
|
lblPagesVert: TLabel;
|
|
lblInfo: TLabel;
|
|
lblScaleFactorInfo: TLabel;
|
|
rbManualScaleFactor: TRadioButton;
|
|
cbScaleToHeight: TCheckBox;
|
|
cbScaleToWidth: TCheckBox;
|
|
seNumPagesHor: TSpinEdit;
|
|
seNumPagesVert: TSpinEdit;
|
|
procedure cbScaleToWidthOrHeightChange(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure OKButtonClick(Sender: TObject);
|
|
procedure rbManualScaleFactorChange(Sender: TObject);
|
|
private
|
|
FGridPrinter: TGridPrinter;
|
|
FScalingModeLock: Integer;
|
|
procedure SetGridPrinter(AValue: TGridPrinter);
|
|
|
|
public
|
|
procedure UpdateStrings;
|
|
property GridPrinter: TGridPrinter read FGridPrinter write SetGridPrinter;
|
|
|
|
end;
|
|
|
|
var
|
|
GridPrinterScalingForm: TGridPrinterScalingForm;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
Math, GridPrnStrings;
|
|
|
|
procedure TGridPrinterScalingForm.cbScaleToWidthOrHeightChange(Sender: TObject);
|
|
begin
|
|
if FScalingModeLock > 0 then
|
|
exit;
|
|
inc(FScalingModeLock);
|
|
rbManualScaleFactor.Checked := not (cbScaleToWidth.Checked or cbScaletoHeight.Checked);
|
|
dec(FScalingModeLock);
|
|
end;
|
|
|
|
procedure TGridPrinterScalingForm.FormActivate(Sender: TObject);
|
|
begin
|
|
Constraints.MinHeight := cbScaleToHeight.Top + cbScaleToHeight.Height +
|
|
cbScaleToHeight.BorderSpacing.Bottom + ButtonPanel.Height;
|
|
Constraints.MinWidth := lblPagesVert.Left + lblPagesVert.Width +
|
|
lblPagesVert.BorderSpacing.Right;
|
|
Width := 0; // enforce constraints
|
|
Height := 0;
|
|
end;
|
|
|
|
procedure TGridPrinterScalingForm.FormCreate(Sender: TObject);
|
|
begin
|
|
UpdateStrings;
|
|
end;
|
|
|
|
procedure TGridPrinterScalingForm.OKButtonClick(Sender: TObject);
|
|
var
|
|
nhor, nvert: Integer;
|
|
begin
|
|
if rbManualScaleFactor.Checked then
|
|
begin
|
|
FGridPrinter.PrintScalingMode := smManual;
|
|
FGridPrinter.PrintScaleFactor := fseScalingFactor.Value;
|
|
end else
|
|
begin
|
|
nhor := IfThen(cbScaleToWidth.Checked, seNumPagesHor.Value, -1);
|
|
nvert := IfThen(cbScaletoHeight.Checked, seNumPagesVert.Value, -1);
|
|
FGridPrinter.ScaleToPages(nhor, nvert);
|
|
end;
|
|
end;
|
|
|
|
procedure TGridPrinterScalingForm.rbManualScaleFactorChange(Sender: TObject);
|
|
begin
|
|
if FScalingModeLock > 0 then
|
|
exit;
|
|
if rbManualScaleFactor.Checked then
|
|
begin
|
|
inc(FScalingModeLock);
|
|
cbScaleToWidth.Checked := false;
|
|
cbScaleToHeight.Checked := false;
|
|
dec(FScalingModeLock);
|
|
end;
|
|
end;
|
|
|
|
procedure TGridPrinterScalingForm.SetGridPrinter(AValue: TGridPrinter);
|
|
begin
|
|
FGridPrinter := AValue;
|
|
if FGridPrinter <> nil then
|
|
begin
|
|
lblScaleFactorInfo.Caption := Format(RSScaleFactorInfo, [FGridPrinter.PrintScaleFactor]);
|
|
cbScaleToWidth.Checked := (FGridPrinter.PrintScalingMode in [smFitToWidth, smFitAll]) and
|
|
(FGridPrinter.PrintScaleToNumHorPages > 0);
|
|
cbScaleToHeight.Checked := (FGridPrinter.PrintScalingMode in [smFitToHeight, smFitAll]) and
|
|
(FGridPrinter.PrintScaleToNumVertPages > 0);
|
|
rbManualScaleFactor.Checked := FGridPrinter.PrintScalingMode = smManual;
|
|
if FGridPrinter.PrintScalingMode = smManual then
|
|
fseScalingFactor.Value := FGridPrinter.PrintScaleFactor;
|
|
seNumPagesHor.Value := FGridPrinter.PrintScaleToNumHorPages;
|
|
seNumPagesVert.Value := FGridPrinter.PrintScaleToNumVertPages;
|
|
end else
|
|
raise Exception.Create('No GridPrinter specified in TGridPrinterScalingForm.');
|
|
end;
|
|
|
|
procedure TGridPrinterScalingForm.UpdateStrings;
|
|
begin
|
|
Caption := RSPrintingScaleFactor;
|
|
lblInfo.Caption := RSSelectScaleFactorForPrinting;
|
|
lblScaleFactorInfo.Caption := RSScaleFactorInfo;
|
|
rbManualScaleFactor.Caption := RSManualScaleFactor;
|
|
cbScaleToWidth.Caption := RSScaleGridToWidthOf;
|
|
cbScaleToHeight.Caption := RSScaleGridToHeightOf;
|
|
lblPagesHor.Caption := RSPages;
|
|
lblPagesVert.Caption := RSPages;
|
|
end;
|
|
|
|
end.
|
|
|