Delphi程序执行时实时生成报表(3)

2008-04-09 04:30:07来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


PS.ItemIndex:=I;
Break;
end;
//判断纸张宽度是否可以更改,只有纸张类型为自定义(Ps.ItemIndex=26)才能更改
PaperH.Enabled:=Ps.ItemIndex=26;
PaperW.Enabled:=Ps.ItemIndex=26;
end;

procedure TPrintForm.RadioButtonClick(Sender: TObject);
//纸张方向改变事件处理
var
S:String;
begin
Image1.Visible:=R1.Checked;
Image2.Visible:=R2.Checked;
if R1.Checked then
QuickRep.Page.Orientation:=poPortrait
else
QuickRep.Page.Orientation:=poLandscape;
//交换纸张宽度和长度的值
S:=PaperH.Text;
PaperH.Text:=PaperW.Text;
PaperW.Text:=S;
if (Ps.ItemIndex=26) or (Ps.ItemIndex=0) then begin
QuickRep.Page.Width:=StrToFloat(PaperW.Text);
QuickRep.Page.Length:=StrToFloat(PaperH.Text);
end;
end;

procedure TPrintForm.PageDluxClick(Sender: TObject);
begin
QuickRep.PrinterSettings.Duplex:=PageDlux.Checked;
end;

procedure TPrintForm.PageColChange(Sender: TObject);
begin
if StrToInt(PageCol.Text)<1 then PageCol.Text:=''''1'''';
QuickRep.Page.Columns:=StrToInt(PageCol.Text);
end;

procedure TPrintForm.PageSpaceExit(Sender: TObject);
begin
QuickRep.Page.ColumnSpace:=StrToFloat(PageSpace.Text);
end;

procedure TPrintForm.PagesChange(Sender: TObject);
begin
if StrToInt(Pages.Text)<1 then Pages.Text:=''''1'''';
QuickRep.PrinterSettings.Copies:=StrToInt(Pages.Text);
end;

procedure TPrintForm.PageTopExit(Sender: TObject);
begin
QuickRep.Page.TopMargin:=StrToFloat(PageTop.Text);
end;

procedure TPrintForm.PageBottomExit(Sender: TObject);
begin
QuickRep.Page.BottomMargin:=StrToFloat(PageBottom.Text);
end;

procedure TPrintForm.PageLeftExit(Sender: TObject);
begin
QuickRep.Page.LeftMargin:=StrToFloat(PageLeft.Text);
end;

procedure TPrintForm.PageRightExit(Sender: TObject);
begin
QuickRep.Page.RightMargin:=StrToFloat(PageRight.Text);
end;

procedure TPrintForm.TTExit(Sender: TObject);//标题更改事件处理
begin
QuickRep.ReportTitle:=TT.Text;
Title.Caption:=TT.Text;
Bt:=TT.Text;
end;

procedure TPrintForm.DTClick(Sender: TObject);//打印查询条件复选框事件
begin
QRSQL.Enabled:=SR.Checked;
end;

procedure TPrintForm.BtnPrviewClick(Sender: TObject);//预览按钮单击事件
begin
QuickRep.Preview;
end;

procedure TPrintForm.BtnSetClick(Sender: TObject); //设置按钮单击事件
begin
QuickRep.PrinterSetup;
end;

procedure TPrintForm.PsChange(Sender: TObject);//纸张类型改变事件
begin
QuickREp.Page.PaperSize:=PaperSize[Ps.ItemIndex];
PaperH.Text:=FormatFloat(''''0.00'''',QuickRep.Page.Length);
PaperW.Text:=FormatFloat(''''0.00'''',QuickRep.Page.Width);
PaperH.Enabled:=Ps.ItemIndex=26;
PaperW.Enabled:=Ps.ItemIndex=26;
CrtRep.Enabled:=True;
BtnPrint.Enabled:=not CrtRep.Enabled;
BtnPrview.Enabled:=BtnPrint.Enabled;
end;

procedure TPrintForm.PaperChange(Sender: TObject);//纸张宽度和长度改变事件
begin
QuickRep.Page.Width:=StrToFloat(PaperW.Text);
QuickRep.Page.Length:=StrToFloat(PaperH.Text);
end;

procedure TPrintForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;

procedure TPrintForm.FormDestroy(Sender: TObject);
begin
ClearRep;
PrintForm:=nil;
end;

procedure TPrintForm.CreateReport(Sender: TObject);//生成按钮单击事件
Var
I,L:Byte;
CHBtp,CHBlf,Cd,ObWidth:Word;
begin
Screen.Cursor:=crHourGlass;
Title.Caption:=Bt;//设置标题
ClearRep(); //清除已经建立的对象;
if Sr.Checked then QrSQL.Caption:=CXTJ else QRSQL.Caption:='''''''';//是否打印查询条件?
CHBtp:=HB.Height-17;//建立的控件在带区中的顶部位置
CHBlf:=0; //建立的控件在带区中的左边位置
ObWidth:=0; //建立的控件的宽度
for I := 0 to Query.FieldCount-1 do //根据Query返回字段数建立控件
begin
if (Query.Fields[I].DataType<>ftBlob) And (Query.Fields[I].DataType<>ftMemo) then
begin //忽略备注字段和相片字段
L:=Query.Fields[I].DataSize-1;//L=字段宽度(字节)-1
case Rd1 of //根据选择的对齐方式设置控件的对齐方式
0: if L<=10 then Dj:=taCenter else DJ:=taLeftJustify;
//自动对齐:字段小于等于10居中对齐,否则左边对齐
1: Dj:=taCenter;//居中对齐
2: DJ:=taLeftJustify;//左边对齐
end;
case Rd2 of //根据选择的列表宽度设置报表列宽度
0: begin
//自动宽度:如果L>14则宽度ObWidth=14 (L-14)/2;如果ObWidth
//的宽度不能显示列标题,则ObWidth=列标题宽度;如果字段类型
//为日期型、货币型和浮点数型,则ObWidth=65
if L>14 then L:=14 (L-14) div 2;
ObWidth:=L*6;
L:=Length(Query.Fields[I].DisplayName);
if ObWidth<L*6 then ObWidth:=L*6;
ObWidth:=ObWidth 2;
if (Query.Fields[I].DataType=ftDateTime) or
(Query.Fields[I].DataType=ftFloat) or
(Query.Fields[I].DataType=ftCurrency) then ObWidth:=65;

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Delphi的压缩流与解压流

下一篇:在stringgrid控件中使文字内容在cell中做到上下居中