Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 10/24/24 in all areas

  1. 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.
  2. SynEdit now has annotated Scrollbars. In this screenshot you can see in the scrollbar: the position of the multiple carets (full blueish line) lines with errors (full red line) the position of the bookmarks (mini bluish marks on the left) line modification info (on the right side) alpha-blended slider This feature is on the multicaret branch. Zoom In/Out/Reset functionality has also been implemented. You can still vote on this poll to influence future development. See the technical details. See also SynEdit now supports mulit-caret, multi-selection editing - I made this - Delphi-PRAXiS [en].
  3. I've been using Async Pro for over 20 years, well documented, the original version was sold in a box with a book. Now I install it from GetIt. But I updated the TApdCustomComPort.InitializePort method so it can open COM ports by name instead of simple numbers, since many physical and virtual COM ports have more complex name than COM1 and COM2, like CNCA0. I have a free component that locates and lists COM ports, https://www.magsys.co.uk/delphi/maghardware.asp Angus
  4. hansw

    Problem with linking of Midas.dll on 64 bit

    You can use mkexp to create the import library file: mkexp midas.a midas.dll Then you should replace your "#pragma comment(lib...)" and #pragma link commands with just one command: #pragma comment(lib, "midas") By omitting the extension the linker will automatically use ".lib" resp. ".a" depending on the platform. HTH, Hans
  5. Ian Branch

    Putting Delphi Application inside web page

    Yep. Use it all the time. So do my Customers. It means that I only need to maintain one App and it can be accessed via LAN, WAN, RDP or WEB. It is accessed on the WEB via any Browser. The only issues I have had was more of issues with portable devices/tablets and some compatabilities that need to be accepted or worked around. Particularly mousing.
  6. Uwe Raabe

    Feature enhancement request - Filter DFM properties

    And Embarcadero still refuses to implement this feature request (despite its 188 votes): RSP-35301 - Option to design in Screen PPI but save in 96 PPI For me and quite a couple of other users that is mandatory for using the IDE in High-DPI.
  7. I have been given this system to look at in order to place a Delphi app inside a web browser: https://thinfinity-vui-v3-docs.cybelesoft.com/ Has anyone else tried to do this? Has anyone tried to use thinfinity?
  8. @Jim McKeeth has updated the GExperts documentation a bit. It’s far from finished but that’s better than the totally outdated one on gexperts.org. I have now exported it as webhelp and checked it in to subversion. You can read it at my newly created domain help.gexperts.de. (The domain is temporary only for now. I got it cheap but I’m not sure I will keep it.)
  9. Keesver

    Putting Delphi Application inside web page

    We are also a satisfied user of Thinfinity. We have a 40 user license and run 2 VM's behind a gateway (also part of Thinfinity). Works pretty good. Support is good. Pricing is ok, especially since users are counted as 'concurrent' users (as opposed to named users).
  10. Remy Lebeau

    tag as String

    I'll rephrase. Prior to the introduction of 64bit, the Tag was an Integer and pointers fit in an Integer, so it was common to store pointers in a Tag. When 64bit was added, the Tag became a NativeInt to preserve existing code in common use.
  11. Tom Chamberlain

    Which ODBC driver version is used by FireDac

    Use the TFDConnection object's GetInfoReport() method, it takes a string list. It shows everything you want to know about the connection and the driver it used/picked. We have this on our login/splash screen hidden behind a TLabel double-click event because we were having the same types of issues. Also look into the FDDrivers.ini file configuration. ================================ Connection definition parameters ================================ DriverID=MSSQL Database=******* User_Name=******* Password=***** ODBCAdvanced=TrustServerCertificate=Yes; MARS=Yes Server=192.168.56.109 VariantFormat=String ExtendedMetaData=True ================================ FireDAC info ================================ Tool = RAD Studio 12 FireDAC = 29.0.51961.7529 Platform = Windows 32 bit Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR ================================ Client info ================================ Loading driver MSSQL ... Loading odbc32.dll driver manager Creating ODBC environment handle Searching for ODBC driver ... Checking for ODBC driver [ODBC DRIVER 18 FOR SQL SERVER] ... Found [ODBC Driver 18 for SQL Server] Driver Manager version = 03.81.19041.0000 ================================ Session info ================================ Checking session ... Warning: The client [18.3.3.0.0] and server [16.0.0.0.0] major versions difference > 1. Warning: MS ODBC 11 does not support SQL_VARIANT data type. Warning: SQL Server 2016 and compatibility level >= 130 may lead to DATETIME comparision failure. Current catalog = Current schema = dbo Driver name = msodbcsql18.dll Driver version = 18.03.0003 Driver conformance = 3 DBMS name = Microsoft SQL Server DBMS version = 16.00.1130
  12. I suggested the same in my previous post
  13. It looks like whoever implemented that in the Delphi compiler was overly obsessed with codesize. If you compare what both gcc and clang do you can see that they rather produce a ton of mov instructions (which execute nicely in parallel on modern processors) before using memmov or rep: https://godbolt.org/z/Gjsqn7qas (change the size of the static array to see the assembly code change)
  14. Remy Lebeau

    tag as String

    😎
  15. Brandon Staggs

    tag as String

    What could possibly go wrong
  16. For those that are interested in a few lightweight tutorials, here are some short reads: Accesing a FireDAC dataset from the Sempare Template Engine for Delphi Accessing data from the Sempare Template Engine for Delphi Creating layouts using the Sempare Template Engine Configuring the Sempare Template Engine for Delphi Using the Sempare Template Engine for Delphi Using loops in the Sempare Template Engine for Delphi Functional templates with the Sempare Template Engine for Delphi Introducing the Sempare Template Engine Playground Wizard for the Delphi RAD Studio IDE
×