123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518 |
- unit demohtmlwidgets;
- {$mode objfpc}
- interface
- uses
- sysutils, web, js, webwidget, htmlwidgets, widgetdemo;
- Type
-
- { TButtonDemo }
- TButtonDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TRadioDemo }
- TRadioDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TCheckboxDemo }
- TCheckboxDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TTextInputDemo }
- TTextInputDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
-
- { TFileInputDemo }
- TFileInputDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TDateInputDemo }
- TDateInputDemo = class(TDemoContainer)
- protected
- procedure DoChange(Sender: TObject; Event: TJSEvent); override;
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TButtonInputDemo }
- TButtonInputDemo = class(TDemoContainer)
- private
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { THiddenInputDemo }
- THiddenInputDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TTextAreaDemo }
- TTextAreaDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TLabelWidgetDemo }
- TLabelWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TTextWidgetDemo }
- TTextWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TTextLinesWidgetDemo }
- TTextLinesWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TSelectWidgetDemo }
- TSelectWidgetDemo = Class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TTagWidgetDemo }
- TTagWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- end;
- { TDivWidgetDemo }
- TDivWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- end;
- { TTagWidgetDemo }
- { TParagraphWidget }
- TParagraphWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- end;
- { TAudioWidgetDemo }
- TAudioWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- end;
- { TVideoWidgetDemo }
- TVideoWidgetDemo = class(TDemoContainer)
- public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- end;
- { TEventTableWidgetDemo }
- TEventTableWidgetDemo = Class(TDemoContainer)
- private
- procedure DoGetCellData(Sender: TObject; Enum: TTableRowEnumerator; aCell: TTableWidgetCellData);
- Public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- { TStringsTableWidgetDemo }
- TStringsTableWidgetDemo = Class(TDemoContainer)
- Public
- class function WebWidgetClass: TCustomWebWidgetClass; override;
- Procedure ShowDemo; override;
- end;
- implementation
- uses democonsts;
- {
- Countrycodes are included as a JSON javascript definition in the HTML file, countrycodes.js
- We define it here as an external.
- }
- {$modeswitch externalclass}
- Type
- TCountry = Class external name 'Object' (TJSObject)
- name,code : string;
- end;
- Var
- CountryCodes : Array of TCountry; external name 'countrycodes';
- { TStringsTableWidgetDemo }
- class function TStringsTableWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TStringsTableWidget;
- end;
- procedure TStringsTableWidgetDemo.ShowDemo;
- Var
- STW : TStringsTableWidget;
- I : Integer;
- begin
- inherited ShowDemo;
- STW:=TStringsTableWidget(WidgetInstance);
- STW.Classes:='table table-bordered table-striped table-hover table-sm';
- STW.CustomColumns.Add('ISO');
- STW.CustomColumns.Add('Country');
- STW.BeginUpdate;
- STW.RowCount:=Length(CountryCodes);
- For I:=0 to Length(CountryCodes)-1 do
- begin
- STW.Cells[0,I]:=CountryCodes[i].code;
- STW.Cells[1,i]:=CountryCodes[i].Name;
- end;
- STW.EndUpdate;
- end;
- { TEventTableWidgetDemo }
- procedure TEventTableWidgetDemo.DoGetCellData(Sender: TObject; Enum: TTableRowEnumerator; aCell: TTableWidgetCellData);
- begin
- if aCell.Kind=rkBody then
- case aCell.Col of
- 0 : aCell.Text:='Value '+IntToStr(aCell.Row+1);
- 1 : aCell.Widget:=TTextInputWidget.Create(Self);
- end;
- end;
- class function TEventTableWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TEventTableWidget;
- end;
- procedure TEventTableWidgetDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TEventTableWidget(WidgetInstance).OnGetCellData:=@DoGetCellData;
- TEventTableWidget(WidgetInstance).CustomColumns.Add('Name');
- TEventTableWidget(WidgetInstance).CustomColumns.Add('Value');
- TEventTableWidget(WidgetInstance).RowCount:=10;
- end;
- { TVideoWidgetDemo }
- class function TVideoWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TVideoWidget;
- end;
- { TAudioWidgetDemo }
- class function TAudioWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TAudioWidget;
- end;
- { TSelectWidgetDemo }
- class function TSelectWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TSelectWidget;
- end;
- procedure TSelectWidgetDemo.ShowDemo;
- begin
- inherited ShowDemo;
- With TSelectWidget(WidgetInstance).Items do
- begin
- Add('Item 1');
- Add('Item 2');
- Add('Item 3');
- Add('Item 4');
- Add('Item 5');
- end;
- end;
- { TParagraphWidget }
- class function TParagraphWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TParagraphWidget;
- end;
- { TDivWidgetDemo }
- class function TDivWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TDivWidget
- end;
- { TTagWidgetDemo }
- class function TTagWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TTagWidget;
- end;
- { TTextLinesWidgetDemo }
- class function TTextLinesWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TTextLinesWidget;
- end;
- procedure TTextLinesWidgetDemo.ShowDemo;
- begin
- inherited ShowDemo;
- With TTextLinesWidget(WidgetInstance).Lines do
- begin
- beginUpdate;
- try
- Add(Lorem1);
- Add('');
- Add(Lorem2);
- Add('');
- Add(Lorem3);
- finally
- EndUpdate;
- end;
- end;
- end;
- { TTextWidgetDemo }
- class function TTextWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TTextWidget
- end;
- procedure TTextWidgetDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TTextWidget(WidgetInstance).Text:=Lorem1;
- end;
- { TLabelWidgetDemo }
- class function TLabelWidgetDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TLabelwidget;
- end;
- procedure TLabelWidgetDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TLabelwidget(WidgetInstance).Text:=Lorem1;
- end;
- { TTextAreaDemo }
- class function TTextAreaDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TTextAreaWidget;
- end;
- procedure TTextAreaDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TTextAreaWidget(WidgetInstance).Rows:=20;
- TTextAreaWidget(WidgetInstance).Columns:=80;
- TTextAreaWidget(WidgetInstance).Lines.Add(Lorem1);
- TTextAreaWidget(WidgetInstance).Lines.Add('');
- TTextAreaWidget(WidgetInstance).Lines.Add(Lorem2);
- TTextAreaWidget(WidgetInstance).Lines.Add('');
- TTextAreaWidget(WidgetInstance).Lines.Add(Lorem3);
- end;
- { THiddenInputDemo }
- class function THiddenInputDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=THiddenInputWidget;
- end;
- procedure THiddenInputDemo.ShowDemo;
- begin
- inherited ShowDemo;
- THiddenInputWidget(WidgetInstance).Value:='This value is hidden';
- THiddenInputWidget(WidgetInstance).ValueName:='MyHidden';
- end;
- { TButtonDemo }
- class function TButtonDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TButtonWidget;
- end;
- procedure TButtonDemo.ShowDemo;
- begin
- inherited ShowDemo;
- WidgetInstance.OnClick:=@DoClick;
- end;
- { TRadioDemo }
- class function TRadioDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TRadioInputWidget;
- end;
- procedure TRadioDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TRadioInputWidget(WidgetInstance).Text:='A Radio';
- WidgetInstance.OnChange:=@DoChange;
- end;
- { TCheckboxDemo }
- class function TCheckboxDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TCheckboxInputWidget;
- end;
- procedure TCheckboxDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TCheckboxInputWidget(WidgetInstance).Text:='A checkbox';
- WidgetInstance.OnChange:=@DoChange;
- end;
- { TTextInputDemo }
- class function TTextInputDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TTextInputWidget;
- end;
- procedure TTextInputDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TTextInputWidget(WidgetInstance).Value:='A Text Value';
- WidgetInstance.OnChange:=@DoChange;
- end;
- { TDateInputDemo }
- procedure TDateInputDemo.DoChange(Sender: TObject; Event: TJSEvent);
- begin
- Inherited;
- Writeln(Sender.ClassName,' date value: ', DateToStr(TDateInputWidget(WidgetInstance).Date));
- end;
- class function TDateInputDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TDateInputWidget;
- end;
- procedure TDateInputDemo.ShowDemo;
- begin
- inherited ShowDemo;
- TDateInputWidget(WidgetInstance).Date:=Date+1;
- WidgetInstance.OnChange:=@DoChange;
- end;
- { TFileInputDemo }
- class function TFileInputDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TFileInputWidget;
- end;
- procedure TFileInputDemo.ShowDemo;
- begin
- inherited ShowDemo;
- // TFileInputWidget(WidgetInstance).FileName:='my.txt';
- WidgetInstance.OnChange:=@DoChange;
- end;
- { TButtonInputDemo }
- class function TButtonInputDemo.WebWidgetClass: TCustomWebWidgetClass;
- begin
- Result:=TButtonInputWidget;
- end;
- procedure TButtonInputDemo.ShowDemo;
- begin
- inherited ShowDemo;
- WidgetInstance.OnClick:=@DoClick;
- TButtonInputWidget(WidgetInstance).Value:='Press me';
- end;
- initialization
- TCheckboxDemo.RegisterDemo;
- TRadioDemo.RegisterDemo;
- TButtonDemo.RegisterDemo;
- TTextInputDemo.RegisterDemo;
- TDateInputDemo.RegisterDemo;
- TFileInputDemo.RegisterDemo;
- TButtonInputDemo.RegisterDemo;
- THiddenInputDemo.RegisterDemo;
- TTextAreaDemo.RegisterDemo;
- TLabelWidgetDemo.RegisterDemo;
- TTextWidgetDemo.RegisterDemo;
- TTagWidgetDemo.RegisterDemo;
- TDivWidgetDemo.RegisterDemo;
- TParagraphWidgetDemo.RegisterDemo;
- TSelectWidgetDemo.RegisterDemo;
- TAudioWidgetDemo.RegisterDemo;
- TVideoWidgetDemo.RegisterDemo;
- TEventTableWidgetDemo.RegisterDemo;
- TStringsTableWidgetDemo.RegisterDemo;
- end.
|