Jump to content

Tom Mueller

Members
  • Content Count

    30
  • Joined

  • Last visited

Everything posted by Tom Mueller

  1. A common scenario in our applications involves using a centralized TActionList connected to a TVirtualImageList on a data module. The actions in the list are linked to controls on different forms (UI). However, when moving a form to a monitor with a different DPI, the action images do not scale properly. This occurs because the TVirtualImageList is not located on the moved form. Given that we have several centralized TActionLists in our applications, moving or duplicating them to different forms solely for image scaling doesn’t seem like an ideal solution. How should centralized TActionLists be handled in HighDPI-supported applications?
  2. Thank you for sharing your experience with us. How did you replace TMainMenu, TPopupMenu, and TToolBar controls? Especially the MainMenu and PopupMenus, as they are widely used in our applications.
  3. My little tests with TcxImageList and SVG images shows the lack of scaling on a HighDPI monitor (here scaled to 225%). Even TcxListView does not scale correctly compared to Delphi TVirtualImageList. Thank you for the skinning tip. Until now we tried to avoid skinning or styling our applications - but I'll give it a try.
  4. Yes, unfortunately. cxImageList would be the ideal solution if all controls (not just DevExpress) were supported.
  5. This essentially means that no ImageList can be used for a centralized TActionList. Instead, a TVirtualImageList must be created on each form and associated with the control. This is a significant limitation of the TImageCollection/TVirtualImageList concept. I wonder how DevExpress handles this, as the scaling works even when the cxImageList is placed on a DataModule. Thanks Uwe for pointing me to your blog. The article is very well-written and could help me with implementing centralized image management.
  6. Thank you for your tip. I tested the DevExpress TcxImageList, and it works fine with DevExpress controls. However, it does not support certain Delphi controls, such as TMainMenu, TPopupMenu, TToolBar, TTreeView, TListView and maybe more, which are essential controls for me.
  7. Hallo all I have a control (TWinControl) that contains an other control (TPanel) and registered it in a package (see demo code in the attachment), First Problem: When selecting the control in the IDE, the selection markers are only partially visible. Second Problem: When selecting more than one control, no selection markers are visible at all. Is this a known problem and are there any solutions for it? Thanks Tom TestSelectMarker.7z
  8. That leads to the same result: reducing the size of the sub-control, witch is not an option. I could live with it, if the size of the sub-control is reduced only in multi-selection mode. But how to figure out if more than one control is selected in the IDE?
  9. Thanks for your effort but you can see the partial markers only because the panel has a border of 1 pixel (due to BevelOuter=bvRaise). Set BevelOuter=bvNone the markers are hidden completely again.
  10. Thank you for your response. I noticed that you reduce the size of the sub-control to display the markers correctly. This works but unfortunately, this approach prevents the sub-control from being displayed at its desired size. In my case, the sub-control can be of type TEdit, TCheckBox, TComboBox, TDateTime or TMemo, and it is essential that they maintain their correct size at design time. By reducing the sub-control size, a correct form layout is not possible, and it would look like: Or, is there a way to reduce the size of the sub-component only when more than one control is selected?
  11. To handle this, I could register my own IOTANotifier with a IOTAWizard to get notified when the control is selected, and then draw the markers manually. I found some notifiers for the code editor like TNTACodeEditorNotifier but could not find a proper notifier for the form designer. If anyone has undertaken a similar task, your assistance would be greatly appreciated.
  12. Hello I found that the Captions of Delphi's TMainMenu and TPopupMenu are hard to read under Windows 11, if an ImageList is connected to the menu. Tested with Delphi 10.4 and 11.0. Windows 10 menu without and with images (ok) Windows 11 menu without and with image (hard to read black text on dark-blue background) Can anyone reproduce this behavior? Best regards Tom
  13. Hello Has anyone noticed that in Delphi 11.0 the indentation of the form caption is larger than in Delphi 10.4? Especially under Windows 11 the small indent with Delphi 10.4 is irritating. IMO Delphi 11.0 makes the better indentation. Is there a way in Delphi 10.4 to adjust the intent of the form caption (without using Styles)? Best regards Tom
  14. Tom Mueller

    Menu captions with images are hard to read under Windows 11

    Yes, that's something Embarcadero can't change. But it seems that if the menu is connected to an ImageList Embarcadero uses its own draw method. There are no round corners anymore and the text color does not change to white. I found a QP issue for the rounded corner as well and I created one for the text color problem: https://quality.embarcadero.com/browse/RSP-34597 https://quality.embarcadero.com/browse/RSP-35800
  15. Tom Mueller

    Delphi 11.0 has a different form Caption offset than Delphi 10.4

    Set the forms BorderStyle to bsDialog, bsToolWindow or bsSizeToolWin. Sorry, forgot to mention that.
  16. Tom Mueller

    Delphi 11.0 has a different form Caption offset than Delphi 10.4

    Yes, OwnerDraw would probably work - if I use a base form for all the forms in an application. I hoped that there is a more simple way to I just adjust the intent of the caption.
  17. Most "older" applications do not have full support of High-DPI scaling. To enhance the appearance of these applications Microsoft added the gdiScaling option in Windows 10 Creators Update (1703) . <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings"> <gdiScaling>true</gdiScaling> </asmv3:windowsSettings> </asmv3:application> In the compatibility settings of the windows property dialog of an application this is marked as "System (enhanced)" Delphi manifest option do not support this scaling mode at the moment. Our Build-tool sets the gdiScaling option in the manifest - but a build inside the IDE with gdiScaling is not possible! I also added a feature request in QP: https://quality.embarcadero.com/browse/RSP-24175. If you miss this option too - please vote for It. Best regards, Tom
  18. After installing Delphi Rio Update 2 with the WebInstaller, I realized that some core files are dated from 08. July 2019 00:55 and others from 30. July 2019 15:55. The build number is 26.0.34749.6593 and as far as I remember this build was release on the 08. July 2019. So, how can it be that a lot of core files, like BDS.exe and BPLs have a newer date than the release date but the same build number? Any Ideas?
  19. Tom Mueller

    Add support for High-DPI gdiScaling

    Yes, I agree - it would be the right way to update all applications to fully support high dpi. For our applications this will take probably 1-2 years and some money that our customers won't spend.. I will do so. Thank you for comments!
  20. Tom Mueller

    Add support for High-DPI gdiScaling

    I agree, but what means seriously outdated applications - all MDI applications and Delphi IDE? 😉 No, it should be an additional item in the DPI awareness drop down box. I called it "System Aware (enhanced)" - but I see it makes it clearer if it is named "GDI Scaling". Delphis DPI Awareness modes and its Manifest entries would then look like (simplified):
  21. Tom Mueller

    Add support for High-DPI gdiScaling

    Yes, but it would be easier and more logical if it would be an auto generate option. "System Aware" in Delphi should corresponds to "System" in application properties (<dpiAwareness>system</dpiAwareness>). So I named it "System Aware (enhanced)" that should correspond to "System (enhanced)" in application properties (<gdiScaling>true</gdiScaling>)
  22. Hi Andi Thank you for providing us your tools! dfmCheck is a very useful tool - especially for large projects with a lot of forms. I encountered one problem for projects with FastReport. FastReport writes the main component TFrxReport into the pas file - all sub-components are only stored inside the dfm without a reference in the pas file. Unfortunately our projects use a lot of FastReport and therefore a compilation with your generated special unit is not possible. My question: do you see a possibility to exclude units or classes (actually only TFrxReport) from the dfmCheck - or even a switch "- Ignore FastReport"? Best regards, Tom
  23. Hello Some questions: Can somebody explain what the compiler switch -VN is used for? Where can it be set inside the IDE (Delphi 10.3.1)? Why is this switch the default Delphi 10.3.1 setting for new projects? Why is this switch doubled when the -VT switch is set inside the IDE? (you can see the command line in the "Build" tab of the "Messages" tool window) Any hints would be appreciated!
  24. Tom Mueller

    What is the compiler switch -VN used for?

    Yes, I've seen that - "-VN = TDS symbols in namespace" but what does it mean?
  25. Hi For our project translation tool I extract all resourcestrings from 3rd party components into drc-files. This is donne by creating a temporary package with all units containing resourcestrings and then compile it with the --drc switch. Until Delphi 10.2 this worked perfectly. With Delphi 10.3 some of these packages cannot be created anymore. Delphi will raise an "Error: E2621 Export table in output file too large: exceeds 65536 limits" There is a bug report about this error https://quality.embarcadero.com/browse/RSP-22698 but it is marked as "Resolved" "Workes As Expected". Instead of a package project I tried to include all units into a console application - this compiles without a problem - but not all resourcestrings are extracted into the drc-file. To my question: Anyone knows another way to extract all resourcestrings int a drc-file from 3rd party source files?
×