报表处理组件 BY DELPHI

2008-04-10 02:58:27来源:互联网 阅读 ()

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

本人倾精力,时间使用DELPHI开发了一套报表处理组件,适合各种软件系统复杂的
报表处理功能,尤其是其提供的报表编辑,打印预览及数据导入接口等功能可以迅
速满足客户提出的有关报表处理的各种需求。

1.设计原则:
1.1 由抽象到具体的类层次管理简化报表处理对象的复杂性。
1.2 报表编辑、原始数据导入到打印预览一体化处理流程。
1.3 灵活的数据访问接口,程序代码与报表设计无关。

2.主要功能:
2.1 类EXCEL的设计界面,提供多种可编辑对象,包括普通文本、公式计算、数据 导入等不同属性单元格,以及图形、图像、图表、文本框、数据视图、定制表
格等对象。
2.2 客户可以自由设计定制报告单格式,如普通式、彩色印刷式、图表一体式等。
2.3 美观的报表预览器,多种打印输出格式。

3.应用对象:
3.1 电网监控系统报表处理分系统(各种运行日报,月报,年报等)。
3.2 医院管理信息系统(各种统计分析报表)。
3.3 酒店管理信息系统(各种查询统计报表)。
3.4 检验管理系统(各种格式报告单)。

4.申明:
本人对本套组件拥有全部自主版权。

5.类树:

{ Forward declarations }
TGridCoordinate = class;
TGridCoordinates = class;

TCustomObject = class; {Abstract Class}
{1}
TActiveObject = class;
TActiveObjectClass = class of TActiveObject;
TGridCellObject = class;
TGridCellGroup = class;
//TDataViewParams = class
TDataView = class;
TDataTable = class;
TTileDataView = class;
TCascadeBand = class;
TCascadeBands = class;
TCascadeDataView = class;
TPlate = class;
TPlateClass = class of TPlate;
TChartPlate = class;
TImagePlate = class;
TTextPlate = class;

TActiveObjects = class;
TSelectedObjects = class;

{2}
TSparsePointerArray = class;
TSparseList = class;
TGridCellText = class;
TGridCellFrame = class;
TGridCell = class;
TGridCellClass = class of TGridCell;
TTextCell = class;
TDBCell = class;
TFormulaCell = class;
TRowCells = class;
TGridCells = class;

TGridCellEdit = class;

TSelectedCoord = class;
TSelectedCoords = class;
TTitleWindow = class;
TColumnWindow = class;
TRowWindow = class;
TClientWindow = class;

TTool = class;
{TSpreadsheetTool = class;}
TCoolScrollBar = class;
TCoolScrollControl = class;
TReportGrid = class;

欢迎公司或个人与我联系。
也希望各位同仁多多指教。
Email:lmis@sina.com。

6.附:

一个可以书写任意文本的Procedure,包括旋转字体。

TTextAlign = (taLeft,taRight,taHorzCenter,
taTop,taBottom,taVertCenter);
TTextAligns = set of TTextAlign;
TTextControl = (tcNormal,tcWordBreak,tcSelfAdapt,tcCalcRect);
TTextDirection = tdVertChinese..90;{Angles of text}

procedure WriteText(ACanvas: TCanvas;var ARect: TRect;AText: string; Aligns: TTextAligns;
Control: TTextControl;Direction: TTextDirection{; BeErase: Boolean = TRUE});
var S: String;
TempStr: WideString;
ColorRef: TColorRef;
DitheredFlag: Boolean;
LogicFont: TLogFont;
Scaler: Extended;
I,J,X,Y: Integer;
Interval,MaxExtent:Integer;
TextMetric: TTextMetric;
TempExtent: TSize;
TempRect: TRect;

procedure SetLogicFont(W: Integer = 0;H: Integer = 0);
begin
with LogicFont,ACanvas.Font do
begin
if H = 0 then lfHeight := Height
else lfHeight := H;
lfWidth := W;
lfEscapement := 10*Direction;
lfOrientation := 10*Direction;
lfWeight := FW_NORMAL;//FW_BOLD;
lfItalic := BYTE(fsItalic in Style);
lfUnderline := BYTE(fsUnderline in Style);
lfStrikeOut := BYTE(fsStrikeOut in Style);
lfCharSet := Charset;
lfOutPrecision := OUT_TT_PRECIS;
lfClipPrecision := CLIP_DEFAULT_PRECIS;
lfQuality := DEFAULT_QUALITY;

lfPitchAndFamily := DEFAULT_PITCH or FF_DONTCARE;
StrCopy(lfFaceName,PChar(Name));
end;
ACanvas.Font.Handle := Windows.CreateFontIndirect(LogicFont);
end;

procedure DrawDitheredText(BeginX,BeginY: Integer; TheText: String);
begin
DrawBitmap.Canvas.Lock; {Must have it !!}
try
with DrawBitmap do
begin
//Windows.ExtTextOut(Handle,0,0,ETO_OPAQUE,@TempRect, Nil,0,Nil);
Windows.ExtTextOut(Canvas.Handle, BeginX - ARect.Left , BeginY - ARect.Top,
{ETO_OPAQUE or }ETO_CLIPPED, @TempRect, PChar(TheText), Length(TheText),Nil);
ACanvas.CopyRect(ARect,Canvas,TempRect);
end;
finally
DrawBitmap.Canvas.Unlock;
end;
end;

begin
{if BeErase then
if ACanvas.Brush.Style <> bsSolid then
begin
ACanvas.Pen.Style := psClear;
ACanvas.Rectangle(ARect);
ACanvas.Pen.Style := psSolid;
end else ACanvas.FillRect(ARect);
//Windows.ExtTextOut(ACanvas.Handle,0,0,ETO_OPAQUE,@ARect, Nil,0,Nil);

标签:

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

上一篇:Delphi 程序员代码编写标准指南

下一篇:用DELPHI设计代理服务器程序