📄 sailreportediter.pas
字号:
unit sailreportediter;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,TypInfo, ComCtrls, StdCtrls, ExtCtrls ,sailreport,printers,CustomsailPrint,
Buttons, Menus, ImgList, ToolWin;
type
Tsailreportediterfrm = class(TForm)
Panel1: TPanel;
FontDialog1: TFontDialog;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Panel2: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
ComboBox1: TComboBox;
Edit2: TEdit;
Edit1: TEdit;
ComboBox2: TComboBox;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
GroupBox2: TGroupBox;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Panel3: TPanel;
Image1: TImage;
Panel4: TPanel;
Image2: TImage;
Panel5: TPanel;
Image3: TImage;
Panel6: TPanel;
Image4: TImage;
Label18: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
Edit7: TEdit;
GroupBox3: TGroupBox;
Memo1: TMemo;
GroupBox4: TGroupBox;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
ComboBox3: TComboBox;
Panel7: TPanel;
Image5: TImage;
Panel8: TPanel;
Image6: TImage;
Panel9: TPanel;
Image7: TImage;
Edit8: TEdit;
Panel10: TPanel;
Image8: TImage;
Edit9: TEdit;
GroupBox5: TGroupBox;
ListView1: TListView;
GroupBox6: TGroupBox;
ListBox1: TListBox;
Panel13: TPanel;
Label6: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label26: TLabel;
ComboBox4: TComboBox;
GroupBox7: TGroupBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
ColorBox1: TColorBox;
ComboBox5: TComboBox;
Panel11: TPanel;
Image9: TImage;
Edit10: TEdit;
GroupBox8: TGroupBox;
Label27: TLabel;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
Edit11: TEdit;
Edit12: TEdit;
GroupBox9: TGroupBox;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Label31: TLabel;
ComboBox6: TComboBox;
ColorBox2: TColorBox;
Panel12: TPanel;
Image10: TImage;
Memo2: TMemo;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ImageList1: TImageList;
SpeedButton1: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
function rfloat(key:char;source:string):char;
function rint(key:char;source:string):char;
procedure Image4DblClick(Sender: TObject);
procedure Image8DblClick(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
procedure Image2DblClick(Sender: TObject);
procedure Image3DblClick(Sender: TObject);
procedure Image5DblClick(Sender: TObject);
procedure Image6DblClick(Sender: TObject);
procedure Image7DblClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure CheckBox4Click(Sender: TObject);
procedure CheckBox5Click(Sender: TObject);
procedure CheckBox6Click(Sender: TObject);
procedure CheckBox7Click(Sender: TObject);
procedure Image9DblClick(Sender: TObject);
procedure Image10DblClick(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure ComboBox2Click(Sender: TObject);
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit3KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit4KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit5KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit6KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit7KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ComboBox3Click(Sender: TObject);
procedure Edit8KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit9KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ComboBox4Click(Sender: TObject);
procedure ColorBox1Click(Sender: TObject);
procedure ComboBox5Click(Sender: TObject);
procedure Edit10KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit11KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit12KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ComboBox6Click(Sender: TObject);
procedure ColorBox2Click(Sender: TObject);
procedure Memo2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ToolButton6Click(Sender: TObject);
private
public
sailreport:Tsailreport;
constructor Create(AOwner: TComponent;sender:Tsailreport);
end;
var
sailreportediterfrm: Tsailreportediterfrm;
implementation
{$R *.dfm}
uses sailsetpen,sailsettitle,sailabout;
constructor Tsailreportediterfrm.Create(AOwner: TComponent; sender:tsailreport);
begin
inherited create(aowner);
sailreport:=sender;
end;
procedure Tsailreportediterfrm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
sailreportediterfrm:=nil;
end;
procedure Tsailreportediterfrm.FormShow(Sender: TObject);
var i:integer;
begin
with sailreport.Page do
begin
if PageSize=A3 then combobox1.ItemIndex:=0
else if PageSize=A4 then combobox1.ItemIndex:=1
else if PageSize=A5 then combobox1.ItemIndex:=2
else if PageSize=B4 then combobox1.ItemIndex:=3
else if PageSize=B5 then combobox1.ItemIndex:=4
else if PageSize=CSheet then combobox1.ItemIndex:=5
else if PageSize=Custom then combobox1.ItemIndex:=6
else if PageSize=Default then combobox1.ItemIndex:=7
else if PageSize=Executive then combobox1.ItemIndex:=8
else if PageSize=Letter then combobox1.ItemIndex:=9;
edit1.Text:=floattostr(width);
edit2.Text:=floattostr(height);
if Orientation=poPortrait then combobox2.ItemIndex:=0 else combobox2.ItemIndex:=1;
edit3.Text:=floattostr(LeftMargin);
edit4.Text:=floattostr(RightMargin);
edit5.Text:=floattostr(TopMargin);
edit6.Text:=floattostr(BottomMargin);
end;
with sailreport.Bands do
for i:=0 to count-1 do with ListView1.Items.Add do
begin
caption:=items[i].Text;
if items[i].BandType=ReportTitle then subitems.Append('报表标题')
else if items[i].BandType=PageHeader then subitems.Append('页眉')
else if items[i].BandType=PageFooter then subitems.Append('页脚')
else if items[i].BandType=DetailHeader then subitems.Append('明细表头')
else if items[i].BandType=DetailFooter then subitems.Append('明细表尾');
if items[i].Alignment=taLeftJustify then subitems.Append('居左')
else if items[i].Alignment=taRightJustify then subitems.Append('居右')
else if items[i].Alignment=taCenter then subitems.Append('居中');
subitems.Append(floattostr(items[i].Space));
end;
with sailreport.ColsTitle do
begin
image1.Canvas.Pen.Assign(ColsLine);
image1.Canvas.Polyline([Point(image1.Width div 2,0),Point(image1.Width div 2,image1.Height)]);
image2.Canvas.Pen.Assign(rowsLine);
image2.Canvas.Polyline([Point(0,image2.Height div 2),Point(image2.Width,image2.Height div 2)]);
image3.Canvas.Pen.Assign(Frame.pen);
if Frame.Shape=fbox then
begin
image3.Canvas.Polyline([Point(3,3),Point(image3.Width-4,3),Point(image3.Width-4,image3.Height-3),Point(3,image3.Height-3),Point(3,3)]) ;
image3.Tag:=1;
end else if Frame.Shape=FLeftLine then
begin
image3.Canvas.Polyline([Point(3,3),Point(3,image3.Height-3)]);
image3.Tag:=2;
end else if Frame.Shape=FTopLine then
begin
image3.Canvas.Polyline([Point(3,3),Point(image3.Width-4,3)]);
image3.Tag:=3;
end else if Frame.Shape=FRightLine then
begin
image3.Canvas.Polyline([Point(image3.Width-4,3),Point(image3.Width-4,image3.Height-3)]);
image3.Tag:=4;
end else
begin
image3.Canvas.Polyline([Point(image3.Width-4,image3.Height-3),Point(3,image3.Height-3)]);
image3.Tag:=5;
end;
CheckBox1.Checked:=EveryPage;
CheckBox2.Checked:=EveryRow;
CheckBox3.Checked:=Print;
image4.Canvas.Font.Assign(font);
image4.Canvas.TextOut(3,(image4.Height-image4.Canvas.TextHeight('例')) div 2,'例');
Edit7.Text:=floattostr(rowspace);
Memo1.Lines.Assign(TitleArray);
end;
with sailreport.Detail do
begin
image5.Canvas.Pen.Assign(ColsLine);
image5.Canvas.Polyline([Point(image5.Width div 2,0),Point(image5.Width div 2,image5.Height)]);
image6.Canvas.Pen.Assign(rowsLine);
image6.Canvas.Polyline([Point(0,image6.Height div 2),Point(image6.Width,image6.Height div 2)]);
image7.Canvas.Pen.Assign(Frame.pen);
if Frame.Shape=fbox then
begin
image7.Canvas.Polyline([Point(3,3),Point(image7.Width-4,3),Point(image7.Width-4,image7.Height-3),Point(3,image7.Height-3),Point(3,3)]) ;
image7.Tag:=1;
end else if Frame.Shape=FLeftLine then
begin
image7.Canvas.Polyline([Point(3,3),Point(3,image7.Height-3)]);
image7.Tag:=2;
end else if Frame.Shape=FTopLine then
begin
image7.Canvas.Polyline([Point(3,3),Point(image7.Width-4,3)]);
image7.Tag:=3;
end else if Frame.Shape=FRightLine then
begin
image7.Canvas.Polyline([Point(image7.Width-4,3),Point(image7.Width-4,image7.Height-3)]);
image7.Tag:=4;
end else
begin
image7.Canvas.Polyline([Point(image7.Width-4,image7.Height-3),Point(3,image7.Height-3)]);
image7.Tag:=5;
end;
if Arrange=Horizontal then ComboBox3.ItemIndex:=0 else ComboBox3.ItemIndex:=1;
image8.Canvas.Font.Assign(font);
image8.Canvas.TextOut(3,(image8.Height-image8.Canvas.TextHeight('例')) div 2,'例');
Edit8.Text:=floattostr(rowspace);
Edit9.Text:=floattostr(top);
end;
for i:=0 to sailreport.Columns.Count-1 do ListBox1.Items.Append(sailreport.Columns.Items[i].FieldName);
end;
procedure Tsailreportediterfrm.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
key:=rfloat(key,(sender as tEdit).text);
end;
function Tsailreportediterfrm.rfloat(key:char;source:string):char;
begin
if not (key in ['0'..'9']) and (key<>chr(vk_back)) and (key<>'.') then result:=#0 else
begin
result:=key;
if key='.' then if pos('.',source)>0 then result:=#0 else result:=key;
end;
end;
function Tsailreportediterfrm.rint(key:char;source:string):char;
begin
if not (key in ['0'..'9']) and (key<>chr(vk_back)) then result:=#0 else result:=key;
end;
procedure Tsailreportediterfrm.Image4DblClick(Sender: TObject);
var i:integer;
begin
FontDialog1.Font:=image4.Canvas.Font;
if FontDialog1.Execute then
begin
image4.Canvas.Font.Assign(FontDialog1.font);
image4.Canvas.FillRect(rect(0,0,image4.Width,image4.Height));
image4.Canvas.TextOut(3,(image4.Height-image4.Canvas.TextHeight('例')) div 2,'例');
end;
sailreport.ColsTitle.Font.Assign(image4.Canvas.Font);
for i:=0 to sailreport.Columns.Count-1 do sailreport.Columns.Items[i].Title.Font.Assign(image4.Canvas.Font);
end;
procedure Tsailreportediterfrm.Image8DblClick(Sender: TObject);
var i:integer;
begin
FontDialog1.Font:=image8.Canvas.Font;
if FontDialog1.Execute then
begin
image8.Canvas.Font.Assign(FontDialog1.font);
image8.Canvas.FillRect(rect(0,0,image8.Width,image8.Height));
image8.Canvas.TextOut(3,(image8.Height-image8.Canvas.TextHeight('例')) div 2,'例');
end;
sailreport.Detail.Font.Assign(image8.Canvas.Font);
for i:=0 to sailreport.Columns.Count-1 do sailreport.Columns.Items[i].Font.Assign(image8.Canvas.Font);
ListBox1Click(self);
end;
procedure Tsailreportediterfrm.Image1DblClick(Sender: TObject);
begin
sailsetpenfrm:=tsailsetpenfrm.Create(self);
sailsetpenfrm.img:=image1;
sailsetpenfrm.line:=1;
sailsetpenfrm.ShowModal;
sailreport.ColsTitle.ColsLine.Assign(image1.Canvas.Pen);
end;
procedure Tsailreportediterfrm.Image2DblClick(Sender: TObject);
begin
sailsetpenfrm:=tsailsetpenfrm.Create(self);
sailsetpenfrm.img:=image2;
sailsetpenfrm.line:=2;
sailsetpenfrm.ShowModal;
sailreport.ColsTitle.rowsLine.Assign(image2.Canvas.Pen);
end;
procedure Tsailreportediterfrm.Image3DblClick(Sender: TObject);
begin
sailsetpenfrm:=tsailsetpenfrm.Create(self);
sailsetpenfrm.img:=image3;
sailsetpenfrm.line:=3;
sailsetpenfrm.ComboBox2.ItemIndex:=image3.Tag-1;
sailsetpenfrm.ShowModal;
sailreport.ColsTitle.Frame.pen.Assign(image3.Canvas.Pen);
case image3.Tag of
1:sailreport.ColsTitle.Frame.Shape:=fbox;
2:sailreport.ColsTitle.Frame.Shape:=FLeftLine;
3:sailreport.ColsTitle.Frame.Shape:=FTopLine;
4:sailreport.ColsTitle.Frame.Shape:=FRightLine;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -