Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 06/20/22 in all areas

  1. I have published initial release of NX Horizon Event Bus for Delphi as Open Source on GitHub. Features: implements the publish/subscribe pattern, decoupling publishers and subscribers events are categorized by type any Delphi type can be used as an event supports four types of event delivery: synchronous, asynchronous, synchronous in the context of the main thread, and asynchronous in the context of the main thread provides generic record and reference-counted class wrappers for easier usage and management of existing types as events simple in both implementation and usage fast full thread safety https://github.com/dalijap/nx-horizon
  2. I'm glad to inform you about a new release of the HTML Library. It is used by thousands of developers from 50 countries, and now even the RAD Studio IDE. From version 11.2 library will be used by the IDE to render rich text. What's new in version 4.6: Core 1. Packages names are now the same for all IDE versions (starting from Delphi 11). 2. Faster parsing and style calculation 3. SAX XML parser class with special text extration mode. 4. THtLabel now allows text change in click events. 5. CSS serialization (modified CSS StyleSheet can be saved back) 6. Direct PDF export on all platforms including Linux (when using Office library) 7. Document sections (custom header, footer, page size and orientation for each section). 8. Support for different page sizes in print preview (each page can have own size) 9. System theme colors support (Windows, OSX), f.e. background: window) with ability to use custom theme color callback. 10. Converting HTML to paged payout SVG (print preview can be viewed from browser) 11. Zoom from Cursor mode in HtPanel/Editor. 12. New TElement.InsertHTML method. 13. CSS outline propety support. 14. CSS focus-within pseudoclass support. 15. CSS marker pseudoclass support. 16. CSS list-style-position property. 17. Added w-resize and h-resize for CSS cursor. 18. THtDocument now can be used from threads (Special parameter in constructor for use separate font collection). 19. Workaround for FMX bug: rectangle and rounded rectangle with large pen width incorrectly drawn on Android. 20. New HtPanel properties: MinScale, MaxScale Editor 1. Support for style attribute inside MathML elements. 2. New editor option: eoDisableBlockJoinOnPaste - do not join pasted blocks with current 3. New editor option: eoPasteTextBlockAsPara - convert text blocks divided by blank lines to para. 4. eoClearPastedFormatting now removes span elements wuthout attributes. 5. New editor method: PasteTextfromClipboard - paste plain text only. Reports and Scripts 1. Chart now supports style attribute in chart element. 2. Reports library now supports Lazarus (including print preview) 3. Scripter: support for calling chained indexed properties, f.e. Obj[k]. https://delphihtmlcomponents.com
  3. Real professionals have to earn money with their works, they don't have the time to reinvent the wheel, debug and validate it. If you want to shoot yourself in the foot be my guest, but don't expect me to supply the bullets...
  4. FredS

    Solution to compare mysql schema via sql file

    I can show you an example but most of my code uses internal stuff. But let me make one thing clearer; the action after Beyond Compare is manual NOT automatic.. In short, after comparing the prior db creation script with the new one methods within the Patching unit are called manually.. This example increase the Size of a [N]Varchar Column using UniDAC, FB3/4 and SqlServer dbs: /// <summary> /// Increase the Size of a [N]Varchar Column /// </summary> /// <param name="NullKind"> /// Must be given else some dbs default to allowing nulls when you make changes /// </param> class procedure TExecSqlPatch.IncVarChar(const Con: TUniConnection; const ATable, AColumn: string; const NewSize: Word; const NullKind: TNullKind); {$REGION 'History'} // 29-Aug-2018 - ExecuteSQL does not return any usefull count for these Block calls {$ENDREGION} var sql: string; begin case Con.DbProvider of dbFirebird: begin sql := 'EXECUTE block as BEGIN ' + ' if (exists(select 1 from RDB$RELATION_FIELDS rf where rf.RDB$RELATION_NAME = :TableName and rf.RDB$FIELD_NAME = :ColumnName))' + CRLF + ' then execute statement ' + 'ALTER TABLE :TableRaw ALTER COLUMN :ColumnRaw Type VARCHAR(:NewSize)'.ToQuoted + SEMICOLON + CRLF + 'END'; sql.ReplaceParams([ATable.ToUpper, AColumn.ToUpper, ParamRaw + ATable.ToUpper, ParamRaw + AColumn.ToUpper, NewSize]).Error.Assert; Con.ExecuteSQL(sql); sql := 'EXECUTE block as BEGIN ' + ' if (exists(select 1 from RDB$RELATION_FIELDS rf where rf.RDB$RELATION_NAME = :TableName and rf.RDB$FIELD_NAME = :ColumnName))' + CRLF + ' then execute statement ' + 'ALTER TABLE :TableRaw ALTER :ColumnRaw :NullKind NOT NULL'.ToQuoted + SEMICOLON + CRLF + 'END'; sql.ReplaceParams([ATable.ToUpper, AColumn.ToUpper, ParamRaw + ATable.ToUpper, ParamRaw + AColumn.ToUpper, ParamRaw + cFB3NullKind[NullKind]]).Error.Assert; Con.ExecuteSQL(sql); end; dbSQLServer: begin sql := 'IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE [TABLE_NAME] = :Table AND [COLUMN_NAME] = :Column) ' + CRLF + 'BEGIN ' + CRLF + ' ALTER TABLE :TableRaw ALTER COLUMN :ColumnRaw NVARCHAR(:NewSize) :NullKind ' + CRLF + 'END '; sql.ReplaceParams([ATable.ToUpper, AColumn.ToUpper, ParamRaw + ATable.ToUpper, ParamRaw + AColumn.ToUpper, NewSize, ParamRaw + cMSSQLNullKind[NullKind]]).Error.Assert; Con.ExecuteSQL(sql); end; else raise ENotImplemented.Create('Not Implemented'); end; end;
  5. Incus J

    Form designer width = client width?

    The overall size of the form may vary from platform to platform (e.g. sizes of titlebar and border differ between Windows and macOS, and may differ between OS versions too). So at design time you don't necessarily know what the overall width of the form will be. It would make sense for Delphi to use width of the client area - since that value is known at design time. If width is client width, then it would make sense for minwidth to be minimum client width also, so everything matches nicely - but I don't know whether that is the case. If not, and minwidth is using the full width of the form, while width isn't, that seems unfortunate. I believe minwidth is a new property for FMX in Alexandria though - perhaps it could use a tuneup. Just a workaround thought: If minwidth is including titlebar and border areas in its calculation, the RTL must have access to that all encompassing value, so your app may be able to query values once it is running, and set appropriate constraints at runtime, rather than design time. The documentation has entries for both FMX TForm width and clientwidth properties, so you may have more options to play with at runtime.
  6. Rollo62

    ANN: Open Source Event Bus NX Horizon

    Thanks for the insights. I just started to read your new book for some days now, since I get distracted here and there, but I already can say its very well written book and nicely structured. I hope to see more books like that, to core topics, from you soon.
  7. Dalija Prasnikar

    ANN: Open Source Event Bus NX Horizon

    Thanks! There are few reasons why they are not implemented as of now. First, I wrote this for my own needs and in my code I used regular methods, so I didn't had immediate need for anonymous methods. Next, I wrote about this event bus in my recent book Delphi Thread Safety Pattern, so I wanted to keep code as minimal as possible and focused on bus itself. Anonymous methods are definitely one of the potential future enhancements, but I wanted to publish the code as soon as possible instead of waiting to polish it more as this might have postponed release indefinitely.
  8. Ah you used LockBox component... what a shame! Real professionals don't use other people's components they make their own. But it's OK, it works.
  9. Fr0sT.Brutal

    Interbase VAR Licence and Demos or Free Versions

    I wouldn't bother with IB licensing stuff when there's opensource Firebird. Especially if you have "small apps" that unlikely require some unique IB features.
  10. Vandrovnik

    Interbase VAR Licence and Demos or Free Versions

    Could you use Firebird for the free version? With server, or even embedded, so there is no need to install it.
  11. Angus Robertson

    ICS V8.69 announced

    Sorry for the delay, ICS V8.69 is now available for automated install from GetIt for Delphi 10.4 and 11. Once installed, you should find the SSL demo sample group in a directory similar to: C:\Users\angus\Documents\Embarcadero\Studio\22.0\CatalogRepository\ICS_FMX-8.69-11\Samples\Delphi\SslInternet\SslDemos.bpg Angus
×