Jump to content
Alexander Sviridenkov

ANN: HTMl Library 4.9 released. WebUI and more

Recommended Posts

WebUI - new LowCode Web framework for Delphi.
  See https://youtu.be/XCmvz2DPN4Y
  Documentation: https://delphihtmlcomponents.com/webui/
  Sample project: https://delphihtmlcomponents.com/webui.zip
    How to use
      1. Extract files from zip.
      2. Run nw.exe (requires Administrator because uses http.sys web server)
      3. Enter your DB connection details or leave demo DB
      4. Press Create UI
      5. After UI is created press Start server and open http://localhost:8080 in browser.
 
Core

  New THtListView component (VCL/FMX) - display data in listview-like layout with full HTML support.
  THtDocument.AsBitmap method - convert document to bitmap.
  New printing parameter - PrintAsBitmap. Useful when printing white text over black/colored background.
  TElement.AddCSSRecursive(const CSS: string; UpdateStyleAttr: boolean = false) - set property for element and its descendants.
  SVG: support for switch element.
  THtXMLNode.JSON method - save to JSON
  THtXMLNode.XML property - set node inner XML.
  THtJSONSerializer class - serialize objects and records into JSON.
  Templates: support for conditional sections:
    {{@name}}..{{/name}} - name is not empty
    {{@!name}}..{{/name}} - name is empty
  Templates: class functions for rendering and JSON support (result is encoded as JSON):
     RenderTemplate(const ATemplate: hstring; AContext: THtXMLNode; JSONMode: boolean = false): string;
     RenderTemplate(const ATemplate: hstring; AContext: TStrings; JSONMode: boolean = false): string;
  Templates: ThreadSafeRender methods - can be called simultaneously from different threads.
  New VCL and FMX unit htprinters / fmx.htprinters - manage printer setting - set custom paper size, list available paper sizes, etc.
  New unit htboxes - calculate optimal layout of boxes on pallets and inside container. See PalletCalc demo.

Scripter

  x64: support for var parameters in methods
  Support for calling interface methods
  Write and Writenl functions - output to debug console.
  New HTMLtoText(const s: string) function.
  Console.log/warn/error messages without debugger are sent to system log (OutputDebugString).

Editor

  Improved Markdown conversion (better lists support)


Reports

  Barcode element - new type: auto - select barcode type depending on data length and symbols.

SQL

  TSQLSelectStatement - new methods
    AddTable
    AddJoinedTable
  Advanced CreateQueryforTable method.
  Improved support for limits in different dialects
  TSQLContext:
    JSONMode property.
    new AddSelectQuery method.
  PROGRESSBAR SQL function.
  TSQLParam.ValuefromString method.
  New TDMField properties:
    property ContentType: string;
    property MaxDataLength: integer;
    property UniqueValuesCount: integer;
    property UniqueValuesPercent: single;
    property UniqueValues: string;
  New TDMTable method: FillContentTypes - analyze table data and fill field properties.
  New TDMTable method GetReferencedTabler - return tables that reference this table in FK.
  New TDMTable properties:
    property RecordCount: integer;
    property TableType: string;
  New TDMQQuery methods
    function AsRowData(Limit: integer = 0; LowerCase: boolean = false): THtXMLNode - serialize to XML
    function AsJSON(Limit: integer = 0): string - serialize to JSON
    function InsertXML(const Table: string; Fields: THtXMLNode; Schema: TDMSchema; ReturnKey: boolean = false): TDMQuery;
     - insert to table using parameters from XML attributes.
    function UpdateXML(const Table: string; Fields: THtXMLNode; Schema: TDMSchema): TDMQuery
     - update table using parameters from XML attributes.
    procedure ToXML(ANode: THtXMLNode) - serialize to XML
    function ExecWX(Params: THtXMLNode; const ASQL: string): TDMQuery - execute query using parameters from XML attributes.
  New method TDMVirtualSchema.RegisterQuery(const SQL, TableName: string; const TableDescription: string = '')
    - register SQL statement as virtual table.
  TDMDictionary class - abstract class for application dictionaries.
  Implementations:
  TDMSQLDictionary
  TDMStringDictionary
  TDMJSONDictionary
  TDMDictionaryManager - application dictionary manager class.
  TDMVirtualQuery class - class for performing SQL queries on virtual databases.

 

Office

  Faster snippet extraction.
  Support for DOCX embedded fonts.
  Improved rendering quality for PDF, XLSX, RTF, Outlook, DOC and DOCX formats.
  Better search in code files (PAS, C, etc.).
  Support for referenced images (cid:) in Outlook messages.

 

  • Like 7
  • Thanks 2

Share this post


Link to post

This is pretty much overwhelming.


I'm afraid there is already a point here where users are shocked by the functionality and need a gentle way to climb the learning curve.

In my opinion, it is always best to have many examples covering different levels of difficulty to understand the whole concept behind it piece-by-piece.
If there is a clear usage concept behind it, how could you explain it in the docs, maybe step by step?

Maybe a user needs a mix of Delphi and HTML/JS knowledge to understand most of it, how can these lessons be broken down into small, digestible chunks?

 

Share this post


Link to post
8 minutes ago, Rollo62 said:

This is pretty much overwhelming.


I'm afraid there is already a point here where users are shocked by the functionality and need a gentle way to climb the learning curve.

In my opinion, it is always best to have many examples covering different levels of difficulty to understand the whole concept behind it piece-by-piece.
If there is a clear usage concept behind it, how could you explain it in the docs, maybe step by step?

Maybe a user needs a mix of Delphi and HTML/JS knowledge to understand most of it, how can these lessons be broken down into small, digestible chunks? 

 

You can get first working application with almost zero coding. Simply load demo project, enter your database credentials (or leave sample database) and press button to generate UI. Application is ready.

Now start browser, switch do design mode (F2) and use designers to adjust tables, tabs, etc as shown in video. Each designer has help ? button in caption which leads to manual.

 

Typical workflow is described there https://delphihtmlcomponents.com/webui/typical-workflow.html

1. Build UI with default settings.
2. Check created UI and make TWebUIBuilder descendant with overridden rules.
3. Create UI using your TWebUIBuilder descendant and analyze it.
4. Repeat steps 2, 3 until you get an acceptable result.
5. Use WebUI designers for final polishing.

Also there are Server and UI sections which itself are samples, you can open any table or action (button) designer and see how it works.
More samples and tutorials will definitely be added later.

Edited by Alexander Sviridenkov

Share this post


Link to post

Is WebUI optimized for mobile devices, or just for devices with large screens (computers)?

Share this post


Link to post
3 minutes ago, Kryvich said:

Is WebUI optimized for mobile devices, or just for devices with large screens (computers)?

Currently there is only desktop layout, but since UI is stored in an intermediate representation, there will be no need for modifications when mobile templates will be added.

Share this post


Link to post

Document Viewer is added to Demo (Word, Excel, PDF, Powerpoint, etc.).

1. Create UI and start Server

2. Open Documens section

3. Press F2 to switch to design mode

4. Using gear icon above documents table and at view window (right) open designers and change documents folder/mask.

296771458_Screenshot2024-10-29023631.thumb.jpg.d782d6191df612383f56504247373b03.jpg

  • Thanks 1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×