最近要用TPageProducer替换模版,同时还须实现html分页,所见即所得,网上找了半天没发现,于是自己琢磨写了一个。代码用delphi6写,
由于实际需要,所以写例子的时候缩小了实际模型,供大家分享。这里写的例子表格,如果一整行的话肯定很容易控制
TDContent=class
TDtxt : String;
Htmltxt : String;
Height : Integer;
NextHeight : Integer;
constructor Create(aTDtxt : String);
end;
HtmlContent=class
Content : String;
Height : Integer;
TDList : TList;
constructor Create(aContent : String);
end;
PageHeight : Integer;
HeadHeight : Integer;
RestHeight : Integer;
clsHtmlContent : HtmlContent;
PageNo : Integer;
procedure MakeContent; //假设内容
function CaluHeight(height,NextHeight : Integer) : Integer; //计算页面高度
function NeedChangePage(height,NextHeight : Integer) :Boolean; //是否要分页
procedure SplitPage(allHtml : String); //分离页面
procedure MakeHtmlCode;//形成html
====实现代码
function TForm1.NeedChangePage(height,NextHeight : Integer) :Boolean; //是否要分页
begin
Result := False;
if RestHeight-height-NextHeight <= 0 then Result := True;
end;
procedure TForm1.SplitPage(allHtml : String);
var
tmppageNo : Integer;
lsSave : TStringList;
sPos,ePos : Integer;
s : String;
begin
lsSave := TStringList.Create;
tmpPageNo := 0;
sPos := 0;
while allHtml <> '' do
begin
tmpPageNo := tmpPageNo + 1;
ePos := pos('