代码重构
fix:表格边框错误 注意:暂时移除脚注和公式的支持
This commit is contained in:
+1732
-1860
File diff suppressed because it is too large
Load Diff
+84
-71
@@ -1,6 +1,6 @@
|
||||
unit DTPModules;
|
||||
interface
|
||||
uses TSPdfEnumerations, DocxMLAdapter, SharedMLAdapter;
|
||||
uses DTPAdvancedRanges, DocxMLAdapter, SharedMLAdapter;
|
||||
|
||||
type DocxComponentsModule = class(DocxComponents)
|
||||
public
|
||||
@@ -57,19 +57,21 @@ end;
|
||||
|
||||
type NoteModule = class
|
||||
public
|
||||
function Create(sect_module: SectModule);
|
||||
function Create(docx_to_pdf: TSDocxToPdf);
|
||||
function AddFootnoteId(id: string);
|
||||
function GetFootnoteOrderNumber(): string;
|
||||
function GetFootnoteIndex(): string;
|
||||
function AddFootnote();
|
||||
|
||||
private
|
||||
function CalculateNumber(num_fmt: string; num: integer): string;
|
||||
function ChineseCountingThousand(n: integer): string;
|
||||
|
||||
private
|
||||
footnote_reference_hash_: hash;
|
||||
[weakref]docx_to_pdf_: TSDocxToPdf;
|
||||
footnote_hash_: hash;
|
||||
footnote_index_: integer;
|
||||
[weakref]sect_module_: SectModule;
|
||||
endnote_hash_: hash;
|
||||
endnote_index_: integer;
|
||||
end;
|
||||
|
||||
type NumberingModule = class
|
||||
@@ -89,35 +91,21 @@ end;
|
||||
type SectModule = class
|
||||
public
|
||||
function Create();
|
||||
function Destroy();
|
||||
function Do();
|
||||
function AddElement(element: tslobj);
|
||||
|
||||
public
|
||||
Elements: array of tslobj;
|
||||
SectPr: SectPrUnitDecorator;
|
||||
end;
|
||||
|
||||
type Toc = class
|
||||
public
|
||||
function Create(ppr: PPrUnitDecorator; rect: array of real; page: Page; x: real; y: real; font: PdfFont);
|
||||
function LinkAnnot(dst: PdfDestination);
|
||||
function AddPageNumber(page: Page);
|
||||
|
||||
private
|
||||
[weakref]page_: Page;
|
||||
ppr_: PPrUnitDecorator;
|
||||
rect_: array of real;
|
||||
font_: PdfFont;
|
||||
x_;
|
||||
y_;
|
||||
Elements: array of tslobj;
|
||||
BaseSize: real;
|
||||
end;
|
||||
|
||||
type TocModule = class
|
||||
public
|
||||
function Create();
|
||||
function UpdateDocxNumPages();
|
||||
function LinkToToc(anchor: string; pg: Page; left: real; top: real);
|
||||
function CalculateRect(anchor: string);
|
||||
|
||||
function LinkToToc(anchor: string; range: BasicRange);
|
||||
function AddToc(anchor: string; toc: Toc);
|
||||
|
||||
function AddDocxPage(anchor: string; r: R);
|
||||
@@ -154,11 +142,13 @@ public
|
||||
Index: integer;
|
||||
Number: integer;
|
||||
SectPr: SectPrUnitDecorator;
|
||||
BaseSize: real;
|
||||
TextPoint: Point; // 正文坐标
|
||||
FtrPoint: Point; // 页脚坐标
|
||||
HdrPoint: Point; // 页眉坐标
|
||||
|
||||
UpperBound: real; // 上界
|
||||
LowerBound: real; // 下界
|
||||
|
||||
private
|
||||
[weakref]pdf_file_: PdfFile;
|
||||
pdf_page_: PdfPage;
|
||||
@@ -371,9 +361,12 @@ begin
|
||||
if bold and italic then
|
||||
font_name := "Times-BoldItalic";
|
||||
else if bold then
|
||||
font_name += "Times-Bold";
|
||||
font_name := "Times-Bold";
|
||||
else if italic then
|
||||
font_name += "Times-Italic";
|
||||
font_name := "Times-Italic";
|
||||
end
|
||||
else begin
|
||||
font_name := "Courier";
|
||||
end
|
||||
return pdf_.GetFont(font_name, "");
|
||||
end;
|
||||
@@ -394,16 +387,65 @@ begin
|
||||
end;
|
||||
|
||||
// NoteModule
|
||||
function NoteModule.Create(sect_module: SectModule);
|
||||
function NoteModule.Create(docx_to_pdf: TSDocxToPdf);
|
||||
begin
|
||||
sect_module_ := sect_module;
|
||||
footnote_reference_hash_ := array();
|
||||
docx_to_pdf_ := docx_to_pdf;
|
||||
footnote_hash_ := array();
|
||||
endnote_hash_ := array();
|
||||
footnote_index_ := 0;
|
||||
endnote_index_ := 0;
|
||||
end;
|
||||
|
||||
function NoteModule.AddFootnoteId(id: string);
|
||||
begin
|
||||
footnotes_adapter := docx_to_pdf_.DocxComponents.GetFootnotesAdapter();
|
||||
footnote := footnotes_adapter.GetFootnoteById(id);
|
||||
sect_pr := docx_to_pdf_.CurrentSect.SectPr;
|
||||
w := sect_pr.SectPr.PgSz.W - sect_pr.SectPr.PgMar.Right - sect_pr.SectPr.PgMar.Left;
|
||||
lb := 0;
|
||||
arr := array();
|
||||
elements := footnote.Elements();
|
||||
for _,element in elements do
|
||||
begin
|
||||
if element.LocalName = "p" then
|
||||
begin
|
||||
range := new PRange(docx_to_pdf_, element);
|
||||
range.Width := w;
|
||||
range.LowerBound := lb;
|
||||
range.Parent := self;
|
||||
range.Calc();
|
||||
arr[length(arr)] := range;
|
||||
end
|
||||
end
|
||||
footnote_hash_[id] := arr;
|
||||
end;
|
||||
|
||||
// function NoteModule.RunFootnote(id: string; x: real; y: real; pg: Page);
|
||||
// begin
|
||||
// sx := x;
|
||||
// sy := y;
|
||||
// spg := pg;
|
||||
// height := 0;
|
||||
// arr := array();
|
||||
// hash := footnote_hash_[id];
|
||||
// for id,range in hash do
|
||||
// begin
|
||||
// range.StartX := x;
|
||||
// range.StartY := y;
|
||||
// range.StartPage := spg;
|
||||
// range.LowerBound := 0;
|
||||
// range.Run();
|
||||
// sy := range.EndY;
|
||||
// height += range.DynamicHeight;
|
||||
// arr union= range.PLineRanges();
|
||||
// footnote_hash_[id] := arr;
|
||||
// end
|
||||
// return height;
|
||||
// end;
|
||||
|
||||
function NoteModule.GetFootnoteOrderNumber();
|
||||
begin
|
||||
num_fmt := sect_module_.SectPr.FootnotePr.NumFmt.Val;
|
||||
num_fmt := docx_to_pdf_.CurrentSect.SectPr.FootnotePr.NumFmt.Val;
|
||||
if ifnil(num_fmt) then num_fmt := "decimal";
|
||||
return CalculateNumber(num_fmt, ++footnote_index_);
|
||||
end;
|
||||
@@ -640,16 +682,24 @@ begin
|
||||
update_docx_num_pages_ := true;
|
||||
end;
|
||||
|
||||
function TocModule.LinkToToc(anchor: string; pg: Page; left: real; top: real);
|
||||
function TocModule.CalculateRect(anchor: string);
|
||||
begin
|
||||
arr := toc_hash_[anchor];
|
||||
for _,toc in arr do
|
||||
toc.CalculateRect();
|
||||
end;
|
||||
|
||||
function TocModule.LinkToToc(anchor: string; range: BasicRange);
|
||||
begin
|
||||
arr := toc_hash_[anchor];
|
||||
if ifnil(arr) then
|
||||
begin
|
||||
toc_unmatched_hash_[anchor] := array(pg, left, top);
|
||||
toc_unmatched_hash_[anchor] := range;
|
||||
return;
|
||||
end
|
||||
pg := range.EndPage;
|
||||
dst := pg.PdfPage.CreateDestination();
|
||||
dst.SetXYZ(left, top, 1);
|
||||
dst.SetXYZ(range.EndX, range.EndY + range.RPr.Sz.Val, 1);
|
||||
for _,toc in arr do
|
||||
toc.LinkAnnot(dst);
|
||||
toc.AddPageNumber(pg);
|
||||
@@ -679,41 +729,4 @@ begin
|
||||
docx_page_hash_[anchor] := r;
|
||||
end;
|
||||
|
||||
// Toc
|
||||
function Toc.Create(ppr: PPrUnitDecorator; rect: array of real; pg: Page; x: real; y: real; font: PdfFont);
|
||||
begin
|
||||
ppr_ := ppr;
|
||||
rect_ := rect;
|
||||
page_ := pg;
|
||||
x_ := x;
|
||||
y_ := y;
|
||||
font_ := font;
|
||||
end;
|
||||
|
||||
function Toc.LinkAnnot(dst: PdfDestination);
|
||||
begin
|
||||
annot := page_.PdfPage.CreateLinkAnnot(rect_, dst);
|
||||
annot.LinkAnnotSetHighlightMode(TSPdfEnumerations.ANNOT_NO_HIGHTLIGHT);
|
||||
annot.LinkAnnotSetBorderStyle(0, 0, 0);
|
||||
end;
|
||||
|
||||
function Toc.AddPageNumber(pg: Page);
|
||||
begin
|
||||
number := tostring(pg.Number);
|
||||
page_.PdfPage.SetFontAndSize(font_, ppr_.RPr.Sz.Val);
|
||||
number_sz := page_.PdfPage.TextWidth(number);
|
||||
x := rect_[2] - number_sz;
|
||||
page_.PdfPage.BeginText();
|
||||
page_.PdfPage.TextOut(x, y_, number);
|
||||
page_.PdfPage.EndText();
|
||||
|
||||
page_.PdfPage.SetRGBStroke(0, 0, 0);
|
||||
page_.PdfPage.SetDash(array(0.5, 2), 2, 0);
|
||||
page_.PdfPage.SetLineWidth(0.5);
|
||||
page_.PdfPage.SetLineCap(TSPdfEnumerations.ROUND_END);
|
||||
page_.PdfPage.MoveTo(x_+1, y_);
|
||||
page_.PdfPage.LineTo(x-0.5, y_);
|
||||
page_.PdfPage.Stroke();
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
@@ -11,13 +11,14 @@ public
|
||||
RPr: RPr;
|
||||
Text: string;
|
||||
Font: PdfFont;
|
||||
Type: integer; // 0:默认,1: 数字,2:英文,3:中文,4:中文标点
|
||||
Type: integer; // 0:默认,1: 数字,2:英文,3:中文,4:中文标点,5:,.英文逗号和点
|
||||
end;
|
||||
|
||||
type BordersRange = class(BasicRange)
|
||||
public
|
||||
function Create();
|
||||
function Do();override;
|
||||
function DoFill();
|
||||
public
|
||||
TcPr: TcPr;
|
||||
Left: boolean;
|
||||
@@ -65,7 +66,8 @@ public
|
||||
DynamicHeight: real;
|
||||
LowerBound: real;
|
||||
[weakref]Parent: tslobj;
|
||||
[weakref]Page: Page;
|
||||
[weakref]StartPage: Page; // 起始page
|
||||
[weakref]EndPage: Page; // 结束page
|
||||
end;
|
||||
|
||||
implementation
|
||||
@@ -81,7 +83,7 @@ begin
|
||||
{self.}DynamicHeight := 0;
|
||||
{self.}LowerBound := 0;
|
||||
{self.}FixedHeight := 0;
|
||||
{self.}Page := nil;
|
||||
{self.}EndPage := nil;
|
||||
end;
|
||||
|
||||
// ImageRange
|
||||
@@ -96,18 +98,18 @@ function ImageRange.Do();override;
|
||||
begin
|
||||
// println("image = {}, type = {}, x = {}, y = {}, w = {}, h = {}", {self.}image, {self.}Type, {self.}endx, {self.}endy, {self.}width, {self.}DynamicHeight);
|
||||
if {self.}Type = "emf" then
|
||||
{self.}Page.PdfPage.DrawEmf({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
{self.}EndPage.PdfPage.DrawEmf({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
else if {self.}Type = "wmf" then
|
||||
{self.}Page.PdfPage.DrawWmf({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
{self.}EndPage.PdfPage.DrawWmf({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
else
|
||||
{self.}Page.PdfPage.DrawImage({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
{self.}EndPage.PdfPage.DrawImage({self.}Image, {self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
|
||||
if sysparams["_PDF_IMAGE_DEBUG_"] then
|
||||
begin
|
||||
{self.}Page.PdfPage.SetLineWidth(0.1);
|
||||
{self.}Page.PdfPage.SetRGBStroke(0.8, 0.8, 0);
|
||||
{self.}Page.PdfPage.Rectangle({self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
{self.}Page.PdfPage.Stroke();
|
||||
{self.}EndPage.PdfPage.SetLineWidth(0.1);
|
||||
{self.}EndPage.PdfPage.SetRGBStroke(0.8, 0.8, 0);
|
||||
{self.}EndPage.PdfPage.Rectangle({self.}EndX, {self.}EndY, {self.}Width, {self.}DynamicHeight);
|
||||
{self.}EndPage.PdfPage.Stroke();
|
||||
end
|
||||
end;
|
||||
|
||||
@@ -122,32 +124,37 @@ begin
|
||||
{self.}Bottom := false;
|
||||
end;
|
||||
|
||||
function BordersRange.Do();override;
|
||||
function BordersRange.DoFill();
|
||||
begin
|
||||
// println("Left = {}, Top = {}, Right = {}, Bottom = {}, Tl2Br = {}, Tr2Bl = {}", Left, Top, Right, Bottom, Tl2Br, Tr2Bl);
|
||||
borders := {self.}TcPr.TcBorders;
|
||||
if {self.}TcPr.Shd.Fill and {self.}TcPr.Shd.Fill <> "auto" then
|
||||
begin
|
||||
[r, g, b] := DTPColorToolKit.HexToRGB({self.}TcPr.Shd.Fill);
|
||||
{self.}Page.PdfPage.SetRGBFill(r/255, g/255, b/255);
|
||||
{self.}EndPage.PdfPage.SetRGBFill(r/255, g/255, b/255);
|
||||
x := {self.}EndX;
|
||||
y := {self.}EndY - {self.}DynamicHeight;
|
||||
w := {self.}Width;
|
||||
h := {self.}DynamicHeight;
|
||||
tmp := borders.Left.Sz ? borders.Left.Sz / 2 : 0.25;
|
||||
x += tmp;
|
||||
w -= tmp;
|
||||
w -= borders.Right.Sz ? borders.Right.Sz / 2 : 0.25;
|
||||
tmp := borders.Bottom.Sz ? borders.Bottom.Sz / 2 : 0.25;
|
||||
y += tmp;
|
||||
h -= tmp;
|
||||
h -= borders.Top.Sz ? borders.Top.Sz / 2 : 0.25;
|
||||
// tmp := borders.Left.Sz ? borders.Left.Sz / 2 : 0.25;
|
||||
// x += tmp;
|
||||
// w -= tmp;
|
||||
// w -= borders.Right.Sz ? borders.Right.Sz / 2 : 0.25;
|
||||
// tmp := borders.Bottom.Sz ? borders.Bottom.Sz / 2 : 0.25;
|
||||
// y += tmp;
|
||||
// h -= tmp;
|
||||
// h -= borders.Top.Sz ? borders.Top.Sz / 2 : 0.25;
|
||||
|
||||
{self.}Page.PdfPage.Rectangle(x, y, w, h);
|
||||
{self.}Page.PdfPage.Fill();
|
||||
{self.}Page.PdfPage.SetRGBFill(0, 0, 0);
|
||||
{self.}Left := true;
|
||||
{self.}EndPage.PdfPage.Rectangle(x, y, w, h);
|
||||
{self.}EndPage.PdfPage.Fill();
|
||||
{self.}EndPage.PdfPage.SetRGBFill(0, 0, 0);
|
||||
// {self.}Left := true;
|
||||
end
|
||||
end;
|
||||
|
||||
function BordersRange.Do();override;
|
||||
begin
|
||||
// println("Left = {}, Top = {}, Right = {}, Bottom = {}, Tl2Br = {}, Tr2Bl = {}", Left, Top, Right, Bottom, Tl2Br, Tr2Bl);
|
||||
borders := {self.}TcPr.TcBorders;
|
||||
if {self.}Left then
|
||||
{self.}DrawLine(borders.Left, {self.}EndX, {self.}EndY, {self.}EndX, {self.}EndY - {self.}DynamicHeight);
|
||||
if {self.}Top then
|
||||
@@ -165,9 +172,9 @@ end;
|
||||
function BordersRange.SetDash(val: string);
|
||||
begin
|
||||
if val = "single" or ifnil(val) then
|
||||
{self.}Page.PdfPage.SetDash(array(), 0, 0);
|
||||
if val = "dashed" then
|
||||
{self.}Page.PdfPage.SetDash(array(1), 1, 0);
|
||||
{self.}EndPage.PdfPage.SetDash(array(), 0, 0);
|
||||
else if val = "dashed" then
|
||||
{self.}EndPage.PdfPage.SetDash(array(1), 1, 0);
|
||||
end;
|
||||
|
||||
function BordersRange.DrawLine(border: Border; x1: real; y1: real; x2: real; y2: real);
|
||||
@@ -176,12 +183,12 @@ begin
|
||||
line_width := border.Sz ?: 0.5;
|
||||
{self.}SetDash(border.Val);
|
||||
if border.Color and border.Color <> "auto" then [r, g, b] := DTPColorToolKit.HexToRGB(border.Color);
|
||||
{self.}Page.PdfPage.SetRGBStroke(r, g, b);
|
||||
{self.}Page.PdfPage.SetLineWidth(line_width);
|
||||
{self.}Page.PdfPage.MoveTo(x1, y1);
|
||||
{self.}Page.PdfPage.LineTo(x2, y2);
|
||||
{self.}Page.PdfPage.Stroke();
|
||||
{self.}Page.PdfPage.SetRGBStroke(0, 0, 0);
|
||||
{self.}EndPage.PdfPage.SetRGBStroke(r/255, g/255, b/255);
|
||||
{self.}EndPage.PdfPage.SetLineWidth(line_width);
|
||||
{self.}EndPage.PdfPage.MoveTo(x1, y1);
|
||||
{self.}EndPage.PdfPage.LineTo(x2, y2);
|
||||
{self.}EndPage.PdfPage.Stroke();
|
||||
{self.}EndPage.PdfPage.SetRGBStroke(0, 0, 0);
|
||||
end;
|
||||
|
||||
// TextRange
|
||||
@@ -207,21 +214,21 @@ begin
|
||||
y += sz / 3;
|
||||
sz := sz * 2 / 3;
|
||||
end
|
||||
{self.}Page.PdfPage.SetRGBFill(r / 255, g / 255, b / 255);
|
||||
{self.}Page.PdfPage.SetFontAndSize({self.}Font, sz);
|
||||
{self.}Page.PdfPage.BeginText();
|
||||
{self.}Page.PdfPage.TextOut({self.}EndX, y, {self.}Text);
|
||||
{self.}Page.PdfPage.EndText();
|
||||
{self.}Page.PdfPage.SetRGBFill(0, 0, 0);
|
||||
{self.}EndPage.PdfPage.SetRGBFill(r / 255, g / 255, b / 255);
|
||||
{self.}EndPage.PdfPage.SetFontAndSize({self.}Font, sz);
|
||||
{self.}EndPage.PdfPage.BeginText();
|
||||
{self.}EndPage.PdfPage.TextOut({self.}EndX, y, {self.}Text);
|
||||
{self.}EndPage.PdfPage.EndText();
|
||||
{self.}EndPage.PdfPage.SetRGBFill(0, 0, 0);
|
||||
|
||||
|
||||
if sysparams["_PDF_TEXT_DEBUG_"] then
|
||||
begin
|
||||
{self.}Page.PdfPage.SetLineWidth(0.1);
|
||||
{self.}Page.PdfPage.SetRGBStroke(1.0, 0.5, 0.0);
|
||||
{self.}Page.PdfPage.MoveTo(0, {self.}EndY);
|
||||
{self.}Page.PdfPage.LineTo(600, {self.}EndY);
|
||||
{self.}Page.PdfPage.Stroke();
|
||||
{self.}EndPage.PdfPage.SetLineWidth(0.1);
|
||||
{self.}EndPage.PdfPage.SetRGBStroke(1.0, 0.5, 0.0);
|
||||
{self.}EndPage.PdfPage.MoveTo(0, {self.}EndY);
|
||||
{self.}EndPage.PdfPage.LineTo(600, {self.}EndY);
|
||||
{self.}EndPage.PdfPage.Stroke();
|
||||
end
|
||||
end;
|
||||
|
||||
@@ -235,11 +242,11 @@ end;
|
||||
function LineRange.Do();override;
|
||||
begin
|
||||
// println("endx = {}, endy = {}, width = {}", EndX, EndY, Width);
|
||||
{self.}Page.PdfPage.SetLineWidth({self.}LineWidth);
|
||||
{self.}Page.PdfPage.SetRGBStroke(0, 0, 0);
|
||||
{self.}Page.PdfPage.MoveTo({self.}EndX, {self.}EndY);
|
||||
{self.}Page.PdfPage.LineTo({self.}EndX + {self.}Width, {self.}EndY);
|
||||
{self.}Page.PdfPage.Stroke();
|
||||
{self.}EndPage.PdfPage.SetLineWidth({self.}LineWidth);
|
||||
{self.}EndPage.PdfPage.SetRGBStroke(0, 0, 0);
|
||||
{self.}EndPage.PdfPage.MoveTo({self.}EndX, {self.}EndY);
|
||||
{self.}EndPage.PdfPage.LineTo({self.}EndX + {self.}Width, {self.}EndY);
|
||||
{self.}EndPage.PdfPage.Stroke();
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
+4
-29
@@ -27,20 +27,6 @@ private
|
||||
index_: integer;
|
||||
end;
|
||||
|
||||
type FldStruct = class
|
||||
public
|
||||
function Create();
|
||||
public
|
||||
FldLock: boolean;
|
||||
MergeFormat: boolean;
|
||||
Quote: boolean;
|
||||
Separate: boolean;
|
||||
PageArabicMergeFormat: boolean;
|
||||
NumPages: boolean;
|
||||
ArabicMergeFormat: boolean;
|
||||
EndFld: boolean;
|
||||
end;
|
||||
|
||||
type FldType = class
|
||||
public
|
||||
function Create();
|
||||
@@ -52,7 +38,7 @@ public
|
||||
PageRef: boolean;
|
||||
end;
|
||||
|
||||
type FldStruct2 = class
|
||||
type FldStruct = class
|
||||
public
|
||||
function Create();
|
||||
|
||||
@@ -60,6 +46,7 @@ public
|
||||
Type: FldType;
|
||||
Arabic: boolean;
|
||||
MergeFormat: boolean;
|
||||
Status: integer; // 0: begin 1: separate 2: end
|
||||
end;
|
||||
|
||||
type TrProperty = class
|
||||
@@ -155,19 +142,6 @@ begin
|
||||
return index_ = 0;
|
||||
end;
|
||||
|
||||
// FldStruct
|
||||
function FldStruct.Create();
|
||||
begin
|
||||
FldLock := false;
|
||||
MergeFormat := false;
|
||||
Quote := false;
|
||||
Separate := false;
|
||||
PageArabicMergeFormat := false;
|
||||
NumPages := false;
|
||||
ArabicMergeFormat := false;
|
||||
EndFld := false;
|
||||
end;
|
||||
|
||||
// FldType
|
||||
function FldType.Create();
|
||||
begin
|
||||
@@ -178,11 +152,12 @@ begin
|
||||
end;
|
||||
|
||||
// FldStruct
|
||||
function FldStruct2.Create();
|
||||
function FldStruct.Create();
|
||||
begin
|
||||
{self.}Type := new FldType();
|
||||
{self.}Arabic := false;
|
||||
{self.}MergeFormat := false;
|
||||
{self.}Status := 0;
|
||||
end;
|
||||
|
||||
// TrProperty
|
||||
|
||||
Reference in New Issue
Block a user