Jump to content

Uwe Raabe

Members
  • Content Count

    2919
  • Joined

  • Last visited

  • Days Won

    169

Everything posted by Uwe Raabe

  1. Uwe Raabe

    TFrames in pallete

    That is not limited to frames, but affects forms and data modules, too. Looking for external links is done by component names - thus the first found wins. One could argue that this could be extended by inspecting the unit names available in the uses clause, but it is just the other way round: When the (wrong) component is found by name, the (wrong) unit name is automatically inserted when it is not available in the uses clause already. The designer part of the IDE is a mighty and sophisticated invention, but it has its limitations. What can be done is not nearly the same as what should be done.
  2. Uwe Raabe

    Map file = Detailed also produces DRC file

    Looks like as designed:
  3. At least recent versions of Delphi allow adding repositories located at arbitrary places. So if various computers have access to a common network share, you can use that for your templates. Alternatively one can manage these repositories and its templates with version control as with any other sources like f.i. common library code.
  4. Alternatively create a new project and save it (best with decent file names). Then select Project - Add To Repository from the menu, select a proper place to add and type some nice names. After that you can select File - New - Customize to add the new entry to the favorites. As a gimmick you are directly asked for a target folder after selecting your project from the repository. Also, when all your VCL projects have a main TForm and a main TDatamodule and a separate TDatamodule with a TImageCollection, you can prepare that before adding the project to the repository (or create a separate entry for that) and you may save quite some more clicks and keystrokes.
  5. Uwe Raabe

    Splitting up quotes doesn't work anymore

    Interesting. Just recently someone in the German forum claimed that as a welcomed feature here.
  6. Uwe Raabe

    TToolButton.ImageName Delphi 11 vs Delphi 10

    In 10.3 there is just no ImageName property in TToolButton either. ImageName support started with 10.4. In 11.3 there still is function TVirtualImageList.IsImageNameAvailable: Boolean;
  7. Uwe Raabe

    TToolButton.ImageName Delphi 11 vs Delphi 10

    In 10.4+ it is and versions before have no ImageName properties. function TVirtualImageList.IsImageNameAvailable: Boolean; begin Result := FImageNameAvailable; end; Actually that function is introduced in TCustomImageList. It is just overridden in TVirtualImageList.
  8. Uwe Raabe

    TToolButton.ImageName Delphi 11 vs Delphi 10

    You can as well override the IsImageNameAvailable function for that subclass and just return False.
  9. Uwe Raabe

    TToolButton.ImageName Delphi 11 vs Delphi 10

    The ImageName can only be stored when the linked image list supports it. A plain old TImageList does not, so that won't make any problems. The new TVirtualImageList introduces ImageName support, but makes it configurable with its ImageNameAvailable property. Setting that to False avoids setting the ImageName property on the linking controls. You might have to clear existing ImageName values manually, though.
  10. Uwe Raabe

    Trap TFDConnection error on data module create etc?

    ... and the ability to simply move the database file from embedded to server and vice versa.
  11. Uwe Raabe

    Trap TFDConnection error on data module create etc?

    It is also much easier to switch from Embedded to Server when necessary. With SQLite you are nailed to embedded.
  12. Uwe Raabe

    Trap TFDConnection error on data module create etc?

    This usually happens with embedded drivers that require exclusive access to the database. This would even happen when you run your project, open the IDE and try to set Connected to True. Also when you run two instances of your program at once. I doubt there is any automatic solution covering all these cases. It should not happen with a decent InterBase or FireBird server, which are able to cope with multiple connections at once. Perhaps using one of those during development helps to circumvent the problem.
  13. Nevertheless are there several cycles as shown by MMX Unit Dependency Analyzer: Here is a part of the Dependency Graph from Understand for the VirtualTrees -> VirtualTrees.WorkerThread cycle with information where the dependencies come from in the Dependency Browser below:
  14. Yes, it does: Supported Languages. They are also providing new releases in a reasonable time frame. When I provide a test case showing some syntax confusing the parser, they usually fix it in the next two releases. OK, but that doesn't say anything about the quality and usability of the product. I may have reacted the same when I had found the website myself, but I already had another product from their German reseller, when they contacted me with a trial of Understand. That was 2014 and I declined with a comment about the poor Delphi support. In 2016 they came up with that again, and I agreed, because the Delphi support was sufficient for me at that time. Meanwhile, with some significant help from myself, it became even better. As I often have to cope with foreign code and for that it proved very helpful. It turned out that it also gives some valuable insights in my own code, especially the sort of code that evolved over time. I am glad to have this tool at hand. One can argue about their sales channel, but IMHO that doesn't diminish the product itself. BTW, one can always try to negotiate with the reseller.
  15. Just a small anecdote: Working on one of my customers code base, which is heavily convoluted with circular references, I was able to break a cycle with simply using a string literal instead of a global constant declared in one of the units, knowingly sacrificing at least some of the Clean Code principles. The constant was declared like this: const cLocalHost = 'localhost'; BTW, a valuable tool for me to understand someone else's code and detect the fibers a cycle is made from is SciTools Understand. Although it may look a bit expensive for some at first, the time saving effects are absolutely worth it.
  16. Relying on unit scope names also makes the compiling slower. Besides MMX there is also UsesCleaner as its command line companion resolving these issues.
  17. Avoiding circular unit references speeds up compilation significantly. Let me cite @Bill Meyer in his excellent book Delphi Legacy Projects : Strategies and Survival Guide: As slower compile times also affect the IDE, especially Code Insight, we are not just talking about longer build times, but responsiveness of the IDE itself. Also mentioned in the book and backed by my own experience and involvement, a very helpful tool is the Unit Dependency Analyzer built in MMX Code Explorer (also available as standalone). Bill dedicates a whole chapter in his book on Cleaning Uses Clauses.
  18. Uwe Raabe

    Passive, non interactive custom form

    The docs say for WS_EX_NOACTIVATE:
  19. Uwe Raabe

    Passive, non interactive custom form

    That would still miss the To achieve that add a message handler like this: procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; ... procedure TMyTransparentForm.WMNCHitTest(var Message: TWMNCHitTest); begin Message.Result := HTTRANSPARENT; end;
  20. Uwe Raabe

    Good data grid for VCL and FMX

    As already mentioned, TMS FNC Grid, but also TeeGrid from Steema. Technically these are not strictly the same component, because it must be derived from either a VCL or FMX TControl, but for the developer it comes quite near.
  21. Uwe Raabe

    Feedback Request - FastReports vs ReportBuilder?

    In a discussion I also mentioned that it is a Virginia based company, but other powers seem to know better. IMHO that is really sad, because I also like the product and find it more capable than others.
  22. Uwe Raabe

    Feedback Request - FastReports vs ReportBuilder?

    There are some concerns about the country of origin. Some companies have strict compliance rules, while others just have a bad gut feeling.
  23. Uwe Raabe

    TCalendarView returning a bad Date

    I guess, that is as designed. When you click on a date that date is selected. When you click again on the same date it is unselected and the Date property is set to NullDate: NullDate: TDate = -700000; You can avoid that when you set SelectionMode to smNone.
  24. Uwe Raabe

    TCalendarView returning a bad Date

    I'm a bit unsure what your example should achieve, as it doesn't match what you show here.
×