Jump to content

Anders Melander

Members
  • Content Count

    2854
  • Joined

  • Last visited

  • Days Won

    156

Anders Melander last won the day on July 2

Anders Melander had the most liked content!

Community Reputation

2023 Excellent

Technical Information

  • Delphi-Version
    Delphi 12 Athens

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. QuickJS is a javascript engine while pas2js is a transpiler that emits javascript. Not even remotely the same thing.
  2. Anders Melander

    TeeBI free full sources released

    Needs more arrows!
  3. Anders Melander

    Profiling Tools for Delphi Apps?

    https://en.delphipraxis.net/search/?&q=profilers&search_and_or=or&sortby=relevancy https://www.google.com/search?q=delphi+profiling A few versions (around XE) had a limited version of AQTime bundled in. Apart from that it's hardly their area of expertise and it's been ages since they had resources to spare for anything but the core product. That will never happen. There's simply no benefit for them in open sourcing it, only expense, and it probably also contains code that can't be open sourced.
  4. Anders Melander

    THintWindow; exposing the WMLButtonDown event

    A window will only receive mouse messages if the mouse cursor is within its client area or it has captured the mouse. I don't think a hint window will satisfy either of those criteria. See also: https://learn.microsoft.com/en-us/windows/win32/inputdev/about-mouse-input
  5. Anders Melander

    Is it possible to implement floating/fully custom Dropdown Menus?

    It took me a good while to spot the difference between the two screenshots but I get your meaning. AFAIK it's possible to control DevExpress' skinning of standard VCL controls to some degree. See TdxSkinController.OnSkinControl The dependencies though 😕
  6. Anders Melander

    Is it possible to implement floating/fully custom Dropdown Menus?

    The easiest way is probably to just use a TForm as the poup. You need to: Display the form with ShowWindow(SW_SHOWNA). Handle WM_NCACTIVATE to avoid the form activating when clicked. In CreateParams: Set Params.WndParent to the parent form. Add WS_POPUP and WS_CLIPCHILDREN to Params.Style and exclude WS_CHILD. Add WS_EX_TOPMOST and WS_EX_TOOLWINDOW to Params.ExStyle. If you will be implementing the form shape with alpha blending then you also need to add WS_EX_LAYERED. Shape the form either with alpha blending (WS_EX_LAYERED and SetLayeredWindowAttributes) or with regions (I can't remember the APIs for that OTOH). I'm sure that if you search github for the above (with lang:pascal) that you can find some Delphi examples. See also: http://melander.dk/articles/alphasplash/ ...or you could just throw some $$$ at DevExpress and use their TdxCalloutPopup control:
  7. Oh - You meant what version of RAD Studio is installed on the local system. I think the InstalledUpdates registry key is the closest you can get. There's no guarantee that it's valid though since it's only informational.
  8. GetRTLVersion would be my guess. The actual values appears to be undocumented though - but here's an unofficial list to get you started: https://delphidabbler.com/notes/version-numbers
  9. Anders Melander

    Bitmaps to Video for Mediafoundation

    "Not thread-safe" in this case doesn't mean crash and burn. It just means that if one thread modifies the global FormatSettings then it will affect all other threads also using it. Hardly a problem - even if you did output floating point values in the exception message.
  10. Anders Melander

    Bitmaps to Video for Mediafoundation

    Likely because Renate is using a newer version of Delphi. As far as I can tell the faulty code was contributed by someone else.
  11. Anders Melander

    Bitmaps to Video for Mediafoundation

    🙂 No, of course that doesn't work A dynamic array is initialized to an empty array so there needs to be a SetLength first.
  12. Anders Melander

    Bitmaps to Video for Mediafoundation

    FWIW & FYI: Newer versions of Delphi have IntToHex overloads for NativeInt to match the size of a pointer. I think it got introduced in Delphi 10. TArray<T>, being a dynamic array, is a manages type and string too, so TArray<string> should be initialized automatically. Probably a compiler bug.
  13. Anders Melander

    Bitmaps to Video for Mediafoundation

    If only there was some magic key you could press in the editor to display help about various relevant topics... 🙂 I only ever use %s %d, %n and %x - and I use those a lot so that helps but I sometime need to consult that magic key when it comes to the precision or index specifiers.
  14. Anders Melander

    Bitmaps to Video for Mediafoundation

    There's not even a need for try..finally since there no resources to protect; Get rid of hr, assign the results to Result directly and just exit. Also, instead of: raise Exception.Create('Fail in call nr. ' + IntToStr(Count) + ' of ' + ProcName + ' with result $' + IntToHex(hr)); I would use: raise Exception.CreateFmt('Fail in call no. %d of %s with result %x', [Count, ProcName, hr]); for readability.
  15. Anders Melander

    Creating webp files with Skia fails

    I'm pretty sure Skia's BMP handling isn't bug-free but it's way more likely that this problem is caused by the Delphi side of things; The alpha handling in VCL's TBitmap is such a horrible mess that it should be deprecated and reimplemented from scratch. See also:
×