Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 09/12/20 in Posts

  1. mijn

    10.4.1 Released today

    Final results: 1. Navigator/Bookmarks each installs TParnassusCoreEditor which is not de-installed by any routine and has to be manually removed plus all associated registry entries 2. FMXLinux is not cleanly removed, thows an error 3. Individual Desktop settings are causing problems and throw exceptions. Only removing the "* Layout.dst" files in C:\Users\<username>\AppData\Roaming\Embarcadero\BDS\21.0 helped. 4. Finally all settings for Win64 platform are gone IMHO such possible errors should have been detected by Q&A before a release and not by paying customers.
  2. Alas @Remy Lebeau's suggestion has not worked in the 2 scenarios I have. I will pick this up again later today or tomorrow as I'm sure I had some part of it working with qualified names last week.
  3. Dalija Prasnikar

    10.4.1 Update

    Nope. Memory management is completely different castle. Custom managed records are about ability to use automatic, custom initialization and/or finalization on records and enabling easier implementation of some concepts like nullables. Without automatic initialization/finalization, you can still use records but there are trade offs - you either need to use manual initialization/finalization which is error prone or you need to implement some additional safeguard mechanisms that are more complex and commonly slower than using custom managed record.
  4. Thanks @Remy Lebeau, I will check this out today.
  5. Edwin Yip

    best way to display a list of panels?

    Well, that's how a software is getting better and better :D
  6. Not sure if this will help, but you might try calling ActivateClassGroup(TControl) before calling CreateComponent() to create a TControl-derived component. At least in DFM streaming, ActivateClassGroup() can be used to limit the class types that are looked at, to avoid ambiguities with VCL and FMX classes of the same name.
  7. David Heffernan

    On the use of Interposers

    Files are a special case of streams. And they are orthogonal to collections of strings. A string list is the wrong class for key/value pairs. I don't think you need string list interposers for any of these things.
  8. Uwe Raabe

    What is wrong with TStringList

    Same here. I make use of TStringList way more often without any file involved than for text file processing. If I need some extension to the standard TStringList behavior I prefer to derive a special purpose class from it.
  9. aehimself

    best way to display a list of panels?

    Just a small update, I managed to implement the resizing logic and it was really, really easy. Most of my time went away by drawing the transparent, themed, system default resize gripper... ...which almost can not be seen on dark styles, so totally with it! 👍 Frames above and below are adjusting properly, not changing places or jumping around. Overflow is handled correctly by the alClient scrollbox, if the contents grow too large for the window. The only thing is that I did not use splitters, I wrote the resizing logic myself (which is awfully long, like 10 lines of code?) Procedure TMultiLineParamFrame.ResizeHandleImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin _resizing := True; SetCapture(Self.Handle); End; Procedure TMultiLineParamFrame.ResizeHandleImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var relative: TPoint; begin If Not _resizing Then Exit; relative := ScreenToClient(Mouse.CursorPos); If relative.Y > 47 Then Height := relative.Y; // Burned in magic number, because we all love them! End; Procedure TMultiLineParamFrame.ResizeHandleImageMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin ReleaseCapture; _resizing := False; End; Drawing the gripping handle: Constructor TMultiLineParamFrame.Create(AOwner: TComponent); Var bmp: TBitmap; Begin inherited; _resizing := False; bmp := TBitmap.Create; Try bmp.Height := 16; bmp.Width := 16; bmp.TransparentColor := clYellow; bmp.Canvas.Brush.Color := bmp.TransparentColor; bmp.Canvas.FillRect(Rect(0, 0, bmp.Width, bmp.Height)); StyleServices.DrawElement(bmp.Canvas.Handle, StyleServices.GetElementDetails(tsGripper), Rect(0, 0, bmp.Width, bmp.Height)); ResizeHandleImage.Picture.Assign(bmp); Finally FreeAndNil(bmp); End; End;
×