Browse Source

* TCustomPageContentProducer is renamed to THTMLEntityProducer and changed in such a way that it can produce more then only <html> tags.
* THTMLDatasetSelectProducer.Size is now an integer
* THTMLDatasetSelectProducer.PreSelected and UseValues implemented like in THTMLSelectProducer

git-svn-id: trunk@8574 -

joost 18 years ago
parent
commit
c806f3e494
1 changed files with 40 additions and 18 deletions
  1. 40 18
      packages/fcl-web/src/fphtml.pp

+ 40 - 18
packages/fcl-web/src/fphtml.pp

@@ -20,6 +20,13 @@ interface
 uses
 uses
   Classes, SysUtils, htmlelements, htmlwriter, httpdefs, fphttp, db;
   Classes, SysUtils, htmlelements, htmlwriter, httpdefs, fphttp, db;
 
 
+type
+  THtmlEntities = (heHtml,heBody,heHead,heDiv,heParagraph);
+
+const
+  THtmlEntitiesClasses : array[THtmlEntities] of THTMLElementClass =
+    (THTML_html, THTML_body, THTML_head, THTML_div, THTML_p);
+
 type
 type
 
 
   { THTMLContentProducer }
   { THTMLContentProducer }
@@ -46,25 +53,27 @@ type
   TWriterEvent = procedure (Sender:THTMLContentProducer; aWriter : THTMLWriter) of object;
   TWriterEvent = procedure (Sender:THTMLContentProducer; aWriter : THTMLWriter) of object;
   TBooleanEvent = procedure (Sender:THTMLContentProducer; var flag : boolean) of object;
   TBooleanEvent = procedure (Sender:THTMLContentProducer; var flag : boolean) of object;
 
 
-  { THTMLCustomPagContentProducer }
-
-  { THTMLCustomPageContentProducer }
+  { THTMLCustomEntityProducer }
 
 
-  THTMLCustomPageContentProducer = class (THTMLContentProducer)
+  THTMLCustomEntityProducer = class (THTMLContentProducer)
   private
   private
     FOnWritePage: TWriterEvent;
     FOnWritePage: TWriterEvent;
+    FEntity: THtmlEntities;
   protected
   protected
     function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
     function WriteContent (aWriter : THTMLWriter) : THTMLCustomElement; override;
     procedure DoWritePage (aWriter : THTMLWriter); virtual;
     procedure DoWritePage (aWriter : THTMLWriter); virtual;
   public
   public
+    constructor Create(AOwner: TComponent); override;
     Property OnWritePage : TWriterEvent read FOnWritePage write FOnWritePage;
     Property OnWritePage : TWriterEvent read FOnWritePage write FOnWritePage;
+    Property Entity : THtmlEntities read FEntity write FEntity default heHtml;
   end;
   end;
 
 
   { THTMLCustomPagContentProducer }
   { THTMLCustomPagContentProducer }
 
 
-  THTMLPageContentProducer = class (THTMLCustomPageContentProducer)
+  THTMLEntityProducer = class (THTMLCustomEntityProducer)
   published
   published
     Property OnWritePage;
     Property OnWritePage;
+    Property Entity;
   end;
   end;
 
 
   { THTMLCustomDatasetContentProducer }
   { THTMLCustomDatasetContentProducer }
@@ -130,9 +139,11 @@ type
     FControlName: string;
     FControlName: string;
     FIsPreSelected: TBooleanEvent;
     FIsPreSelected: TBooleanEvent;
     FItemField: string;
     FItemField: string;
-    FSize: string;
+    FSize: integer;
     FValueField: string;
     FValueField: string;
     FValue, FItem : TField;
     FValue, FItem : TField;
+    FPreSelected: string;
+    FUseValues: boolean;
   protected
   protected
     procedure DoWriteHeader (aWriter : THTMLWriter; var el : THTMLCustomElement); override;
     procedure DoWriteHeader (aWriter : THTMLWriter; var el : THTMLCustomElement); override;
     procedure DoWriteFooter (aWriter : THTMLWriter); override;
     procedure DoWriteFooter (aWriter : THTMLWriter); override;
@@ -140,10 +151,12 @@ type
   public
   public
     constructor create (aOwner : TComponent); override;
     constructor create (aOwner : TComponent); override;
   published
   published
+    property UseValues : boolean read FUseValues write FUseValues default false;
+    property PreSelected : string read FPreSelected write FPreSelected;
     property ItemField : string read FItemField write FItemField;
     property ItemField : string read FItemField write FItemField;
     property ValueField : string read FValueField write FValueField;
     property ValueField : string read FValueField write FValueField;
     property OnIsPreSelected : TBooleanEvent read FIsPreSelected write FIsPreSelected;
     property OnIsPreSelected : TBooleanEvent read FIsPreSelected write FIsPreSelected;
-    property Size : string read FSize write FSize;
+    property Size : integer read FSize write FSize;
     property ControlName : string read FControlName write FControlName;
     property ControlName : string read FControlName write FControlName;
     property OnWriteHeader;
     property OnWriteHeader;
   end;
   end;
@@ -348,6 +361,7 @@ end;
 constructor THTMLSelectProducer.create(aOwner: TComponent);
 constructor THTMLSelectProducer.create(aOwner: TComponent);
 begin
 begin
   inherited create (aOwner);
   inherited create (aOwner);
+  FUseValues := False;
   FItems := TStringlist.Create;
   FItems := TStringlist.Create;
   size := 1;
   size := 1;
 end;
 end;
@@ -364,7 +378,7 @@ procedure THTMLDatasetSelectProducer.DoWriteHeader (aWriter : THTMLWriter; var e
 var s : THTML_Select;
 var s : THTML_Select;
 begin
 begin
   s := aWriter.StartSelect;
   s := aWriter.StartSelect;
-  s.size := FSize;
+  s.size := IntToStr(FSize);
   s.name := FControlName;
   s.name := FControlName;
   el := s;
   el := s;
   if FValueField <> '' then
   if FValueField <> '' then
@@ -386,12 +400,13 @@ begin
   if assigned (FItem) then
   if assigned (FItem) then
     with aWriter.Option(FItem.asstring) do
     with aWriter.Option(FItem.asstring) do
       begin
       begin
+      if FUseValues then
+        sel := (FValue.AsString = FPreSelected)
+      else
+        sel := (FItem.AsString = FPreSelected);
       if assigned (FIsPreSelected) then
       if assigned (FIsPreSelected) then
-        begin
-        sel := false;
         FIsPreSelected (self, sel);
         FIsPreSelected (self, sel);
-        selected := sel;
-        end;
+      selected := sel;
       if assigned (FValue) then
       if assigned (FValue) then
         Value := FValue.Asstring;
         Value := FValue.Asstring;
       end;
       end;
@@ -400,7 +415,8 @@ end;
 constructor THTMLDatasetSelectProducer.create(aOwner: TComponent);
 constructor THTMLDatasetSelectProducer.create(aOwner: TComponent);
 begin
 begin
   inherited create(aOwner);
   inherited create(aOwner);
-  Size := '1';
+  Size := 1;
+  FUseValues := False;
 end;
 end;
 
 
 { TCustomHTMLDataModule }
 { TCustomHTMLDataModule }
@@ -492,21 +508,27 @@ begin
     FOnGetContent(Self,ARequest,HTMLPage,Handled);
     FOnGetContent(Self,ARequest,HTMLPage,Handled);
 end;
 end;
 
 
-{ THTMLCustomPageContentProducer }
+{ THTMLCustomEntityProducer }
 
 
-function THTMLCustomPageContentProducer.WriteContent(aWriter: THTMLWriter
+function THTMLCustomEntityProducer.WriteContent(aWriter: THTMLWriter
   ): THTMLCustomElement;
   ): THTMLCustomElement;
 begin
 begin
-  result := aWriter.Starthtml;
+  result := aWriter.StartElement(THtmlEntitiesClasses[FEntity]);
   DoWritePage(aWriter);
   DoWritePage(aWriter);
-  aWriter.Endhtml;
+  aWriter.EndElement(THtmlEntitiesClasses[FEntity]);
 end;
 end;
 
 
-procedure THTMLCustomPageContentProducer.DoWritePage(aWriter: THTMLWriter);
+procedure THTMLCustomEntityProducer.DoWritePage(aWriter: THTMLWriter);
 begin
 begin
   if assigned (FOnWritePage) then
   if assigned (FOnWritePage) then
     FOnWritePage (self, aWriter);
     FOnWritePage (self, aWriter);
 end;
 end;
 
 
+constructor THTMLCustomEntityProducer.Create(AOwner: TComponent);
+begin
+  inherited Create(AOwner);
+  FEntity := heHtml;
+end;
+
 end.
 end.