You've already forked lazarus-ccr
GridPrinter: Initial commit
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8591 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
92
components/gridprinter/examples/dbgrid/dbgrid_demo.lpi
Normal file
92
components/gridprinter/examples/dbgrid/dbgrid_demo.lpi
Normal file
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="12"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<CompatibilityMode Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<Title Value="dbgrid_demo"/>
|
||||
<Scaled Value="True"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<UseFileFilters Value="True"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="4">
|
||||
<Item1>
|
||||
<PackageName Value="GridPrinterPkg"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="FCL"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="MemDSLaz"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item4>
|
||||
</RequiredPackages>
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="dbgrid_demo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit1>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="dbgrid_demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf3"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="3">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item3>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
25
components/gridprinter/examples/dbgrid/dbgrid_demo.lpr
Normal file
25
components/gridprinter/examples/dbgrid/dbgrid_demo.lpr
Normal file
@ -0,0 +1,25 @@
|
||||
program dbgrid_demo;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}
|
||||
cthreads,
|
||||
{$ENDIF}
|
||||
{$IFDEF HASAMIGA}
|
||||
athreads,
|
||||
{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, main, memdslaz
|
||||
{ you can add units after this };
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource:=True;
|
||||
Application.Scaled:=True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TForm1, Form1);
|
||||
Application.Run;
|
||||
end.
|
||||
|
71
components/gridprinter/examples/dbgrid/main.lfm
Normal file
71
components/gridprinter/examples/dbgrid/main.lfm
Normal file
@ -0,0 +1,71 @@
|
||||
object Form1: TForm1
|
||||
Left = 331
|
||||
Height = 382
|
||||
Top = 130
|
||||
Width = 689
|
||||
Caption = 'Form1'
|
||||
ClientHeight = 382
|
||||
ClientWidth = 689
|
||||
OnCreate = FormCreate
|
||||
LCLVersion = '2.3.0.0'
|
||||
object DBGrid1: TDBGrid
|
||||
Left = 0
|
||||
Height = 345
|
||||
Top = 0
|
||||
Width = 689
|
||||
Align = alClient
|
||||
Color = clWindow
|
||||
Columns = <>
|
||||
DataSource = DataSource1
|
||||
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgThumbTracking]
|
||||
TabOrder = 0
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
Height = 37
|
||||
Top = 345
|
||||
Width = 689
|
||||
Align = alBottom
|
||||
AutoSize = True
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 37
|
||||
ClientWidth = 689
|
||||
TabOrder = 1
|
||||
object Button1: TButton
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = Panel1
|
||||
Left = 6
|
||||
Height = 25
|
||||
Top = 6
|
||||
Width = 104
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Print preview...'
|
||||
OnClick = Button1Click
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object DataSource1: TDataSource
|
||||
DataSet = BufDataset1
|
||||
Left = 256
|
||||
Top = 64
|
||||
end
|
||||
object GridPrinter1: TGridPrinter
|
||||
Footer.Font.Height = -11
|
||||
Header.Font.Height = -11
|
||||
OnGetCellText = GridPrinter1GetCellText
|
||||
OnGetRowCount = GridPrinter1GetRowCount
|
||||
Left = 167
|
||||
Top = 136
|
||||
end
|
||||
object GridPrintPreviewDialog1: TGridPrintPreviewDialog
|
||||
GridPrinter = GridPrinter1
|
||||
Left = 167
|
||||
Top = 208
|
||||
end
|
||||
object BufDataset1: TBufDataset
|
||||
FieldDefs = <>
|
||||
Left = 167
|
||||
Top = 64
|
||||
end
|
||||
end
|
115
components/gridprinter/examples/dbgrid/main.pas
Normal file
115
components/gridprinter/examples/dbgrid/main.pas
Normal file
@ -0,0 +1,115 @@
|
||||
unit main;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, memds, DB, BufDataset, Forms, Controls, Graphics, Dialogs,
|
||||
DBGrids, ExtCtrls, StdCtrls, GridPrn, GridPrnPreviewDlg, Grids;
|
||||
|
||||
type
|
||||
|
||||
{ TForm1 }
|
||||
|
||||
TForm1 = class(TForm)
|
||||
BufDataset1: TBufDataset;
|
||||
Button1: TButton;
|
||||
DataSource1: TDataSource;
|
||||
DBGrid1: TDBGrid;
|
||||
GridPrinter1: TGridPrinter;
|
||||
GridPrintPreviewDialog1: TGridPrintPreviewDialog;
|
||||
Panel1: TPanel;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure GridPrinter1GetCellText(Sender: TObject; AGrid: TCustomGrid;
|
||||
ACol, ARow: Integer; var AText: String);
|
||||
procedure GridPrinter1GetRowCount(Sender: TObject; AGrid: TCustomGrid;
|
||||
var ARowCount: Integer);
|
||||
private
|
||||
|
||||
public
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
Form1: TForm1;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TForm1 }
|
||||
|
||||
procedure TForm1.FormCreate(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
// Create some dummy dataset
|
||||
BufDataset1.FieldDefs.Add('Text', ftString, 20);
|
||||
BufDataset1.FieldDefs.Add('Value', ftInteger);
|
||||
BufDataset1.FieldDefs.Add('Date', ftDate);
|
||||
BufDataset1.CreateDataset;
|
||||
BufDataset1.Open;
|
||||
for i := 1 to 100 do
|
||||
BufDataset1.AppendRecord(['Record ' + IntToStr(i), 100*i, Date()-i]);
|
||||
BufDataset1.First;
|
||||
|
||||
// Since the GridPrinter accesses the DBGrid assign it to the Grid property
|
||||
// only after the Dataset is ready and the DBGrid can display valid data.
|
||||
GridPrinter1.Grid := DBGrid1;
|
||||
end;
|
||||
|
||||
procedure TForm1.Button1Click(Sender: TObject);
|
||||
var
|
||||
bm: TBookmark;
|
||||
begin
|
||||
// Store currently active record so that we can return to it after preview/print.
|
||||
bm := BufDataset1.GetBookmark;
|
||||
try
|
||||
// Disable scrolling of grid
|
||||
BufDataset1.DisableControls;
|
||||
try
|
||||
// Show the grid printpreview
|
||||
GridPrintPreviewDialog1.Execute;
|
||||
finally
|
||||
// Allow scrolling again
|
||||
BufDataset1.EnableControls;
|
||||
end;
|
||||
// Return to the stored record position.
|
||||
BufDataset1.GotoBookmark(bm);
|
||||
finally
|
||||
BufDataset1.FreeBookmark(bm);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.GridPrinter1GetCellText(Sender: TObject; AGrid: TCustomGrid;
|
||||
ACol, ARow: Integer; var AText: String);
|
||||
var
|
||||
field: TField;
|
||||
dbGrid: TDBGrid;
|
||||
begin
|
||||
dbGrid := AGrid as TDBGrid;
|
||||
if ACol >= dbGrid.FixedCols then
|
||||
begin
|
||||
// We need something to find the row to be printed and use the dataset's
|
||||
// RecNo for this purpose which is a number starting at 1.
|
||||
// BUT BEWARE: RecNo is no good parameter for many dataset types!
|
||||
BufDataset1.RecNo := ARow;
|
||||
// Using the field from the DBGrid.Columns rather than from the dataset
|
||||
// directly accounts for rearranging the column order in the grid.
|
||||
field := dbGrid.Columns[ACol - dbGrid.FixedCols].Field;
|
||||
AText := field.AsString;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TForm1.GridPrinter1GetRowCount(Sender: TObject; AGrid: TCustomGrid;
|
||||
var ARowCount: Integer);
|
||||
begin
|
||||
// Since the DBGrid does not load all records, but we want to print all
|
||||
// of them, we must tell the printer the real number of rows to print
|
||||
ARowCount := BufDataset1.RecordCount + 1; // added 1 for the header row
|
||||
end;
|
||||
|
||||
end.
|
||||
|
158
components/gridprinter/examples/multi-language/main.lfm
Normal file
158
components/gridprinter/examples/multi-language/main.lfm
Normal file
@ -0,0 +1,158 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 331
|
||||
Height = 491
|
||||
Top = 127
|
||||
Width = 656
|
||||
Caption = 'Multi-Language Demonstration of TGridPrinter'
|
||||
ClientHeight = 491
|
||||
ClientWidth = 656
|
||||
OnCreate = FormCreate
|
||||
LCLVersion = '2.3.0.0'
|
||||
object StringGrid1: TStringGrid
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Panel1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = btnPrint
|
||||
Left = 6
|
||||
Height = 419
|
||||
Top = 35
|
||||
Width = 644
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Around = 6
|
||||
ColCount = 6
|
||||
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goEditing, goThumbTracking, goSmoothScroll, goCellEllipsis]
|
||||
RowCount = 6
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnPrint: TButton
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 25
|
||||
Top = 460
|
||||
Width = 75
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Print...'
|
||||
OnClick = btnPrintClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnPreview: TButton
|
||||
AnchorSideLeft.Control = cmbDialogs
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnPrint
|
||||
Left = 275
|
||||
Height = 25
|
||||
Top = 460
|
||||
Width = 76
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 24
|
||||
Caption = 'Preview...'
|
||||
OnClick = btnPreviewClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object cmbDialogs: TComboBox
|
||||
AnchorSideLeft.Control = btnPrint
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnPrint
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 87
|
||||
Height = 23
|
||||
Top = 461
|
||||
Width = 164
|
||||
BorderSpacing.Left = 6
|
||||
ItemHeight = 15
|
||||
Items.Strings = (
|
||||
'RSNoPrinterDialog'
|
||||
'RSPageSetupDialog'
|
||||
'RSPrinterDialog'
|
||||
)
|
||||
Style = csDropDownList
|
||||
TabOrder = 3
|
||||
end
|
||||
object ccbPreviewOptions: TCheckComboBox
|
||||
AnchorSideLeft.Control = btnPreview
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnPreview
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 357
|
||||
Height = 22
|
||||
Top = 461
|
||||
Width = 293
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Around = 6
|
||||
ItemHeight = 16
|
||||
Items.Strings = (
|
||||
'ppoNavigationBtns'
|
||||
'ppoNavigationEdit'
|
||||
'ppoZoomBtns'
|
||||
'ppoPageOrientationBtns'
|
||||
'ppoMarginsBtn'
|
||||
'ppoHeaderFooterBtn'
|
||||
'ppoPrintOrderBtns '
|
||||
)
|
||||
OnItemChange = ccbPreviewOptionsItemChange
|
||||
TabOrder = 4
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
Height = 29
|
||||
Top = 0
|
||||
Width = 656
|
||||
Align = alTop
|
||||
AutoSize = True
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 29
|
||||
ClientWidth = 656
|
||||
TabOrder = 5
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideTop.Control = cmbLanguages
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 10
|
||||
Width = 55
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Language:'
|
||||
end
|
||||
object cmbLanguages: TComboBox
|
||||
AnchorSideLeft.Control = Label1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Panel1
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 67
|
||||
Height = 23
|
||||
Top = 6
|
||||
Width = 581
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 8
|
||||
ItemHeight = 15
|
||||
OnChange = cmbLanguagesChange
|
||||
Style = csDropDownList
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object GridPrinter1: TGridPrinter
|
||||
Grid = StringGrid1
|
||||
Footer.Font.Height = -11
|
||||
Header.Font.Height = -11
|
||||
Header.Text = 'test||'
|
||||
Orientation = poLandscape
|
||||
Left = 168
|
||||
Top = 96
|
||||
end
|
||||
object GridPrintPreviewDialog1: TGridPrintPreviewDialog
|
||||
GridPrinter = GridPrinter1
|
||||
Left = 288
|
||||
Top = 96
|
||||
end
|
||||
end
|
6
components/gridprinter/examples/multi-language/main.lrj
Normal file
6
components/gridprinter/examples/multi-language/main.lrj
Normal file
@ -0,0 +1,6 @@
|
||||
{"version":1,"strings":[
|
||||
{"hash":13998722,"name":"tmainform.caption","sourcebytes":[77,117,108,116,105,45,76,97,110,103,117,97,103,101,32,68,101,109,111,110,115,116,114,97,116,105,111,110,32,111,102,32,84,71,114,105,100,80,114,105,110,116,101,114],"value":"Multi-Language Demonstration of TGridPrinter"},
|
||||
{"hash":151352958,"name":"tmainform.btnprint.caption","sourcebytes":[80,114,105,110,116,46,46,46],"value":"Print..."},
|
||||
{"hash":217709006,"name":"tmainform.btnpreview.caption","sourcebytes":[80,114,101,118,105,101,119,46,46,46],"value":"Preview..."},
|
||||
{"hash":82521866,"name":"tmainform.label1.caption","sourcebytes":[76,97,110,103,117,97,103,101,58],"value":"Language:"}
|
||||
]}
|
221
components/gridprinter/examples/multi-language/main.pas
Normal file
221
components/gridprinter/examples/multi-language/main.pas
Normal file
@ -0,0 +1,221 @@
|
||||
unit main;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids,
|
||||
StdCtrls, ExtCtrls, ComboEx,
|
||||
LCLTranslator, Translations,
|
||||
PrintersDlgs, GridPrn, GridPrnPreviewForm, GridPrnPreviewDlg;
|
||||
|
||||
type
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
TMainForm = class(TForm)
|
||||
btnPrint: TButton;
|
||||
btnPreview: TButton;
|
||||
Button2: TButton;
|
||||
ccbPreviewOptions: TCheckComboBox;
|
||||
cmbDialogs: TComboBox;
|
||||
cmbLanguages: TComboBox;
|
||||
GridPrinter1: TGridPrinter;
|
||||
GridPrintPreviewDialog1: TGridPrintPreviewDialog;
|
||||
Label1: TLabel;
|
||||
PageSetupDialog1: TPageSetupDialog;
|
||||
Panel1: TPanel;
|
||||
PrinterSetupDialog1: TPrinterSetupDialog;
|
||||
StringGrid1: TStringGrid;
|
||||
procedure btnPrintClick(Sender: TObject);
|
||||
procedure btnPreviewClick(Sender: TObject);
|
||||
procedure ccbPreviewOptionsItemChange(Sender: TObject; AIndex: Integer);
|
||||
procedure cmbLanguagesChange(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
FLanguagesDir: String;
|
||||
procedure PopulateLanguages;
|
||||
procedure SelectLanguage(AIndex: Integer);
|
||||
|
||||
public
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
FileUtil;
|
||||
|
||||
resourcestring
|
||||
RSNoPrinterDialog = 'No printer dialog';
|
||||
RSPageSetupDialog = 'Page-setup dialog';
|
||||
RSPrinterDialog = 'Printer dialog';
|
||||
|
||||
RSNavigationButtons = 'Navigation buttons';
|
||||
RSNavigationEdit = 'Navigation edit';
|
||||
RSZoomButtons = 'Zoom buttons';
|
||||
RSPageOrientationButtons = 'Page orientation buttons';
|
||||
RSPageMarginsButtons = 'Page margins button';
|
||||
RSHeaderFooterButton = 'Header/footer button';
|
||||
RSPrintOrderButtons = 'Print order: colums first or rows first';
|
||||
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
procedure TMainForm.btnPrintClick(Sender: TObject);
|
||||
begin
|
||||
case cmbDialogs.ItemIndex of
|
||||
0: GridPrinter1.PrintDialogs := gpdNone;
|
||||
1: GridPrinter1.PrintDialogs := gpdPageSetup;
|
||||
2: GridPrinter1.PrintDialogs := gpdPrintDialog;
|
||||
end;
|
||||
GridPrinter1.Print;
|
||||
end;
|
||||
|
||||
procedure TMainForm.btnPreviewClick(Sender: TObject);
|
||||
begin
|
||||
GridPrintPreviewDialog1.Execute;
|
||||
end;
|
||||
|
||||
procedure TMainForm.ccbPreviewOptionsItemChange(Sender: TObject; AIndex: Integer);
|
||||
var
|
||||
optns: TGridPrintPreviewOptions;
|
||||
begin
|
||||
optns := [];
|
||||
if ccbPreviewOptions.Checked[0] then Include(optns, ppoNavigationBtns);
|
||||
if ccbPreviewOptions.Checked[1] then Include(optns, ppoNavigationEdit);
|
||||
if ccbPreviewOptions.Checked[2] then Include(optns, ppoZoomBtns);
|
||||
if ccbPreviewOptions.Checked[3] then Include(optns, ppoPageOrientationBtns);
|
||||
if ccbPreviewOptions.Checked[4] then Include(optns, ppoMarginsBtn);
|
||||
if ccbPreviewOptions.Checked[5] then Include(optns, ppoHeaderFooterBtn);
|
||||
if ccbPreviewOptions.Checked[6] then Include(optns, ppoPrintOrderBtns);
|
||||
GridPrintPreviewDialog1.Options := optns;
|
||||
end;
|
||||
|
||||
procedure TMainForm.cmbLanguagesChange(Sender: TObject);
|
||||
begin
|
||||
SelectLanguage(cmbLanguages.ItemIndex);
|
||||
end;
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
const
|
||||
NUM_ROWS = 100;
|
||||
NUM_COLS = 20;
|
||||
var
|
||||
i, r, c: Integer;
|
||||
begin
|
||||
cmbDialogs.ItemIndex := 2;
|
||||
ccbPreviewOptions.ItemIndex := 0;
|
||||
for i := 0 to ccbPreviewOptions.Count-1 do
|
||||
ccbPreviewOptions.Checked[i] := true;
|
||||
|
||||
FLanguagesDir := ExpandFileName(Application.Location + '../../languages/');
|
||||
PopulateLanguages;
|
||||
SelectLanguage(cmbLanguages.ItemIndex);
|
||||
|
||||
StringGrid1.BeginUpdate;
|
||||
try
|
||||
StringGrid1.Clear;
|
||||
StringGrid1.RowCount := NUM_ROWS + StringGrid1.FixedRows;
|
||||
StringGrid1.ColCount := NUM_COLS + StringGrid1.FixedCols;
|
||||
for r := StringGrid1.FixedRows to StringGrid1.RowCount-1 do
|
||||
StringGrid1.Cells[0, r] := 'Row ' + IntToStr(r);
|
||||
for c := StringGrid1.FixedCols to StringGrid1.ColCount-1 do
|
||||
begin
|
||||
StringGrid1.Cells[c, 0] := 'Column ' + IntToStr(c);
|
||||
for r := StringGrid1.FixedRows to StringGrid1.RowCount-1 do
|
||||
StringGrid1.cells[c, r] := Format('C%d R%d', [c, r]);
|
||||
end;
|
||||
finally
|
||||
StringGrid1.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Populates the languages combobox: reads the names of the app's .po files
|
||||
in the languages directory and adds the item the combobox. }
|
||||
procedure TMainForm.PopulateLanguages;
|
||||
var
|
||||
List: TStringList;
|
||||
s, lang: String;
|
||||
i, j: Integer;
|
||||
begin
|
||||
List := TStringList.Create;
|
||||
try
|
||||
FindAllFiles(List, FLanguagesDir, 'multilanguage_demo.*.po');
|
||||
for i := 0 to List.Count-1 do
|
||||
begin
|
||||
s := List[i];
|
||||
lang := '';
|
||||
for j := Length(s)-3 downto 0 do
|
||||
begin
|
||||
if s[j] = '.' then
|
||||
break;
|
||||
lang := s[j] + lang;
|
||||
end;
|
||||
case lowercase(lang) of
|
||||
'de': List[i] := 'de - Deutsch';
|
||||
'en': List[i] := 'en - English';
|
||||
end;
|
||||
end;
|
||||
List.Sort;
|
||||
cmbLanguages.Items.Assign(List);
|
||||
finally
|
||||
List.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.SelectLanguage(AIndex: Integer);
|
||||
var
|
||||
lang: String;
|
||||
i, idx1, idx2: Integer;
|
||||
begin
|
||||
idx1 := cmbDialogs.ItemIndex;
|
||||
idx2 := ccbPreviewOptions.ItemIndex;
|
||||
|
||||
// Set the default language - the LCLTranslator translates all app strings
|
||||
// as well as the LCL strings...
|
||||
if AIndex = -1 then
|
||||
begin
|
||||
lang := SetDefaultLang('', FLanguagesDir);
|
||||
for i := 0 to cmbLanguages.Items.Count-1 do
|
||||
if pos(lang + ' - ', cmbLanguages.Items[i]) = 1 then
|
||||
begin
|
||||
cmbLanguages.ItemIndex := i;
|
||||
break;
|
||||
end;
|
||||
end else
|
||||
begin
|
||||
lang := cmbLanguages.Items[AIndex];
|
||||
lang := Copy(lang, 1, pos(' - ', lang) - 1);
|
||||
SetDefaultLang(lang, FLanguagesDir);
|
||||
end;
|
||||
// ... and translate the strings of the GridPrinter package.
|
||||
TranslateUnitResourceStrings('GridPrnStrings', FLanguagesDir + 'GridPrnStrings.' + lang + '.po');
|
||||
|
||||
// The LCL Translator does not update the strings in the comboboxes.
|
||||
|
||||
// Translate the items in the printer dialogs combobox...
|
||||
cmbDialogs.Items[0] := RSNoPrinterDialog;
|
||||
cmbDialogs.Items[1] := RSPageSetupDialog;
|
||||
cmbDialogs.Items[2] := RSPrinterDialog;
|
||||
cmbDialogs.ItemIndex := idx1;
|
||||
|
||||
// ... and of the preview dialog options check combobox.
|
||||
ccbPreviewOptions.Items[0] := RSNavigationButtons;
|
||||
ccbPreviewOptions.Items[1] := RSNavigationEdit;
|
||||
ccbPreviewOptions.Items[2] := RSZoomButtons;
|
||||
ccbPreviewOptions.Items[3] := RSPageOrientationButtons;
|
||||
ccbPreviewOptions.Items[4] := RSPageMarginsButtons;
|
||||
ccbPreviewOptions.Items[5] := RSHeaderFooterButton;
|
||||
ccbPreviewOptions.Items[6] := RSPrintOrderButtons;
|
||||
ccbPreviewOptions.ItemIndex := idx2;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="12"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<CompatibilityMode Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<Title Value="MultiLanguage_Demo"/>
|
||||
<Scaled Value="True"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
</General>
|
||||
<i18n>
|
||||
<EnableI18N Value="True"/>
|
||||
<OutDir Value="..\..\languages"/>
|
||||
</i18n>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<UseFileFilters Value="True"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="3">
|
||||
<Item1>
|
||||
<PackageName Value="Printer4Lazarus"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="GridPrinterPkg"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item3>
|
||||
</RequiredPackages>
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="multilanguage_demo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="MainForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit1>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="multilanguage_demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf3"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="3">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item3>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
@ -0,0 +1,26 @@
|
||||
program MultiLanguage_Demo;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}
|
||||
cthreads,
|
||||
{$ENDIF}
|
||||
{$IFDEF HASAMIGA}
|
||||
athreads,
|
||||
{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, Main, printer4lazarus
|
||||
{ you can add units after this };
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource:=True;
|
||||
Application.Title:='MultiLanguage_Demo';
|
||||
Application.Scaled:=True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.Run;
|
||||
end.
|
||||
|
72
components/gridprinter/examples/stringgrid/main.lfm
Normal file
72
components/gridprinter/examples/stringgrid/main.lfm
Normal file
@ -0,0 +1,72 @@
|
||||
object Form1: TForm1
|
||||
Left = 331
|
||||
Height = 494
|
||||
Top = 127
|
||||
Width = 653
|
||||
Caption = 'StringGrid Demo for TGridPrinter'
|
||||
ClientHeight = 494
|
||||
ClientWidth = 653
|
||||
OnCreate = FormCreate
|
||||
LCLVersion = '2.3.0.0'
|
||||
object StringGrid1: TStringGrid
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = btnPrint
|
||||
Left = 6
|
||||
Height = 451
|
||||
Top = 6
|
||||
Width = 641
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Around = 6
|
||||
ColCount = 6
|
||||
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goEditing, goThumbTracking, goSmoothScroll, goCellEllipsis]
|
||||
RowCount = 6
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnPrint: TButton
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 25
|
||||
Top = 463
|
||||
Width = 60
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'Print...'
|
||||
OnClick = btnPrintClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnPreview: TButton
|
||||
AnchorSideLeft.Control = btnPrint
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnPrint
|
||||
Left = 72
|
||||
Height = 25
|
||||
Top = 463
|
||||
Width = 76
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Preview...'
|
||||
OnClick = btnPreviewClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object GridPrinter1: TGridPrinter
|
||||
Grid = StringGrid1
|
||||
Footer.Font.Height = -11
|
||||
Header.Font.Height = -11
|
||||
Header.Text = 'test||'
|
||||
Orientation = poLandscape
|
||||
PrintDialogs = gpdPrintDialog
|
||||
Left = 168
|
||||
Top = 96
|
||||
end
|
||||
object GridPrintPreviewDialog1: TGridPrintPreviewDialog
|
||||
GridPrinter = GridPrinter1
|
||||
Left = 288
|
||||
Top = 96
|
||||
end
|
||||
end
|
80
components/gridprinter/examples/stringgrid/main.pas
Normal file
80
components/gridprinter/examples/stringgrid/main.pas
Normal file
@ -0,0 +1,80 @@
|
||||
unit main;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls,
|
||||
ComboEx,
|
||||
PrintersDlgs, GridPrn, GridPrnPreviewForm, GridPrnPreviewDlg;
|
||||
|
||||
type
|
||||
|
||||
{ TForm1 }
|
||||
|
||||
TForm1 = class(TForm)
|
||||
btnPrint: TButton;
|
||||
btnPreview: TButton;
|
||||
Button2: TButton;
|
||||
GridPrinter1: TGridPrinter;
|
||||
GridPrintPreviewDialog1: TGridPrintPreviewDialog;
|
||||
PageSetupDialog1: TPageSetupDialog;
|
||||
PrinterSetupDialog1: TPrinterSetupDialog;
|
||||
StringGrid1: TStringGrid;
|
||||
procedure btnPrintClick(Sender: TObject);
|
||||
procedure btnPreviewClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
|
||||
public
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
Form1: TForm1;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TForm1 }
|
||||
|
||||
procedure TForm1.btnPrintClick(Sender: TObject);
|
||||
begin
|
||||
GridPrinter1.Print;
|
||||
end;
|
||||
|
||||
procedure TForm1.btnPreviewClick(Sender: TObject);
|
||||
begin
|
||||
GridPrintPreviewDialog1.Execute;
|
||||
end;
|
||||
|
||||
// Populate the string grid with dummy to have something for printing.
|
||||
procedure TForm1.FormCreate(Sender: TObject);
|
||||
const
|
||||
NUM_ROWS = 100;
|
||||
NUM_COLS = 20;
|
||||
var
|
||||
r, c: Integer;
|
||||
begin
|
||||
StringGrid1.BeginUpdate;
|
||||
try
|
||||
StringGrid1.Clear;
|
||||
StringGrid1.RowCount := NUM_ROWS + StringGrid1.FixedRows;
|
||||
StringGrid1.ColCount := NUM_COLS + StringGrid1.FixedCols;
|
||||
for r := StringGrid1.FixedRows to StringGrid1.RowCount-1 do
|
||||
StringGrid1.Cells[0, r] := 'Row ' + IntToStr(r);
|
||||
for c := StringGrid1.FixedCols to StringGrid1.ColCount-1 do
|
||||
begin
|
||||
StringGrid1.Cells[c, 0] := 'Column ' + IntToStr(c);
|
||||
for r := StringGrid1.FixedRows to StringGrid1.RowCount-1 do
|
||||
StringGrid1.cells[c, r] := Format('C%d R%d', [c, r]);
|
||||
end;
|
||||
finally
|
||||
StringGrid1.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="12"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<CompatibilityMode Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<Title Value="stringgrid_demo"/>
|
||||
<Scaled Value="True"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<i18n>
|
||||
<EnableI18N LFM="False"/>
|
||||
</i18n>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<UseFileFilters Value="True"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="3">
|
||||
<Item1>
|
||||
<PackageName Value="Printer4Lazarus"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="GridPrinterPkg"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item3>
|
||||
</RequiredPackages>
|
||||
<Units Count="2">
|
||||
<Unit0>
|
||||
<Filename Value="stringgrid_demo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="Form1"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit1>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="stringgrid_demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf3"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="3">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item3>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
@ -0,0 +1,25 @@
|
||||
program stringgrid_demo;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}
|
||||
cthreads,
|
||||
{$ENDIF}
|
||||
{$IFDEF HASAMIGA}
|
||||
athreads,
|
||||
{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, main, printer4lazarus
|
||||
{ you can add units after this };
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource:=True;
|
||||
Application.Scaled:=True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TForm1, Form1);
|
||||
Application.Run;
|
||||
end.
|
||||
|
64
components/gridprinter/gridprinterpkg.lpk
Normal file
64
components/gridprinter/gridprinterpkg.lpk
Normal file
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<Package Version="5">
|
||||
<PathDelim Value="\"/>
|
||||
<Name Value="GridPrinterPkg"/>
|
||||
<Type Value="RunAndDesignTime"/>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<SearchPaths>
|
||||
<OtherUnitFiles Value="source"/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
</CompilerOptions>
|
||||
<Files Count="6">
|
||||
<Item1>
|
||||
<Filename Value="source\gridprnheaderfooterform.pas"/>
|
||||
<UnitName Value="GridPrnHeaderFooterForm"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Filename Value="source\gridprn.pas"/>
|
||||
<UnitName Value="GridPrn"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Filename Value="source\gridprnpreviewform.pas"/>
|
||||
<UnitName Value="GridPrnPreviewForm"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<Filename Value="source\gridprnreg.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="GridPrnReg"/>
|
||||
</Item4>
|
||||
<Item5>
|
||||
<Filename Value="source\gridprnpreviewdlg.pas"/>
|
||||
<UnitName Value="GridPrnPreviewDlg"/>
|
||||
</Item5>
|
||||
<Item6>
|
||||
<Filename Value="source\gridprnstrings.pas"/>
|
||||
<UnitName Value="GridPrnStrings"/>
|
||||
</Item6>
|
||||
</Files>
|
||||
<CompatibilityMode Value="True"/>
|
||||
<i18n>
|
||||
<EnableI18N Value="True"/>
|
||||
<OutDir Value="languages"/>
|
||||
<EnableI18NForLFM Value="True"/>
|
||||
</i18n>
|
||||
<RequiredPkgs Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="Printer4Lazarus"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPkgs>
|
||||
<UsageOptions>
|
||||
<UnitPath Value="$(PkgOutDir)"/>
|
||||
</UsageOptions>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<UseFileFilters Value="True"/>
|
||||
</PublishOptions>
|
||||
</Package>
|
||||
</CONFIG>
|
23
components/gridprinter/gridprinterpkg.pas
Normal file
23
components/gridprinter/gridprinterpkg.pas
Normal file
@ -0,0 +1,23 @@
|
||||
{ This file was automatically created by Lazarus. Do not edit!
|
||||
This source is only used to compile and install the package.
|
||||
}
|
||||
|
||||
unit GridPrinterPkg;
|
||||
|
||||
{$warn 5023 off : no warning about unused units}
|
||||
interface
|
||||
|
||||
uses
|
||||
GridPrnHeaderFooterForm, GridPrn, GridPrnPreviewForm, GridPrnReg,
|
||||
GridPrnPreviewDlg, GridPrnStrings, LazarusPackageIntf;
|
||||
|
||||
implementation
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterUnit('GridPrnReg', @GridPrnReg.Register);
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterPackage('GridPrinterPkg', @Register);
|
||||
end.
|
BIN
components/gridprinter/images/TGridPrintPreviewDialog.png
Normal file
BIN
components/gridprinter/images/TGridPrintPreviewDialog.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 855 B |
BIN
components/gridprinter/images/TGridPrintPreviewDialog_150.png
Normal file
BIN
components/gridprinter/images/TGridPrintPreviewDialog_150.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
BIN
components/gridprinter/images/TGridPrintPreviewDialog_200.png
Normal file
BIN
components/gridprinter/images/TGridPrintPreviewDialog_200.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
BIN
components/gridprinter/images/TGridPrinter.png
Normal file
BIN
components/gridprinter/images/TGridPrinter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 542 B |
BIN
components/gridprinter/images/TGridPrinter_150.png
Normal file
BIN
components/gridprinter/images/TGridPrinter_150.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 782 B |
BIN
components/gridprinter/images/TGridPrinter_200.png
Normal file
BIN
components/gridprinter/images/TGridPrinter_200.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 740 B |
3
components/gridprinter/images/make_res.bat
Normal file
3
components/gridprinter/images/make_res.bat
Normal file
@ -0,0 +1,3 @@
|
||||
dir /b *.png > imagelist.txt
|
||||
lazres ..\source\gridprinter_icons.res @imagelist.txt
|
||||
del /q imagelist.txt
|
181
components/gridprinter/languages/gridprnstrings.de.po
Normal file
181
components/gridprinter/languages/gridprnstrings.de.po
Normal file
@ -0,0 +1,181 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GridPrinter\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.1.1\n"
|
||||
|
||||
#: gridprnstrings.rsbottommargin
|
||||
msgid "Bottom margin"
|
||||
msgstr "Unterer Rand"
|
||||
|
||||
#: gridprnstrings.rsclose
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: gridprnstrings.rsfont
|
||||
msgid "Font"
|
||||
msgstr "Schriftart"
|
||||
|
||||
#: gridprnstrings.rsfooter
|
||||
msgid "Footer"
|
||||
msgstr "Fußzeile"
|
||||
|
||||
#: gridprnstrings.rsfootermargin
|
||||
msgid "Footer margin"
|
||||
msgstr "Fußzeilen-Rand"
|
||||
|
||||
#: gridprnstrings.rsheader
|
||||
msgid "Header"
|
||||
msgstr "Kopfzeile"
|
||||
|
||||
#: gridprnstrings.rsheaderfooterconfig
|
||||
msgid "Header/footer configuration"
|
||||
msgstr "Kopf/Fußzeilen-Konfiguration"
|
||||
|
||||
#: gridprnstrings.rsheaderfootersectionparameterinfo
|
||||
msgid ""
|
||||
"Each section can contain the following parameters:\n"
|
||||
" $DATE - Current date\n"
|
||||
" $TIME - Current time\n"
|
||||
" $PAGE - Page number\n"
|
||||
" $PAGECOUNT - Number of pages\n"
|
||||
" $FULL_FILENAME - Full name of the printed file\n"
|
||||
" $FILENAME - Name of the printed file, without path\n"
|
||||
" $PATH - Path of the printed file"
|
||||
msgstr ""
|
||||
"Jeder Abschnitt kann die folgenden Parameter enthalten\n"
|
||||
" $DATE - Aktuelles Datum\n"
|
||||
" $TIME - Aktuelle Uhrzeit\n"
|
||||
" $PAGE - Seitennummer\n"
|
||||
" $PAGECOUNT - Seitenanzahl\n"
|
||||
" $FULL_FILENAME - Voller Name der zu druckenden Datei\n"
|
||||
" $FILENAME - Name der zu druckenden Datei ohne Pfad\n"
|
||||
" $PATH - Pfad der zu druckenden Datei"
|
||||
|
||||
#: gridprnstrings.rsheadermargin
|
||||
msgid "Header margin"
|
||||
msgstr "Kopfzeilen-Rand"
|
||||
|
||||
#: gridprnstrings.rslandscapepageorientation
|
||||
msgid "Landscape page orientation"
|
||||
msgstr "Seite im Querformat"
|
||||
|
||||
#: gridprnstrings.rsleftmargin
|
||||
msgid "Left margin"
|
||||
msgstr "Linker Rand"
|
||||
|
||||
#: gridprnstrings.rslinecolor
|
||||
msgid "Line color"
|
||||
msgstr "Linienfarbe"
|
||||
|
||||
#: gridprnstrings.rslinewidthmm
|
||||
msgid "Line width (mm)"
|
||||
msgstr "Linienbreite (mm)"
|
||||
|
||||
#: gridprnstrings.rsoriginalsize
|
||||
msgid "Original size (100%)"
|
||||
msgstr "Originalgröße (100%)"
|
||||
|
||||
#: gridprnstrings.rspageandzoominfo
|
||||
#, object-pascal-format
|
||||
msgid "Page %d of %d, Zoom %d %%"
|
||||
msgstr "Seite %d von %d, Skalierung %d %%"
|
||||
|
||||
#: gridprnstrings.rspagemarginsconfig
|
||||
msgid "Page margins configuration"
|
||||
msgstr "Einstellung der Seitenränder"
|
||||
|
||||
#: gridprnstrings.rsportraitpageorientation
|
||||
msgid "Portrait page orientation"
|
||||
msgstr "Seite im Hochformat"
|
||||
|
||||
#: gridprnstrings.rsprint
|
||||
msgid "Print"
|
||||
msgstr "Drucken"
|
||||
|
||||
#: gridprnstrings.rsprintcolsfirst
|
||||
msgid ""
|
||||
"First print columns from top to bottom,\n"
|
||||
"then print from left to right"
|
||||
msgstr ""
|
||||
"Seiten zuerst entlang der Spalten von oben nach unten,\n"
|
||||
"dann von links nach rechts drucken"
|
||||
|
||||
#: gridprnstrings.rsprintpreview
|
||||
msgid "Print Preview"
|
||||
msgstr "Druckvorschau"
|
||||
|
||||
#: gridprnstrings.rsprintrowsfirst
|
||||
msgid ""
|
||||
"First print rows from left to right,\n"
|
||||
"then print from top to bottom"
|
||||
msgstr ""
|
||||
"Seiten zuerst entlang der Zeilen von links nach rechts,\n"
|
||||
"dann von oben nach unten drucken"
|
||||
|
||||
#: gridprnstrings.rsrightmargin
|
||||
msgid "Right margin"
|
||||
msgstr "Rechter Rand"
|
||||
|
||||
#: gridprnstrings.rsshow
|
||||
msgid "Show"
|
||||
msgstr "Anzeigen"
|
||||
|
||||
#: gridprnstrings.rsshowdividingline
|
||||
msgid "Show dividing line"
|
||||
msgstr "Trennlinie anzeigen"
|
||||
|
||||
#: gridprnstrings.rsshowfirstpage
|
||||
msgid "Show first page"
|
||||
msgstr "Erste Seite anzeigen"
|
||||
|
||||
#: gridprnstrings.rsshowlastpage
|
||||
msgid "Show last page"
|
||||
msgstr "Letzte Seite anzeigen"
|
||||
|
||||
#: gridprnstrings.rsshownextpage
|
||||
msgid "Show next page"
|
||||
msgstr "Nächste Seite anzeigen"
|
||||
|
||||
#: gridprnstrings.rsshowprevpage
|
||||
msgid "Show previous page"
|
||||
msgstr "Vorige Seite anzeigen"
|
||||
|
||||
#: gridprnstrings.rstextincenteredsection
|
||||
msgid "Text in centered section"
|
||||
msgstr "Zentrierter Text"
|
||||
|
||||
#: gridprnstrings.rstextinleftalignedsection
|
||||
msgid "Text in left-aligned section"
|
||||
msgstr "Linksbündiger Text"
|
||||
|
||||
#: gridprnstrings.rstextinrightalignedsection
|
||||
msgid "Text in right-aligned section"
|
||||
msgstr "Rechtsbündiger Text"
|
||||
|
||||
#: gridprnstrings.rstopmargin
|
||||
msgid "Top margin"
|
||||
msgstr "Oberer Rand"
|
||||
|
||||
#: gridprnstrings.rszoomin
|
||||
msgid "Zoom in"
|
||||
msgstr "Vergrößern"
|
||||
|
||||
#: gridprnstrings.rszoomout
|
||||
msgid "Zoom out"
|
||||
msgstr "Verkleinern"
|
||||
|
||||
#: gridprnstrings.rszoomtofitpageheight
|
||||
msgid "Zoom to fit page height"
|
||||
msgstr "Vergrößerung auf Seitenbreite einstellen"
|
||||
|
||||
#: gridprnstrings.rszoomtofitpagewidth
|
||||
msgid "Zoom to fit page width"
|
||||
msgstr "Vergrößerung auf Seitenhöhe einstellen"
|
181
components/gridprinter/languages/gridprnstrings.en.po
Normal file
181
components/gridprinter/languages/gridprnstrings.en.po
Normal file
@ -0,0 +1,181 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: GridPrinter\n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.1.1\n"
|
||||
|
||||
#: gridprnstrings.rsbottommargin
|
||||
msgid "Bottom margin"
|
||||
msgstr "Bottom margin"
|
||||
|
||||
#: gridprnstrings.rsclose
|
||||
msgid "Close"
|
||||
msgstr "Close"
|
||||
|
||||
#: gridprnstrings.rsfont
|
||||
msgid "Font"
|
||||
msgstr "Font"
|
||||
|
||||
#: gridprnstrings.rsfooter
|
||||
msgid "Footer"
|
||||
msgstr "Footer"
|
||||
|
||||
#: gridprnstrings.rsfootermargin
|
||||
msgid "Footer margin"
|
||||
msgstr "Footer margin"
|
||||
|
||||
#: gridprnstrings.rsheader
|
||||
msgid "Header"
|
||||
msgstr "Header"
|
||||
|
||||
#: gridprnstrings.rsheaderfooterconfig
|
||||
msgid "Header/footer configuration"
|
||||
msgstr "Header/footer configuration"
|
||||
|
||||
#: gridprnstrings.rsheaderfootersectionparameterinfo
|
||||
msgid ""
|
||||
"Each section can contain the following parameters:\n"
|
||||
" $DATE - Current date\n"
|
||||
" $TIME - Current time\n"
|
||||
" $PAGE - Page number\n"
|
||||
" $PAGECOUNT - Number of pages\n"
|
||||
" $FULL_FILENAME - Full name of the printed file\n"
|
||||
" $FILENAME - Name of the printed file, without path\n"
|
||||
" $PATH - Path of the printed file"
|
||||
msgstr ""
|
||||
"Each section can contain the following parameters:\n"
|
||||
" $DATE - Current date\n"
|
||||
" $TIME - Current time\n"
|
||||
" $PAGE - Page number\n"
|
||||
" $PAGECOUNT - Number of pages\n"
|
||||
" $FULL_FILENAME - Full name of the printed file\n"
|
||||
" $FILENAME - Name of the printed file, without path\n"
|
||||
" $PATH - Path of the printed file"
|
||||
|
||||
#: gridprnstrings.rsheadermargin
|
||||
msgid "Header margin"
|
||||
msgstr "Header margin"
|
||||
|
||||
#: gridprnstrings.rslandscapepageorientation
|
||||
msgid "Landscape page orientation"
|
||||
msgstr "Landscape page orientation"
|
||||
|
||||
#: gridprnstrings.rsleftmargin
|
||||
msgid "Left margin"
|
||||
msgstr "Left margin"
|
||||
|
||||
#: gridprnstrings.rslinecolor
|
||||
msgid "Line color"
|
||||
msgstr "Line color"
|
||||
|
||||
#: gridprnstrings.rslinewidthmm
|
||||
msgid "Line width (mm)"
|
||||
msgstr "Line width (mm)"
|
||||
|
||||
#: gridprnstrings.rsoriginalsize
|
||||
msgid "Original size (100%)"
|
||||
msgstr "Original size (100%)"
|
||||
|
||||
#: gridprnstrings.rspageandzoominfo
|
||||
#, object-pascal-format
|
||||
msgid "Page %d of %d, Zoom %d %%"
|
||||
msgstr "Page %d of %d, Zoom %d %%"
|
||||
|
||||
#: gridprnstrings.rspagemarginsconfig
|
||||
msgid "Page margins configuration"
|
||||
msgstr "Page margins configuration"
|
||||
|
||||
#: gridprnstrings.rsportraitpageorientation
|
||||
msgid "Portrait page orientation"
|
||||
msgstr "Portrait page orientation"
|
||||
|
||||
#: gridprnstrings.rsprint
|
||||
msgid "Print"
|
||||
msgstr "Print"
|
||||
|
||||
#: gridprnstrings.rsprintcolsfirst
|
||||
msgid ""
|
||||
"First print columns from top to bottom,\n"
|
||||
"then print from left to right"
|
||||
msgstr ""
|
||||
"First print columns from top to bottom,\n"
|
||||
"then print from left to right"
|
||||
|
||||
#: gridprnstrings.rsprintpreview
|
||||
msgid "Print Preview"
|
||||
msgstr "Print Preview"
|
||||
|
||||
#: gridprnstrings.rsprintrowsfirst
|
||||
msgid ""
|
||||
"First print rows from left to right,\n"
|
||||
"then print from top to bottom"
|
||||
msgstr ""
|
||||
"First print rows from left to right,\n"
|
||||
"then print from top to bottom"
|
||||
|
||||
#: gridprnstrings.rsrightmargin
|
||||
msgid "Right margin"
|
||||
msgstr "Right margin"
|
||||
|
||||
#: gridprnstrings.rsshow
|
||||
msgid "Show"
|
||||
msgstr "Show"
|
||||
|
||||
#: gridprnstrings.rsshowdividingline
|
||||
msgid "Show dividing line"
|
||||
msgstr "Show dividing line"
|
||||
|
||||
#: gridprnstrings.rsshowfirstpage
|
||||
msgid "Show first page"
|
||||
msgstr "Show first page"
|
||||
|
||||
#: gridprnstrings.rsshowlastpage
|
||||
msgid "Show last page"
|
||||
msgstr "Show last page"
|
||||
|
||||
#: gridprnstrings.rsshownextpage
|
||||
msgid "Show next page"
|
||||
msgstr "Show next page"
|
||||
|
||||
#: gridprnstrings.rsshowprevpage
|
||||
msgid "Show previous page"
|
||||
msgstr "Show previous page"
|
||||
|
||||
#: gridprnstrings.rstextincenteredsection
|
||||
msgid "Text in centered section"
|
||||
msgstr "Text in centered section"
|
||||
|
||||
#: gridprnstrings.rstextinleftalignedsection
|
||||
msgid "Text in left-aligned section"
|
||||
msgstr "Text in left-aligned section"
|
||||
|
||||
#: gridprnstrings.rstextinrightalignedsection
|
||||
msgid "Text in right-aligned section"
|
||||
msgstr "Text in right-aligned section"
|
||||
|
||||
#: gridprnstrings.rstopmargin
|
||||
msgid "Top margin"
|
||||
msgstr "Top margin"
|
||||
|
||||
#: gridprnstrings.rszoomin
|
||||
msgid "Zoom in"
|
||||
msgstr "Zoom in"
|
||||
|
||||
#: gridprnstrings.rszoomout
|
||||
msgid "Zoom out"
|
||||
msgstr "Zoom out"
|
||||
|
||||
#: gridprnstrings.rszoomtofitpageheight
|
||||
msgid "Zoom to fit page height"
|
||||
msgstr "Zoom to fit page height"
|
||||
|
||||
#: gridprnstrings.rszoomtofitpagewidth
|
||||
msgid "Zoom to fit page width"
|
||||
msgstr "Zoom to fit page width"
|
160
components/gridprinter/languages/gridprnstrings.pot
Normal file
160
components/gridprinter/languages/gridprnstrings.pot
Normal file
@ -0,0 +1,160 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: gridprnstrings.rsbottommargin
|
||||
msgid "Bottom margin"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsclose
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsfont
|
||||
msgid "Font"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsfooter
|
||||
msgid "Footer"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsfootermargin
|
||||
msgid "Footer margin"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsheader
|
||||
msgid "Header"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsheaderfooterconfig
|
||||
msgid "Header/footer configuration"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsheaderfootersectionparameterinfo
|
||||
msgid ""
|
||||
"Each section can contain the following parameters:\n"
|
||||
" $DATE - Current date\n"
|
||||
" $TIME - Current time\n"
|
||||
" $PAGE - Page number\n"
|
||||
" $PAGECOUNT - Number of pages\n"
|
||||
" $FULL_FILENAME - Full name of the printed file\n"
|
||||
" $FILENAME - Name of the printed file, without path\n"
|
||||
" $PATH - Path of the printed file"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsheadermargin
|
||||
msgid "Header margin"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rslandscapepageorientation
|
||||
msgid "Landscape page orientation"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsleftmargin
|
||||
msgid "Left margin"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rslinecolor
|
||||
msgid "Line color"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rslinewidthmm
|
||||
msgid "Line width (mm)"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsoriginalsize
|
||||
msgid "Original size (100%)"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rspageandzoominfo
|
||||
#, object-pascal-format
|
||||
msgid "Page %d of %d, Zoom %d %%"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rspagemarginsconfig
|
||||
msgid "Page margins configuration"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsportraitpageorientation
|
||||
msgid "Portrait page orientation"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsprint
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsprintcolsfirst
|
||||
msgid ""
|
||||
"First print columns from top to bottom,\n"
|
||||
"then print from left to right"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsprintpreview
|
||||
msgid "Print Preview"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsprintrowsfirst
|
||||
msgid ""
|
||||
"First print rows from left to right,\n"
|
||||
"then print from top to bottom"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsrightmargin
|
||||
msgid "Right margin"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsshow
|
||||
msgid "Show"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsshowdividingline
|
||||
msgid "Show dividing line"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsshowfirstpage
|
||||
msgid "Show first page"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsshowlastpage
|
||||
msgid "Show last page"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsshownextpage
|
||||
msgid "Show next page"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rsshowprevpage
|
||||
msgid "Show previous page"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rstextincenteredsection
|
||||
msgid "Text in centered section"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rstextinleftalignedsection
|
||||
msgid "Text in left-aligned section"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rstextinrightalignedsection
|
||||
msgid "Text in right-aligned section"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rstopmargin
|
||||
msgid "Top margin"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rszoomin
|
||||
msgid "Zoom in"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rszoomout
|
||||
msgid "Zoom out"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rszoomtofitpageheight
|
||||
msgid "Zoom to fit page height"
|
||||
msgstr ""
|
||||
|
||||
#: gridprnstrings.rszoomtofitpagewidth
|
||||
msgid "Zoom to fit page width"
|
||||
msgstr ""
|
||||
|
69
components/gridprinter/languages/multilanguage_demo.de.po
Normal file
69
components/gridprinter/languages/multilanguage_demo.de.po
Normal file
@ -0,0 +1,69 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.1.1\n"
|
||||
|
||||
#: main.rsheaderfooterbutton
|
||||
msgid "Header/footer button"
|
||||
msgstr "Schalter für Kopf-/Fußzeile"
|
||||
|
||||
#: main.rsnavigationbuttons
|
||||
msgid "Navigation buttons"
|
||||
msgstr "Seitenwahl-Schalter"
|
||||
|
||||
#: main.rsnavigationedit
|
||||
msgid "Navigation edit"
|
||||
msgstr "Eingabe der Seitennummer"
|
||||
|
||||
#: main.rsnoprinterdialog
|
||||
msgid "No printer dialog"
|
||||
msgstr "Kein Dialog"
|
||||
|
||||
#: main.rspagemarginsbuttons
|
||||
msgid "Page margins button"
|
||||
msgstr "Schalter für Seitenränder"
|
||||
|
||||
#: main.rspageorientationbuttons
|
||||
msgid "Page orientation buttons"
|
||||
msgstr "Schalter für Seitenausrichtung"
|
||||
|
||||
#: main.rspagesetupdialog
|
||||
msgid "Page-setup dialog"
|
||||
msgstr "Seiteneinrichtungs-Dialog"
|
||||
|
||||
#: main.rsprinterdialog
|
||||
msgid "Printer dialog"
|
||||
msgstr "Drucker-Dialog"
|
||||
|
||||
#: main.rsprintorderbuttons
|
||||
msgid "Print order: colums first or rows first"
|
||||
msgstr "Druckreihenfolge: Spalten oder Zeilen zuerst"
|
||||
|
||||
#: main.rszoombuttons
|
||||
msgid "Zoom buttons"
|
||||
msgstr "Schalter für Vergrößerung"
|
||||
|
||||
#: tmainform.btnpreview.caption
|
||||
msgid "Preview..."
|
||||
msgstr "Druckvorschau..."
|
||||
|
||||
#: tmainform.btnprint.caption
|
||||
msgid "Print..."
|
||||
msgstr "Drucken..."
|
||||
|
||||
#: tmainform.caption
|
||||
msgid "Multi-Language Demonstration of TGridPrinter"
|
||||
msgstr "Mehrsprachige Demonstration von TGridPrinter"
|
||||
|
||||
#: tmainform.label1.caption
|
||||
msgid "Language:"
|
||||
msgstr "Sprache:"
|
||||
|
69
components/gridprinter/languages/multilanguage_demo.en.po
Normal file
69
components/gridprinter/languages/multilanguage_demo.en.po
Normal file
@ -0,0 +1,69 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.1.1\n"
|
||||
|
||||
#: main.rsheaderfooterbutton
|
||||
msgid "Header/footer button"
|
||||
msgstr "Header/footer button"
|
||||
|
||||
#: main.rsnavigationbuttons
|
||||
msgid "Navigation buttons"
|
||||
msgstr "Navigation buttons"
|
||||
|
||||
#: main.rsnavigationedit
|
||||
msgid "Navigation edit"
|
||||
msgstr "Navigation edit"
|
||||
|
||||
#: main.rsnoprinterdialog
|
||||
msgid "No printer dialog"
|
||||
msgstr "No printer dialog"
|
||||
|
||||
#: main.rspagemarginsbuttons
|
||||
msgid "Page margins button"
|
||||
msgstr "Page margins button"
|
||||
|
||||
#: main.rspageorientationbuttons
|
||||
msgid "Page orientation buttons"
|
||||
msgstr "Page orientation buttons"
|
||||
|
||||
#: main.rspagesetupdialog
|
||||
msgid "Page-setup dialog"
|
||||
msgstr "Page-setup dialog"
|
||||
|
||||
#: main.rsprinterdialog
|
||||
msgid "Printer dialog"
|
||||
msgstr "Printer dialog"
|
||||
|
||||
#: main.rsprintorderbuttons
|
||||
msgid "Print order: colums first or rows first"
|
||||
msgstr "Print order: colums first or rows first"
|
||||
|
||||
#: main.rszoombuttons
|
||||
msgid "Zoom buttons"
|
||||
msgstr "Zoom buttons"
|
||||
|
||||
#: tmainform.btnpreview.caption
|
||||
msgid "Preview..."
|
||||
msgstr "Preview..."
|
||||
|
||||
#: tmainform.btnprint.caption
|
||||
msgid "Print..."
|
||||
msgstr "Print..."
|
||||
|
||||
#: tmainform.caption
|
||||
msgid "Multi-Language Demonstration of TGridPrinter"
|
||||
msgstr "Multi-Language Demonstration of TGridPrinter"
|
||||
|
||||
#: tmainform.label1.caption
|
||||
msgid "Language:"
|
||||
msgstr "Language:"
|
||||
|
59
components/gridprinter/languages/multilanguage_demo.pot
Normal file
59
components/gridprinter/languages/multilanguage_demo.pot
Normal file
@ -0,0 +1,59 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: main.rsheaderfooterbutton
|
||||
msgid "Header/footer button"
|
||||
msgstr ""
|
||||
|
||||
#: main.rsnavigationbuttons
|
||||
msgid "Navigation buttons"
|
||||
msgstr ""
|
||||
|
||||
#: main.rsnavigationedit
|
||||
msgid "Navigation edit"
|
||||
msgstr ""
|
||||
|
||||
#: main.rsnoprinterdialog
|
||||
msgid "No printer dialog"
|
||||
msgstr ""
|
||||
|
||||
#: main.rspagemarginsbuttons
|
||||
msgid "Page margins button"
|
||||
msgstr ""
|
||||
|
||||
#: main.rspageorientationbuttons
|
||||
msgid "Page orientation buttons"
|
||||
msgstr ""
|
||||
|
||||
#: main.rspagesetupdialog
|
||||
msgid "Page-setup dialog"
|
||||
msgstr ""
|
||||
|
||||
#: main.rsprinterdialog
|
||||
msgid "Printer dialog"
|
||||
msgstr ""
|
||||
|
||||
#: main.rsprintorderbuttons
|
||||
msgid "Print order: colums first or rows first"
|
||||
msgstr ""
|
||||
|
||||
#: main.rszoombuttons
|
||||
msgid "Zoom buttons"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.btnpreview.caption
|
||||
msgid "Preview..."
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.btnprint.caption
|
||||
msgid "Print..."
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.caption
|
||||
msgid "Multi-Language Demonstration of TGridPrinter"
|
||||
msgstr ""
|
||||
|
||||
#: tmainform.label1.caption
|
||||
msgid "Language:"
|
||||
msgstr ""
|
||||
|
BIN
components/gridprinter/source/gridprinter_icons.res
Normal file
BIN
components/gridprinter/source/gridprinter_icons.res
Normal file
Binary file not shown.
1638
components/gridprinter/source/gridprn.pas
Normal file
1638
components/gridprinter/source/gridprn.pas
Normal file
File diff suppressed because it is too large
Load Diff
222
components/gridprinter/source/gridprnheaderfooterform.lfm
Normal file
222
components/gridprinter/source/gridprnheaderfooterform.lfm
Normal file
@ -0,0 +1,222 @@
|
||||
object GridPrintHeaderFooterForm: TGridPrintHeaderFooterForm
|
||||
Left = 552
|
||||
Height = 369
|
||||
Top = 253
|
||||
Width = 582
|
||||
Caption = 'Header/Footer'
|
||||
ClientHeight = 369
|
||||
ClientWidth = 582
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
LCLVersion = '2.3.0.0'
|
||||
object ButtonPanel1: TButtonPanel
|
||||
Left = 6
|
||||
Height = 34
|
||||
Top = 329
|
||||
Width = 570
|
||||
OKButton.Name = 'OKButton'
|
||||
OKButton.DefaultCaption = True
|
||||
OKButton.OnClick = OKClick
|
||||
HelpButton.Name = 'HelpButton'
|
||||
HelpButton.DefaultCaption = True
|
||||
CloseButton.Name = 'CloseButton'
|
||||
CloseButton.DefaultCaption = True
|
||||
CancelButton.Name = 'CancelButton'
|
||||
CancelButton.DefaultCaption = True
|
||||
TabOrder = 0
|
||||
ShowButtons = [pbOK, pbCancel]
|
||||
end
|
||||
object TabControl: TTabControl
|
||||
Left = 6
|
||||
Height = 317
|
||||
Top = 6
|
||||
Width = 570
|
||||
OnChange = TabControlChange
|
||||
OnChanging = TabControlChanging
|
||||
TabIndex = 0
|
||||
Tabs.Strings = (
|
||||
'Header'
|
||||
'Footer'
|
||||
)
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 6
|
||||
TabOrder = 1
|
||||
object edTextLeft: TEdit
|
||||
AnchorSideLeft.Control = cbShow
|
||||
AnchorSideTop.Control = cbShow
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Bevel1
|
||||
Left = 10
|
||||
Height = 23
|
||||
Top = 58
|
||||
Width = 176
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
Constraints.MinWidth = 125
|
||||
TabOrder = 1
|
||||
TextHint = 'Text in left-aligned section'
|
||||
end
|
||||
object edTextCenter: TEdit
|
||||
AnchorSideLeft.Control = Bevel1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edTextLeft
|
||||
AnchorSideRight.Control = Bevel2
|
||||
Left = 194
|
||||
Height = 23
|
||||
Top = 58
|
||||
Width = 185
|
||||
Alignment = taCenter
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Constraints.MinWidth = 125
|
||||
TabOrder = 2
|
||||
TextHint = 'Text in centered section'
|
||||
end
|
||||
object edTextRight: TEdit
|
||||
AnchorSideLeft.Control = Bevel2
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edTextLeft
|
||||
AnchorSideRight.Control = TabControl
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 387
|
||||
Height = 23
|
||||
Top = 58
|
||||
Width = 173
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Right = 8
|
||||
Constraints.MinWidth = 125
|
||||
TabOrder = 3
|
||||
TextHint = 'Text in right-aligned section'
|
||||
end
|
||||
object cbShow: TCheckBox
|
||||
AnchorSideLeft.Control = TabControl
|
||||
AnchorSideTop.Control = TabControl
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 31
|
||||
Width = 47
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Show'
|
||||
TabOrder = 4
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
Left = 186
|
||||
Height = 51
|
||||
Top = 31
|
||||
Width = 8
|
||||
Anchors = [akTop]
|
||||
Shape = bsSpacer
|
||||
end
|
||||
object Bevel2: TBevel
|
||||
Left = 379
|
||||
Height = 59
|
||||
Top = 24
|
||||
Width = 8
|
||||
Anchors = [akTop]
|
||||
Shape = bsSpacer
|
||||
end
|
||||
object btnFont: TButton
|
||||
AnchorSideLeft.Control = cbShow
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cbShow
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 89
|
||||
Height = 25
|
||||
Top = 28
|
||||
Width = 75
|
||||
BorderSpacing.Left = 32
|
||||
Caption = 'Font...'
|
||||
OnClick = btnFontClick
|
||||
TabOrder = 5
|
||||
end
|
||||
object Bevel3: TBevel
|
||||
AnchorSideLeft.Control = edTextLeft
|
||||
AnchorSideTop.Control = lblTextInfo
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = edTextRight
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 4
|
||||
Top = 224
|
||||
Width = 550
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 16
|
||||
Shape = bsTopLine
|
||||
end
|
||||
object cbShowLine: TCheckBox
|
||||
AnchorSideLeft.Control = cbShow
|
||||
AnchorSideTop.Control = Bevel3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 240
|
||||
Width = 115
|
||||
BorderSpacing.Top = 12
|
||||
Caption = 'Show dividing line'
|
||||
TabOrder = 6
|
||||
end
|
||||
object lblLineWidth: TLabel
|
||||
AnchorSideLeft.Control = cbShowLine
|
||||
AnchorSideTop.Control = seLineWidth
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 10
|
||||
Height = 15
|
||||
Top = 271
|
||||
Width = 88
|
||||
Caption = 'Line width (mm)'
|
||||
end
|
||||
object seLineWidth: TFloatSpinEdit
|
||||
AnchorSideLeft.Control = lblLineWidth
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cbShowLine
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 106
|
||||
Height = 23
|
||||
Top = 267
|
||||
Width = 64
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
DecimalPlaces = 1
|
||||
Increment = 0.1
|
||||
MaxValue = 3
|
||||
MinValue = 0.1
|
||||
TabOrder = 7
|
||||
Value = 0.1
|
||||
end
|
||||
object clbLineColor: TColorButton
|
||||
AnchorSideLeft.Control = seLineWidth
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = seLineWidth
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 186
|
||||
Height = 25
|
||||
Top = 266
|
||||
Width = 94
|
||||
BorderSpacing.Left = 16
|
||||
BorderSpacing.Bottom = 8
|
||||
BorderWidth = 2
|
||||
ButtonColorAutoSize = False
|
||||
ButtonColorSize = 16
|
||||
ButtonColor = clBlack
|
||||
Caption = 'Line color'
|
||||
Margin = 4
|
||||
end
|
||||
object lblTextInfo: TLabel
|
||||
Left = 10
|
||||
Height = 120
|
||||
Top = 88
|
||||
Width = 278
|
||||
Caption = 'Each section can contain the following parameters:'#13#10' $DATE - Current date'#13#10' $TIME - Current time'#13#10' $PAGE - Page number'#13#10' $PAGECOUNT - Number of pages'#13#10' $FULL_FILENAME - Full name of the printed file'#13#10' $FILENAME - Name of the printed file, without path'#13#10' $PATH - Path of the printed file'
|
||||
end
|
||||
end
|
||||
object FontDialog: TFontDialog
|
||||
MinFontSize = 0
|
||||
MaxFontSize = 0
|
||||
Left = 200
|
||||
Top = 16
|
||||
end
|
||||
end
|
12
components/gridprinter/source/gridprnheaderfooterform.lrj
Normal file
12
components/gridprinter/source/gridprnheaderfooterform.lrj
Normal file
@ -0,0 +1,12 @@
|
||||
{"version":1,"strings":[
|
||||
{"hash":226739922,"name":"tgridprintheaderfooterform.caption","sourcebytes":[72,101,97,100,101,114,47,70,111,111,116,101,114],"value":"Header/Footer"},
|
||||
{"hash":197166558,"name":"tgridprintheaderfooterform.edtextleft.texthint","sourcebytes":[84,101,120,116,32,105,110,32,108,101,102,116,45,97,108,105,103,110,101,100,32,115,101,99,116,105,111,110],"value":"Text in left-aligned section"},
|
||||
{"hash":148404254,"name":"tgridprintheaderfooterform.edtextcenter.texthint","sourcebytes":[84,101,120,116,32,105,110,32,99,101,110,116,101,114,101,100,32,115,101,99,116,105,111,110],"value":"Text in centered section"},
|
||||
{"hash":219388318,"name":"tgridprintheaderfooterform.edtextright.texthint","sourcebytes":[84,101,120,116,32,105,110,32,114,105,103,104,116,45,97,108,105,103,110,101,100,32,115,101,99,116,105,111,110],"value":"Text in right-aligned section"},
|
||||
{"hash":368487,"name":"tgridprintheaderfooterform.cbshow.caption","sourcebytes":[83,104,111,119],"value":"Show"},
|
||||
{"hash":224751950,"name":"tgridprintheaderfooterform.btnfont.caption","sourcebytes":[70,111,110,116,46,46,46],"value":"Font..."},
|
||||
{"hash":67550677,"name":"tgridprintheaderfooterform.cbshowline.caption","sourcebytes":[83,104,111,119,32,100,105,118,105,100,105,110,103,32,108,105,110,101],"value":"Show dividing line"},
|
||||
{"hash":248872777,"name":"tgridprintheaderfooterform.lbllinewidth.caption","sourcebytes":[76,105,110,101,32,119,105,100,116,104,32,40,109,109,41],"value":"Line width (mm)"},
|
||||
{"hash":124613410,"name":"tgridprintheaderfooterform.clblinecolor.caption","sourcebytes":[76,105,110,101,32,99,111,108,111,114],"value":"Line color"},
|
||||
{"hash":107799029,"name":"tgridprintheaderfooterform.lbltextinfo.caption","sourcebytes":[69,97,99,104,32,115,101,99,116,105,111,110,32,99,97,110,32,99,111,110,116,97,105,110,32,116,104,101,32,102,111,108,108,111,119,105,110,103,32,112,97,114,97,109,101,116,101,114,115,58,13,10,32,32,36,68,65,84,69,32,45,32,67,117,114,114,101,110,116,32,100,97,116,101,13,10,32,32,36,84,73,77,69,32,45,32,67,117,114,114,101,110,116,32,116,105,109,101,13,10,32,32,36,80,65,71,69,32,45,32,80,97,103,101,32,110,117,109,98,101,114,13,10,32,32,36,80,65,71,69,67,79,85,78,84,32,45,32,78,117,109,98,101,114,32,111,102,32,112,97,103,101,115,13,10,32,32,36,70,85,76,76,95,70,73,76,69,78,65,77,69,32,45,32,70,117,108,108,32,110,97,109,101,32,111,102,32,116,104,101,32,112,114,105,110,116,101,100,32,102,105,108,101,13,10,32,32,36,70,73,76,69,78,65,77,69,32,45,32,78,97,109,101,32,111,102,32,116,104,101,32,112,114,105,110,116,101,100,32,102,105,108,101,44,32,119,105,116,104,111,117,116,32,112,97,116,104,13,10,32,32,36,80,65,84,72,32,45,32,80,97,116,104,32,111,102,32,116,104,101,32,112,114,105,110,116,101,100,32,102,105,108,101],"value":"Each section can contain the following parameters:\r\n $DATE - Current date\r\n $TIME - Current time\r\n $PAGE - Page number\r\n $PAGECOUNT - Number of pages\r\n $FULL_FILENAME - Full name of the printed file\r\n $FILENAME - Name of the printed file, without path\r\n $PATH - Path of the printed file"}
|
||||
]}
|
226
components/gridprinter/source/gridprnheaderfooterform.pas
Normal file
226
components/gridprinter/source/gridprnheaderfooterform.pas
Normal file
@ -0,0 +1,226 @@
|
||||
unit GridPrnHeaderFooterForm;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
|
||||
ComCtrls, ExtCtrls, Spin, GridPrn;
|
||||
|
||||
type
|
||||
|
||||
{ TGridPrintHeaderFooterForm }
|
||||
|
||||
TGridPrintHeaderFooterForm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
Bevel2: TBevel;
|
||||
Bevel3: TBevel;
|
||||
btnFont: TButton;
|
||||
ButtonPanel1: TButtonPanel;
|
||||
cbShow: TCheckBox;
|
||||
cbShowLine: TCheckBox;
|
||||
clbLineColor: TColorButton;
|
||||
edTextLeft: TEdit;
|
||||
edTextCenter: TEdit;
|
||||
edTextRight: TEdit;
|
||||
FontDialog: TFontDialog;
|
||||
lblTextInfo: TLabel;
|
||||
lblLineWidth: TLabel;
|
||||
seLineWidth: TFloatSpinEdit;
|
||||
TabControl: TTabControl;
|
||||
procedure btnFontClick(Sender: TObject);
|
||||
procedure OKClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure TabControlChange(Sender: TObject);
|
||||
procedure TabControlChanging(Sender: TObject; var {%H-}AllowChange: Boolean);
|
||||
private
|
||||
type
|
||||
THFParams = record
|
||||
Visible: Boolean;
|
||||
LeftText: String;
|
||||
CenterText: String;
|
||||
RightText: String;
|
||||
Font: TFont;
|
||||
ShowLine: Boolean;
|
||||
LineWidth: Double;
|
||||
LineColor: TColor;
|
||||
end;
|
||||
private
|
||||
FGridPrinter: TGridPrinter;
|
||||
FParams: array[0..1] of THFParams; // 0=Header, 1=Footer
|
||||
procedure SetGridPrinter(AValue: TGridPrinter);
|
||||
protected
|
||||
procedure ControlsToParams(AIndex: Integer);
|
||||
procedure ParamsToControls(AIndex: Integer);
|
||||
procedure ParamsToPrinter(AIndex: Integer);
|
||||
procedure PrinterToParams(AIndex: Integer);
|
||||
public
|
||||
procedure UpdateStrings;
|
||||
property GridPrinter: TGridPrinter read FGridPrinter write SetGridPrinter;
|
||||
end;
|
||||
|
||||
var
|
||||
GridPrintHeaderFooterForm: TGridPrintHeaderFooterForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
GridPrnStrings;
|
||||
|
||||
{ TGridPrintHeaderFooterForm }
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.FormActivate(Sender: TObject);
|
||||
var
|
||||
delta: Integer;
|
||||
begin
|
||||
delta := TabControl.Height - TabControl.ClientHeight;
|
||||
Constraints.MinHeight := delta + clbLineColor.Top + clbLineColor.Height +
|
||||
clbLinecolor.BorderSpacing.Bottom + ButtonPanel1.Height +
|
||||
TabControl.BorderSpacing.Around * 2;
|
||||
Constraints.MinWidth := edTextLeft.Left + edTextLeft.Width + Bevel1.Width +
|
||||
edTextCenter.Width + Bevel2.Width + edTextRight.Width + edTextRight.BorderSpacing.Right +
|
||||
TabControl.BorderSpacing.Around * 2;
|
||||
Width := 0;
|
||||
Height := 0;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.OKClick(Sender: TObject);
|
||||
begin
|
||||
ControlsToParams(TabControl.TabIndex);
|
||||
ParamsToPrinter(0);
|
||||
ParamsToPrinter(1);
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.btnFontClick(Sender: TObject);
|
||||
begin
|
||||
FontDialog.Execute;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
UpdateStrings;
|
||||
FParams[0].Font := TFont.Create;
|
||||
FParams[1].Font := TFont.Create;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
FParams[0].Font.Free;
|
||||
FParams[1].Font.Free;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.TabControlChange(Sender: TObject);
|
||||
begin
|
||||
ParamsToControls(TabControl.TabIndex);
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.TabControlChanging(Sender: TObject;
|
||||
var AllowChange: Boolean);
|
||||
begin
|
||||
ControlsToParams(TabControl.TabIndex);
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.ControlsToParams(AIndex: Integer);
|
||||
begin
|
||||
FParams[AIndex].Visible := cbShow.Checked;
|
||||
FParams[AIndex].LeftText := edTextLeft.Text;
|
||||
FParams[AIndex].CenterText:= edTextCenter.Text;
|
||||
FParams[AIndex].RightText := edTextRight.Text;
|
||||
FParams[AIndex].Font.Assign(FontDialog.Font);
|
||||
|
||||
FParams[AIndex].ShowLine := cbShowLine.Checked;
|
||||
FParams[AIndex].LineWidth := seLineWidth.Value;
|
||||
FParams[AIndex].LineColor := clbLinecolor.ButtonColor;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.ParamsToControls(AIndex: Integer);
|
||||
begin
|
||||
cbShow.Checked := FParams[AIndex].Visible;
|
||||
edTextLeft.Text := FParams[AIndex].LeftText;
|
||||
edTextCenter.Text := FParams[AIndex].CenterText;
|
||||
edTextRight.Text := FParams[AIndex].RightText;
|
||||
FontDialog.Font.Assign(FParams[AIndex].Font);
|
||||
|
||||
cbShowLine.Checked := FParams[AIndex].ShowLine;
|
||||
seLineWidth.Value := FParams[AIndex].LineWidth;
|
||||
clbLinecolor.ButtonColor := FParams[AIndex].LineColor;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.ParamsToPrinter(AIndex: Integer);
|
||||
var
|
||||
HF: TGridPrnHeaderFooter;
|
||||
begin
|
||||
case AIndex of
|
||||
0: HF := FGridPrinter.Header;
|
||||
1: HF := FGridPrinter.Footer;
|
||||
end;
|
||||
|
||||
with FParams[AIndex] do
|
||||
begin
|
||||
HF.Visible := Visible;
|
||||
HF.Text := LeftText + HF.SectionSeparator + CenterText + HF.SectionSeparator + RightText;
|
||||
HF.Font.Assign(Font);
|
||||
HF.ShowLine := ShowLine;
|
||||
HF.Linecolor := LineColor;
|
||||
HF.LineWidth := LineWidth;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.PrinterToParams(AIndex: Integer);
|
||||
var
|
||||
HF: TGridPrnHeaderFooter;
|
||||
begin
|
||||
case AIndex of
|
||||
0: HF := FGridPrinter.Header;
|
||||
1: HF := FGridPrinter.Footer;
|
||||
end;
|
||||
|
||||
with FParams[AIndex] do
|
||||
begin
|
||||
Visible := HF.Visible;
|
||||
LeftText := HF.SectionText[hfsLeft];
|
||||
CenterText := HF.SectionText[hfsCenter];
|
||||
RightText := HF.SectionText[hfsRight];
|
||||
Font.Assign(HF.Font);
|
||||
ShowLine := HF.ShowLine;
|
||||
LineColor := HF.RealLineColor;
|
||||
LineWidth := HF.LineWidth;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.SetGridPrinter(AValue: TGridPrinter);
|
||||
begin
|
||||
if AValue = nil then
|
||||
raise Exception.Create('GridPrinter is nil.');
|
||||
|
||||
if FGridPrinter <> AValue then
|
||||
begin
|
||||
FGridPrinter := AValue;
|
||||
PrinterToParams(0);
|
||||
PrinterToParams(1);
|
||||
ParamsToControls(TabControl.TabIndex);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintHeaderFooterForm.UpdateStrings;
|
||||
begin
|
||||
TabControl.Tabs[0] := RSHeader;
|
||||
TabControl.Tabs[1] := RSFooter;
|
||||
cbShow.Caption := RSShow;
|
||||
btnFont.Caption := RSFont;
|
||||
lblTextInfo.Caption := RSHeaderFooterSectionParameterInfo;
|
||||
cbShowLine.Caption := RSShowDividingLine;
|
||||
lblLineWidth.Caption := RSLineWidthMM;
|
||||
clbLineColor.Caption := RSLineColor;
|
||||
edTextLeft.TextHint := RSTextInLeftAlignedSection;
|
||||
edTextCenter.TextHint := RSTextInCenteredSection;
|
||||
edTextRight.TextHint := RSTextInRightAlignedSection;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
67
components/gridprinter/source/gridprnpreviewdlg.pas
Normal file
67
components/gridprinter/source/gridprnpreviewdlg.pas
Normal file
@ -0,0 +1,67 @@
|
||||
unit GridPrnPreviewDlg;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, GridPrn, GridPrnPreviewForm;
|
||||
|
||||
type
|
||||
TGridPrintPreviewDialog = class(TComponent)
|
||||
private
|
||||
FGridPrinter: TGridPrinter;
|
||||
FOptions: TGridPrintPreviewOptions;
|
||||
protected
|
||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Execute;
|
||||
published
|
||||
property GridPrinter: TGridPrinter read FGridPrinter write FGridPrinter;
|
||||
property Options: TGridPrintPreviewOptions
|
||||
read FOptions write FOptions default DEFAULT_GRIDPRN_OPTIONS;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Controls;
|
||||
|
||||
constructor TGridPrintPreviewDialog.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
FOptions := DEFAULT_GRIDPRN_OPTIONS;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewDialog.Execute;
|
||||
var
|
||||
F: TGridPrintPreviewForm;
|
||||
begin
|
||||
if FGridPrinter = nil then
|
||||
exit;
|
||||
|
||||
F := TGridPrintPreviewForm.Create(nil);
|
||||
try
|
||||
F.GridPrinter := FGridPrinter;
|
||||
F.Options := FOptions;
|
||||
if (F.ShowModal = mrOK) then
|
||||
FGridPrinter.Print;
|
||||
finally
|
||||
F.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewDialog.Notification(AComponent: TComponent;
|
||||
Operation: TOperation);
|
||||
begin
|
||||
inherited;
|
||||
if Operation = opRemove then
|
||||
begin
|
||||
if AComponent = FGridPrinter then
|
||||
FGridPrinter := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
596
components/gridprinter/source/gridprnpreviewform.lfm
Normal file
596
components/gridprinter/source/gridprnpreviewform.lfm
Normal file
@ -0,0 +1,596 @@
|
||||
object GridPrintPreviewForm: TGridPrintPreviewForm
|
||||
Left = 331
|
||||
Height = 649
|
||||
Top = 129
|
||||
Width = 938
|
||||
Caption = 'Print Preview'
|
||||
ClientHeight = 649
|
||||
ClientWidth = 938
|
||||
OnActivate = FormActivate
|
||||
Position = poMainFormCenter
|
||||
ShowHint = True
|
||||
LCLVersion = '2.3.0.0'
|
||||
object ToolBar: TToolBar
|
||||
Left = 0
|
||||
Height = 24
|
||||
Top = 0
|
||||
Width = 938
|
||||
AutoSize = True
|
||||
ButtonHeight = 24
|
||||
ButtonWidth = 30
|
||||
Caption = 'ToolBar'
|
||||
EdgeBorders = []
|
||||
Images = ToolbarImages
|
||||
List = True
|
||||
ShowCaptions = True
|
||||
TabOrder = 0
|
||||
OnResize = ToolBarResize
|
||||
object tbPrint: TToolButton
|
||||
Left = 1
|
||||
Top = 0
|
||||
Action = acPrint
|
||||
end
|
||||
object tbClose: TToolButton
|
||||
Left = 570
|
||||
Top = 0
|
||||
Action = acClose
|
||||
end
|
||||
object tbFirst: TToolButton
|
||||
Left = 60
|
||||
Top = 0
|
||||
Action = acFirstPage
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbPrev: TToolButton
|
||||
Left = 90
|
||||
Top = 0
|
||||
Action = acPrevPage
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbNext: TToolButton
|
||||
Left = 160
|
||||
Top = 0
|
||||
Action = acNextPage
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbLast: TToolButton
|
||||
Left = 190
|
||||
Top = 0
|
||||
Action = acLastPage
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbDivider1: TToolButton
|
||||
Left = 55
|
||||
Height = 24
|
||||
Top = 0
|
||||
Caption = 'tbDivider1'
|
||||
Style = tbsDivider
|
||||
end
|
||||
object tbDivider2: TToolButton
|
||||
Left = 220
|
||||
Height = 24
|
||||
Top = 0
|
||||
Caption = 'tbDivider2'
|
||||
Style = tbsDivider
|
||||
end
|
||||
object tbZoomIn: TToolButton
|
||||
Left = 225
|
||||
Top = 0
|
||||
Action = acZoomIn
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbDivider3: TToolButton
|
||||
Left = 375
|
||||
Height = 24
|
||||
Top = 0
|
||||
Caption = 'tbDivider3'
|
||||
Style = tbsDivider
|
||||
end
|
||||
object tbZoomOut: TToolButton
|
||||
Left = 255
|
||||
Top = 0
|
||||
Action = acZoomOut
|
||||
ShowCaption = False
|
||||
end
|
||||
object InfoPanel: TPanel
|
||||
Left = 720
|
||||
Height = 24
|
||||
Top = -1
|
||||
Width = 196
|
||||
Align = alRight
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Top = 2
|
||||
BevelOuter = bvNone
|
||||
Color = clRed
|
||||
ParentColor = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object tbZoomWidth: TToolButton
|
||||
Left = 315
|
||||
Top = 0
|
||||
Action = acZoomToFitWidth
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbZoomHeight: TToolButton
|
||||
Left = 345
|
||||
Top = 0
|
||||
Action = acZoomToFitHeight
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbZoom100: TToolButton
|
||||
Left = 285
|
||||
Top = 0
|
||||
Action = acZoom100
|
||||
ShowCaption = False
|
||||
end
|
||||
object edPageNumber: TEdit
|
||||
Left = 120
|
||||
Height = 23
|
||||
Top = 0
|
||||
Width = 40
|
||||
Alignment = taCenter
|
||||
OnEditingDone = edPageNumberEditingDone
|
||||
OnKeyDown = edPageNumberKeyDown
|
||||
OnMouseWheel = edPageNumberMouseWheel
|
||||
TabOrder = 1
|
||||
Text = 'edPageNumber'
|
||||
end
|
||||
object ToolButton1: TToolButton
|
||||
Left = 470
|
||||
Top = 0
|
||||
Action = acPageMargins
|
||||
ShowCaption = False
|
||||
Style = tbsCheck
|
||||
end
|
||||
object tbHeaderFooter: TToolButton
|
||||
Left = 440
|
||||
Top = 0
|
||||
Action = acHeaderFooter
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbDivider4: TToolButton
|
||||
Left = 500
|
||||
Height = 24
|
||||
Top = 0
|
||||
Caption = 'tbDivider4'
|
||||
Style = tbsDivider
|
||||
end
|
||||
object tbPortraint: TToolButton
|
||||
Left = 380
|
||||
Top = 0
|
||||
Action = acPortrait
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbLandscape: TToolButton
|
||||
Left = 410
|
||||
Top = 0
|
||||
Action = acLandscape
|
||||
ShowCaption = False
|
||||
end
|
||||
object ToolButton2: TToolButton
|
||||
Left = 505
|
||||
Top = 0
|
||||
Action = acPrintColsFirst
|
||||
ShowCaption = False
|
||||
end
|
||||
object ToolButton3: TToolButton
|
||||
Left = 535
|
||||
Top = 0
|
||||
Action = acPrintRowsFirst
|
||||
ShowCaption = False
|
||||
end
|
||||
object tbDivider5: TToolButton
|
||||
Left = 565
|
||||
Height = 24
|
||||
Top = 0
|
||||
Caption = 'tbDivider5'
|
||||
Style = tbsDivider
|
||||
end
|
||||
end
|
||||
object ScrollBox: TScrollBox
|
||||
Left = 0
|
||||
Height = 625
|
||||
Top = 24
|
||||
Width = 938
|
||||
HorzScrollBar.Page = 98
|
||||
HorzScrollBar.Tracking = True
|
||||
VertScrollBar.Page = 98
|
||||
VertScrollBar.Tracking = True
|
||||
Align = alClient
|
||||
ClientHeight = 621
|
||||
ClientWidth = 934
|
||||
Color = clAppWorkspace
|
||||
ParentColor = False
|
||||
TabOrder = 1
|
||||
TabStop = True
|
||||
OnMouseDown = ScrollBoxMouseDown
|
||||
OnMouseWheel = PreviewImageMouseWheel
|
||||
object PreviewImage: TImage
|
||||
Left = 8
|
||||
Height = 90
|
||||
Top = 8
|
||||
Width = 90
|
||||
OnMouseDown = PreviewImageMouseDown
|
||||
OnMouseMove = PreviewImageMouseMove
|
||||
OnMouseUp = PreviewImageMouseUp
|
||||
OnMouseWheel = PreviewImageMouseWheel
|
||||
OnPaint = PreviewImagePaint
|
||||
end
|
||||
end
|
||||
object ToolbarImages: TImageList
|
||||
Scaled = True
|
||||
Left = 248
|
||||
Top = 56
|
||||
Bitmap = {
|
||||
4C7A1100000010000000100000001A0600000000000078DAED5B4B6CDD4414BD
|
||||
8008B0E4271136E5B762C306092A214008A4F215E223B10195C20221D8F12F12
|
||||
15A8503E855D11AAF8AB24CF2F01DA081650C40A2804819A9084CFE249B0005A
|
||||
C85349241AC18B39C78CD3C9C463CF789C9797D48B2BDBE339F7DEB99FF1F578
|
||||
1CC7B1C415D17791C42E9487779151746FBC215B4C996C73C5775B3EDADA45B6
|
||||
C9B071DB94EBA3BF766CBBFA2D83DA2E328BC6B25AF0E8DB52985685F283EC1F
|
||||
5798BF264D34E509920F662C92CB262239458DEF5352C20B6DBC679515491F64
|
||||
BD9D8CAB29F79A78B6F11EFABDF5F52B727C862D7781E691678F45911C67E2D9
|
||||
061E8FB30FE5E8D8F1A6DCA4783F62F05CC02FF4057FF69D6CC88D5ABF7DA089
|
||||
788B1C5B844FF488640AF419AF7F78474E4B743264DBF0890E916C467B676C97
|
||||
9C3C312417297DAE59826FCA6DA425ED0DB93E999386E4C2140F9B5CEDEA63D8
|
||||
EBBA143FF5AE9C4AFDC1F361E7B8C258D598D338D987318D9BF6CB2265BF09F4
|
||||
FF42E3778B9A631F70941DD3E747DAE5185C376853F07D304B8F442EC6C83E8C
|
||||
35F37EEB753951F1883916F2A14D49F0C143D43989ED860CFCF4A19C909373B7
|
||||
A2DF57894D8FE439CFBF04F666571B7F13C9E9C8B7F5249E2FE73CD14B043B7D
|
||||
0B3BEDCCF0FBF9C8914B1DE7E451634E5B8FB6432EF3AD89D7B01DE8B0D107AF
|
||||
6139AFDDE3F14C199D1A90B352B9C06EF27C2605E343F5AFC27E25FD17143F35
|
||||
F51EC177377C3F206796AC81B6AADA6047592CE8E7FD919CED358F35E4A9143B
|
||||
3E28E77A8EF7BEB2D82AF0AAF67852F1F805FCCE0BB17D19FB55E1BF2AE2A7A6
|
||||
EE137D459F05F87B87AA89B796C1335619B3213C2687655DFABE091ECF97E1C1
|
||||
DCD5F4B8BF9BF845FA47F25C37ED17EABFD0F8A969E588351A6BB58CE7E94ED6
|
||||
760EF51FD7630EB16634DA475DD67A58A3AA77C4453C5CF1EA9975A7E2319BAE
|
||||
99F8E0D53AC5A6540F954F5DC3EBFAA73573B7EC17EABFD0F859ED34362CE7A0
|
||||
76BB3B59EBC091D72E38B58ED504FD0ADC1BA06DC991D79144BC5F80FD9198CF
|
||||
233949BFC76BE8F22CEFDB78903FE819638DEC76A31EDDC67E99E3858E5CBFC9
|
||||
5BE74FF4403FD31E89AD304E97EF04EC07BDEE3272E551E4DAD35AEC2F59E74D
|
||||
DF7BD98FFD4BCB6FC89BA6FC74FCA6DD6DE3CFAAC393752FF828CFFED0FB65B4
|
||||
8D64F94FAD215AFDAF9EE7F3C01F065D9B134351126F1867E26F1E23F98D7271
|
||||
3CACEC69E561C63F6D958E173A6C00F66FC563AE4C7D40B9861E5705F21829F9
|
||||
8CBC92D8ACF58CB592FF19B9E795FF26F9E6BF4587AEE5BF654DC139FF6DE377
|
||||
CDFF8C9AA0CEFF5590FFE9B74DDBF7CF2ABE8F177C5B75A156D5F26B7C8D5F23
|
||||
F1DB2A792F6F1F420773FCE5217603FD8E39F38AB278602FC9E3A1EF6B31F71A
|
||||
A5C73C1E0578D3369D32BEC9ADCD2DF2F3C653CBEF3DF92BA87FBB57F60D95FC
|
||||
6EBF26E69FBC7B2EF38FA36D966DFE49F4E49EA041B960E11ECED9E682A79F30
|
||||
BE037A7F9EB32DF56141FEFC638B03D4BEFF2EB7FC80F1B73CECDFEAD5F53F4B
|
||||
1D53987F0E7B3272F3AF085F947FA9EF1923A6AE2EF937392817334694AC03BC
|
||||
F6CA3F152309DE889FBA4676987F02ED97E73F571D6DF11332D7761BEFF81ED2
|
||||
AE9FBF2BFAFC6D2D674CA8BD7B7BB94E65F1E71CE2FC637EA3CFC2E3FC13EE93
|
||||
E59E6CDB5E6DEE83260F0B9EEB637DCC41EEFFD17334BDE61E58F6B3E0E3744E
|
||||
58D46E5E7B9C43D70F7C31597E71C4CCA5B64B7DADC96F398C7F2FED9B6BFF48
|
||||
36E3F89119A35C2BA65FE99B3CFF136BF8BFCEFF1EA9BF6B7C8D3F5ADEFF3DF5
|
||||
EED86AFBB2EF21BE78730E29E3379D8727BE6D7C17EC1C4DFFDFF5287E3AE0FF
|
||||
BDE935F3DF4D53EE30DB921AA7292F2A1B4DF3DCF6EF9365BFCA4B68DF8D383F
|
||||
03B54A3FCEF79087C79C3843ACB627B51FF8BF42E6645BBCD4F815C7CFE7B5B1
|
||||
2E66DDACE6CD3EF35F22D4DBB38C0F7D0F30E347E335047A5FE52D8F4346FC33
|
||||
CE47885358EE39D8AED7EC3ADEACEDD5FBC076D01FA083D0E705B34F52F737E5
|
||||
55DB7BC12AFE3F67A3C79C399B378F38EC4BEF377D53667F38FD14883F18801D
|
||||
617C2C8A9DFFE7CA5907FBCD98B1A56277B73E577A3E07A7CB6215FE4F17BCDA
|
||||
933C6CC6BFD27F8F9EBF59C4FFC6F15EFC1EDFC5F5F8D19E5333AE71085D5EF3
|
||||
1DA74DBEE79EECE12AF3FF3F3D4DF8CA
|
||||
}
|
||||
BitmapAdv = {
|
||||
4C69020000004C7A110000001800000018000000B10B00000000000078DAED5D
|
||||
7D8C5D45153FF583F8518D60D468B4884A827F68FC408D1FD1B4318A5634C658
|
||||
BFA8FA8F088A1F51C0D428AE5A49255D4C50FF20048948E9BEFB762B58C5A8C5
|
||||
2A6CD5D652BAFB76DBBAED525A43BB24162C867477E9F6797EF79E799DDEDE8F
|
||||
99B9735FF775E78F93B77B67EE6FE69E3973CE99B9E79E69B7DBD4EE26F5D1D3
|
||||
C6223AE1427CFBA232FC28A2A773DD36D3EF5B0DFAB609A12EEE41DF4CF15B11
|
||||
5D63FACC634DBAD6157F3CA2738AA82ABEF02A97AAE2337FAF2FA285C21F2E9F
|
||||
D4EF73E18F469319F8B83ECC757FEC2A9F638DF8DE61F55C697CEE4F5F55F907
|
||||
868ECF63F450198F5D49C3BE879FED5B5E0998AA2D7E3EDF7AF294315FC0F82C
|
||||
672B45FFAB71DDEB137FF77A7A25CBC96AC65803E2BF3FDF75FED4289F75CFAF
|
||||
76B7FD873345ACBBF8796F0799D8115B62DC251A5F9754C3A3452C039F836FA3
|
||||
FA0A3957F8F85B3D53ECFF705D13DF0A34BA8ECE55FE1268D700BD290F1F65BA
|
||||
8C3FF86B7A41090FCEE3F9FE40870F4DBA15F6260F1F65A8A3F16D3BFA97CB93
|
||||
88364ADD597EE64FA5F5C069FC51FD6AD267E27B92F2BBB37805BDA1F5E3D359
|
||||
7A260F5FFC80CB347DF359BD6CFBCDF44C358FB92FBFCAD36345F8A273EE54FE
|
||||
C3E6CDF48C4EDB4D7A9FF4FBF8E810BDCA15BF3540AFE6F2B9582E1AF45ECD77
|
||||
F8A9F80C7F2DD2C365F88275BFF82A3FD1AE6D96FEAFCEC5DF402FE43A4F81F0
|
||||
77815E5E237DFD9386BF5B78FFC522F9E5677E37A8C49E5D29CF39AEE18F4B9B
|
||||
5756B62B0DFAB2E08F69F89B843F3754C567395D2B587F4C5FE3FEFFBD323E63
|
||||
88AFB9B6A373227A8F3CD389D141BAC8197B805EAB7C8953C62959934E481B77
|
||||
39F33EA2DF08C6BFD23A82C7E5639DF9CD63E4C0F7AF6A6B878F96CCEF39D4B7
|
||||
E0F9D7D4BCE5FBEEC8ABB77D233D87EBDCA7F5E3772C076FC8D5E783F446DD56
|
||||
70DDBFFC2DA26717F505E5DA7328DAC1FDBA89E7DF3741F81BD75275D6EDBF8D
|
||||
9E656C6F9BF411BE67C4C0CFD9C9E3756905BBFE2EC6F83E78C5BFDB98B6F2B5
|
||||
DFE21AE3BE73C1F84F81ECE6FB20BD9EE7C1D7E113D581CFF2775874D12DB97D
|
||||
584FAFE03AFD5C67A903BE9A3F1BB3CA4722BA80CB1E963A477CE2A7B063DFD3
|
||||
173E7CF3D49A6A78CFDDF43C1FF8BEB0B3F07D6267E1EB7E3B6C04B7B5B8A27C
|
||||
7615BF6EFED43DBEDD90CF6ECC2F8FFAA156FD56B77E0E1428D099A1782FA249
|
||||
3796ADE51DD703AF619DF36FD16B876BC4AEB496CDD99FD9EFD306F73AB6F825
|
||||
2D0DFB5EAC91BDAE036AC6AF9B3F67531B75CEAF6EE8876EE8B7408102F50E41
|
||||
07401714BD73F1B2CFC43A0DBAAD06FCBB347DECBD0DD9F3DE14DA306EE35EAD
|
||||
8D915EC1AF933FBD8ADD8DF955B77EA85BBF050A14E8CC10F65EB1078BBD5887
|
||||
3889A5D8FBC51E70419D5B5CD761D8B3967B1FC65E764E9D8D7A1CB125FE3D9A
|
||||
5ECE6CA30ABED8953F6B6D1C447C8F2F7C9336AAE297B5E1035FE470B11E17C1
|
||||
F4CF5EC1CFE0CF01150356C3F81ED0E3CB3CCBE78174ECDA7C9E5FB5EB879AF5
|
||||
5BDDFA39D0596DB7178F37E92BB26E3924B1B5F8DD84EB55F66D59DE3EC9388F
|
||||
C6F17C4DFA41AB491F1A8DE8EDF86579FF21BE1F609A6A356885430C1EBE159B
|
||||
46FC9E1E3FAB13AECBB34DF3EF2A8B7DFE4F08F6D2AC98B89CF98D363E6E683F
|
||||
1ECD8A3B8CE76844C7B2DE634BCCE1E191DBE9B925B17478DE892C9EEC594F2F
|
||||
838EC16F16AFB86C5F593C642C273C96596545F8F27CABF558D5BC3528E443FD
|
||||
BF23A217C196C4C4B2037CFCAA6B28D7F03FCCE58F94E0CF30FE3B3AF18DCCEF
|
||||
9298C3636ACC711FEE2FC13F5467FF110B8DB9E3C4FF26FD88CBFF50229F5761
|
||||
5EDACA0FE2E2E3EFEA9AF42503F99F829C5AC97F12177BA84CFE65AEACB09CBF
|
||||
5F88E37423DACD63F366C398D5556803F3324FFF80277A3CAFD0E36303F41643
|
||||
1DB742F664F6C563D7A04B6319E45F19CB7DB1BC494CBC4B1BE027E63CE62564
|
||||
0FF28DDFF87F1E4B94832731A6631B467B43C9F7294752DF34FD777C90DED64B
|
||||
6D802719BC3A9237277DB5E162430DDA50BCFA8FCFFE77C663885E8A7EE337F8
|
||||
3FBDE1FF14AC6F2AFB3F06DF5C54F27F8AC887FF63F0ECD5FC9F0CEA29FFC743
|
||||
FF8BFC1F039B5DC9FF29DC03F1E0FF187C1754D9FFC999BFC1FF09FE4FF07FE6
|
||||
A9FF93B5DF5FF0CDEF4197F8FFD6205D6C10677FB1E3FEAA777C3CA787BC0907
|
||||
8B7889792F73BFBD33A295EAFF3CDA99E4C768ABFF4DC6AC57F91FF0037EC00F
|
||||
F8670ABF6EFD5CB77D39CBC6D7BB7F82359225AF876DF66AC467BCAC4C66947C
|
||||
F15A60C2E63B06539EABBA23112D432C81E937A2B6F8A88B9C3FD2C696B23674
|
||||
FCA27C7BE9BAD206722B6CD97B073DDF1BBE36566343B494D781BB79DDB6CD13
|
||||
7FA6CAFA50A5FF2E73CDA6FF55F16DF55AE87FE87FE8FFC2E97FCFF2C7D0BE67
|
||||
91CA01E7D13FC9A2A91083E4FCAD8215FFF1DEA00EFF50AD29E2DC5435F8874A
|
||||
CE25D7A377FF509F47AEFEA1CD3C75F10F6DF58096BBF2BEAAF83CC6AF2BD375
|
||||
55F51BDAC893ABF9605FBA812FFBED8F64C5C84A6E9843FAFB162BFB75F27D41
|
||||
7FC1BBA6EBF5772136F82C6BC72DF4D0716BFCE4DDF72CF7EFBA027B85F771B3
|
||||
BC2EBADA85FF62EF660AF83F8B3A55E4A728FE395D360FE4F3A0E9FEBDCF7731
|
||||
819CF7E2865D6375F4BD445FFB3FB6FB73B6FB3FA998C6F37CEFFF68B6F412D1
|
||||
5B3798CC4553FBAE611F13FC19D62F579BF86226FB3F9D581AC6947CC1880B7A
|
||||
324B07B9ECFFE8B1A4EAF9CBF2A95678D769ADEB027EC0EF757C3557157E91FF
|
||||
E0822F719EFDF1FAAA41DFCDF37F9CF1F53895263DA5FB4FBEF88F36E053B22E
|
||||
FD465DE35B877FD54DFC32FBEEB2FFE3E95DE15478FF35FFDF7FD9F4C5F7FE46
|
||||
2FBCFF3A1BF61F6C0963CB73E23B75E15791FF5D0DFAA0C8E04C89CE988973E0
|
||||
37E903A6F86C6B96C7B1FE115D8758DC421DCAE58CFD3DB4936E230F1FF313D8
|
||||
9D6B79E7FB68D7E51CB3AD86F8D32AD77F9C8F26A2A3BB06E9C2D3F2D468D751
|
||||
1FF719E29FDC776AD28D2ADE44D9A1CCEB19B26A82DF4ECED169AB5896F8EFF8
|
||||
BBFB93D77DE1C7FB949D6FFAEBC13FB9DFE21FDF237FA6F5B3221023ACE42495
|
||||
4FE188A3FC6CC39CB191FFF8FC8A88FE516ADF07E922CCC3B164ADDD67327F05
|
||||
7B066B75039BF1047241481B5B635E15EB9FE9F88C9906BD3F830F9396E79FED
|
||||
B0F57FE48CC635A594E42EC7370CF75BF93FCC638BBA0DF9F66C8BB1FF6387DF
|
||||
27E7DECC1AFB3F96F822EB466D58E327DFFDC4E7E9E15C1C8C07C6DC13FEA493
|
||||
FF63889FF3BEA12FE007FC801FF0037E4DF89ACDB0A5F8DE62FC490FF13F93E1
|
||||
FD9ED59AD707CF21170F64F971563EA183AF5855E6CB7C458FF899BEA24FFC2C
|
||||
5FD11B7E86AFC8F4A027FC4219AC8A5FA4EB027EC05FF0F8156C7A99AD977C02
|
||||
ED9A685FB0E1BD47D8D363F9BB027124C86B829C16A5392522BAA0EC5D2FFB06
|
||||
E7C859DC732939D95F968F01FBE3383BB924A7C7CFE57CE57E9C4388F37825DE
|
||||
6602718E45B16D65BEB53A5B5C3F17BAF3EC43F472EC9D73D92F9CF193DC46D8
|
||||
D35B9263839B4C8F39E347B421293FFDEC78E1EF865671FFCAFA1FCA4379289F
|
||||
A7E55C36D4B29CFFBB86E87C75DEBD8E1FE7588B68998EA5F417EEC9697FB095
|
||||
D25F7CED36A6FFE1DDA3C2979C5243D0E3FA9919B0496237FA7362B58F8E37E9
|
||||
D653F4F2067AB19C5FF724DB865F8A7E851E3C91753E3DAF657FA6EC07DA466C
|
||||
A3BCD741CEBAC7D3F9BDE3B6EFA49770D9B8ACE960CB4EE4E5B982FD93B3E3E7
|
||||
52EF711E627A6BEED8721BAD24A71EEA5E65628BB9DEE5F159F5112D37C9EB35
|
||||
BA8EF95B92C72B503EC567DA39FAE23C5603E30D5A95255F9AFD5E29B259C51F
|
||||
9F838C430E6BC8EB74BEC415626EDD54DB7E581247309797B3DED373609E5D5E
|
||||
077E9C7B2D59D35D534B6ECF445F017FB9F73569A267F7425FE5E914C830F2E4
|
||||
B1BF3C6021FF91F8B747A167B37461BC7648F4F39CA3EC3F06FB9037C7645D02
|
||||
D95D9B67C3AAACA7F26C97A7BD822BE231B78815B69C73D702DF26D63F3DA7B0
|
||||
36821DCBEC3F72C32673EE1227FEB28F023F027638AB0DF8147226FD04D66A4E
|
||||
3C48E2599E609C3D59B9EBB07EC51A5364B819CBB4AD2D18A09B254E652A6BAD
|
||||
8A6BE02364B9F2DE8C652E5A935CA0CAB7B2CDF36998A776A80E6CD12DCBF27C
|
||||
423F448BF2F4CEFF0127F2618F4C7A110000002000000020000000B30D000000
|
||||
00000078DAED5D6B8C1F55153F45041554C017A236C6E0EB93014D14A5E2BB7E
|
||||
50636A29F2F0111E41890242C19860EC17AB0245D4885D302ED43EF63FB36DC5
|
||||
6A31B1A6E2B6B5853EDCFD775FA911D8B2AD0462132A7DECBA5DCF993DB3BD3B
|
||||
9DC79DB98FF9EFEEF97092FFEEDC99DF9973CF3D8FFB38333E3E0EE342A7D0DE
|
||||
00C66DD274C5B725C799805F45D633095FFA7FE6F63FB6E9B2613734ED5897AE
|
||||
BD7365C78BE4ED4AFF5A0D3FABDF3D519DD856F5CC542F055FF067127EC6D8EE
|
||||
9A2DF8D3ADFF67A90FE8925CB71AF5067076B3013F27A2DFBEF111F7E6B81FE9
|
||||
770DF84B14FC25CEC669085F6D06F0C7BE067C51179FDAD23D746F55DCC1D5F0
|
||||
7A7CC67A65ACFC47179FDAC6D75037D6F5AF83D795D4ADF3F1DE5E75AC222F7F
|
||||
D6C5A7B68971BE979EA9897D1EB61F54EE3DD11BC2CFB605F04A5D7C6A4BF7D0
|
||||
BD8A1C067A56C1B9F9F83007DBFE4EC13EBEB7015FAAAA7F88B910AF8FA87D91
|
||||
ABD3015CA7BE77338405A6FACF3CA872F87A5ABB7D1BE14CBC3EA43CF35E5BE3
|
||||
0F65F853E5BD9E461ECE481967D72B6D0E24FBDB047FE7067815B63BA8E8F275
|
||||
29FE78D3247E08B7DAB63F2883EF648D25D6F951EE9FFF3557C39B6CE3F7AD85
|
||||
3763DB31BE6764CF7A3847B1571F5564BF436B9C86F083499DC2DF5A363B805D
|
||||
8A1E5EAAC8E60605BF5D13FF9324AB88F0B7A6CF58A9C8EC5A45F7EE54F07FA4
|
||||
6B277B3AE13D44DABEA4013F51F0172B7C2D5674EFC70E7DE6BD693A8EF2BB51
|
||||
E1EB37CE7C69031E99C4C73E57F4FF52656CEC721873EF89717A02B864D23E04
|
||||
F05A656C8CEA8CBF0AF1DAF9F11827AC7D2BE13509DEFE52C6FE94C60FE17645
|
||||
C737A5E8C6B5CAF5E1EE157096CD58956CBAD2F75FCBB0D1FB15FB70B713BD0F
|
||||
E0992CDF42F19AEA7FB37C7F49EC45AAFFC5BFAFC96CBF044EC3361B141E8ED1
|
||||
FD95B103B8228A614E3EEF518A71727DE5C45850E32F1A17CBA87F74714977D8
|
||||
E78F29CFE94FEA7CE6FD6BE1AD14332662C8217C9F3B282ECEBA6F77006F605B
|
||||
BE5FBD1775A967600D5C504676142BE2BD1B5372D6B1C88E84F0308EA97B22DD
|
||||
C2DF6C5BC692ED11FB0FAAAFADD0875F993276F4E900F277B5A5F17B06E7418F
|
||||
27F42949C7B1ED5F89E7B418CF06916E91BF271B42362DB26BC81BE27DA28C8E
|
||||
0A0909B53E715C720869378EF1B935CCD31E2A1393908F43DBF410C573689BE6
|
||||
599E276ED3F0DD3B549FE90B3F05DB1B7E06F651CC6B3FE51A9FB1B727DA1D6B
|
||||
86F03907EB046D3EB1F3F07D6067E147632CA5BF71DCCD77BC4ED3C679C25D3E
|
||||
B05B15BF6EF9E7E8DF711FFAE793878AF6E7B80FFBD30AF6B715FC8F63FF5B6B
|
||||
FC5177FC252424242424D4D2E75526D677FFD60CE016EF7B8142B8674A9CD201
|
||||
EFAB0DDB237E2AB6C3F5D3445CB43465FE7B99603BDDF376F729EB2BA8035EC6
|
||||
37EA745DD8AD805FB7FC9531FFC394317F9FF0500B0FB5D9DF56F03FADE07F5B
|
||||
21FE1012121212129AD17B11D0B7928FC538F836EFFE3D11FFFB8EBB25FF90D8
|
||||
7F3AE41F36F70D4F87FCA3D5E6DF7CC95FE6DF64FEADCEF937DF7EA7EEF84348
|
||||
48484848A8C5EB62CCA5BD6AB4674D3DE36B10E3CE8BF6D205F06BDADF573246
|
||||
3A6461FFDF907A36BB8807DAA368B97EDB5022EECAE5C1363EC63C9F8EF6166B
|
||||
F2601B3FE22184CF60BF1E49D4C3D845E7F67DE097E1C115BE2E0F2EF1799D6B
|
||||
7E9A3EC4674B5DE367F210C25DB301BF4EF993FE25B17DE99F0EB64BFBA3833D
|
||||
13ED6FDDFEA76EFF5B77FC5177FC2524245437C19CBE0EB898EA4944FB8C90E8
|
||||
37FDAFA89E8869CD1CA4FBA91E4D4ECD8961AA3562B7660FCCE13A22FFE5DA2D
|
||||
5D54A389EA64C5359F7A02B88CEA91E0B52DCCC7E1899A4E66F2886AD705D0C1
|
||||
CFDC8A32FE90467CF0E1C933800D58F3543BBCC2E0BD57C767DD76B6C1CB75EF
|
||||
DDBC194EA7BD7F7C6F58450E4A1DAE5F18E8CC033C3F7F7B85FA4C8749E6F42E
|
||||
39F1EFF78932CF00A2CCB82F0E97D149D6F31345FD8DED761215C4E81F29B71E
|
||||
1BD53D1CD6A9C7AA83CF71D0566CF7AC8E1E343BE103C99A68C6F8AC4B1336AA
|
||||
30C6BA9A6B825D660DBF011FE7F178A5C69A5E54FFADAF13DE99D4B5182F266C
|
||||
F712D129FF4FE8647700EFD61D07716D30BAC7163ED9485E0FBE4D43565746FD
|
||||
1FC2C76CC93FAA113491275D5158EB2980F773DB3B6CEB5F6F275C5462FC6DB1
|
||||
F6FE016CA33A58BA7638AED149BEC4143FAEE757544374CA18405B19D9CC00FE
|
||||
9EE77734EDEF13482F76AF8337965C5B5FCC63F69706F9627BEC03D3F2730D3D
|
||||
5855D5FFF634E0C1E4F9F7A44D29228A1D2886E0FBB717E983D2DF4FA4C567E4
|
||||
03CAF24072E0BE38CCCFD9128D27B4A971FC15D9D7067C97F59CDABC88D4698F
|
||||
07D649F4A1C97A7209A26BCB48D7B88EEB904D1E6279901D89EC24C7DFF47BC2
|
||||
B64C1DDF84415819BC1E6C76C07B5DE70BC283160F43E5ED83651E42B8C947FE
|
||||
98C98327FC9887C4D87CDA87FC1376F23CF46FDF24F28D2DF9BFE4FF92FF9BE7
|
||||
FF45E43AFFD78CE59DE5FF25E26027F97F595DB29DFF97E80327F97F16F9CAFF
|
||||
75F15DE5FF25D6CD9CE4FF65F5CF76FE5FC29E38C9FF35B19DE5FF9AF657F27F
|
||||
C9FF25FF97DC5BF27FC9FFA76DFE4FDFE1289BC7A4C4758306BEACB0E6A9CE5E
|
||||
A8E9844FDF2971F8BDCB7ECD18A44DD947D6A7FC5D96FA62191295CDAF6663FF
|
||||
0BBEE00BBEE00BBEE00BBEE00BFEECC2AF3BFEAE3BFF10FDAB37FF4E7C7BB32C
|
||||
8DA8DFD53590799F81AED3F7DA6FF4DDE7CA78DD11F110C0B7EAC057BEC75389
|
||||
0753FC680D44E521846F9BE017E95CD658231E682D27FA8E7D036EF68D5F9507
|
||||
9BF8491E74FAA26AFFE3FB2D2FE2B519C2A82BFCDE4EF8A08E7D70257F5BBEC0
|
||||
D4E7CC347CD39843E42FF217F98BFC45FE227FC117FD73987FB6598A3F071DCE
|
||||
BF0CDA96ABD0CC2299FF91F99F569AFFA96ADF6DCDFF98F8171BF33FA6FE4DE6
|
||||
7FCCE67F667BFCDD2AF868CB2EC4FF3F95779E83AE719B0B6DE233F67EAA3D49
|
||||
67F032F778E235AE4FB93FC94355FCFE35F0767EA7233ADFB3271EF8DCE0141E
|
||||
0CF28F91CAF14003464CF17B4F9E2B1CDC3B71BE203F0EA0368D891886EE35EF
|
||||
FFE82CC0F2F86C6310C0CB32EF5F02A7ED0DE1617E463BFD6D45FFE9B9F1B98E
|
||||
10EED438BF3805DBCAF8C7E7A1FFF81ED9D93C1B4C6D92D862FF4AE11BADF9BA
|
||||
DA8B2D346BF3C17E9FF95FC17E18E7F99FE9F836CDFF4CF14DF33F1BF6CD24FF
|
||||
53896A3AE3339E41BFF6A0AFFC4FC58ECFF6E1FDE345DFB5B595FF25B04FB04E
|
||||
FD3B7A460E0FB6F2BF68CC05F0788CC7DFF36A8FF9C1F7B8C665FEC7CF5A89F4
|
||||
0DD51FB32E04F80E97BBCCFF5CC50355F78209BEE00BBEE00BBE3FFC2AFEC72A
|
||||
7E05FF6B13BF4AFC61BBFFCBC65F2EF48F78406C8A3F1FAA4BFF7DCF3F087EE5
|
||||
FCB3CD51FCD9EF73FD5FD67F65FD57D67F65FD57D67F65FDD5F2FAC3E554DBB3
|
||||
2E7C5BE39FE26FB26DC9EF10EA10DD436391EA3D56C18FFB906A19518E52D647
|
||||
F23DC31C532F2F83CFEF4DF51C7FBB6F239C59794E17EF9DAC3197529B320B9F
|
||||
65FEAC09F6941A73011CA0FCA2C4FE832324BF943A714BB1FDA69C3A72A9D759
|
||||
062F9578FF53FE4FF50DF3CE21E55DCFB20765F0A36F210470300B3FEFBA0D7C
|
||||
1DBB9683E3049FBF51F2645DF8844D31685DF875CB7FA6F67FBAFD89F67C5CAF
|
||||
DA9753FA3F71BDAAFDE11872B87A6DEFA935C6D92E6CD57E7FAE914C3230E121
|
||||
C28E6B8C87F0659DFC133117310FBFE2EB07587E6573D4557C2FF9F0074AE4DF
|
||||
AB143DB88AFC5695F883BF9DB425EDBD15FC2E83FC7F2C9E37358CBF4CE88449
|
||||
5DC7AADF4D9D826FB0EE6D8CDF801B4C7830C567BF5F99071BF8263CD8C2AFCA
|
||||
834D7CB6FF37C53C50DD4F0FFA9F6B1F1CE27795390F671BDFD673055FF0055F
|
||||
F0055FF0055FF005BF1E7C57642B8EAD485DB6E52A34EDCF77B8D4B7C2F920D7
|
||||
E3AD683EC8B5BD29CAFF9DE317CC41F8B0B7793CF8B2F7593CF8F437693CF8F6
|
||||
77C9F9200FFA9F6B1F1CE277D9F4CBAEE523F8822FF8822FF8DEF14F788841B3
|
||||
6353B7F1B7E48342420E29DACF883135EF8F394444BF29B6AEB25791F7CD6FD7
|
||||
DA531BC05CC4D995B9DF1AAF511B17F364BC87670FEF65196886B060CF7A3887
|
||||
887ED3FFF859BBA9AD6D7CDA4FCF6D7BE99C56DABEF778CFB78BF5FFDE46B4CF
|
||||
8BF2EBCFE7F4CF17F8794F3A98A78C72A7B4774FD44FD05A7777354F5BA14EBE
|
||||
E00BBEE00BBEE00B7EE976DD2BE02CA2AC76C9EBB6F1F17FFFA4DA8BCD35F0B6
|
||||
643BFA1F5DA33645CFCDAB3348D772F01FE36BDD038FC2ABE376FCBB9BFF7E2C
|
||||
13BF012F501BFA5E79569BFE0E7817C73ECFA79E990FA0C9387F52E2D1DFC7DF
|
||||
80EB5905E7E6C44C2BB8DDB29C3A87F731FE2369D77BD6C23BF0FA732931F173
|
||||
742DAF5FFB3AE0626C379AB576C573E6147B8DF676C24559CFE909E0126C7354
|
||||
C13E4AFFD31A0321DCAADCD78D32B99FA94789ED6FD18891174DB6E73DECA5CE
|
||||
EBF159B1040D231F0BB59FD380A5445572ABCD9BE174C4FA2CBD6B540BA301F3
|
||||
E97F92770A09399913DD6E7D8E11FD09D9F43C5BE914FF248D925DF5294FF2D3
|
||||
E447C997C5F97AD5FA41A644BE2CB6DF75D9D038FE209B5E073EF9505DDF3913
|
||||
F127E33FF4A3B341FF68FC45B1EA44BC38C6BAB7B0685E93E616A3F9BDC6C9FD
|
||||
0936EC4F51BFD35C6D3CA76AD1FE3EAF637F69AE5A994BEEA379CDBCB945EBBA
|
||||
39B12F259A4BF6899B38DF4A354A16D4343669ED609CE6CFA73B3EE5D7D88FFF
|
||||
A23C332FD74BE8FE365BF2277CCEB3235D2ECAF994BC2ED23F5A3B30E561600D
|
||||
5CA08CA717D0EFCF2B33FE68EDC0741CE033CEC6676DE0671ECBAB3BA2D89FDD
|
||||
2ED79C8B7241B2BFB45E139D63B76B7FB5F02DFBFBA9F20FE02A5FD8FF08E02D
|
||||
4A5F16EA9F4DAA32FE6CE397B53FB395FE0FAE915C78
|
||||
}
|
||||
end
|
||||
object ActionList: TActionList
|
||||
Images = ToolbarImages
|
||||
OnUpdate = ActionListUpdate
|
||||
Left = 408
|
||||
Top = 56
|
||||
object acPrint: TAction
|
||||
Caption = 'Print'
|
||||
Hint = 'Print'
|
||||
ImageIndex = 0
|
||||
OnExecute = acPrintExecute
|
||||
end
|
||||
object acClose: TAction
|
||||
Caption = 'Close'
|
||||
Hint = 'Close'
|
||||
ImageIndex = 1
|
||||
OnExecute = acCloseExecute
|
||||
end
|
||||
object acFirstPage: TAction
|
||||
Caption = 'First'
|
||||
Hint = 'Show first page'
|
||||
ImageIndex = 2
|
||||
OnExecute = acFirstPageExecute
|
||||
end
|
||||
object acPrevPage: TAction
|
||||
Caption = 'Previous'
|
||||
Hint = 'Show previous page'
|
||||
ImageIndex = 3
|
||||
OnExecute = acPrevPageExecute
|
||||
end
|
||||
object acNextPage: TAction
|
||||
Caption = 'Next'
|
||||
Hint = 'Show next page'
|
||||
ImageIndex = 4
|
||||
OnExecute = acNextPageExecute
|
||||
end
|
||||
object acLastPage: TAction
|
||||
Caption = 'Last'
|
||||
Hint = 'Show last page'
|
||||
ImageIndex = 5
|
||||
OnExecute = acLastPageExecute
|
||||
end
|
||||
object acZoomIn: TAction
|
||||
Caption = 'Zoom in'
|
||||
Hint = 'Zoom in'
|
||||
ImageIndex = 6
|
||||
OnExecute = acZoomInZoomOutExecute
|
||||
end
|
||||
object acZoomOut: TAction
|
||||
Caption = 'Zoom out'
|
||||
Hint = 'Zoom out'
|
||||
ImageIndex = 7
|
||||
OnExecute = acZoomInZoomOutExecute
|
||||
end
|
||||
object acZoomToFitWidth: TAction
|
||||
Caption = 'Fit width'
|
||||
Hint = 'Zoom to fit width'
|
||||
ImageIndex = 10
|
||||
OnExecute = acZoomToFitWidthExecute
|
||||
end
|
||||
object acZoomToFitHeight: TAction
|
||||
Caption = 'Fit height'
|
||||
Hint = 'Zoom to fit page height'
|
||||
ImageIndex = 11
|
||||
OnExecute = acZoomToFitHeightExecute
|
||||
end
|
||||
object acZoom100: TAction
|
||||
Caption = '100%'
|
||||
Hint = 'Original size'
|
||||
ImageIndex = 12
|
||||
OnExecute = acZoom100Execute
|
||||
end
|
||||
object acPageMargins: TAction
|
||||
Caption = 'Margins'
|
||||
Hint = 'Page margins'
|
||||
ImageIndex = 8
|
||||
OnExecute = acPageMarginsExecute
|
||||
end
|
||||
object acHeaderFooter: TAction
|
||||
Caption = 'Header/footer...'
|
||||
Hint = 'Header/footer configuration'
|
||||
ImageIndex = 9
|
||||
OnExecute = acHeaderFooterExecute
|
||||
end
|
||||
object acPortrait: TAction
|
||||
Caption = 'Portrait'
|
||||
GroupIndex = 1
|
||||
Hint = 'Portrait page orientation'
|
||||
ImageIndex = 13
|
||||
OnExecute = acPortraitExecute
|
||||
end
|
||||
object acLandscape: TAction
|
||||
Caption = 'Landscape'
|
||||
GroupIndex = 1
|
||||
Hint = 'Landscape page orientation'
|
||||
ImageIndex = 14
|
||||
OnExecute = acLandscapeExecute
|
||||
end
|
||||
object acPrintColsFirst: TAction
|
||||
Caption = 'Columns first'
|
||||
GroupIndex = 2
|
||||
Hint = 'First print columns from top to bottom,'#13#10'then print from left to right'
|
||||
ImageIndex = 15
|
||||
OnExecute = acPrintColsFirstExecute
|
||||
end
|
||||
object acPrintRowsFirst: TAction
|
||||
Caption = 'Rows first'
|
||||
GroupIndex = 2
|
||||
Hint = 'First print rows from left to right,'#13#10'then print from top to bottom'
|
||||
ImageIndex = 16
|
||||
OnExecute = acPrintRowsFirstExecute
|
||||
end
|
||||
end
|
||||
end
|
44
components/gridprinter/source/gridprnpreviewform.lrj
Normal file
44
components/gridprinter/source/gridprnpreviewform.lrj
Normal file
@ -0,0 +1,44 @@
|
||||
{"version":1,"strings":[
|
||||
{"hash":1874375,"name":"tgridprintpreviewform.caption","sourcebytes":[80,114,105,110,116,32,80,114,101,118,105,101,119],"value":"Print Preview"},
|
||||
{"hash":191236306,"name":"tgridprintpreviewform.toolbar.caption","sourcebytes":[84,111,111,108,66,97,114],"value":"ToolBar"},
|
||||
{"hash":13109985,"name":"tgridprintpreviewform.tbdivider1.caption","sourcebytes":[116,98,68,105,118,105,100,101,114,49],"value":"tbDivider1"},
|
||||
{"hash":13109986,"name":"tgridprintpreviewform.tbdivider2.caption","sourcebytes":[116,98,68,105,118,105,100,101,114,50],"value":"tbDivider2"},
|
||||
{"hash":13109987,"name":"tgridprintpreviewform.tbdivider3.caption","sourcebytes":[116,98,68,105,118,105,100,101,114,51],"value":"tbDivider3"},
|
||||
{"hash":14901026,"name":"tgridprintpreviewform.edpagenumber.text","sourcebytes":[101,100,80,97,103,101,78,117,109,98,101,114],"value":"edPageNumber"},
|
||||
{"hash":13109988,"name":"tgridprintpreviewform.tbdivider4.caption","sourcebytes":[116,98,68,105,118,105,100,101,114,52],"value":"tbDivider4"},
|
||||
{"hash":13109989,"name":"tgridprintpreviewform.tbdivider5.caption","sourcebytes":[116,98,68,105,118,105,100,101,114,53],"value":"tbDivider5"},
|
||||
{"hash":5738580,"name":"tgridprintpreviewform.acprint.caption","sourcebytes":[80,114,105,110,116],"value":"Print"},
|
||||
{"hash":5738580,"name":"tgridprintpreviewform.acprint.hint","sourcebytes":[80,114,105,110,116],"value":"Print"},
|
||||
{"hash":4863637,"name":"tgridprintpreviewform.acclose.caption","sourcebytes":[67,108,111,115,101],"value":"Close"},
|
||||
{"hash":4863637,"name":"tgridprintpreviewform.acclose.hint","sourcebytes":[67,108,111,115,101],"value":"Close"},
|
||||
{"hash":5048740,"name":"tgridprintpreviewform.acfirstpage.caption","sourcebytes":[70,105,114,115,116],"value":"First"},
|
||||
{"hash":217173685,"name":"tgridprintpreviewform.acfirstpage.hint","sourcebytes":[83,104,111,119,32,102,105,114,115,116,32,112,97,103,101],"value":"Show first page"},
|
||||
{"hash":147653555,"name":"tgridprintpreviewform.acprevpage.caption","sourcebytes":[80,114,101,118,105,111,117,115],"value":"Previous"},
|
||||
{"hash":239386821,"name":"tgridprintpreviewform.acprevpage.hint","sourcebytes":[83,104,111,119,32,112,114,101,118,105,111,117,115,32,112,97,103,101],"value":"Show previous page"},
|
||||
{"hash":347380,"name":"tgridprintpreviewform.acnextpage.caption","sourcebytes":[78,101,120,116],"value":"Next"},
|
||||
{"hash":923269,"name":"tgridprintpreviewform.acnextpage.hint","sourcebytes":[83,104,111,119,32,110,101,120,116,32,112,97,103,101],"value":"Show next page"},
|
||||
{"hash":338084,"name":"tgridprintpreviewform.aclastpage.caption","sourcebytes":[76,97,115,116],"value":"Last"},
|
||||
{"hash":84807877,"name":"tgridprintpreviewform.aclastpage.hint","sourcebytes":[83,104,111,119,32,108,97,115,116,32,112,97,103,101],"value":"Show last page"},
|
||||
{"hash":23459486,"name":"tgridprintpreviewform.aczoomin.caption","sourcebytes":[90,111,111,109,32,105,110],"value":"Zoom in"},
|
||||
{"hash":23459486,"name":"tgridprintpreviewform.aczoomin.hint","sourcebytes":[90,111,111,109,32,105,110],"value":"Zoom in"},
|
||||
{"hash":106918100,"name":"tgridprintpreviewform.aczoomout.caption","sourcebytes":[90,111,111,109,32,111,117,116],"value":"Zoom out"},
|
||||
{"hash":106918100,"name":"tgridprintpreviewform.aczoomout.hint","sourcebytes":[90,111,111,109,32,111,117,116],"value":"Zoom out"},
|
||||
{"hash":108902056,"name":"tgridprintpreviewform.aczoomtofitwidth.caption","sourcebytes":[70,105,116,32,119,105,100,116,104],"value":"Fit width"},
|
||||
{"hash":28176728,"name":"tgridprintpreviewform.aczoomtofitwidth.hint","sourcebytes":[90,111,111,109,32,116,111,32,102,105,116,32,119,105,100,116,104],"value":"Zoom to fit width"},
|
||||
{"hash":116338068,"name":"tgridprintpreviewform.aczoomtofitheight.caption","sourcebytes":[70,105,116,32,104,101,105,103,104,116],"value":"Fit height"},
|
||||
{"hash":122522228,"name":"tgridprintpreviewform.aczoomtofitheight.hint","sourcebytes":[90,111,111,109,32,116,111,32,102,105,116,32,112,97,103,101,32,104,101,105,103,104,116],"value":"Zoom to fit page height"},
|
||||
{"hash":213797,"name":"tgridprintpreviewform.aczoom100.caption","sourcebytes":[49,48,48,37],"value":"100%"},
|
||||
{"hash":23626005,"name":"tgridprintpreviewform.aczoom100.hint","sourcebytes":[79,114,105,103,105,110,97,108,32,115,105,122,101],"value":"Original size"},
|
||||
{"hash":59301891,"name":"tgridprintpreviewform.acpagemargins.caption","sourcebytes":[77,97,114,103,105,110,115],"value":"Margins"},
|
||||
{"hash":116328739,"name":"tgridprintpreviewform.acpagemargins.hint","sourcebytes":[80,97,103,101,32,109,97,114,103,105,110,115],"value":"Page margins"},
|
||||
{"hash":208537918,"name":"tgridprintpreviewform.acheaderfooter.caption","sourcebytes":[72,101,97,100,101,114,47,102,111,111,116,101,114,46,46,46],"value":"Header/footer..."},
|
||||
{"hash":120242270,"name":"tgridprintpreviewform.acheaderfooter.hint","sourcebytes":[72,101,97,100,101,114,47,102,111,111,116,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110],"value":"Header/footer configuration"},
|
||||
{"hash":110855028,"name":"tgridprintpreviewform.acportrait.caption","sourcebytes":[80,111,114,116,114,97,105,116],"value":"Portrait"},
|
||||
{"hash":97583166,"name":"tgridprintpreviewform.acportrait.hint","sourcebytes":[80,111,114,116,114,97,105,116,32,112,97,103,101,32,111,114,105,101,110,116,97,116,105,111,110],"value":"Portrait page orientation"},
|
||||
{"hash":79284965,"name":"tgridprintpreviewform.aclandscape.caption","sourcebytes":[76,97,110,100,115,99,97,112,101],"value":"Landscape"},
|
||||
{"hash":214097038,"name":"tgridprintpreviewform.aclandscape.hint","sourcebytes":[76,97,110,100,115,99,97,112,101,32,112,97,103,101,32,111,114,105,101,110,116,97,116,105,111,110],"value":"Landscape page orientation"},
|
||||
{"hash":252759476,"name":"tgridprintpreviewform.acprintcolsfirst.caption","sourcebytes":[67,111,108,117,109,110,115,32,102,105,114,115,116],"value":"Columns first"},
|
||||
{"hash":179142132,"name":"tgridprintpreviewform.acprintcolsfirst.hint","sourcebytes":[70,105,114,115,116,32,112,114,105,110,116,32,99,111,108,117,109,110,115,32,102,114,111,109,32,116,111,112,32,116,111,32,98,111,116,116,111,109,44,13,10,116,104,101,110,32,112,114,105,110,116,32,102,114,111,109,32,108,101,102,116,32,116,111,32,114,105,103,104,116],"value":"First print columns from top to bottom,\r\nthen print from left to right"},
|
||||
{"hash":90873668,"name":"tgridprintpreviewform.acprintrowsfirst.caption","sourcebytes":[82,111,119,115,32,102,105,114,115,116],"value":"Rows first"},
|
||||
{"hash":159637965,"name":"tgridprintpreviewform.acprintrowsfirst.hint","sourcebytes":[70,105,114,115,116,32,112,114,105,110,116,32,114,111,119,115,32,102,114,111,109,32,108,101,102,116,32,116,111,32,114,105,103,104,116,44,13,10,116,104,101,110,32,112,114,105,110,116,32,102,114,111,109,32,116,111,112,32,116,111,32,98,111,116,116,111,109],"value":"First print rows from left to right,\r\nthen print from top to bottom"}
|
||||
]}
|
970
components/gridprinter/source/gridprnpreviewform.pas
Normal file
970
components/gridprinter/source/gridprnpreviewform.pas
Normal file
@ -0,0 +1,970 @@
|
||||
unit GridPrnPreviewForm;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Types, LazLoggerBase,
|
||||
StdCtrls, ExtCtrls, ComCtrls, Dialogs, Menus, ActnList,
|
||||
GridPrn;
|
||||
|
||||
type
|
||||
TGridPrintPreviewZoomMode = (zmCustom, zmFitWidth, zmFitHeight);
|
||||
|
||||
TGridPrintPreviewOption = (ppoNavigationBtns, ppoNavigationEdit,
|
||||
ppoZoomBtns, ppoPageOrientationBtns, ppoMarginsBtn, ppoHeaderFooterBtn,
|
||||
ppoPrintOrderBtns
|
||||
);
|
||||
TGridPrintPreviewOptions = set of TGridPrintPreviewOption;
|
||||
|
||||
const
|
||||
DEFAULT_GRIDPRN_OPTIONS = [
|
||||
ppoNavigationBtns, ppoNavigationEdit,
|
||||
ppoZoomBtns, ppoPageOrientationBtns, ppoMarginsBtn, ppoHeaderFooterBtn,
|
||||
ppoPrintOrderBtns
|
||||
];
|
||||
|
||||
type
|
||||
{ TGridPrintPreviewForm }
|
||||
|
||||
TGridPrintPreviewForm = class(TForm)
|
||||
acPrint: TAction;
|
||||
acClose: TAction;
|
||||
acFirstPage: TAction;
|
||||
acPrevPage: TAction;
|
||||
acNextPage: TAction;
|
||||
acLastPage: TAction;
|
||||
acPageMargins: TAction;
|
||||
acHeaderFooter: TAction;
|
||||
acPortrait: TAction;
|
||||
acLandscape: TAction;
|
||||
acPrintColsFirst: TAction;
|
||||
acPrintRowsFirst: TAction;
|
||||
acZoom100: TAction;
|
||||
acZoomToFitWidth: TAction;
|
||||
acZoomToFitHeight: TAction;
|
||||
acZoomOut: TAction;
|
||||
acZoomIn: TAction;
|
||||
ActionList: TActionList;
|
||||
edPageNumber: TEdit;
|
||||
InfoPanel: TPanel;
|
||||
PreviewImage: TImage;
|
||||
ScrollBox: TScrollBox;
|
||||
ToolbarImages: TImageList;
|
||||
ToolBar: TToolBar;
|
||||
tbPrint: TToolButton;
|
||||
tbClose: TToolButton;
|
||||
tbFirst: TToolButton;
|
||||
tbPrev: TToolButton;
|
||||
tbNext: TToolButton;
|
||||
tbLast: TToolButton;
|
||||
tbDivider1: TToolButton;
|
||||
tbDivider2: TToolButton;
|
||||
tbDivider3: TToolButton;
|
||||
tbZoomIn: TToolButton;
|
||||
tbZoomOut: TToolButton;
|
||||
tbZoomWidth: TToolButton;
|
||||
tbZoomHeight: TToolButton;
|
||||
tbZoom100: TToolButton;
|
||||
ToolButton1: TToolButton;
|
||||
tbHeaderFooter: TToolButton;
|
||||
ToolButton2: TToolButton;
|
||||
ToolButton3: TToolButton;
|
||||
tbDivider5: TToolButton;
|
||||
tbDivider4: TToolButton;
|
||||
tbPortraint: TToolButton;
|
||||
tbLandscape: TToolButton;
|
||||
procedure acCloseExecute(Sender: TObject);
|
||||
procedure acFirstPageExecute(Sender: TObject);
|
||||
procedure acHeaderFooterExecute(Sender: TObject);
|
||||
procedure acLandscapeExecute(Sender: TObject);
|
||||
procedure acLastPageExecute(Sender: TObject);
|
||||
procedure acNextPageExecute(Sender: TObject);
|
||||
procedure acPageMarginsExecute(Sender: TObject);
|
||||
procedure acPortraitExecute(Sender: TObject);
|
||||
procedure acPrevPageExecute(Sender: TObject);
|
||||
procedure acPrintColsFirstExecute(Sender: TObject);
|
||||
procedure acPrintExecute(Sender: TObject);
|
||||
procedure acPrintRowsFirstExecute(Sender: TObject);
|
||||
procedure ActionListUpdate({%H-}AAction: TBasicAction; var {%H-}Handled: Boolean);
|
||||
procedure acZoom100Execute(Sender: TObject);
|
||||
procedure acZoomInZoomOutExecute(Sender: TObject);
|
||||
procedure acZoomToFitHeightExecute(Sender: TObject);
|
||||
procedure acZoomToFitWidthExecute(Sender: TObject);
|
||||
procedure edPageNumberEditingDone(Sender: TObject);
|
||||
procedure edPageNumberKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
|
||||
procedure edPageNumberMouseWheel(Sender: TObject; {%H-}Shift: TShiftState;
|
||||
WheelDelta: Integer; {%H-}MousePos: TPoint; var {%H-}Handled: Boolean);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure PreviewImageMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
procedure PreviewImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||
procedure PreviewImageMouseUp(Sender: TObject; {%H-}Button: TMouseButton;
|
||||
{%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
|
||||
procedure PreviewImageMouseWheel(Sender: TObject; Shift: TShiftState;
|
||||
WheelDelta: Integer; {%H-}MousePos: TPoint; var {%H-}Handled: Boolean);
|
||||
procedure PreviewImagePaint(Sender: TObject);
|
||||
procedure ScrollBoxKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
|
||||
procedure ScrollBoxMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
|
||||
{%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
|
||||
procedure ToolBarResize(Sender: TObject);
|
||||
private
|
||||
FActivated: Boolean;
|
||||
FDraggedMargin: Integer; // 0=left margin, 1=top, 2=right, 3=bottom 4=header 5=footer
|
||||
FDraggedPos: Integer;
|
||||
FGridPrinter: TGridPrinter;
|
||||
FHintWindow: THintWindow;
|
||||
FPageCount: Integer;
|
||||
FPageNumber: Integer;
|
||||
FOptions: TGridPrintPreviewOptions;
|
||||
FUpdatePreviewHandler: TNotifyEvent;
|
||||
FZoom: Integer;
|
||||
FZoomMax: Integer;
|
||||
FZoomMin: Integer;
|
||||
FZoomMode: TGridPrintPreviewZoomMode;
|
||||
procedure SetGridPrinter(AValue: TGridPrinter);
|
||||
procedure SetPageNumber(AValue: Integer);
|
||||
procedure SetOptions(AValue: TGridPrintPreviewOptions);
|
||||
protected
|
||||
function CalcDraggedMargin(AMargin: Integer; APosition: Integer): Double;
|
||||
procedure DoOnResize; override;
|
||||
procedure HideDraggedMarginHint;
|
||||
function MouseOverMarginLine(X, Y: Integer): Integer;
|
||||
function NextZoomFactor(AZoomIn: Boolean): Integer;
|
||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
procedure ShowDraggedMarginHint(AMarginIndex, ADraggedPos: Integer; AMarginName: String);
|
||||
procedure ShowPage(APageNo: Integer; AZoom: Integer = 0;
|
||||
AZoomMode: TGridPrintPreviewZoomMode = zmCustom);
|
||||
procedure UpdateInfoPanel;
|
||||
procedure VerifyZoomMin;
|
||||
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure UpdateStrings;
|
||||
procedure ZoomToFitHeight;
|
||||
procedure ZoomToFitWidth;
|
||||
property PageNumber: Integer read FPageNumber write SetPageNumber;
|
||||
|
||||
published
|
||||
property GridPrinter: TGridPrinter read FGridPrinter write SetGridPrinter;
|
||||
property Options: TGridPrintPreviewOptions
|
||||
read FOptions write SetOptions default DEFAULT_GRIDPRN_OPTIONS;
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
GridPrintPreviewForm: TGridPrintPreviewForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
LCLIntf, LCLType, Printers, GridPrnStrings, GridPrnHeaderFooterForm;
|
||||
|
||||
const
|
||||
ZOOM_MULTIPLIER = 1.05;
|
||||
|
||||
{ Returns true when X1 is in range between X2-Delta and X2+Delta. }
|
||||
function InRange(X1, X2, Delta: Integer): Boolean; inline;
|
||||
begin
|
||||
Result := (X1 >= X2-Delta) and (X1 <= X2+Delta);
|
||||
end;
|
||||
|
||||
{ Returns X if it is in the range between X1 and X2, otherwise either X1 or X2,
|
||||
depending on wheter X is <X1 or >X2. }
|
||||
function EnsureRange(X, X1, X2: Integer): Integer;
|
||||
begin
|
||||
if X < X1 then
|
||||
Result := X1
|
||||
else
|
||||
if X > X2 then
|
||||
Result := X2
|
||||
else
|
||||
Result := X;
|
||||
end;
|
||||
|
||||
{ TGridPrintPreviewForm }
|
||||
|
||||
constructor TGridPrintPreviewForm.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
Scrollbox.OnKeyDown := @ScrollBoxKeyDown;
|
||||
InfoPanel.ParentColor := true;
|
||||
FPageNumber := 0;
|
||||
FZoom := 100;
|
||||
FZoomMax := 1000; // To avoid too-large bitmaps
|
||||
FZoomMin := 10;
|
||||
FDraggedMargin := -1;
|
||||
FOptions := DEFAULT_GRIDPRN_OPTIONS;
|
||||
VerifyZoomMin;
|
||||
ActiveControl := Scrollbox;
|
||||
UpdateStrings;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acCloseExecute(Sender: TObject);
|
||||
begin
|
||||
ModalResult := mrCancel;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acFirstPageExecute(Sender: TObject);
|
||||
begin
|
||||
ShowPage(1);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acHeaderFooterExecute(Sender: TObject);
|
||||
var
|
||||
F: TGridPrintHeaderFooterForm;
|
||||
begin
|
||||
F := TGridPrintHeaderFooterForm.Create(nil);
|
||||
try
|
||||
F.GridPrinter := FGridPrinter;
|
||||
if F.ShowModal = mrOK then
|
||||
ShowPage(FPageNumber, FZoom);
|
||||
finally
|
||||
F.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acLandscapeExecute(Sender: TObject);
|
||||
begin
|
||||
if Assigned(FGridPrinter) then
|
||||
begin
|
||||
acLandscape.Checked := true;
|
||||
FGridPrinter.Orientation := poLandscape;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acLastPageExecute(Sender: TObject);
|
||||
begin
|
||||
ShowPage(FPageCount);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acNextPageExecute(Sender: TObject);
|
||||
begin
|
||||
if FPageNumber < FPageCount then
|
||||
ShowPage(FPageNumber+1);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acPageMarginsExecute(Sender: TObject);
|
||||
begin
|
||||
acPageMargins.Checked := not acPageMargins.Checked;
|
||||
PreviewImage.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acPortraitExecute(Sender: TObject);
|
||||
begin
|
||||
if Assigned(FGridPrinter) then
|
||||
begin
|
||||
acPortrait.Checked := true;
|
||||
FGridPrinter.Orientation := poPortrait;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acPrevPageExecute(Sender: TObject);
|
||||
begin
|
||||
if FPageNumber > 1 then
|
||||
ShowPage(FPageNumber-1);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acPrintColsFirstExecute(Sender: TObject);
|
||||
begin
|
||||
if Assigned(FGridPrinter) then
|
||||
begin
|
||||
acPrintColsFirst.Checked := true;
|
||||
FGridPrinter.PrintOrder := poColsFirst;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acPrintExecute(Sender: TObject);
|
||||
begin
|
||||
ModalResult := mrOK;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acPrintRowsFirstExecute(Sender: TObject);
|
||||
begin
|
||||
if Assigned(FGridPrinter) then
|
||||
begin
|
||||
acPrintRowsFirst.Checked := true;
|
||||
FGridPrinter.PrintOrder := poRowsFirst;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acZoom100Execute(Sender: TObject);
|
||||
begin
|
||||
ShowPage(FPageNumber, 100);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acZoomToFitHeightExecute(Sender: TObject);
|
||||
begin
|
||||
ZoomToFitHeight;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ActionListUpdate(AAction: TBasicAction;
|
||||
var Handled: Boolean);
|
||||
begin
|
||||
acPrint.Enabled := (FGridPrinter <> nil) and (FPageCount > 0);
|
||||
acFirstPage.Enabled := (FGridPrinter <> nil) and (FPageCount > 0) and (FPageNumber > 1);
|
||||
acPrevPage.Enabled := acFirstPage.Enabled;
|
||||
acNextPage.Enabled := (FGridPrinter <> nil) and (FPageCount > 0) and (FPageNumber < FPageCount);
|
||||
acLastPage.Enabled := acNextPage.Enabled;
|
||||
|
||||
acZoomIn.Enabled := acPrint.Enabled;
|
||||
acZoomOut.Enabled := acPrint.Enabled;
|
||||
acZoom100.Enabled := acPrint.Enabled;
|
||||
acZoomToFitWidth.Enabled := acPrint.Enabled;
|
||||
acZoomToFitHeight.Enabled := acPrint.Enabled;
|
||||
|
||||
acPortrait.Enabled := (FGridPrinter <> nil);
|
||||
acLandscape.Enabled := (FGridPrinter <> nil);
|
||||
acHeaderFooter.Enabled := acPrint.Enabled;
|
||||
acPageMargins.Enabled := acPrint.Enabled;
|
||||
acPrintColsFirst.Enabled := acPrint.Enabled;;
|
||||
acPrintRowsFirst.Enabled := acPrint.Enabled;;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.acZoomInZoomOutExecute(Sender: TObject);
|
||||
var
|
||||
newZoom: Integer;
|
||||
begin
|
||||
newZoom := NextZoomFactor(Sender = acZoomIn);
|
||||
ShowPage(FPageNumber, newZoom);
|
||||
end;
|
||||
|
||||
{ Selects a zoom factor such that the preview of the page fills the form. }
|
||||
procedure TGridPrintPreviewForm.acZoomToFitWidthExecute(Sender: TObject);
|
||||
begin
|
||||
ZoomToFitWidth;
|
||||
end;
|
||||
|
||||
{ Converts the position of the dragged margin to millimeters. }
|
||||
function TGridPrintPreviewForm.CalcDraggedMargin(AMargin: Integer;
|
||||
APosition: Integer): Double;
|
||||
begin
|
||||
case AMargin of
|
||||
0: Result := px2mm(APosition, FGridPrinter.PixelsPerInchX);
|
||||
1: Result := px2mm(APosition, FGridPrinter.PixelsPerInchY);
|
||||
2: Result := px2mm(FGridPrinter.PageWidth - APosition, FGridPrinter.PixelsPerInchX);
|
||||
3: Result := px2mm(FGridPrinter.PageHeight - APosition, FGridPrinter.PixelsPerInchY);
|
||||
4: Result := px2mm(APosition, FGridPrinter.PixelsPerInchY);
|
||||
5: Result := px2mm(FGridPrinter.PageHeight - APosition, FGridPrinter.PixelsPerInchY);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.DoOnResize;
|
||||
begin
|
||||
case FZoomMode of
|
||||
zmFitWidth: ZoomToFitWidth;
|
||||
zmFitHeight: ZoomToFitHeight;
|
||||
zmCustom: ;
|
||||
end;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
{ Allows to select a page by entering its number in the PageNo edit and
|
||||
pressing ENTER: }
|
||||
procedure TGridPrintPreviewForm.edPageNumberEditingDone(Sender: TObject);
|
||||
begin
|
||||
if TryStrToInt(edPageNumber.Text, FPageNumber) then
|
||||
begin
|
||||
if FPageNumber < 1 then FPageNumber := 1;
|
||||
if FPageNumber > FPageCount then FPageNumber := FPageCount;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.edPageNumberKeyDown(Sender: TObject; var Key: Word;
|
||||
Shift: TShiftState);
|
||||
begin
|
||||
case Key of
|
||||
VK_LEFT:
|
||||
if FPageNumber > 1 then ShowPage(FPageNumber-1);
|
||||
VK_RIGHT:
|
||||
if FPageNumber < FPageCount then ShowPage(FPageNumber+1);
|
||||
VK_HOME:
|
||||
ShowPage(1);
|
||||
VK_END:
|
||||
ShowPage(FPageCount);
|
||||
end;
|
||||
end;
|
||||
|
||||
{ Activates scrolling of pages by means of rotating mouse wheel over the
|
||||
PageNo edit. }
|
||||
procedure TGridPrintPreviewForm.edPageNumberMouseWheel(Sender: TObject;
|
||||
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
begin
|
||||
if WheelDelta < 0 then
|
||||
begin
|
||||
if FPageNumber < FPageCount then FPageNumber := FPageNumber + 1 else exit;
|
||||
end else
|
||||
if FPageNumber > 1 then FPageNumber := FPageNumber - 1 else exit;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.FormActivate(Sender: TObject);
|
||||
begin
|
||||
if FActivated then
|
||||
exit;
|
||||
FUpdatePreviewHandler := FGridPrinter.OnUpdatePreview;
|
||||
ShowPage(1, 100);
|
||||
FActivated := true;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.HideDraggedMarginHint;
|
||||
begin
|
||||
FreeAndNil(FHintWindow);
|
||||
end;
|
||||
|
||||
// Result 0=left margin, 1=top margin, 2=right margin, 3=bottom margin, 4=header, 5=footer
|
||||
function TGridPrintPreviewForm.MouseOverMarginLine(X, Y: Integer): Integer;
|
||||
CONST
|
||||
DELTA = 4;
|
||||
var
|
||||
coord: Integer;
|
||||
begin
|
||||
if (FGridPrinter = nil) or (not acPageMargins.Checked) then
|
||||
exit(-1);
|
||||
|
||||
if InRange(X, FGridPrinter.PageRect.Left, DELTA) then
|
||||
exit(0);
|
||||
|
||||
if InRange(Y, FGridPrinter.PageRect.Top, DELTA) then
|
||||
exit(1);
|
||||
|
||||
if InRange(X, FGridPrinter.PageRect.Right, DELTA) then
|
||||
exit(2);
|
||||
|
||||
if InRange(Y, FGridPrinter.PageRect.Bottom, DELTA) then
|
||||
exit(3);
|
||||
|
||||
if FGridPrinter.Header.IsShown then
|
||||
begin
|
||||
coord := mm2px(FGridPrinter.Margins.Header, FGridPrinter.PixelsPerInchY);
|
||||
if InRange(y, coord, DELTA) then
|
||||
exit(4);
|
||||
end;
|
||||
|
||||
if FGridPrinter.Footer.IsShown then
|
||||
begin
|
||||
coord := mm2px(FGridPrinter.Margins.Footer, FGridPrinter.PixelsPerInchY);
|
||||
if InRange(y, FGridPrinter.PageHeight - coord, DELTA) then
|
||||
exit(5);
|
||||
end;
|
||||
|
||||
Result := -1;
|
||||
end;
|
||||
|
||||
function TGridPrintPreviewForm.NextZoomFactor(AZoomIn: Boolean): Integer;
|
||||
begin
|
||||
if AZoomIn then
|
||||
Result := round(FZoom * ZOOM_MULTIPLIER)
|
||||
else
|
||||
Result := round(FZoom / ZOOM_MULTIPLIER);
|
||||
Result := EnsureRange(Result, FZoomMin, FZoomMax);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.Notification(AComponent: TComponent;
|
||||
Operation: TOperation);
|
||||
begin
|
||||
inherited;
|
||||
if Operation = opRemove then
|
||||
begin
|
||||
if AComponent = FGridPrinter then
|
||||
FGridPrinter := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.PreviewImageMouseDown(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
Scrollbox.SetFocus;
|
||||
if (ssLeft in Shift) then
|
||||
FDraggedMargin := MouseOverMarginLine(X, Y);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.PreviewImageMouseMove(Sender: TObject;
|
||||
Shift: TShiftState; X, Y: Integer);
|
||||
var
|
||||
minWidth: Integer;
|
||||
minHeight: Integer;
|
||||
y0: Integer;
|
||||
one_mm: Integer;
|
||||
marginName: String;
|
||||
begin
|
||||
if (FGridPrinter = nil) or not (acPageMargins.Checked) then
|
||||
exit;
|
||||
|
||||
if not (ssLeft in Shift) then
|
||||
begin
|
||||
FDraggedMargin := MouseOverMarginLine(X, Y);
|
||||
case FDraggedMargin of
|
||||
-1:
|
||||
begin
|
||||
Screen.Cursor := crDefault;
|
||||
HideDraggedMarginHint;
|
||||
exit;
|
||||
end;
|
||||
0,2:
|
||||
begin
|
||||
Screen.Cursor := crHSplit;
|
||||
FDraggedPos := X;
|
||||
end;
|
||||
1,3,4,5:
|
||||
begin
|
||||
Screen.Cursor := crVSplit;
|
||||
FDraggedPos := Y;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
if (ssLeft in Shift) then
|
||||
begin
|
||||
minWidth := FGridPrinter.PageWidth div 4;
|
||||
minHeight := FGridPrinter.PageHeight div 4;
|
||||
one_mm := mm2px(1.0, FGridPrinter.PixelsPerInchY);
|
||||
case FDraggedMargin of
|
||||
0: begin
|
||||
// Left margin
|
||||
FDraggedPos := X;
|
||||
if (FDraggedPos < 0) then
|
||||
FDraggedPos := 0;
|
||||
if FGridPrinter.PageRect.Right - FDraggedPos < minWidth then
|
||||
FDraggedPos := FGridPrinter.PageRect.Right - minWidth
|
||||
end;
|
||||
1: begin
|
||||
// Top margin
|
||||
FDraggedPos := Y;
|
||||
if FGridPrinter.Header.IsShown then
|
||||
begin
|
||||
y0 := FGridPrinter.HeaderMargin + one_mm;
|
||||
if (FDraggedPos < y0) then
|
||||
FDraggedPos := y0;
|
||||
end;
|
||||
if (FDraggedPos < 0) then
|
||||
FDraggedPos := 0;
|
||||
if FGridPrinter.PageRect.Bottom - FDraggedPos < minHeight then
|
||||
FDraggedPos := FGridPrinter.PageRect.Bottom - minWidth;
|
||||
end;
|
||||
2: begin
|
||||
// Right margin
|
||||
FDraggedPos := X;
|
||||
if FDraggedPos > FGridPrinter.PageWidth then
|
||||
FDraggedPos := FGridPrinter.PageWidth;
|
||||
if FDraggedPos - FGridPrinter.PageRect.Left < minWidth then
|
||||
FDraggedPos := FGridPrinter.PageRect.Left + minWidth;
|
||||
end;
|
||||
3: begin
|
||||
// Bottom margin
|
||||
FDraggedPos := Y;
|
||||
if FGridPrinter.Footer.IsShown then
|
||||
begin
|
||||
y0 := FGridPrinter.PageHeight - FGridPrinter.FooterMargin - one_mm;
|
||||
if FDraggedPos > y0 then
|
||||
FDraggedPos := y0;
|
||||
end;
|
||||
if FDraggedPos > FGridPrinter.PageHeight then
|
||||
FDraggedPos := FGridPrinter.PageHeight;
|
||||
if FDraggedPos - FGridPrinter.PageRect.Top < minHeight then
|
||||
FDraggedPos := FGridPrinter.PageRect.Top + minHeight;
|
||||
end;
|
||||
4: begin
|
||||
// Header
|
||||
FDraggedPos := Y;
|
||||
if FDraggedPos < 0 then
|
||||
FDraggedPos := 0;
|
||||
if FDraggedPos > FGridPrinter.PageRect.Top - one_mm then
|
||||
FDraggedPos := FGridPrinter.PageRect.Top - one_mm;
|
||||
end;
|
||||
5: begin
|
||||
// Footer
|
||||
FDraggedPos := Y;
|
||||
if FDraggedPos > FGridPrinter.PageHeight then
|
||||
FDraggedPos := FGridPrinter.PageHeight;
|
||||
if FDraggedPos < FGridPrinter.PageRect.Bottom + one_mm then
|
||||
FDraggedPos := FGridPrinter.PageRect.Bottom + one_mm;
|
||||
end;
|
||||
else
|
||||
raise Exception.Create('[PreviewImageMouseMove] Unexpected value of FDraggedMargin');
|
||||
end;
|
||||
|
||||
|
||||
// Redraw the preview to update the dragged red margin line
|
||||
PreviewImage.Repaint;
|
||||
end;
|
||||
|
||||
case FDraggedMargin of
|
||||
0: marginName := RSLeftMargin;
|
||||
1: marginName := RSTopMargin;
|
||||
2: marginName := RSRightMargin;
|
||||
3: marginName := RSBottomMargin;
|
||||
4: marginName := RSHeaderMargin;
|
||||
5: marginName := RSFooterMargin;
|
||||
else
|
||||
raise Exception.Create('[PreviewImageMouseMove] Unexpected value of FDraggedMargin');
|
||||
end;
|
||||
ShowDraggedMarginHint(FDraggedMargin, FDraggedPos, marginName);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.PreviewImageMouseUp(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
var
|
||||
dragged: Integer;
|
||||
newMargin: Double;
|
||||
begin
|
||||
if (FDraggedMargin > -1) then
|
||||
begin
|
||||
newMargin := CalcDraggedMargin(FDraggedMargin, FDraggedPos);
|
||||
dragged := FDraggedMargin;
|
||||
FDraggedMargin := -1;
|
||||
case dragged of
|
||||
0: FGridPrinter.Margins.Left := newMargin;
|
||||
1: FGridPrinter.Margins.Top := newMargin;
|
||||
2: FGridPrinter.Margins.Right := newMargin;
|
||||
3: FGridPrinter.Margins.Bottom := newMargin;
|
||||
4: FGridPrinter.Margins.Header := newMargin;
|
||||
5: FGridPrinter.Margins.Footer := newMargin;
|
||||
end;
|
||||
HideDraggedMarginHint;
|
||||
Screen.Cursor := crDefault;
|
||||
ShowPage(FPageNumber);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.PreviewImageMouseWheel(Sender: TObject;
|
||||
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
|
||||
var Handled: Boolean);
|
||||
var
|
||||
newZoom: Integer;
|
||||
begin
|
||||
if (ssCtrl in Shift) then
|
||||
begin
|
||||
newZoom := NextZoomFactor(WheelDelta > 0);
|
||||
ShowPage(FPageNumber, newZoom);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.PreviewImagePaint(Sender: TObject);
|
||||
var
|
||||
x, y: Integer;
|
||||
|
||||
begin
|
||||
if FGridPrinter = nil then
|
||||
exit;
|
||||
|
||||
if acPageMargins.Checked then
|
||||
begin
|
||||
PreviewImage.Canvas.Pen.Color := clRed;
|
||||
PreviewImage.Canvas.Pen.Style := psDash;
|
||||
|
||||
// Left margin line
|
||||
if FDraggedMargin = 0 then
|
||||
x := FDraggedPos
|
||||
else
|
||||
x := FGridPrinter.PageRect.Left;
|
||||
PreviewImage.Canvas.Line(x, 0, x, PreviewImage.Height);
|
||||
|
||||
// Top margin line
|
||||
if FDraggedMargin = 1 then
|
||||
y := FDraggedPos
|
||||
else
|
||||
y := FGridPrinter.PageRect.Top;
|
||||
PreviewImage.Canvas.Line(0, y, PreviewImage.Width, y);
|
||||
|
||||
// Right margin line
|
||||
if FDraggedMargin = 2 then
|
||||
x := FDraggedPos
|
||||
else
|
||||
x := FGridPrinter.PageRect.Right;
|
||||
PreviewImage.Canvas.Line(x, 0, x, PreviewImage.Height);
|
||||
|
||||
// Bottom margin line
|
||||
if FDraggedMargin = 3 then
|
||||
y := FDraggedPos
|
||||
else
|
||||
y := FGridPrinter.PageRect.Bottom;
|
||||
PreviewImage.Canvas.Line(0, y, PreviewImage.Width, y);
|
||||
|
||||
// Header line
|
||||
if FGridPrinter.Header.IsShown then
|
||||
begin
|
||||
if FDraggedMargin = 4 then
|
||||
y := FDraggedPos
|
||||
else
|
||||
y := mm2px(FGridPrinter.Margins.Header, FGridPrinter.PixelsPerInchY);
|
||||
PreviewImage.Canvas.Line(0, y, PreviewImage.Width, y);
|
||||
end;
|
||||
|
||||
// Footer line
|
||||
if FGridPrinter.Footer.IsShown then
|
||||
begin
|
||||
if FDraggedMargin = 5 then
|
||||
y := FDraggedPos
|
||||
else
|
||||
y := FGridPrinter.PageHeight - mm2px(FGridPrinter.Margins.Footer, FGridPrinter.PixelsPerInchY);
|
||||
PreviewImage.Canvas.Line(0, y, PreviewImage.Width, y);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ScrollBoxKeyDown(Sender: TObject;
|
||||
var Key: Word; Shift: TShiftState);
|
||||
begin
|
||||
case Key of
|
||||
VK_DOWN, VK_Next:
|
||||
with Scrollbox.VertScrollbar do
|
||||
begin
|
||||
if (Position = Range-Page) and (FPageNumber < FPageCount) then
|
||||
begin
|
||||
ShowPage(FPageNumber+1);
|
||||
Position := 0;
|
||||
end
|
||||
else
|
||||
case Key of
|
||||
VK_DOWN: Position := Position + Increment;
|
||||
VK_NEXT: Position := Position + Page;
|
||||
end;
|
||||
end;
|
||||
VK_UP, VK_PRIOR:
|
||||
with Scrollbox.VertScrollbar do
|
||||
begin
|
||||
if (Position = 0) and (FPageNumber > 1) then
|
||||
begin
|
||||
ShowPage(FPageNumber-1);
|
||||
Position := Range-Page;
|
||||
end
|
||||
else
|
||||
case Key of
|
||||
VK_UP: Position := Position - Increment;
|
||||
VK_PRIOR: Position := Position - Page;
|
||||
end;
|
||||
end;
|
||||
VK_LEFT:
|
||||
with Scrollbox.HorzScrollbar do
|
||||
Position := Position - Increment;
|
||||
VK_RIGHT:
|
||||
with Scrollbox.HorzScrollbar do
|
||||
Position := Position + Increment;
|
||||
VK_HOME:
|
||||
with Scrollbox.HorzScrollbar do
|
||||
Position := Position - Page;
|
||||
VK_END:
|
||||
with Scrollbox.HorzScrollbar do
|
||||
Position := Position + Page;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ScrollBoxMouseDown(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
Scrollbox.SetFocus;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.SetGridPrinter(AValue: TGridPrinter);
|
||||
begin
|
||||
if FGridPrinter <> AValue then
|
||||
begin
|
||||
FGridPrinter := AValue;
|
||||
case FGridPrinter.Orientation of
|
||||
poPortrait: acPortrait.Checked := true;
|
||||
poLandscape: acLandscape.Checked := true;
|
||||
end;
|
||||
case FGridPrinter.PrintOrder of
|
||||
poRowsFirst: acPrintRowsFirst.Checked := true;
|
||||
poColsFirst: acPrintColsFirst.Checked := true;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.SetOptions(AValue: TGridPrintPreviewOptions);
|
||||
begin
|
||||
if FOptions <> AValue then
|
||||
begin
|
||||
FOptions := AValue;
|
||||
|
||||
acFirstPage.Visible := ppoNavigationBtns in FOptions;
|
||||
acPrevpage.Visible := acFirstpage.Visible;
|
||||
acNextPage.Visible := acFirstPage.Visible;
|
||||
acLastPage.Visible := acFirstPage.Visible;
|
||||
edPageNumber.Visible := ppoNavigationEdit in FOptions;
|
||||
tbDivider1.Visible := acFirstPage.Visible or edPageNumber.Visible;
|
||||
|
||||
acZoomIn.Visible := ppoZoomBtns in FOptions;
|
||||
acZoomOut.Visible := acZoomIn.Visible;
|
||||
acZoom100.Visible := acZoomIn.Visible;
|
||||
acZoomToFitWidth.Visible := acZoomIn.Visible;
|
||||
acZoomtoFitHeight.Visible := acZoomIn.Visible;
|
||||
tbDivider2.Visible := acZoomIn.Visible;
|
||||
|
||||
acPortrait.Visible := ppoPageOrientationBtns in FOptions;
|
||||
acLandscape.Visible := acPortrait.Visible;
|
||||
acHeaderFooter.Visible := ppoHeaderFooterBtn in FOptions;
|
||||
acPageMargins.Visible := ppoMarginsBtn in FOptions;
|
||||
tbDivider3.Visible := acPortrait.Visible or acHeaderFooter.Visible or acPageMargins.Visible;
|
||||
|
||||
acPrintColsFirst.Visible := ppoPrintOrderBtns in FOptions;
|
||||
acPrintRowsFirst.Visible := acPrintColsFirst.Visible;
|
||||
tbDivider4.Visible := acPrintColsFirst.Visible;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.SetPageNumber(AValue: Integer);
|
||||
begin
|
||||
if AValue <> FPageNumber then
|
||||
ShowPage(AValue);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ShowDraggedMarginHint(
|
||||
AMarginIndex, ADraggedPos: Integer; AMarginName: String);
|
||||
var
|
||||
hintStr: String;
|
||||
P: TPoint;
|
||||
R: TRect;
|
||||
begin
|
||||
if FHintWindow = nil then
|
||||
FHintWindow := THintWindow.Create(nil);
|
||||
hintStr := Format('%s: %.1f mm', [AMarginName, CalcDraggedMargin(AMarginIndex, ADraggedPos)]);
|
||||
P := Mouse.CursorPos;
|
||||
R := FHintWindow.CalcHintRect(Screen.Width, hintStr, nil);
|
||||
OffsetRect(R, P.X, P.Y);
|
||||
FHintWindow.ActivateHint(R, hintStr);
|
||||
// Note: Application.Hint is not showing with pressed mouse button! }
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ShowPage(APageNo: Integer; AZoom: Integer = 0;
|
||||
AZoomMode: TGridPrintPreviewZoomMode = zmCustom);
|
||||
var
|
||||
bmp: TBitmap;
|
||||
begin
|
||||
if FGridPrinter = nil then
|
||||
begin
|
||||
FPageCount := 0;
|
||||
FPageNumber := 0;
|
||||
PreviewImage.Picture.Clear;
|
||||
exit;
|
||||
end;
|
||||
|
||||
FPageNumber := APageNo;
|
||||
if AZoom > 0 then
|
||||
FZoom := AZoom;
|
||||
|
||||
FZoomMode := AZoomMode;
|
||||
|
||||
// Instruct the GridPrinter to create the preview bitmap of the selected page
|
||||
bmp := FGridPrinter.CreatePreviewBitmap(FPageNumber, FZoom);
|
||||
try
|
||||
// Load the bitmap into the PreviewImage component
|
||||
PreviewImage.Width := bmp.Width;
|
||||
PreviewImage.Height := bmp.Height;
|
||||
PreviewImage.Picture.Bitmap.Assign(bmp);
|
||||
FPageCount := FGridPrinter.PageCount;
|
||||
UpdateInfoPanel;
|
||||
finally
|
||||
bmp.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ToolBarResize(Sender: TObject);
|
||||
begin
|
||||
UpdateInfoPanel;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.UpdateInfoPanel;
|
||||
begin
|
||||
InfoPanel.Caption := Format(RSPageAndZoomInfo, [FPageNumber, FPageCount, FZoom]);
|
||||
InfoPanel.Width := InfoPanel.Canvas.TextWidth(InfoPanel.Caption);
|
||||
InfoPanel.Left := Toolbar.ClientWidth - InfoPanel.Width - 8;
|
||||
edPageNumber.Text := IntToStr(FPageNumber);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.UpdateStrings;
|
||||
begin
|
||||
Caption := RSPrintPreview;
|
||||
|
||||
// Toolbar captions
|
||||
acPrint.Caption := RSPrint;
|
||||
acClose.Caption := RSClose;
|
||||
|
||||
// Toolbar hints
|
||||
acPrint.Hint := RSPrint;
|
||||
acClose.Hint := RSClose;
|
||||
acFirstPage.Hint := RSShowFirstPage;
|
||||
acPrevPage.Hint := RSShowPrevPage;
|
||||
acNextPage.Hint := RSShowNextPage;
|
||||
acLastPage.Hint := RSShowLastPage;
|
||||
acZoomIn.Hint := RSZoomIn;
|
||||
acZoomOut.Hint := RSZoomOut;
|
||||
acZoomToFitWidth.Hint := RSZoomToFitPageWidth;
|
||||
acZoomToFitHeight.Hint := RSZoomToFitPageHeight;
|
||||
acZoom100.Hint := RSOriginalSize;
|
||||
acPageMargins.Hint := RSPageMarginsConfig;
|
||||
acHeaderFooter.Hint := RSHeaderFooterConfig;
|
||||
acPortrait.Hint := RSPortraitPageOrientation;
|
||||
acLandscape.Hint := RSLandscapePageOrientation;
|
||||
acPrintColsFirst.Hint := RSPrintColsFirst;
|
||||
acPrintRowsFirst.Hint := RSPrintRowsFirst;
|
||||
end;
|
||||
|
||||
|
||||
{ Adjusts FZoomMin to avoid the situation that, due to integer rounding,
|
||||
the zoom factor cannot be changed any more by clicking a zoom button or
|
||||
by mousewheel. }
|
||||
procedure TGridPrintPreviewForm.VerifyZoomMin;
|
||||
var
|
||||
nextHigherZoom: Integer;
|
||||
begin
|
||||
nextHigherZoom := round(FZoomMin * ZOOM_MULTIPLIER);
|
||||
while nextHigherZoom = FZoomMin do
|
||||
begin
|
||||
FZoomMin := nextHigherZoom + 1;
|
||||
nextHigherZoom := round(FZoomMin * ZOOM_MULTIPLIER);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ZoomToFitHeight;
|
||||
var
|
||||
h: Integer;
|
||||
begin
|
||||
if Printer = nil then
|
||||
exit;
|
||||
|
||||
// Correct for scrollbar height when the horizontal scrollbar is currently hidden,
|
||||
// but will be shown after displaying the preview page.
|
||||
if (not Scrollbox.HorzScrollbar.IsScrollbarVisible) and
|
||||
(Printer.PageHeight/Printer.PageWidth < Scrollbox.ClientHeight/Scrollbox.ClientWidth)
|
||||
then
|
||||
h := Scrollbox.HorzScrollbar.ClientSizeWithBar
|
||||
else
|
||||
h := Scrollbox.ClientHeight;
|
||||
h := h - 2*PreviewImage.Top;
|
||||
FZoom := round(h / Printer.PageHeight * Printer.YDPI / ScreenInfo.PixelsPerInchY * 100);
|
||||
ShowPage(FPageNumber, FZoom, zmFitHeight);
|
||||
end;
|
||||
|
||||
procedure TGridPrintPreviewForm.ZoomToFitWidth;
|
||||
var
|
||||
w: Integer;
|
||||
begin
|
||||
if Printer = nil then
|
||||
exit;
|
||||
|
||||
// Correct for scrollbar width when the vert scrollbar is currently hidden,
|
||||
// but will be shown after displaying the preview page.
|
||||
if (not Scrollbox.VertScrollbar.IsScrollbarVisible) and
|
||||
(Printer.PageHeight/Printer.PageWidth > Scrollbox.ClientHeight/Scrollbox.ClientWidth)
|
||||
then
|
||||
w := Scrollbox.VertScrollbar.ClientSizeWithBar
|
||||
else
|
||||
w := Scrollbox.ClientWidth;
|
||||
w := w - 2*PreviewImage.Left;
|
||||
FZoom := round(w / Printer.PageWidth * Printer.XDPI/ ScreenInfo.PixelsPerInchX * 100);
|
||||
ShowPage(FPageNumber, FZoom, zmFitWidth);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
25
components/gridprinter/source/gridprnreg.pas
Normal file
25
components/gridprinter/source/gridprnreg.pas
Normal file
@ -0,0 +1,25 @@
|
||||
unit GridPrnReg;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils;
|
||||
|
||||
procedure Register;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
GridPrn, GridPrnPreviewDlg;
|
||||
|
||||
{$R gridprinter_icons.res}
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents('Misc', [TGridPrinter, TGridPrintPreviewDialog]);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
67
components/gridprinter/source/gridprnstrings.pas
Normal file
67
components/gridprinter/source/gridprnstrings.pas
Normal file
@ -0,0 +1,67 @@
|
||||
unit GridPrnStrings;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils;
|
||||
|
||||
resourcestring
|
||||
// Print Preview
|
||||
RSPrintPreview = 'Print Preview';
|
||||
RSPrint = 'Print';
|
||||
RSClose = 'Close';
|
||||
|
||||
RSShowFirstPage = 'Show first page';
|
||||
RSShowPrevPage = 'Show previous page';
|
||||
RSShowNextPage = 'Show next page';
|
||||
RSShowLastPage = 'Show last page';
|
||||
RSZoomIn = 'Zoom in';
|
||||
RSZoomOut = 'Zoom out';
|
||||
RSZoomToFitPageWidth = 'Zoom to fit page width';
|
||||
RSZoomToFitPageHeight = 'Zoom to fit page height';
|
||||
RSOriginalSize = 'Original size (100%)';
|
||||
RSPageMarginsConfig = 'Page margins configuration';
|
||||
RSHeaderFooterConfig = 'Header/footer configuration';
|
||||
RSPortraitPageOrientation = 'Portrait page orientation';
|
||||
RSLandscapePageOrientation = 'Landscape page orientation';
|
||||
RSPrintColsFirst = 'First print columns from top to bottom,' + LineEnding +
|
||||
'then print from left to right';
|
||||
RSPrintRowsFirst = 'First print rows from left to right,' + LineEnding +
|
||||
'then print from top to bottom';
|
||||
|
||||
RSLeftMargin = 'Left margin';
|
||||
RSTopMargin = 'Top margin';
|
||||
RSRightMargin = 'Right margin';
|
||||
RSBottomMargin = 'Bottom margin';
|
||||
RSHeaderMargin = 'Header margin';
|
||||
RSFooterMargin = 'Footer margin';
|
||||
|
||||
RSPageAndZoomInfo = 'Page %d of %d, Zoom %d %%';
|
||||
|
||||
// Header / footer
|
||||
RSHeader = 'Header';
|
||||
RSFooter = 'Footer';
|
||||
RSShow = 'Show';
|
||||
RSFont = 'Font';
|
||||
RSHeaderFooterSectionParameterInfo =
|
||||
'Each section can contain the following parameters:' + LineEnding +
|
||||
' $DATE - Current date' + LineEnding +
|
||||
' $TIME - Current time' + LineEnding +
|
||||
' $PAGE - Page number' + LineEnding +
|
||||
' $PAGECOUNT - Number of pages' + LineEnding +
|
||||
' $FULL_FILENAME - Full name of the printed file' + LineEnding +
|
||||
' $FILENAME - Name of the printed file, without path' + LineEnding +
|
||||
' $PATH - Path of the printed file';
|
||||
RSShowDividingLine = 'Show dividing line';
|
||||
RSLineWidthMM = 'Line width (mm)';
|
||||
RSLineColor = 'Line color';
|
||||
RSTextInLeftAlignedSection = 'Text in left-aligned section';
|
||||
RSTextInCenteredSection = 'Text in centered section';
|
||||
RSTextInRightAlignedSection = 'Text in right-aligned section';
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
|
Reference in New Issue
Block a user