mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-22 22:51:40 +02:00
* Close dataset again when its not necessary anymore
* Implemented THTMLPageProducer * Fixed possible AV regarding UseValues * Renamed THTMLCustomEntityProducer.OnWritePage to OnWriteEntity * Fixed some visibility notes (protected/public) git-svn-id: trunk@12780 -
This commit is contained in:
parent
acba12517b
commit
60d4f81cfa
@ -57,25 +57,69 @@ type
|
||||
|
||||
THTMLCustomEntityProducer = class (THTMLContentProducer)
|
||||
private
|
||||
FOnWritePage: TWriterEvent;
|
||||
FOnWriteEntity: TWriterEvent;
|
||||
FEntity: THtmlEntities;
|
||||
protected
|
||||
function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
|
||||
procedure DoWritePage (aWriter : THTMLWriter); virtual;
|
||||
procedure DoWriteEntity (aWriter : THTMLWriter); virtual;
|
||||
Property OnWriteEntity : TWriterEvent read FOnWriteEntity write FOnWriteEntity;
|
||||
Property Entity : THtmlEntities read FEntity write FEntity default heHtml;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
Property OnWritePage : TWriterEvent read FOnWritePage write FOnWritePage;
|
||||
Property Entity : THtmlEntities read FEntity write FEntity default heHtml;
|
||||
function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
|
||||
end;
|
||||
|
||||
{ THTMLCustomPagContentProducer }
|
||||
{ THTMLEntityContentProducer }
|
||||
|
||||
THTMLEntityProducer = class (THTMLCustomEntityProducer)
|
||||
published
|
||||
Property OnWritePage;
|
||||
Property OnWriteEntity;
|
||||
Property Entity;
|
||||
end;
|
||||
|
||||
{ THTMLCustomPageProducer }
|
||||
|
||||
THTMLCustomPageProducer = class (THTMLCustomEntityProducer)
|
||||
private
|
||||
FHeaderProducer : THTMLContentProducer;
|
||||
FOnWriteHeader: TWriterEvent;
|
||||
FOnWriteVisualBody: TWriterEvent;
|
||||
FOnWriteVisualFooter: TWriterEvent;
|
||||
FOnWriteVisualHeader: TWriterEvent;
|
||||
FVisualHeaderProducer : THTMLContentProducer;
|
||||
FVisualBodyProducer : THTMLContentProducer;
|
||||
FVisualFooterProducer : THTMLContentProducer;
|
||||
protected
|
||||
procedure DoWriteEntity (aWriter : THTMLWriter); override;
|
||||
procedure DoWriteHeader (aWriter : THTMLWriter); virtual;
|
||||
procedure DoWriteVisualHeader (aWriter : THTMLWriter); virtual;
|
||||
procedure DoWriteVisualBody (aWriter : THTMLWriter); virtual;
|
||||
procedure DoWriteVisualFooter (aWriter : THTMLWriter); virtual;
|
||||
Property HeaderProducer : THTMLContentProducer read FHeaderProducer write FHeaderProducer;
|
||||
Property VisualHeaderProducer : THTMLContentProducer read FVisualHeaderProducer write FVisualHeaderProducer;
|
||||
Property VisualBodyProducer : THTMLContentProducer read FVisualBodyProducer write FVisualBodyProducer;
|
||||
Property VisualFooterProducer : THTMLContentProducer read FVisualFooterProducer write FVisualFooterProducer;
|
||||
Property OnWriteHeader : TWriterEvent read FOnWriteHeader write FOnWriteHeader;
|
||||
Property OnWriteVisualHeader : TWriterEvent read FOnWriteVisualHeader write FOnWriteVisualHeader;
|
||||
Property OnWriteVisualBody : TWriterEvent read FOnWriteVisualBody write FOnWriteVisualBody;
|
||||
Property OnWriteVisualFooter : TWriterEvent read FOnWriteVisualFooter write FOnWriteVisualFooter;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
end;
|
||||
|
||||
{ THTMLPageProducer }
|
||||
|
||||
THTMLPageProducer = class (THTMLCustomPageProducer)
|
||||
published
|
||||
property OnWriteHeader;
|
||||
property OnWriteVisualHeader;
|
||||
property OnWriteVisualBody;
|
||||
property OnWriteVisualFooter;
|
||||
Property HeaderProducer;
|
||||
Property VisualHeaderProducer;
|
||||
Property VisualBodyProducer;
|
||||
Property VisualFooterProducer;
|
||||
end;
|
||||
|
||||
{ THTMLCustomDatasetContentProducer }
|
||||
|
||||
THTMLCustomDatasetContentProducer = class (THTMLContentProducer)
|
||||
@ -88,11 +132,11 @@ type
|
||||
procedure WriteFooter (aWriter : THTMLWriter);
|
||||
procedure WriteRecord (aWriter : THTMLWriter);
|
||||
protected
|
||||
function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
|
||||
procedure DoWriteHeader (aWriter : THTMLWriter; var el : THTMLCustomElement); virtual;
|
||||
procedure DoWriteFooter (aWriter : THTMLWriter); virtual;
|
||||
procedure DoWriteRecord (aWriter : THTMLWriter); virtual;
|
||||
public
|
||||
function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
|
||||
Property OnWriteHeader : TWriterElementEvent read FOnWriteHeader write FOnWriteHeader;
|
||||
Property OnWriteFooter : TWriterEvent read FOnWriteFooter write FOnWriteFooter;
|
||||
Property OnWriteRecord : TWriterEvent read FOnWriteRecord write FOnWriteRecord;
|
||||
@ -119,11 +163,10 @@ type
|
||||
FSize: integer;
|
||||
FUseValues: boolean;
|
||||
procedure SetItems(const AValue: TStrings);
|
||||
protected
|
||||
function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
|
||||
public
|
||||
constructor create (aOwner : TComponent); override;
|
||||
destructor destroy; override;
|
||||
function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
|
||||
published
|
||||
property Items : TStrings read FItems write SetItems;
|
||||
property UseValues : boolean read FUseValues write FUseValues default false;
|
||||
@ -318,7 +361,7 @@ begin
|
||||
next;
|
||||
end;
|
||||
finally
|
||||
if opened then
|
||||
if not opened then
|
||||
close;
|
||||
end;
|
||||
finally
|
||||
@ -401,8 +444,11 @@ begin
|
||||
with aWriter.Option(FItem.asstring) do
|
||||
begin
|
||||
if FUseValues then
|
||||
sel := (FValue.AsString = FPreSelected)
|
||||
else
|
||||
begin
|
||||
if assigned(FValue) then
|
||||
sel := (FValue.AsString = FPreSelected)
|
||||
end
|
||||
else if assigned(FItem) then
|
||||
sel := (FItem.AsString = FPreSelected);
|
||||
if assigned (FIsPreSelected) then
|
||||
FIsPreSelected (self, sel);
|
||||
@ -514,14 +560,14 @@ function THTMLCustomEntityProducer.WriteContent(aWriter: THTMLWriter
|
||||
): THTMLCustomElement;
|
||||
begin
|
||||
result := aWriter.StartElement(THtmlEntitiesClasses[FEntity]);
|
||||
DoWritePage(aWriter);
|
||||
DoWriteEntity(aWriter);
|
||||
aWriter.EndElement(THtmlEntitiesClasses[FEntity]);
|
||||
end;
|
||||
|
||||
procedure THTMLCustomEntityProducer.DoWritePage(aWriter: THTMLWriter);
|
||||
procedure THTMLCustomEntityProducer.DoWriteEntity(aWriter: THTMLWriter);
|
||||
begin
|
||||
if assigned (FOnWritePage) then
|
||||
FOnWritePage (self, aWriter);
|
||||
if assigned (FOnWriteEntity) then
|
||||
FOnWriteEntity (self, aWriter);
|
||||
end;
|
||||
|
||||
constructor THTMLCustomEntityProducer.Create(AOwner: TComponent);
|
||||
@ -530,5 +576,56 @@ begin
|
||||
FEntity := heHtml;
|
||||
end;
|
||||
|
||||
{ THTMLCustomPageProducer }
|
||||
|
||||
procedure THTMLCustomPageProducer.DoWriteEntity(aWriter: THTMLWriter);
|
||||
begin
|
||||
inherited DoWriteEntity(aWriter);
|
||||
DoWriteHeader(aWriter);
|
||||
aWriter.Startbody;
|
||||
DoWriteVisualHeader(aWriter);
|
||||
DoWriteVisualBody(aWriter);
|
||||
DoWriteVisualFooter(aWriter);
|
||||
awriter.Endbody;
|
||||
end;
|
||||
|
||||
procedure THTMLCustomPageProducer.DoWriteHeader(aWriter: THTMLWriter);
|
||||
begin
|
||||
if assigned(FOnWriteHeader) then
|
||||
FOnWriteHeader(self,aWriter);
|
||||
if assigned(FHeaderProducer) then
|
||||
aWriter.AddElement(FHeaderProducer.WriteContent(aWriter));
|
||||
end;
|
||||
|
||||
procedure THTMLCustomPageProducer.DoWriteVisualHeader(aWriter: THTMLWriter);
|
||||
begin
|
||||
if assigned(FOnWriteVisualHeader) then
|
||||
FOnWriteVisualHeader(self,aWriter);
|
||||
if assigned(FVisualHeaderProducer) then
|
||||
aWriter.AddElement(FVisualHeaderProducer.WriteContent(aWriter));
|
||||
end;
|
||||
|
||||
procedure THTMLCustomPageProducer.DoWriteVisualBody(aWriter: THTMLWriter);
|
||||
begin
|
||||
if assigned(FOnWriteVisualBody) then
|
||||
FOnWriteVisualBody(self,aWriter);
|
||||
if assigned(FVisualBodyProducer) then
|
||||
aWriter.AddElement(FVisualBodyProducer.WriteContent(aWriter));
|
||||
end;
|
||||
|
||||
procedure THTMLCustomPageProducer.DoWriteVisualFooter(aWriter: THTMLWriter);
|
||||
begin
|
||||
if assigned(FOnWriteVisualFooter) then
|
||||
FOnWriteVisualFooter(self,aWriter);
|
||||
if assigned(FVisualFooterProducer) then
|
||||
aWriter.AddElement(FVisualFooterProducer.WriteContent(aWriter));
|
||||
end;
|
||||
|
||||
constructor THTMLCustomPageProducer.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
Entity := heHtml;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user