Jump to content

Uwe Raabe

Members
  • Content Count

    2540
  • Joined

  • Last visited

  • Days Won

    145

Everything posted by Uwe Raabe

  1. Uwe Raabe

    Installing Radiant Shapes into Rio

    Radiant Shapes has been acquired by Embarcadero a while ago: Konopka VCL Controls & Radiant Shapes now part of the Berlin Bonus Pack
  2. Uwe Raabe

    ImageName vs. ImageIndex

    Who hasn't seen this before: A bunch of controls and actions are linked to an ImageList with an ImageIndex, but as soon as you sort this ImageList to give it a sensible order all controls immediately start to show the wrong images. Wouldn't it be cool if instead a cryptic number as ImageIndex you could specify a descriptive name at the control? Thus the order of images inside the ImageList wouldn't matter at all. Of course, the ImageList has to support names in the first place. TPngImageList from PngComponents does that right from the beginning. So what about implementing that feature based on TPngImageList? Can't be that hard, can it? Well, it turned out to be a bit more complex than I anticipated, but that's probably because I had set my goals pretty high. So I expected to have a selection from image names for the ImageIndex properties of the control and thus a display of the image name instead of just a number. Also this scheme should be extendable to other controls and especially to other ImageLists supporting names. From this the ImageIndexMapper was born. A non-visual component to be placed on a form or datamodule, that when activated takes care of the image names. You just have to call one method to resolve those names to the actual corresponding number values. The attached ZIP file contains all the sources and files for the component and design time support as well as a sample project (currently for Delphi 10.2 Tokyo only). As a prerequisite you have to use PngComponents from the above source. I suggest to use the recent version V1.5.0 with direct ImageIndexMapper support. Older versions require the contained PNG Support Package to be installed and add the corresponding unit to your uses clause somewhere in your project. Version 1.5.0 makes this obsolete, Presumably there is much room for improvement. Whoever finds some time to test this component - please forward any encountered bug to me. Here is a short GIF showing the switch from TPngImageList to TImageList (without name support) in the Object Inspector: https://www.screencast.com/t/4MbJkygjFR ImageIndexMapper.zip Cross Post: https://www.delphipraxis.net/198212-imagename-statt-imageindex.html#post1415709
  3. Uwe Raabe

    ImageName vs. ImageIndex

    No problem. I attach it here again. ImageIndexMapper.zip
  4. Uwe Raabe

    ImageName vs. ImageIndex

    Looks like the attachment got lost in this forum. Please try the cross post mentioned above. The attachment there still seems to work.
  5. Uwe Raabe

    MMX for Delphi 10.3 Rio

    Probably not for myself
  6. Uwe Raabe

    Delphi Bugs reported to QualityPortal

    May I ask, why not?
  7. Actually clients do think this way! A couple of years ago we made a poll about features our customers want to see implemented in our software. Nearly 2/3 of the answers were about visual appearance. Probably because that is what the customers see and work with. They usually don't understand the internals and simply assume they just work. Even now I get approval for changes much easier if they are heavily accompanied by visual enhancements.
  8. Uwe Raabe

    Speed up reading multiple text files

    How are they sorted?
  9. Uwe Raabe

    DevExpress: element '' has no parent window

    The component is going to notify other components when it is destroyed. A component can register for FreeNotifications by calling AComponent.FreeNotification(Self) and unregister with AComponent.RemoveFreeNotification(Self). The notification is done by calling the Notification method of all those registered components. This is usually done to update a local field pointing to that component to prevent dangling pointers. Perhaps some component doesn't follow this pattern as closely as it should do.
  10. Uwe Raabe

    Speed up reading multiple text files

    Can you elaborate on this a bit: What is the sort used for (iterating and/or searching)? How do you sort duplicates from different files?
  11. Uwe Raabe

    Releasing memory devoted to arrays

    Static arrays are never freed. That's why they are called static. They live as long as their scope lives.
  12. Uwe Raabe

    GExperts 1.3.12 beta for Delphi 10.3 Rio available

    Good catch! This allows me to create a reproducible test case and send it to David Millington.
  13. Uwe Raabe

    GExperts 1.3.12 beta for Delphi 10.3 Rio available

    That empty popup menu also happened to the CnPack guys during beta. I could also see it while fiddling around with making MMX support themes. It happened with a standard toolbar button set to DropDown, while the currently used TB2k/Tbx popup menu works. As ever so often it could not reliably been reproduced with a simple test case.
  14. Even that would be a bit tricky if the Live Viewer is running on a different machine.
  15. Uwe Raabe

    GExperts 1.3.12 beta for Delphi 10.3 Rio available

    I had seen the same error with the editor context menu of MMX. The first time after a fresh IDE start it works, but fails on subsequent right clicks. That is why I removed it for Rio. I also noticed that the menu entry was moved to the top on the first context popup, albeit it was definitely added at the last position. Something fundamentally changed with the context menu in Rio.
  16. Uwe Raabe

    IDE Code Coverage Plugin available

    Unfortunately not. It uses some ToolsAPI interfaces only available in later versions.
  17. Uwe Raabe

    Always check the tab order in your dialogs!

    You can automate this with Pascal Analyzer: Control Tab Order Report
  18. Uwe Raabe

    General DB access question -- paging query results

    BTW, rebuilding with C#/.NET will cost a multiple of time and money with no real benefit but plenty of problems.
  19. Uwe Raabe

    General DB access question -- paging query results

    I guess, the application uses BDE components? These are indeed not very capable of this scenario. I suggest to replace these with FireDAC components, which should handle this out of the box or can easily be configured to do so. There are semi-automated tools to help with this replacement. There are other alternatives for replacement, but the BDE components are not suitable for this job unless you start to change the DB access behavior of the application.
  20. Uwe Raabe

    General DB access question -- paging query results

    Not sure about your use case, but FireDAC has some tricks to load only a specific number of records on open and fetch the following when necessary. There is also an option to fetch blobs for a record only when needed.
  21. Uwe Raabe

    Can somebody confirm this in 10.3?

    Looks like that is as designed. FItems in TListHelper has been a Pointer even in 10.2, but in 10.2 the TList holds FItems as array of T, while 10.3 doesn't have this anymore.
  22. There are ways to bridle those.
  23. Probably related: Bug in Delphi 10.3 Rio / C++Builder 10.3 ISO affects TMS installers
  24. Uwe Raabe

    My first Delphi 10.3 impressions

    If you call it cyclical re-engineering cult, so then. I simply see it as a way to make things work smoothly for me. I see that time I invest here pays back pretty soon and thus is well spent, at least better than constantly lamenting over CodeInsight not working. Changing the compiler or CodeInsight itself is out of my reach and I am not going to wait for others to do so.
  25. Uwe Raabe

    My first Delphi 10.3 impressions

    Not sure if that is a RAD thing. It is more a mixture of convenience and shortsightedness. Finding a clean and proper architecture is not an easy task. Often these projects are a result of short time and pressure and the lack of getting things right in the second go.
×