diff options
Diffstat (limited to 'src/reportengine/u_command.pas')
-rw-r--r-- | src/reportengine/u_command.pas | 855 |
1 files changed, 855 insertions, 0 deletions
diff --git a/src/reportengine/u_command.pas b/src/reportengine/u_command.pas new file mode 100644 index 00000000..16f7b0e0 --- /dev/null +++ b/src/reportengine/u_command.pas @@ -0,0 +1,855 @@ +{ + << Impressions >> U_Commande.pas + + Copyright (C) 2010 - Jean-Marc Levecque <jean-marc.levecque@jmlesite.fr> + + This library is a free software coming as a add-on to fpGUI toolkit + See the copyright included in the fpGUI distribution for details about redistribution + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + Description: + This unit builds the objects in memory to produce either the preview or pdf file +} + +unit U_Command; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, + fpg_base, fpg_main, //fpg_imgfmt_bmp, fpg_imgfmt_jpg, + U_Pdf; + +type + TZone = (zHeader,zFooter,zPage,zMargins); + TSectPageNum = (PageNum,SectNum,PSectNum); + TBorderFlags= set of (bfLeft,bfRight,bfTop,bfBottom); + + TDimensions= record + T: Single; + L: Single; + R: Single; + B: Single; + end; + + TPaper= record + H: Integer; + W: Integer; + Printable: TDimensions; + end; + + // document classes + + T_Section = class + private + FNumSect: Integer; + FNbPages: Integer; + FPaper: TPaper; + FMargins: TDimensions; + FBotHead: Single; + FTopFoot: Single; + FPages: TList; + FHeader: TList; + FFooter: TList; + FFrames: TList; + FDefCol: Integer; + FTitle: string; + function GetFirstPage: Integer; + function GetTotalPages: Integer; + public + constructor Create(APaper: TPaper; AMargins: TDimensions; ANum: Integer); virtual; + destructor Destroy; override; + procedure LoadPage(APageNum: Integer); + procedure LoadCmdHeader; + procedure LoadCmdPage; + procedure LoadCmdFooter; + procedure LoadCmdGroup; + procedure LoadCmdGroupToPage; + procedure LoadSpaceHeader(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); + procedure LoadSpacePage(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); + procedure LoadSpaceFooter(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); + procedure LoadSpaceGroup(AHeight: Single); + procedure LoadFrame(AStyle: Integer; AZone: TZone); + procedure LoadLine(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); + procedure LoadLineHorizHeader(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); + procedure LoadLineHorizPage(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); + procedure LoadLineHorizFooter(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); + procedure LoadLineHorizGroupe(AHeight: Single); + procedure LoadSurf(APos: T_Points; AColor: TfpgColor); + procedure LoadImgHeader(APosX,APosY: Single; AColumn,AImgNum: Integer); + procedure LoadImgPage(APosX,APosY: Single; AColumn,AImgNum: Integer); + procedure LoadImgFooter(APosX,APosY: Single; AColumn,AImgNum: Integer); + function GetCmdPage(NumPage: Integer): TList; + property CmdHeader: TList read FHeader; + property CmdFooter: TList read FFooter; + property NbPages: Integer read FNbPages; + property FirstPage: Integer read GetFirstPage; + property Pages: TList read FPages; + property TotPages: Integer read GetTotalPages; + property Paper: TPaper read FPaper; + property Margins: TDimensions read FMargins; + property CmdFrames: TList read FFrames; + property DefaultCol: Integer read FDefCol write FDefCol; + property Title: string read FTitle write FTitle; + end; + + T_Page = class + private + FNumPageTot: Integer; + FNumPageSect: Integer; + FCommands: TList; + public + constructor Create(ANumSec,ANumTot: Integer); virtual; + destructor Destroy; override; + property Commands: TList read FCommands write FCommands; + property PagesTot: Integer read FNumPageTot; + property PagesSect: Integer read FNumPageSect; + end; + + T_Group = class + private + FLineHeight: Single; + FGroupHeight: Single; + FCommands: TList; + public + constructor Create; virtual; + destructor Destroy; override; + property Commands: TList read FCommands write FCommands; + property LineHeight: Single read FLineHeight; + property GroupeHeight: Single read FGroupHeight; + end; + + T_WriteLine = class + private + FHeight: Integer; + FCommands: TList; + public + constructor Create; virtual; + destructor Destroy; override; + procedure LoadText(APosX,APosY: Single; AColumn,AText,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer; + ACurFont: Boolean; AFlags: TfpgTextFlags); + procedure LoadNumber(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer; + ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum); + property Commands: TList read FCommands; + property LineHeight: Integer read FHeight; + end; + + // command classes + + T_Command = class + end; + + PSection = ^T_Section; + PPage = ^T_Page; + PLigne = ^T_WriteLine; + PCommande = ^T_Command; + PFont = ^TfpgFont; + + T_WriteText = class(T_Command) + private + FPosX: Single; + FPosY: Single; + FColumn: Integer; + FText: Integer; + FFont: Integer; + FBackColor: Integer; + FBorder: Integer; + FLineSpace: Integer; + FCurFont: Boolean; + FFlags: TfpgTextFlags; + public + constructor Create(APosX,APosY: Single; AColumn,AText,AFont,ABackColor,ABorder,ALineSpace: Integer; ACurFont: Boolean; AFlags: TfpgTextFlags); virtual; + procedure SetPosY(const AValue: Single); + property GetPosX: Single read FPosX; + property GetPosY: Single read FPosY; + property GetColumn: Integer read FColumn; + property GetText: Integer read FText; + property GetFont: Integer read FFont; + property GetBackColor: Integer read FBackColor; + property GetBorder: Integer read FBorder; + property GetLineSpace: Integer read FLineSpace; + property GetCurFont: Boolean read FCurFont; + property GetFlags: TfpgTextFlags read FFlags; + end; + + T_Number = class(T_Command) + private + FPosX: Single; + FPosY: Single; + FColumn: Integer; + FTextNum: Integer; + FTextTot: Integer; + FFont: Integer; + FBackColor: Integer; + FBorder: Integer; + FLineSpace: Integer; + FCurFont: Boolean; + FFlags: TfpgTextFlags; + FTotal: Boolean; + FAlpha: Boolean; + FTypeNum: TSectPageNum; + public + constructor Create(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,ABackColor,ABorder,ALineSpace: Integer; + ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum); virtual; + procedure SetPosY(const AValue: Single); + property GetPosX: Single read FPosX; + property GetPosY: Single read FPosY; + property GetColumn: Integer read FColumn; + property GetTextNum: Integer read FTextNum; + property GetTextTot: Integer read FTextTot; + property GetFont: Integer read FFont; + property GetBackColor: Integer read FBackColor; + property GetBorder: Integer read FBorder; + property GetLineSpace: Integer read FLineSpace; + property GetCurFont: Boolean read FCurFont; + property GetFlags: TfpgTextFlags read FFlags; + property GetTotal: Boolean read FTotal; + property GetAlpha: Boolean read FAlpha; + property GetTypeNum: TSectPageNum read FTypeNum; + end; + + T_Line = class(T_Command) + private + FPosX: Single; + FPosY: Single; + FColumn: Integer; + FStyle: Integer; + FEndX: Single; + FEndY: Single; + public + constructor Create(APosX,APosY: Single; AColumn,AStyle: Integer; AEndX,AEndY: Single); virtual; + property GetPosX: Single read FPosX; + property GetPosY: Single read FPosY; + property GetColumn: Integer read FColumn; + property GetStyle: Integer read FStyle; + property GetEndX: Single read FEndX; + property GetEndY: Single read FEndY; + end; + + T_Column = class(T_Command) + private + FPos: Single; + FWidth: Single; + FMargin: Single; + FColor: TfpgColor; + public + constructor Create(APos,AWidth,AMargin: Single; AColor: TfpgColor); virtual; + function GetTextPos: Single; + function GetTextWidth: Single; + procedure SetColColor(AColor: TfpgColor); + property ColPos: Single read FPos write FPos; + property ColWidth: Single read FWidth write FWidth; + property ColMargin: Single read FMargin write FMargin; + property GetColor: TfpgColor read FColor; + end; + + T_Font = class(T_Command) + private + FFont: TfpgFont; + FColor: TfpgColor; + FSize: string; + public + constructor Create(AFont: string; AColor: TfpgColor); virtual; + destructor Destroy; override; + function GetHeight: Integer; + property GetFont: TfpgFont read FFont; + property GetColor: TfpgColor read FColor; + property GetSize: string read FSize; + end; + + T_LineSpace = class(T_Command) + private + FSup: Single; + FInt: Single; + FInf: Single; + public + constructor Create(ASup,AInt,AInf: Single); virtual; + property GetSup: Single read FSup; + property GetInt: Single read FInt; + property GetInf: Single read FInf; + end; + + T_Space = class(T_Command) + private + FPosY: Single; + FColumn: Integer; + FHeight: Single; + FBackColor: Integer; + public + constructor Create(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); virtual; + procedure SetPosY(const AValue: Single); + property GetPosY: Single read FPosY; + property GetColumn: Integer read FColumn; + property GetHeight: Single read FHeight; + property GetBackColor: Integer read FBackColor; + end; + + T_BackColor = class(T_Command) + private + FColor: TfpgColor; + public + constructor Create(AColor: TfpgColor); virtual; + property GetColor: TfpgColor read FColor; + end; + + T_LineStyle = class(T_Command) + private + FThick: Single; + FColor: TfpgColor; + FStyle: TfpgLineStyle; + public + constructor Create(AThick: Single; AColor: Tfpgcolor; AStyle: TfpgLineStyle); virtual; + property GetThick: Single read FThick; + property GetColor: TfpgColor read FColor; + property GetStyle: TfpgLineStyle read FStyle; + end; + + T_Border = class(T_Command) + private + FFlags: TBorderFlags; + FStyle: Integer; + public + constructor Create(AFlags: TBorderFlags; AStyle: Integer); + property GetFlags: TBorderFlags read FFlags; + property GetStyle: Integer read FStyle; + end; + + T_Frame = class(T_Command) + private + FStyle: Integer; + FZone: TZone; + public + constructor Create(AStyle: Integer; AZone: TZone); + property GetStyle: Integer read FStyle; + property GetZone: TZone read FZone; + end; + + T_Surface = class(T_Command) + private + FPoints: T_Points; + FColor: TfpgColor; + public + constructor Create(APoints: array of TRefPos; AColor: TfpgColor); + property GetPoints: T_Points read FPoints; + property GetColor: TfpgColor read FColor; + end; + + T_Image = class(T_Command) + private + FImage: Integer; + FColumn: Integer; + FPosX: Single; + FPosY: Single; + public + constructor Create(APosX,APosY: Single; AColumn,AImageNum: Integer); + property GetImage: Integer read FImage; + property GetColumn: Integer read FColumn; + property GetPosX: Single read FPosX; + property GetPosY: Single read FPosY; + end; + +var + Sections: TList; + Columns: TList; + Texts: TStringList; + ImageNames: TStringList; + Fonts: TList; + LineSpaces: TList; + BackColors: TList; + LineStyles: TList; + Borders: TList; + Images: TList; + VSection: T_Section; + VPage: T_Page; + VGroup: T_Group; + VWriteLine: T_WriteLine; + VCommand: T_Command; + VColumn: T_Column; + VBackColor: T_BackColor; + VFont: T_Font; + VLineSpace: T_LineSpace; + VLineStyle: T_LineStyle; + VBorder: T_Border; + +implementation + +// utility functions + +// extracts the font size from the fontdesc + +function ExtractFontSize(const AValue: string): string; +begin +if Pos(':',AValue)> 0 +then + Result:= Copy(AValue,Succ(Pos('-',AValue)),Pred(Pos(':',Avalue)-Pos('-',AValue))) +else + Result:= Copy(AValue,Succ(Pos('-',AValue)),Length(AValue)-Pos('-',AValue)); +end; + +// document class methods + +function T_Section.GetFirstPage: Integer; +begin +Result:= T_Page(Pages[0]).PagesTot; +end; + +function T_Section.GetTotalPages: Integer; +begin +if Pages.Count> 0 +then + Result:= T_Page(Pages[Pred(Pages.Count)]).PagesTot +else + Result:= 0; +end; + +constructor T_Section.Create(APaper: TPaper; AMargins: TDimensions; ANum: Integer); +begin +FNumSect:= ANum; +FNbPages:= 0; +FPaper:= APaper; +FMargins:= AMargins; +FBotHead:= FMargins.T; +FTopFoot:= FMargins.B; +FPages:= TList.Create; +FHeader:= TList.Create; +FFooter:= TList.Create; +FFrames:= TList.Create; +end; + +destructor T_Section.Destroy; +var + Cpt: Integer; +begin +if FPages.Count> 0 +then + for Cpt:= 0 to Pred(FPages.Count) do + T_Page(FPages[Cpt]).Free; +FPages.Free; +if FHeader.Count> 0 +then + for Cpt:= 0 to Pred(FHeader.Count) do + T_Command(FHeader[Cpt]).Free; +FHeader.Free; +if FFooter.Count> 0 +then + for Cpt:= 0 to Pred(FFooter.Count) do + T_Command(FFooter[Cpt]).Free; +FFooter.Free; +if FFrames.Count> 0 +then + for Cpt:= 0 to Pred(FFrames.Count) do + T_Command(FFrames[Cpt]).Free; +FFrames.Free; +inherited Destroy; +end; + +procedure T_Section.LoadPage(APageNum: Integer); +begin +Inc(FNbPages); +VPage:= T_Page.Create(FNbPages,APageNum); +FPages.Add(VPage); +end; + +procedure T_Section.LoadCmdHeader; +var + Cpt: Integer; +begin +for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do + FHeader.Add(VWriteLine.Commands.Items[Cpt]); +VWriteLine.FHeight:= 0; +VWriteLine.Commands.Clear; +end; + +procedure T_Section.LoadCmdPage; +var + Cpt: Integer; +begin +for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do + T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VWriteLine.Commands.Items[Cpt]); +VWriteLine.FHeight:= 0; +VWriteLine.Commands.Clear; +end; + +procedure T_Section.LoadCmdFooter; +var + Cpt: Integer; +begin +for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do + FFooter.Add(VWriteLine.Commands.Items[Cpt]); +VWriteLine.FHeight:= 0; +VWriteLine.Commands.Clear; +end; + +procedure T_Section.LoadCmdGroup; +var + Cpt: Integer; +begin +for Cpt:= 0 to Pred(VWriteLine.Commands.Count) do + VGroup.Commands.Add(VWriteLine.Commands.Items[Cpt]); +with VGroup do + begin + FLineHeight:= VWriteLine.FHeight; + FGroupHeight:= FGroupHeight+FLineHeight; + end; +VWriteLine.FHeight:= 0; +VWriteLine.Commands.Clear; +end; + +procedure T_Section.LoadCmdGroupToPage; +var + Cpt: Integer; +begin +for Cpt:= 0 to Pred(VGroup.Commands.Count) do + T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VGroup.Commands.Items[Cpt]); +VGroup.FGroupHeight:= 0; +VGroup.Commands.Clear; +end; + +procedure T_Section.LoadSpaceHeader(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); +begin +VCommand:= T_Space.Create(APosY,AColumn,AHeight,ABackColor); +FHeader.Add(VCommand); +end; + +procedure T_Section.LoadSpacePage(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); +begin +VCommand:= T_Space.Create(APosY,AColumn,AHeight,ABackColor); +T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand); +end; + +procedure T_Section.LoadSpaceFooter(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); +begin +VCommand:= T_Space.Create(APosY,AColumn,AHeight,ABackColor); +FFooter.Add(VCommand); +end; + +procedure T_Section.LoadSpaceGroup(AHeight: Single); +begin +VGroup.FGroupHeight:= VGroup.FGroupHeight+AHeight; +end; + +procedure T_Section.LoadFrame(AStyle: Integer; AZone: TZone); +begin +VCommand:= T_Frame.Create(AStyle,AZone); +FFrames.Add(VCommand); +end; + +procedure T_Section.LoadLine(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); +begin +VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd); +T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand); +end; + +procedure T_Section.LoadLineHorizHeader(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; + AStyle: Integer); +begin +VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd); +FHeader.Add(VCommand); +end; + +procedure T_Section.LoadLineHorizPage(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); +begin +VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd); +T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand); +end; + +procedure T_Section.LoadLineHorizFooter(APosXBegin,APosYBegin: Single; AColumn: Integer; APosXEnd,APosYEnd: Single; AStyle: Integer); +begin +VCommand:= T_Line.Create(APosXBegin,APosYBegin,AColumn,AStyle,APosXEnd,APosYEnd); +FFooter.Add(VCommand); +end; + +procedure T_Section.LoadLineHorizGroupe(AHeight: Single); +begin +VGroup.FGroupHeight:= VGroup.FGroupHeight+AHeight; +end; + +procedure T_Section.LoadSurf(APos: T_Points; AColor: TfpgColor); +begin +VCommand:= T_Surface.Create(APos,AColor); +T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand); +end; + +procedure T_Section.LoadImgHeader(APosX,APosY: Single; AColumn,AImgNum: Integer); +begin +VCommand:= T_Image.Create(APosX,APosY,AColumn,AImgNum); +FHeader.Add(VCommand); +end; + +procedure T_Section.LoadImgPage(APosX,APosY: Single; AColumn,AImgNum: Integer); +begin +VCommand:= T_Image.Create(APosX,APosY,AColumn,AImgNum); +T_Page(Pages[Pred(FPages.Count)]).Commands.Add(VCommand); +end; + +procedure T_Section.LoadImgFooter(APosX,APosY: Single; AColumn,AImgNum: Integer); +begin +VCommand:= T_Image.Create(APosX,APosY,AColumn,AImgNum); +FFooter.Add(VCommand); +end; + +function T_Section.GetCmdPage(NumPage: Integer): TList; +begin +Result:= T_Page(Pages[Pred(NumPage)]).Commands; +end; + +constructor T_Page.Create(ANumSec,ANumTot: Integer); +begin +FNumPageTot:= ANumTot; +FNumPageSect:= ANumSec; +FCommands:= TList.Create; +end; + +destructor T_Page.Destroy; +var + Cpt: Integer; +begin +if FCommands.Count> 0 +then + for Cpt:= 0 to Pred(FCommands.Count) do + T_Command(FCommands[Cpt]).Free; +FCommands.Free; +inherited Destroy; +end; + +constructor T_Group.Create; +begin +FLineHeight:= 0; +FGroupHeight:= 0; +FCommands:= TList.Create; +end; + +destructor T_Group.Destroy; +var + Cpt: Integer; +begin +if FCommands.Count> 0 +then + for Cpt:= 0 to Pred(FCommands.Count) do + T_Command(FCommands[Cpt]).Free; +FCommands.Free; +inherited Destroy; +end; + +constructor T_WriteLine.Create; +begin +FHeight:= 0; +FCommands:= TList.Create; +end; + +destructor T_WriteLine.Destroy; +var + Cpt: Integer; +begin +if FCommands.Count> 0 +then + for Cpt:= 0 to Pred(FCommands.Count) do + T_Command(FCommands[Cpt]).Free; +FCommands.Free; +inherited Destroy; +end; + +procedure T_WriteLine.LoadText(APosX,APosY: Single; AColumn,AText,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer; + ACurFont: Boolean; AFlags: TfpgTextFlags); +begin +if FHeight< AHeight +then + FHeight:= AHeight; +VCommand:= T_WriteText.Create(APosX,APosY,AColumn,AText,AFont,ABackColor,ABorder,ALineSpace,ACurFont,AFlags); +Commands.Add(VCommand); +end; + +procedure T_WriteLine.LoadNumber(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,AHeight,ABackColor,ABorder,ALineSpace: Integer; + ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum); +begin +if FHeight< AHeight +then + FHeight:= AHeight; +VCommand:= T_Number.Create(APosX,APosY,AColumn,ATextNum,ATextTot,AFont,ABackColor,ABorder,ALineSpace,ACurFont,AFlags,ATotal,AAlpha,ATypeNum); +Commands.Add(VCommand); +end; + +// command class methods + +procedure T_WriteText.SetPosY(const AValue: Single); +begin +if FPosY<> AValue +then + FPosY:= AValue; +end; + +constructor T_WriteText.Create(APosX,APosY: Single; AColumn,AText,AFont,ABackColor,ABorder,ALineSpace: Integer; ACurFont: Boolean; AFlags: TfpgTextFlags); +begin +inherited Create; +FPosX:= APosX; +FPosY:= APosY; +FColumn:= AColumn; +FText:= AText; +FFont:= AFont; +FBackColor:= ABackColor; +FBorder:= ABorder; +FLineSpace:= ALineSpace; +FCurFont:= ACurFont; +FFlags:= AFlags; +end; + +procedure T_Number.SetPosY(const AValue: Single); +begin +if FPosY<> AValue +then + FPosY:= AValue; +end; + +constructor T_Number.Create(APosX,APosY: Single; AColumn,ATextNum,ATextTot,AFont,ABackColor,ABorder,ALineSpace: Integer; + ACurFont: Boolean; AFlags: TfpgTextFlags; ATotal,AAlpha: Boolean; ATypeNum: TSectPageNum); +begin +inherited Create; +FPosX:= APosX; +FPosY:= APosY; +FColumn:= AColumn; +FTextNum:= ATextNum; +FTextTot:= ATextTot; +FFont:= AFont; +FBackColor:= ABackColor; +FBorder:= ABorder; +FLineSpace:= ALineSpace; +FCurFont:= ACurFont; +FFlags:= AFlags; +FTotal:= ATotal; +FAlpha:= AAlpha; +FTypeNum:= ATypeNum; +end; + +constructor T_Line.Create(APosX,APosY: Single; AColumn,AStyle: Integer; AEndX,AEndY: Single); +begin +FPosX:= APosX; +FPosY:= APosY; +FColumn:= AColumn; +FStyle:= AStyle; +FEndX:= AEndX; +FEndY:= AEndY; +end; + +constructor T_Column.Create(APos,AWidth,AMargin: Single; AColor: TfpgColor); +begin +inherited Create; +FPos:= APos; +FWidth:= AWidth; +FMargin:= AMargin; +FColor:= AColor; +end; + +function T_Column.GetTextPos: Single; +begin +Result:= FPos+FMargin; +end; + +function T_Column.GetTextWidth: Single; +begin +Result:= FWidth-(FMargin*2); +end; + +procedure T_Column.SetColColor(AColor: TfpgColor); +begin +if FColor<> AColor +then + FColor:= AColor; +end; + +constructor T_Font.Create(AFont: string; AColor: TfpgColor); +begin +inherited Create; +FFont:= fpgApplication.GetFont(AFont); +FColor:= AColor; +FSize:= ExtractFontSize(AFont); +end; + +destructor T_Font.Destroy; +begin +FFont.Free; +inherited Destroy; +end; + +function T_Font.GetHeight: Integer; +begin +Result:= TfpgFont(FFont).Height; +end; + +constructor T_LineSpace.Create(ASup,AInt,AInf: Single); +begin +inherited Create; +FSup:= ASup; +FInt:= AInt; +FInf:= AInf; +end; + +constructor T_Space.Create(APosY: Single; AColumn: Integer; AHeight: Single; ABackColor: Integer); +begin +inherited Create; +FPosY:= APosY; +FColumn:= AColumn; +FHeight:= AHeight; +FBackColor:= ABackColor; +end; + +constructor T_Surface.Create(APoints: array of TRefPos; AColor: TfpgColor); +var + Cpt: Integer; +begin +inherited Create; +SetLength(FPoints,Length(APoints)); +for Cpt:= 0 to Pred(Length(FPoints)) do + FPoints[Cpt]:= APoints[Cpt]; +FColor:= AColor; +end; + +procedure T_Space.SetPosY(const AValue: Single); +begin +if FPosY<> AValue +then + FPosY:= AValue; +end; + +constructor T_BackColor.Create(AColor: TfpgColor); +begin +FColor:= AColor; +end; + +constructor T_LineStyle.Create(AThick: Single; AColor: Tfpgcolor; AStyle: TfpgLineStyle); +begin +inherited Create; +FThick:= AThick; +FColor:= AColor; +FStyle:= AStyle; +end; + +constructor T_Border.Create(AFlags: TBorderFlags; AStyle: Integer); +begin +inherited Create; +FFlags:= AFlags; +FStyle:= AStyle; +end; + +constructor T_Frame.Create(AStyle: Integer; AZone: TZone); +begin +inherited Create; +FStyle:= AStyle; +FZone:= AZone; +end; + +constructor T_Image.Create(APosX,APosY: Single; AColumn,AImageNum: Integer); +begin +inherited Create; +FImage:= AImageNum; +FColumn:= AColumn; +FPosX:= APosX; +FPosY:= APosY; +end; + +end. + |