TMS FNC Ribbon : modern ribbon UI on every operating system and for every Pascal framework

With the FNC product line (framework-neutral-components), it is our vision to enable developers with a single UI controls set, a single learning-curve and a single license to have the freedom of choice to develop Delphi VCL Windows applications, Delphi FMX cross-platform applications for Windows, macOS, Android, iOS or even LCL based Lazarus applications for Windows, macOS or Linux.

Since our study & research to realize this FNC layer, we have already created a powerful grid, a flexible planning/scheduling/calendar control, a feature-rich treeview, a rich editor, a toolbar and many more smaller UI controls. The next logical step was to create a ribbon UI control to enable building modern user interfaces for your VCL, FireMonkey Delphi applications of Windows, macOS or Linux applications created with Lazarus/FPC. Our ribbon UI control takes the hard work out of your hands to offer the subtle differences a Microsoft Office 2016 style colourful ribbon UI comprises on these different operating systems.

To get started, we have integrated ribbon application and ribbon form repository items in the Delphi “new item” wizard. You can select from there to create a new VCL or FMX ribbon project or to add a new VCL or FMX ribbon form to your existing project.

It is of course also possible to add a new ribbon UI to an existing form. To do so, drop the TTMSFNCRibbon control on the form and do not forget to descend your form from TTMSFNCRibbonForm instead of a TForm.

The ribbon architecture
Let’s have a look at the TTMSFNCRibbon control itself. It consists of several parts, the main parts being:

TMSFNCRibbonWrapper : This is the container component for the ribbon form caption that contains the QAT, caption text, system menu
TMSFNCRibbonQAT : This is the quick access toolbar that can sit in the window caption or below the ribbon. The position can be set via the property TTMSFNCRibbon.QATMode.
TMSFNCRibbonCaption : This represents the caption text of the window itself
TMSFNCRibbonSystemMenu : This is the application system menu typically used to close, minimize or maximize the form
TTMSFNCRibbonFileButton : This is the application menu button
TMSFNCRibbonPageControl : This is the page control that is used to paginate between different ribbon pages
TTMSFNCRibbonPageControlContainer : This is a single ribbon page that is a container for toolbars on the ribbon

To add a toolbar and toolbar controls to the ribbon, right-click the TTMSFNCRibbonPageControlContainer and from the context menu select to add a toolbar.
Next, right-click the toolbar and from the context menu you can choose to add several toolbar controls.


The controls that can be added to the ribbon toolbar are not limited to this set of controls and as such other UI controls can be added as well to the toolbar. More later about the dynamic sizing configurability of the toolbar controls and the toolbar compact mode.

Matching the Microsoft Office 2016 theme, the TTMSFNCRibbon has a property Theme from where a number of predefined colors can be selected (like the MS Word, MS Excel, MS PowerPoint ribbon colors) but this property can also be set to rbtCustom and then a custom application color can be selected with TTMSFNCRibbon.CustomThemeColor. The TTMSFNCRibbon control will automatically calculate lighter & darker color variants to make up such custom color theme. The color & appearance of each individual element on the ribbon can be customized, but the easiest way to select a consistent looking color is clearly with the TTMSFNCRibbon.Theme and TTMSFNCRibbon.CustomThemeColor setting.

The ribbon toolbar
The place where buttons for interaction with your application are placed is the ribbon toolbar and typically, controls are grouped on toolbars that belong together. By default, the size of the toolbar will automatically adapt to the number & size of controls added to the toolbar. The default size is TMSFNCRibbonToolBar.AutoSize = true, TMSFNCRibbonToolBar.AutoWidth = true, TMSFNCRibbonToolBar.AutoAlign = true. This means that when adding controls to the toolbar, these will be added starting left aligned and the size of the toolbar will grow as controls are added. The toolbar can have a dynamic sizing behavior. That means that when the application window width will become smaller or larger, the toolbar can dynamically size to fit all toolbars in the width of the ribbon. The smallest mode for the toolbar is the compact state. In this state, the toolbar is only a button and the toolbar buttons will only become visible when the toolbar compact state button is clicked. In compact state, the toolbar can display a picture on the button and this is selected via TMSFNCRibbonToolBar.CompactBitmaps: TTMSFNCScaledBitmaps. This is a collection of bitmaps that can be used for different DPI sizes. The control will decide itself what bitmap to use from the collection depending on the DPI of the screen the application is running on. Further customization of the compact state is done via TTMSFNCRibbonToolBar.CompactAppearance, TTMSFNCRibbonToolBar.CompactWidth, TTMSFNCRibbonToolBar.CompactBitmapVisible. When the toolbar is not in compact state, its controls are visible but these can be visible in different sizes. The sizes a ribbon toolbar button can have is set with TMSFNCRibbonDefaultToolBarButton.MinimumLayout, TMSFNCRibbonDefaultToolBarButton.MaximumLayout. By default, the minimum size is bblBitmap, the maximum size is bblLarge and the size in between is bblLabel. When the application is maximized for example and thus the toolbar has sufficient space, all buttons on the toolbar can be shown in bblLarge state. When the application width shrinks, the controls on the toolbar can first reduce to bblLabel state where the controls become a label with attached glyph. When the form width further shrinks, the next step is when the toolbar controls are rendered in bblBitmap state, essentially, only showing the button glyph. Of course, if for a button the MinimumLayout and MaximumLayout are both set to bblLarge, the toolbar control size will never change during application for width changes. Only when the toolbar width cannot longer fit on the ribbon, the entire toolbar will go to compact state.

Visualizing this is probably the best way to make this more clear.

In this first step, notice the Insert toolbar that has sufficient space for hosting two large state buttons:

As the form width decreases, the Insert toolbar shrinks by putting its controls in label layout:

Making the form even smaller now makes the toolbar shrink its controls to bitmap layout:

The final and smallest state of the toolbar is the compact state, where all its controls are hidden and the toolbar controls only become visible by clicking the compact state toolbar button to show the full toolbar in a popup:

The ribbon page groups
Another often used ribbon UI feature is the ribbon page groups. Sometimes functionality in the application has so much controls to interact with the features of the functionality that it is too much to have one ribbon page for it and that it is better to divide it in two or more pages. To make the ribbon pages look consistently together, the concept of page groups is used. This is a group indicator above the ribbon page tabs. Adding a ribbon page group can be easily done via the collection TTMSFNCRibbon.Groups. Add a new TMSFNCRibbonGroup item to this collection and here it can be configured what the index is of the first ribbon page in the group (TMSFNCRibbonGroup.StartPageIndex) and the last page (TTMSFNCRibbonGroup.EndPageIndex). The group can be given a group name set via TTMSFNCRibbonGroup.Text and with the group the selected ribbon page tab can have its own color set via TTMSFNCRibbonGroup.Color & TTMSFNCRibbonGroup.TextColor. The page group itself is a darker variant from the ribbon theme color.

In this example, a ribbon page group was created for the Insert and Export page. The page group name is Tools and was created by setting TMSFNCRibbonGroup.StartPageIndex to 1 and TTMSFNCRibbonGroup.EndPageIndex to 2.

g := rb.Groups.Add;
g.Text := 'Tools';
g.StartPageIndex := 1;
g.EndPageIndex := 2;

The ribbon QAT
Frequently used functions, like a save, undo, … function can be added to the always visible QAT (quick access toolbar). This QAT sits normally on the form caption or right below the ribbon. By default, on a new TMSFNCRibbon, the QAT is available on the caption. To add controls to it, also right-click the control at design-time and from the context menu select the controls to add. The QAT has by default an automatically managed option menu (at the right-side of the QAT). From this options menu, controls on the QAT can be hidden or made visible and the position of the QAT can be selected. The option menu can be further customized by implementing any of its menu event handlers like OnOptionsMenuCustomize, OnOptionsMenuItemCanShow, OnOptionsMenuMoreCommands, …

Learn more
Several resources are available for you to learn more about our FNC abstraction layer and controls:
Blog post about FNC UI pack
Blog post about developing FNC custom controls
FNC controls video series

Conclusion
Our TMS FNC ribbon control has everything on board to allow you to add a ribbon UI to your applications, be it Delphi VCL Windows applications, cross platform FireMonkey applications or applications created with Lazarus for Windows, macOS or Linux. It is easy & fast to configure but at the same time can be extensively and in detail customized. Together with our FNC grid control, you can build Excel like user interfaces in a matter of hours, or in combination with our FNC rich editor a word processor like application, etc… Once you learned to use the TMS FNC Ribbon control, you can apply this knowledge to your next project developed against another UI control framework or you could reuse code from one application in a given framework for another application using another framework. We look forward to see awesome applications you create and hear about further needs you might have to facilitate your development and make it even faster.

Read More

Read More

TMS Subscription Manager v2 is here

One comprehensive tool to manage any of the many bundle subscriptions you can purchase from TMS software was our goal for TMS Subscription Manager v2.0 that is now finally released.
TMS Subscription Manager v2.0 supports TMS ALL-ACCESS, TMS VCL Subscription, TMS Business Subscription, TMS Component Studio, TMS FMX Component Studio, TMS FNC Component Studio and TMS IntraWeb Component Studio.

With TMS Subscription Manager v2.0, you can use a single login in this application and you get instant access to all products in the purchased bundle. For TMS ALL-ACCESS, this is at this moment a whopping 63 products. The TMS Subscription Manager v2.0 now categorizes the products neatly per technology : VCL, FMX, BIZ, FNC, DEV, .NET, IntraWeb and LCL.

Per product, you get a description, link to the product webpage, info on latest available version and release date, info on your last download version and download date and info on your last product install version and date. With colors, the status of each product is indicated. In white are products ready for download, in yellow products ready for install, in orange products for which you can meanwhile download a newer version and in green the products for which the latest version was installed, so you are up-to-date for.
If you have our premier TMS ALL-ACCESS subscription, you can much easier find your way in the many products by filtering. You can open & close per product technology, you can filter to see for example only all installed products for which there is a new version, you can perform a search in product name or product description. If you perform a search on ‘grid’, you’ll see we have a grid for VCL in the TMS Component Pack, a grid for FireMonkey in the TMS FMX UI Pack, a grid for cross-framework development in TMS FNC UI Pack and a grid for web application development in TMS IntraWeb Component Pack.

But there is more. If you are working on a project that includes several specific TMS products, you can mark these products as your favourite products by clicking the heart icon and then perform a filtering to see the latest status of only your favourite products.

The new v2.0 version also allows to start multiple downloads. To get all new releases since your last login, you could filter on “New version”, then check all products and click the “Download all” button in the column header cell for the download column and it will do all downloads for you and make the products ready for install.

And that is not all, behind the scenes, TMS Subscription Manager is now keeping a backup of any product versions you have downloaded. From the settings page, the folder where all downloads are stored can be directly opened. With keeping a full backup of every single version you have downloaded (and probably installed) it is now possible to perform rollback if it would be necessary for some reason. Right-click on the downloaded version number cell per product and from the context menu you can see all available versions (if there are any) and activate another version for install.

Finally, the TMS Subscription Manager v2.0 keeps you always informed about the validity of your subscription and will guide you to the renewal order upon expiry. Last but not least, from the TMS Subscription Manager there is a comprehensive list of links to interact with us, via email, social media, forums, RSS, Youtube videos …

To round up, some technical tidbits: TMS Subscription Manager is built with Delphi 10.2 Tokyo as a single EXE portable executable. The products are displayed and managed in our TAdvStringGrid UI control. The application will self-update thanks to our TWebUpdate component and in case something goes wrong, exception logging is handled by Eurekalog.

If you have any TMS bundle subscription, you can download TMS Subscription Manager v2.0 now from the “My products” page and get started with the new tool. We hope you enjoy it and it will make you more productive than with the v1.0.

We have already several ideas for further developments on TMS Subscription Manager v2.0, like making it optionally a Delphi IDE plugin with automatic notifications, allowing to invoke the installers silently, integrating the downloads of our free tools, making it possible to also manage separate product purchases, … but we also eagerly look forward to your ideas. We’re sure that with your brilliant ideas, we can make the tool even more awesome than it is today!

Read More

Read More

Delphi Blogs of the (Week) Month #55

This is my fairly regular (although now monthly) list of relevant links to blogs post, articles, news, and more from the Delphi community. Embarcadero Updates Idera has acquired Sencha to strengthen its developer tools business (aka Embarcadero). You can read the press release (http://www.businesswire.com/news/home/20170825005086/en/IDERA-Acquires-Sencha-Strengthen-Developer-Tools-Business) and articles like http://sdtimes.com/idera-sencha-acquisition-sdtimes. Embarcadero released a hot fix for Tokyo 10.2.1 to resolve iOS AdHoc deployment: http://blog.marcocantu.com/blog/2017-august-hotfix-adhoc.html Notable Blog Posts Save Time With This Quick LiveBindings Trick For Delphi And C++Builder (by Eli): https://community.embarcadero.com/blogs/entry/learn-how-to-quickly-livebind-almost-any-control-with-this-tedit-trick-for-delphi-and-c-builder Experiments in Uniform Memory Management (by Erik van Bilsen): https://blog.grijjy.com/2017/08/09/experiments-in-uniform-memory-management/ Delphi FMX Chess Game (although I'm eagerly waiting for more information) https://csvelocity.wordpress.com/2017/08/08/delphi-fmx-chess-game/ Cross-Platform Code Hooking (also by Erik van Bilsen): https://blog.grijjy.com/2017/07/26/cross-platform-code-hooking/ Windows Manifest Files (by Vincent Parrett): https://www.finalbuilder.com/resources/blogs/postid/753/windows-manifest-files TNotifyEvent debouncing in Delphi (by Sergey Zhukov): https://www.code-partners.com/tnotifyevent-debouncing-in-delphi/ (althought it has been criticized as not really being on debouncing, it is an interesting read) Use C++Builder to get Android current ringtone mode (by Haruyuki Mohri): https://community.embarcadero.com/blogs/entry/use-c-builder-to-get-android-current-ringtone-mode Resizing a TViewPort3D (by Gustav Schubert): http://federgraph.blogspot.it/2017/08/resizing-t-viewport-3d.html The Dark Side of Application.ProcessMessages in Delphi Applications (by Zarko Gajic): https://www.thoughtco.com/dark-side-of-application-processmessages-1058203 (re-opening a never ending debate on the use of Windows limited message based parallel processing vs. real threading solutions -- or maybe the debate is actually settled and threads just won?) Cloud Based Unit Resolver For The Delphi RTL In Delphi 10.2 Tokyo (by FMX Express): http://www.fmxexpress.com/cloud-based-unit-resolver-for-the-delphi-rtl-in-delphi-10-2-tokyo/ Third Party Libraries and Components Delphi base compatibility, Spine improvements, other stuff in Castle Game Engine (by Michalis): https://castle-engine.sourceforge.io/wp/2017/08/14/delphi-base-compatibility-spine-improvements-other-stuff/ JSKit - open-source Cross-platform JavaScript framework for Delphi and CrossVcl announcement (by Eugene) at https://plus.google.com/u/0/118397897778295642304/posts/ip2wGhNfskd?cfem=1. The library itself can be found at https://github.com/eugenekryukov/jskit Kind of similarly, ​ScriptGate provides mutual calls between JavaScript and #Delphi and it's useful for Hybrid apps (by Hosokawa Jun): https://bitbucket.org/freeonterminate/scriptgate GrijjyCloudLogger, remote logging for Windows, iOS, Android, macOS and Linux (by Allen Drennan) at https://blog.grijjy.com/2017/08/22/grijjycloudlogger-remote-logging-for-windows-ios-android-macos-and-linux/. The repository is at https://github.com/grijjy/GrijjyCloudLogger ​Must Have RAD Accessories – InnoSetup (by Craig Chapman): http://chapmanworld.com/2017/08/25/must-have-rad-accessories-innosetup/ (and part of a very nice series of classic Delphi components and tools) Debugger Callstack Resolver released (by Andreas Hausladen): http://andy.jgknet.de/blog/2017/08/debugger-callstack-resolver-released/
Read More

RAD Studio 10.2.1 HotFix for iOS AdHoc Deployment

We released a hotfix to address a regression (reported as https://quality.embarcadero.com/browse/RSP-18813) in RAD Studio Tokyo Release 1 related with AdHoc deployment for iOS. The fix available for download is at: https://cc.embarcadero.com/item/30797 The fix (which is a single file to add to your system) provides support for building iOS Ad Hoc Applications with RAD Studio 10.2.1 using Xcode 8.2, 8.3.2 or 8.3.3. Please ensure that RAD Studio 10.2.1 (Tokyo Release 1) is installed before applying this fix, it is not for the original 10.2 release.
Read More

Delphi Error: E1026 File not found: ‘Controls.res’ – Google Search

As since E1026 is [WayBack] documented as x1026 since Delphi 2007 probably because it can manifest itself as W1026 as well, I thought Delphi Error: E1026 File not found: ‘Controls.res’ also be related to F1026: When the Delphi XE5 commandline compiler fails with error F1026: File not found: ‘False.dpr’ But it wasn’t. Then I thought it might have to do […] … Read More

Read More

Delphi Tokyo Release 1 or 10.2.1 is Now Available

You can read more about the release and its rationale in the PM article published in the community: https://community.embarcadero.com/article/16556-rad-studio-10-2-1-released-today For the actual release information docWiki page, including how to obtain the release, what's new, known issues, visit: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_1 For a more detailed of issues fixed in this release, see the EDN article at: http://edn.embarcadero.com/article/44763 We had to put a significant effort into some of the issues, like those caused by Creators Update and changes in iOS, so very happy to make this new version of Delphi and C++ Builder available to our customers. 
Read More

RAD Studio 10.2.1 Released Today

10.2 Tokyo Release 1 is now available. It’s an update of Delphi 10.2 Tokyo, C++Builder 10.2 Tokyo and RAD Studio 10.2 Tokyo for active Update Subscription customers. It includes 100s of platform focused enhancements, bug fixes and features.   RAD Studio supports 5 platforms today: Windows, Mac, iOS, Android and Linux. Platform vendors frequently make changes to their operating systems which at times impact us on the development side. We continuously track these changes to ensure our customers can target the latest operating systems. 10.2.1 not only provides a number of new features and bug fixes, but also addresses key OS changes that have been impacting our customers. A significant issue we fixed on Windows was changing our compilers and linkers to address an OS level change on Windows 10 Creators Update affecting the way the operating system loads DLLs and Delphi packages (BPLs), which ends up repeating the load operation multiple times and severely hampering the debugging of applications with runtime packages. Microsoft has addressed the issues in the beta of the future version of Windows 10, but not in Creators Update. In May 2017, we published our latest roadmap. Given the popularity of VCL within our install base, we want to make sure that this framework continues to evolve rapidly and we are accelerating investments in this area. We see a nice increase in usage of Windows 10 and we feel that we can deliver even more value to developers with the coming releases. With that focus and the addition of the platform enhancements release to our release schedule, you will see that some some of the features previously listed under 10.2.1 and 10.2.2 in our roadmap are being reprioritized for 10.2.2 and beyond. This includes C++ for Linux. PM will be providing additional roadmap updates in the coming weeks.   Key Features delivered in 10.2 Tokyo Below is a recap of key features we’ve delivered  in recent months (including Berlin updates): Delphi Linux compiler and RTL, along with complete toolchain for Linux server development, deployment and debugging C++ compiler and linker improvements Windows 10 Store support via Desktop Bridge New VCL controls and QuickEdit designers Exciting developments this year In addition to the Tokyo release several months ago, and the 10.2.1 update release, we also wanted to highlight some other exciting developments. CData Enterprise Connectors The result of a year-long collaboration effort with CData, Enterprise Connectors leverages Embarcadero’s RAD Studio FireDAC technology to remove the complexity in connecting to multiple data sources, and make CData's adapters easily accessible to Delphi and C++ developers. CData Enterprise Connector Packs support 80+ popular data sources such as Salesforce, NetSuite, Microsoft Dynamics, SAP, SugarCRM, MailChimp and JIRA. The Enterprise Connectors are currently in Public Beta, allowing anyone on Update Subscription to participate. Downloads for each connector are available through the GetIt Package Manager in 10.2 Tokyo. The beta is expected to finish within the next few weeks, and we’d love to get your feedback.   GetIt Package Manager Enhancements The GetIt Package Manager enables browsing, download, and install of packages directly within the IDE. This includes open source and 3rd party libraries, components, IDE extensions, SDKs, and more. The GetIt Package Manager can be accessed through the Tools menu in the IDE. We have recently added a number of new categories to the GetIt Package Manager in 10.2 Tokyo to make it easier to find what you're looking for in GetIt. Here's the new list of categories you will find in the GetIt Package Manager:   All Libraries Components Internet of Things Trial Connectors Industry Templates IDE Plugins Styles Sample Projects The RAD Studio PM team (Sarina, Marco and David)  
Read More

Why My Next Software Product Will Be Windows VCL Only

I started this blog back in 2009 as I slowly emerged from a severe case of burn-out. From that first day I've been consistently saying I'm working on an update to one of my software products. And I'm still saying that today. I'm like the Rip Van Winkle of Delphi programming. I basically dropped off the face of the Delphi coding world, woke up from an 8 year technology nap, and have been in a learning fog ever since.I have been procrastinating at every turn, about every tool, and every methodology. The bottom-line is... I can't make a decision. Check out this common theme among some of my posts going back quite some time.How do you get past the Analysis to Paralysis when working on a new project?https://softwareengineering.stackexchange.com/questions/155621/What is The Best Database for Delphi Desktop Applications that Supports Stored Procedures?https://stackoverflow.com/questions/1619887/I Took A Little Walk-About - But I'm Back (Shit or get of the pot)http://capecodgunny.blogspot.com/2011/08/i-took-little-walk-about-but-im-back.htmlLast week I heard about Warren Buffett's 25-5 Rule.  I've never heard it put quite that way before. Anyway, it got me to change my attitude about decision making.For example:Should the new release of my Zilch software be Windows?Windows and Mac?Windows, Mac, iOS, Android?What about the Web version?ENOUGH!I'm going Windows VCL Only! Period. I made the decision and it's final. Making decisions is so liberating.I am the most proficient with Delphi VCL.I have a distribution channel and payment gateway for Windows already in-place. I have 25 years worth of Windows customers I can market my software upgrade to.I can use the current development tool chain I already have.2017 is the 25th anniversary of my original product launch. I need to get busy working on the things that matter most and ignoring everything else if I hope to get it released this year.I don't care if the Warren Buffett story is true or not. It's a good thing. I encourage all of you to have a look at it.Cheers!Semper Fi,Gunny Mike
Read More

On List growth strategies and memory managers

Interesting for anybody working on list growth strategies. In this case with some Delphi background information and in depth coverage of FastMM memory (re)allocation strategies. Stefan Glienke (of Spring4D fame) needed some help with allocation strategies and observed the difference between: TList.Grow (and TStringList.Grow) growing like this: 4, 8, 12, 28, 44, 60, 76, 95, 118, 147, […] … Read More

Read More

Delphi Blogs of the Week #54

A new round up of Delphi-related news, after my two weeks of vacation around Europe. Delphi Product Blogs and More Quickly find add-ons with new GetIt categories by Sarina at https://community.embarcadero.com/blogs/entry/quickly-find-add-ons-with-new-getit-categories (by the way, we are open for ideas and suggestions, given the system is now fairly flexible) The Enterprise Connector Beta has started by Sarina at https://community.embarcadero.com/blogs/entry/the-enterprise-connector-beta-has-started Viewing Salesforce Data in RAD Studio Data Explorer by Sarina at https://community.embarcadero.com/article/16541-viewing-salesforce-data-in-rad-studio-data-explorer #FireMonkey RAD Studio Overview Download Link: http://forms.embarcadero.com/sFireMonkeyRADStudioOverview Targeting Chrome OS with Delphi via Android and Linux by Jim McKeeth at https://community.embarcadero.com/blogs/entry/targeting-chrome-os-with-delphi-via-android-and-linux Notable Blog Posts Send an Email with an Attachment in iOS, Android, and Windows using RAD Studio by Roy Woll at https://www.woll2woll.com/single-post/2017/04/24/Send-an-Email-with-an-Attachment-FireMonkey ScannerMApp: a QR/barcode scanner app with Delphi, ZXing and TFrameStand by Andrewa Magni at https://blog.andreamagni.eu/2017/06/scannermapp-a-qrbarcode-scanner-app-with-delphi-zxing-and-tframestand/ Using Google Sign-In for Firebase SDK on Android by Allen Drennan at https://blog.grijjy.com/2017/07/20/using-google-sign-in-for-firebase-sdk-on-android/ SIMD Assembly Optimization by Erik van Bilsen at https://blog.grijjy.com/2017/07/10/simd-assembly-optimization/ Building a (real) Linux daemon with Delphi - Part 1 by Paolo Rossi at http://blog.paolorossi.net/2017/07/11/building-a-real-linux-daemon-with-delphi-part-1-2/ 4 Years at Embarcadero Technologies by Jim at http://delphi.org/2017/07/4-years-at-embarcadero/ Encode JSON to a FireDAC Memory Table without REST Request by Craig at http://chapmanworld.com/2017/07/07/encode-json-to-a-firedac-memory-table-without-rest-request/ Stay tunes for more news.
Read More

EurekaLog 7.6 is out

We are pleased to announce the availability of the new 7.6 version.

EurekaLog is a tool for Delphi and C++Builder that gives your application the power to catch every exception and memory/resource leak, generating a detailed log of the call stack (with unit, procedure and line number), optionally sending you a copy of each log entry via email or the Web via the most used Web Bug-Tracking tools (as Mantis, BugZilla, FogBugz, and JIRA).

EurekaLog represents the most advanced exception and memory leaks logger technology available for Delphi/C++Builder developers.

To learn more about EurekaLog, please visit our website at:
https://www.eurekalog.com

To download a demo, please visit:
https://www.eurekalog.com/downloads.php

If you would like to purchase a new license, please visit:
https://www.eurekalog.com/buy.php

Changes:

  1. Important: Installer will ask you a licence information. See: New license checks in EurekaLog installers
  2. Important: Debug information format was completely changed. Be sure to test your applications
  3. Important: Added a major upgrade to bug tracker code. Be sure to test your applications
  4. Important: BugID generation alg was changed. Be sure to test your applications
  5. Important: EurekaLog will now store configuration in .eof file instead of .dof, .bdsproj, .dproj, etc.
  6. Added: Support for 10.2 Tokyo
  7. Added: ecc32 will now modify uses list in your .dpr file to match specified configuration
  8. Added: –el_prepare switch is added to be used when –el_alter_exe is used
  9. Added: New option to stip all string names from debug information and store it in external file
  10. Added: Debug information’s and ZIP’s passwords are now saved locally on developer machine – to be used by application and Viewer (this simplifies local debugging when passwords are set). OnPasswordChange event will not be called
  11. Added: New “–el_password=debug-info-password” command-line option can be passed to application to decrypt encrypted debug information. OnPasswordChange event will not be called
  12. Added: Our own implementation of XML, XML-RPC, and SOAP. We no longer use RTL’s implementation, therefore now we have support for bug tracker’s API even on old IDEs
  13. Added: New options for bug trackers (new fields, append call stack instead of full bug report, links, text limits)
  14. Added: A helper “Connect” button in EurekaLog project options dialog to retrieve project names, users, field names, components, areas, and other info for bug tracker
  15. Added: Working hyper-links support in bug tracker success message via TaskDialogs (Vista+)
  16. Added: BugID tab in EurekaLog project options dialog – allowing you to customize uniqueness without writing OnCustomBugID event handler
  17. Added: New column in call stack: “Source” (e.g. actual .pas file name)
  18. Added: Threads selection to hang detection page
  19. Added: Support for MessageBox from NT services
  20. Added: “Lookup Error” option in Viewer – there is a new toolbar, as well as new context menu item for “General” tab
  21. Added: ELogging unit implements log capabilities. EurekaLog will stream log into CodeSite-compatible format. Currently it has no UI control. Use ELogOpen function to stream log to the specified file
  22. Added: (Delphi only) EurekaLog units in uses list are wrapped into IFDEF block
  23. Added: Call stack, modules and processes use different colors now. For call stacks: red indicates exception line, black – stack frame entry (positive), grey – RAW (could be false-positive), other colors – service entries
  24. Added: Support for DataSnap applications. Do not forget to enable EurekaLog for background threads (either as “Enable for RTL threads” or as SetEurekaLogStateInThread in OnConnect handler)
  25. Added: Handler name property for exception info and ability to filter with it. Handler name indicates handler which is processing the exception, it can be used to distinguish between VCL, Thread, DataSnap exceptions, etc.
  26. Added: Ability to filter by descendant classes
  27. Added: ACompareForCount argument to DumpAllocationsToFile routine
  28. Added: LoadCustomizedTextsToStream/SaveCustomizedTextsToStream
  29. Added: Threads Snapshot tool can be used as post-morten debugger. Use /install command-line switch to register tool as debugger (admin rights are required).
  30. Added: Support for Synopse mORMot (.mab) debug information format
  31. Added: “Terminate threads on shutdown” option
  32. Fixed: Reduced ecc32/emake memory footprint, thus allowing to post-process larger projects
  33. Fixed: Debug information design-time performace optimizations (reduced compilation time)
  34. Fixed: Debug information run-time performace optimizations (reduced startup time)
  35. Fixed: Minor optimizations for call stack to string render
  36. Fixed: Display bug in detailed EurekaLog dialog tabs when not all tabs were showing
  37. Fixed: [10.1 Berlin] Weak references are no longer detected as leaks
  38. Fixed: A “recursive area removed” mark may be left in call stack even if area’s items were filtered out
  39. Fixed: Fatal errors (e.g. panic mode) now properly set terminate option in dialogs
  40. Fixed: Possible crash on startup when using certain 3rd party memory managers
  41. Fixed: Possible crash when EurekaLog’s debug mode is enabled
  42. Fixed: XML header of bug reports
  43. Fixed: Added workaround for OTA bug when {$E ext} is used in project
  44. Fixed: (C++ Builder only) Possible crash when handling certain exceptions
  45. Fixed: Firebird Embedded in Viewer was upgraded to 2.5.6. This solves a rare encoding problem when using Firebird backend
  46. Fixed: (Delphi 2005 and earlier) Bug in workaround for QC Report #3018
  47. Fixed: Checkboxes not respecting default state when switching between dialogs (e.g. MS Classic -> EurekaLog Detailed)
  48. Fixed: Visual glitches in EurekaLog dialogs when VCL styles are used
  49. Fixed: Compatibility with 3rd party software of password-encrypted ZIPs
  50. Fixed: Possible range check error in debug information
  51. Fixed: EurekaLog dialogs are now per-monitor DPI awared
  52. Fixed: Silent ignoring invalid time stamps in PE headers
  53. Fixed: Added workaround for certain bugs in .map files
  54. Fixed: Minor regression issues
  55. Fixed: Viewer may hang when passing file name to open to main instance
  56. Fixed: Windows 2000 compatibility issues
  57. Fixed: Possible stack overflow in multi-threaded apps when low-level hooks are disabled
  58. Fixed: CLang compatibility fixes
  59. Fixed: DebugExport provider will now load names only on demand (performance boost on startup)
  60. Fixed: Possible crash when processing certain external exceptions
  61. Improved: New call stack/assembler encryption when encrypt password is set for debug info
  62. Improved: Better call stack filtering from EL service routines when encryption is enabled
  63. Improved: Any share violation error during compilation will report which process is holding the file
  64. Changed: ecc32.exe and emake.exe are the same file for all IDEs. Current IDE is selected based on ecc32/emake file location or via –el_ide=num command-line option
  65. Changed: Translations of strings with “application” substitution now supports selecting a specific “application” translation. Simply replace %s with %0:s or %1:s. Default translations are already adjusted.
  66. Changed: Internal crash reports made Viewer-compatible
  67. Changed: Removed stubs for ComObj unit
  68. Removed: Web-based bug tracker support

Read More

Read More