📄 rm_newrp.pas
字号:
{*****************************************}
{ }
{ Report Machine v2.0 }
{ Template viewer }
{ }
{*****************************************}
unit RM_newrp;
interface
{$I RM.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, rm_Wizard{$IFDEF Delphi4}, ImgList, Buttons{$ENDIF};
type
TRMTemplForm = class(TForm)
btnOK: TButton;
btnCancel: TButton;
ImageList1: TImageList;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Image1: TImage;
Memo1: TMemo;
lsvTempl: TListView;
lsvWizard: TListView;
ImageListWizard: TImageList;
procedure lsvTemplDblClick(Sender: TObject);
procedure lsvTemplClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure lsvWizardClick(Sender: TObject);
private
{ Private declarations }
procedure ClearTempl;
procedure GetTempReport;
procedure GetWizard;
procedure Localize;
public
{ Public declarations }
atype: Integer;
TemplName: string;
WizardClass: TrmReportWizardClass;
end;
implementation
uses RM_Const, RM_Class, RM_Desgn, RM_Utils;
{$R *.DFM}
type
TTemplObject = class
private
protected
public
FileName: string;
end;
var
Path: string;
procedure TRMTemplForm.Localize;
begin
Font.Name := RMLoadStr(SRMDefaultFontName);
Font.Size := StrToInt(RMLoadStr(SRMDefaultFontSize));
Font.Charset := StrToInt(RMLoadStr(SCharset));
RMSetStrProp(Self, 'Caption', rmRes + 780);
RMSetStrProp(GroupBox1, 'Caption', rmRes + 781);
RMSetStrProp(TabSheet1, 'Caption', rmRes + 782);
RMSetStrProp(TabSheet2, 'Caption', rmRes + 783);
btnOK.Caption := RMLoadStr(SOk);
btnCancel.Caption := RMLoadStr(SCancel);
end;
procedure TRMTemplForm.ClearTempl;
begin
while lsvTempl.Items.Count > 0 do
begin
TTemplObject(lsvTempl.Items[0].Data).Free;
lsvTempl.Items.Delete(0);
end;
end;
procedure TRMTemplForm.GetTempReport;
var
SearchRec: TSearchRec;
r: Word;
tmp: TTemplObject;
begin
Path := RMTemplateDir;
if RMTemplateDir = '' then
Path := ExtractFilePath(ParamStr(0))
else if Path[Length(Path)] <> '\' then
Path := Path + '\';
ClearTempl;
with lsvTempl.Items.Add do
begin
ImageIndex := 0;
StateIndex := 0;
Caption := RMLoadStr(rmRes + 839);
tmp := TTemplObject.Create;
tmp.FileName := '';
Data := tmp;
end;
R := FindFirst(Path + '*.rmt', faAnyFile, SearchRec);
while R = 0 do
begin
if (SearchRec.Attr and faDirectory) = 0 then
begin
with lsvTempl.Items.Add do
begin
ImageIndex := 0;
StateIndex := 0;
Caption := ChangeFileExt(SearchRec.Name, '');
tmp := TTemplObject.Create;
tmp.FileName := Path + ChangeFileExt(SearchRec.Name, '.rmt');
Data := tmp;
end;
end;
R := FindNext(SearchRec);
end;
FindClose(SearchRec);
Memo1.Lines.Clear;
Image1.Picture.Bitmap.Assign(nil);
btnOK.Enabled := False;
end;
procedure TRMTemplForm.GetWizard;
var
lClass: TClass;
liIndex: Integer;
lBitMap: TBitmap;
FTemplateClasses: TList;
begin
FTemplateClasses := rmGetWizardClassList;
if FTemplateClasses.Count = 0 then Exit;
lBitMap := TBitmap.Create;
{ for liIndex := 0 to FTemplateClasses.Count - 1 do
begin
lClass := TClass(FTemplateClasses[liIndex]);
if (lBitMap.Width = 32) and (lBitMap.Height = 32) then
ImageListWizard.AddMasked(lBitMap, clWhite);
end;
}
lsvWizard.LargeImages := ImageListWizard;
for liIndex := 0 to FTemplateClasses.Count - 1 do
begin
lClass := TClass(FTemplateClasses[liIndex]);
with lsvWizard.Items.Add do
begin
ImageIndex := liIndex;
Data := lClass;
Caption := TrmWizardClass(lClass).ClassDescription;
end;
end;
lBitMap.Free;
btnOK.Enabled := False;
end;
procedure TRMTemplForm.FormShow(Sender: TObject);
begin
GetTempReport;
GetWizard;
end;
procedure TRMTemplForm.lsvTemplClick(Sender: TObject);
begin
btnOK.Enabled := lsvTempl.Selected <> nil;
if btnOK.Enabled then
begin
atype := 1;
TemplName := TTemplObject(lsvTempl.Selected.Data).FileName;
if Length(TemplName) > 0 then
CurReport.LoadTemplate(TemplName, Memo1.Lines, Image1.Picture.Bitmap, False);
end;
end;
procedure TRMTemplForm.lsvTemplDblClick(Sender: TObject);
begin
if btnOK.Enabled then
ModalResult := mrOk;
end;
procedure TRMTemplForm.FormCreate(Sender: TObject);
begin
Localize;
PageControl1.ActivePage := tabSheet1;
end;
procedure TRMTemplForm.FormDestroy(Sender: TObject);
begin
ClearTempl;
end;
procedure TRMTemplForm.PageControl1Change(Sender: TObject);
begin
btnOK.Enabled := FALSE;
end;
procedure TRMTemplForm.lsvWizardClick(Sender: TObject);
begin
btnOK.Enabled := lsvWizard.Selected <> nil;
if btnOK.Enabled then
begin
atype := 2;
WizardClass := TrmReportWizardClass(lsvWizard.Selected.Data);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -