Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Attila Kovacs

    Issues with Fontscaling for HDPI in Delphi Berlin

    Ah, I see. Never encounter problems on parenting a form, but for sure, HDPI is still very buggy so I'm not wondering. Just go with your workaround. 😞
  3. Memnarch

    Issues with Fontscaling for HDPI in Delphi Berlin

    The frames do have a DFM, if that's what you mean by DFM template
  4. dummzeuch

    Using dxgettext on Windows 10

    I suspect that Nexus is also hooking LoadResString and this might conflict with the hooking gnugettext does. But since I don't use Nexus (and therefore don't have the source code), I can't verify this.
  5. Attila Kovacs

    Issues with Fontscaling for HDPI in Delphi Berlin

    Runtime created forms/frames (without dfm template) are not scaling in Berlin. Fixed somewhere in Tokyo/Rio.
  6. Hello, I'm currently working on making our application HDPI aware. We use Delphi Berlin and i encountered some strange scaling issues regarding fonts. A frame that was designed on a 96ppi Screen has a VCL Designsetting of Font.Size = 8 and Font.Height = -11. However, when the frame is created at runtime (TMyFrame.Create), it starts with a Font.Height of -21. From there on it all goes downhill. As soon as frames get parented on a control(or needs to rescale itself) that is already scaled > 96ppi, the Frame rescales its fonts(as it seems using 96ppi as a base). That means that, on a system with a scale of 200%, i get fonts the size of 400% or even 800%. The frames have "ParentFont" set. Disabling "ParentFont" at some places seems to mitigate this issue. But then again, what is happening? A TFont has a PixelsPerInch property, but that one is ignored throughout the scaling mechanics of the controls.
  7. Stefan Glienke

    Include unused class and its RTTI in the executable

    I don't see the Delphi compiler performing any control flow analysis and eliminate code in any possible future. C++ might do that though (see https://stackoverflow.com/questions/6664471/observable-behaviour-and-compiler-freedom-to-eliminate-transform-pieces-c-co) However I requested adding a way to specifically force linking of types into the binary some while ago - see https://quality.embarcadero.com/browse/RSP-18389
  8. Correct! But it also shows the normative power of facts. Everybody has been using their hands to operate the parking brake for decades, hence the popular renaming, which made absolute sense. The new concept did indeed turn out to be a dud, contrary to a lot of other stuff Daimler engineers came up with over the years. It is now something that may be regarded as eccentric (or just plain nuts if it where in a cheap car).
  9. And that's why technical terms matter - because it's called parking brake (Feststellbremse in german).
  10. You are right, the Mercedes CLA has the (electrically operated) handbrake on a "left down under" position. Very impractical!
  11. Only German engineers can look at the term "hand brake" and go "Yep! That should be done with a pedal".
  12. hsvandrew

    How to develop cheaply for iOS?

    You simply need the hosting provider to allow you to VPN to the cloud network running the Mac. However, if you want to make a good iOS app you'll need to do your testing on a real device: you just can't get the 'feel' of an app without touching it. If you want to develop cheaply for iOS you would be using Xcode + HTML + JS or similar. As you've already paid a huge amount of money for Delphi, a Mac should be somewhat affordable.
  13. Well not trunk but in fact Mercedes Benz I think was the first manufacturer to put it somewhere else and often people were looking for it in the usual place and could not find it :)
  14. I have no "moon icon" in the IDE titlebar. Only after moving the IDE window with the mouse the titlebar controls become visible: Why does Embarcadero HIDE important commands in spooky places? That would be the same as a car manufacturer hiding the hand brake in the car trunk.
  15. Stefan Glienke

    Travis CI joins Idera

    Looks like a similar story as with some other acquisitions - bought when decreasing relevance kicked in (in this case I think CircleCI their direct competitor gained quite some marketshare from Travis for several reasons).
  16. Today
  17. David Millington

    ABI Changes in RAD Studio 10.3

    4 bytes does fit into a register in both and is okay. It is params of 5, 6, 7, and 8 bytes in size that prompted this work: that is, params that may or may not fit into a register depending on if the register is 4 bytes or 8 bytes in size. I updated to make that clearer. Glad you find it interesting! For VC compatibility: for cdecl and stdcall, possibly. We had a very comprehensive review of all calling conventions on all platforms. Other compatibility areas with VC can be very different areas, things like object file format or RTL or...
  18. PeterPanettone

    GetIt Package Manager Item buttons only partially visible

    This is my configuration: Main Monitor: Monitor 1: LG ULTRAWIDE(38UC99)(Display Port) (3840 x 1600 pixel) (87 x 37 cm) Second monitor: Monitor 2: PHL BDM3270 (1440 x 2560 pixel) (71 x 40 cm)
  19. Cristian Peța

    Linux + Delphi + Apache problem on 10.3

    I have an Ubuntu installation that I tested in 10.2. But have you tested a simple console app? uses System.SysUtils; begin Writeln(AnsiCompareText('PARAMname','paramNAME')); Readln; end.
  20. jbg

    Disable the Jedi property editors?

    The JVCL Installer has a checkbox to turn the Global Designtime Editors off. It controls the registry key HKEY_CURRENT_USER\Software\CodeGear\BDS\XXXXX.0\Jedi\JVCL\IDE RegisterGlobalDesignEditors: DWORD = 1
  21. It seems that maybe the list of items is being rebuilt each time a search is performed...?
  22. PeterBelow

    Disable the Jedi property editors?

    You have to modify the design-time package that registers the property editor and rebuild it. Or just disable the package if you do not use any of the controls from it.
  23. It's "hidden" in den application titlebar. Click on the "moon" icon on the right of the titlebar and you'll see..
  24. dummzeuch

    Single Instance of Dephi IDE?

    A plugin would probably not be the best solution because that would always prevent multiple instances of the IDE. I think pinning it to the taskbar is a simple solutin that should work. Otherwise I would write a program that checks if the IDE is running and if yes, brings it to the foreground, if no starts it. And then instead of starting the IDE start that program. (But basically that's the same as pinning the IDE to the taskbar.)
  25. Stefan Glienke

    Maintaining For loop(s)

    Thanks for pointing that out - in the currently released version the type still has a T in its name and is in the unit Spring.Designpatterns (the move and renaming happens in the upcoming 1.3 version which is not yet released). Also in both versions the explicit hardcasting of the anonymous method is not required - there is an implicit operator for that. Also FWIW I usually put specifications that are used in several places as static functions into their own type or helper just like this (you can also make them standalone routines if you dislike the redundant typing of TProjectFilters): type TProjectFilters = record class function IsActive: TSpecification<TProject>; static; class function WorkhoursGreaterThan(const value: Integer): TSpecification<TProject>; static; end; class function TProjectFilters.IsActive: TSpecification<TProject>; begin Result := function(const p: TProject): Boolean begin Result := p.Active; end; end; class function TProjectFilters.WorkhoursGreaterThan( const value: Integer): TSpecification<TProject>; begin Result := function(const p: TProject): Boolean begin Result := p.Workhours > value; end; end; var spec: TSpecification<TProject>; begin spec := TProjectFilters.IsActive and TProjectFilters.WorkhoursGreaterThan(50); Also what others already pointed out: lets look at for example CountActiveProjects and ListActiveProjects - what do they have in common? They do something on the active projects - so break that down into getting the active projects and what is done on them. If you want to keep TArray<TProject> and alike you probably have to write the filtering yourself. I just point out how easy it will be using IList<T> from Spring.Collections: procedure PrintProject(const p: TProject); begin //... end; var projects: IList<TProject>; activeProjects: IEnumerable<TProject>; begin activeProjects := projects.Where( function(const p: TProject): Boolean begin Result := p.Active; end); Writeln(activeProjects.Count); activeProjects.ForEach(PrintProject); You can even turn a TArray into an IEnumerable where you can apply filtering and stuff (yes, some minor overhead - measure yourself if it's worth it to keep your code compact and with less explicit loops); var projects: TArray<TProject>; activeProjects: IEnumerable<TProject>; begin activeProjects := TEnumerable.From(projects).Where( function(const p: TProject): Boolean begin Result := p.Active; end); Writeln(activeProjects.Count); activeProjects.ForEach(PrintProject);
  26. In the Delphi 10.3 Rio IDE, where is the Save Desktop... menu item? I have not found it in the View -> Desktops submenu:
  27. Stefan Glienke

    ABI Changes in RAD Studio 10.3

    Well, not quite - it's not a common case but I want to point that out: If you have any existing 64bit DLL that you compiled with a previous version and are now calling from a 10.3 compiled binary or vice versa that has any of the affected record types you are in trouble. You need to compile both with the same version. Also if I am not mistaken it is between 5 and 8 bytes, 4 bytes fit into a register on both and should not be affected.
  1. Load more activity