Skip to content

Alexandria 11.3 Update

Compare
Choose a tag to compare
@errorcalc errorcalc released this 04 Apr 22:25
· 14 commits to master since this release

What's new?

1. Added a new component TEsControlListCheckBox (Similar to TCheckBox but can be used in TControlList).

TControlList allows you to create great responsive interfaces using the TGraphicControl components to display content.
Sometimes you need something interactive like TControlListButton. What about a CheckBox for example for "done" in a to-do list based on a TControlList?
A new interactive component TEsControlListCheckBox has been added to the library.
This component does not have a window handle and is practically "free" for the application.
This component may be used as a clickable CheckBox and as a simple bool indicator in the CheckBox style (ReadOnly property).
Component support bindings when used with TControlList.
(See Samples\TEsControlListCheckBoxDemo\TEsControlListCheckBoxDemo.dpr)

2. Added "ES.BitmapPixels.pas" with TBitmapData to easy and fast access to TBitmap pixels.

A common question among VCL developers is "how do I access TBitMap pixels?"
Usually two solutions are suggested either using Canvas.Pixels[], or using Bitmap.Scanline[].
Accessing through Canvas.Pixels[] is extremely slow and frustrating, while using Bitmap.Scanline[] with all those PixelFormat's and Pointer's can be overkill for many developers.
A new module "ES.BitmapPixels.pas" has been added to the library. This module allowing access to TBitmap pixels with the speed of Bitmap.Scanline[] and the simplicity of Canvas.Pixels[].
Access is possible in two modes: RGB and RGBA, no need to think about the pixel format, all the necessary changes will be made automatically.

Here is an example that inverts pixels:

procedure InvertColors(const Bitmap: TBitmap);
var
  Data: TBitmapData;
  X, Y: Integer;
  Pixel: TPixelRec;
begin
  Data.Map(Bitmap, TAccessMode.ReadWrite, False);// RGB access
  try
    for Y := 0 to Data.Height - 1 do
    begin
      for X := 0 to Data.Width - 1 do
      begin
        Pixel := Data.GetPixel(X, Y);
        Pixel.R := 255 - Pixel.R;
        Pixel.G := 255 - Pixel.G;
        Pixel.B := 255 - Pixel.B;
        Data.SetPixel(X, Y, Pixel);
      end;
    end;
  finally
    Data.Unmap();
  end;
end; 

(See Samples\TBitmapPixelsDemo\TBitmapPixelsDemo.dpr)

3. Improved support for Delphi 11 Alexandria.

Improved styles support.

4. Fix minor issues.

TEsControlListCheckBox demo

Preview1

TBitmapData demo

Preview2