171 lines
5.9 KiB
ObjectPascal
171 lines
5.9 KiB
ObjectPascal
unit Unit1;
|
||
|
||
{$mode objfpc}{$H+}
|
||
|
||
interface
|
||
|
||
uses
|
||
Classes, SysUtils, FileUtil, rxmemds, rxdbgrid, RxDBGridExportPdf,
|
||
Forms, Controls,
|
||
Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Spin, db;
|
||
|
||
type
|
||
|
||
{ TForm1 }
|
||
|
||
TForm1 = class(TForm)
|
||
Button1: TButton;
|
||
CheckBox1: TCheckBox;
|
||
DataSource1: TDataSource;
|
||
ImageList1: TImageList;
|
||
Memo1: TMemo;
|
||
PageControl1: TPageControl;
|
||
Panel1: TPanel;
|
||
RxDBGrid1: TRxDBGrid;
|
||
RxDBGridExportPDF1: TRxDBGridExportPDF;
|
||
RxMemoryData1: TRxMemoryData;
|
||
RxMemoryData1Country: TStringField;
|
||
RxMemoryData1FLAG: TLongintField;
|
||
RxMemoryData1ID: TAutoIncField;
|
||
RxMemoryData1NAME: TStringField;
|
||
RxMemoryData1PDATE: TDateField;
|
||
RxMemoryData1Sity: TStringField;
|
||
RxMemoryData1SUM: TCurrencyField;
|
||
TabSheet1: TTabSheet;
|
||
TabSheet2: TTabSheet;
|
||
procedure Button1Click(Sender: TObject);
|
||
procedure CheckBox1Change(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||
procedure FormCreate(Sender: TObject);
|
||
private
|
||
FontDirList: TStrings;
|
||
procedure InitFonts;
|
||
procedure ShowInfo(AText:string; AParams : array of const);
|
||
procedure DebugFonts;
|
||
procedure CreateFontDirList;
|
||
public
|
||
{ public declarations }
|
||
end;
|
||
|
||
var
|
||
Form1: TForm1;
|
||
|
||
implementation
|
||
uses fpTTF, LazFileUtils;
|
||
|
||
{$R *.lfm}
|
||
const
|
||
TestText = 'Образец текста';
|
||
|
||
{ TForm1 }
|
||
|
||
procedure TForm1.FormCreate(Sender: TObject);
|
||
begin
|
||
RxDBGridExportPDF1.ShowSetupForm:=true;
|
||
PageControl1.ActivePageIndex:=0;
|
||
RxMemoryData1.Open;
|
||
RxMemoryData1.AppendRecord([1, 'Строка с длинным текстом 1', now, 100, 'Россия', 'Москва', 0]);
|
||
RxMemoryData1.AppendRecord([2, 'Строка с длинным текстом 2', now - 1, 100, 'Россия', 'Ставрополь', 1]);
|
||
RxMemoryData1.AppendRecord([3, 'Строка с длинным текстом 3', now - 2, 110, 'Россия', 'Калининград', 2]);
|
||
RxMemoryData1.AppendRecord([4, 'Строка с длинным текстом 4', now - 3, 5000, 'Россия', 'Владивасток', 0]);
|
||
RxMemoryData1.AppendRecord([5, 'Строка с длинным текстом 5', now - 4, 123.31, 'USA', 'New-York', 0]);
|
||
RxMemoryData1.AppendRecord([6, 'Строка с длинным текстом 6', now, 100, 'Россия', 'Москва', 0]);
|
||
RxMemoryData1.AppendRecord([7, 'Строка с длинным текстом 7', now - 1, 100, 'Россия', 'Ставрополь', 2]);
|
||
RxMemoryData1.AppendRecord([8, 'Строка с длинным текстом 8', now - 2, 110, 'Россия', 'Калининград', 1]);
|
||
RxMemoryData1.AppendRecord([9, 'Строка с длинным текстом 9', now - 3, 5000, 'Россия', 'Владивасток', 0]);
|
||
RxMemoryData1.AppendRecord([10,'Строка с длинным текстом 10', now - 4, 123.31, 'USA', 'New-York', 3]);
|
||
RxMemoryData1.AppendRecord([11,'Строка с длинным текстом 11', now, 100, 'Россия', 'Москва', 2]);
|
||
RxMemoryData1.AppendRecord([12,'Строка с длинным текстом 12', now - 1, 100, 'Россия', 'Ставрополь', 1]);
|
||
RxMemoryData1.AppendRecord([13,'Строка с длинным текстом 13', now - 2, 110, 'Россия', 'Калининград', 0]);
|
||
RxMemoryData1.AppendRecord([14,'Строка с длинным текстом 14', now - 3, 5000, 'Россия', 'Владивасток', 3]);
|
||
RxMemoryData1.AppendRecord([15,'Строка с длинным текстом 15', now - 4, 123.31, 'USA', 'New-York', 2]);
|
||
RxMemoryData1.AppendRecord([16,'Строка с длинным текстом 16', now, 100, 'Россия', 'Москва', 1]);
|
||
RxMemoryData1.AppendRecord([17,'Строка с длинным текстом 17', now - 1, 100, 'Россия', 'Ставрополь', 0]);
|
||
RxMemoryData1.AppendRecord([18,'Строка с длинным текстом 18', now - 2, 110, 'Россия', 'Калининград', 3]);
|
||
RxMemoryData1.AppendRecord([19,'Строка с длинным текстом 19', now - 3, 5000, 'Россия', 'Владивасток', 2]);
|
||
RxMemoryData1.AppendRecord([20,'Строка с длинным текстом 20', now - 4, 123.31, 'USA', 'New-York', 1]);
|
||
RxMemoryData1.First;
|
||
|
||
CreateFontDirList;
|
||
DebugFonts;
|
||
end;
|
||
|
||
procedure TForm1.CreateFontDirList;
|
||
var
|
||
s: String;
|
||
begin
|
||
FontDirList := TStringList.Create;
|
||
{$IFDEF WINDOWS}
|
||
s := SHGetFolderPathUTF8(20); // CSIDL_FONTS = 20
|
||
if s <> '' then
|
||
FontDirList.Add(s);
|
||
{$ENDIF}
|
||
{$IFDEF linux}
|
||
FontDirList.Add('/usr/share/cups/fonts/');
|
||
FontDirList.Add('/usr/share/fonts/');
|
||
FontDirList.Add('/usr/local/lib/X11/fonts/');
|
||
FontDirList.Add(GetUserDir + '.fonts/');
|
||
{$ENDIF}
|
||
end;
|
||
|
||
procedure TForm1.InitFonts;
|
||
begin
|
||
if FontDirList = nil then
|
||
CreateFontDirList;
|
||
end;
|
||
|
||
procedure TForm1.ShowInfo(AText: string; AParams: array of const);
|
||
begin
|
||
Memo1.Lines.Add(Format(AText, AParams));
|
||
end;
|
||
|
||
procedure TForm1.DebugFonts;
|
||
var
|
||
i: Integer;
|
||
begin
|
||
Memo1.Lines.Clear;
|
||
gTTFontCache.BuildFontCacheIgnoresErrors:=true;
|
||
gTTFontCache.SearchPath.Assign(FontDirList);
|
||
gTTFontCache.BuildFontCache;
|
||
|
||
for i:=0 to gTTFontCache.Count-1 do
|
||
begin
|
||
ShowInfo('%s - %s - %s', [gTTFontCache.Items[i].FileName, gTTFontCache.Items[i].FamilyName, gTTFontCache.Items[i].PostScriptName]);
|
||
end;
|
||
end;
|
||
|
||
procedure TForm1.Button1Click(Sender: TObject);
|
||
begin
|
||
RxDBGridExportPDF1.ShowSetupForm:=false;
|
||
RxDBGridExportPDF1.Execute;
|
||
RxDBGridExportPDF1.ShowSetupForm:=true;
|
||
end;
|
||
|
||
procedure TForm1.CheckBox1Change(Sender: TObject);
|
||
begin
|
||
RxDBGridExportPDF1.Enabled:=CheckBox1.Checked;
|
||
end;
|
||
|
||
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||
begin
|
||
FreeAndNil(FontDirList);
|
||
end;
|
||
|
||
end.
|
||
|
||
{
|
||
'Conakry'
|
||
'DejaVu Sans'
|
||
'DejaVu Sans Condensed'
|
||
'DejaVu Sans Light'
|
||
'DejaVu Sans Mono'
|
||
'DejaVu Serif'
|
||
'DejaVu Serif Condensed'
|
||
|
||
'Denemo'
|
||
|
||
'FreeSans'
|
||
'Caladea'
|
||
'Carlito'
|
||
}
|