Skip to content

FAQ - Frequently Asked Questions ​

This page covers common questions and quick answers. For advanced topics, see FAQ - Advanced.

General Questions ​

Q. Are the components free to use? ​

A. Yes, they are completely free under the Apache License, Version 2.0. The library includes multiple open-source rendering engines:

  • Image32 by Angus Johnson (Boost Software License)
  • Skia4Delphi wrapper (MIT License)
  • Direct2D wrapper (Apache License 2.0)
  • SVGMagic by Jean-Milost Reymond (MIT License - GitHub)

Q. Which Delphi versions are supported? ​

A. VCL Components: Delphi XE6 to Delphi 13 Florence

FMX Components: Delphi 10.3 Rio to Delphi 13 Florence (minimum recommended)

Note: Some features like TSVGIconVirtualImageList and TSVGIconImageCollection require Delphi 10.3+.

Q. Which platforms are supported? ​

A. VCL: Windows (32-bit and 64-bit)

FMX: Windows, macOS (Intel and Apple Silicon), iOS (Simulator and Device), Android (ARM 32-bit and 64-bit)

Q. Are the demo icons free to use? ​

A. Yes, the flat-color-icons used in demos are available from: https://github.com/icons8/flat-color-icons.git

You can also download icons directly from the component editor using the "Add from WEB" feature, which connects to iconify.design API.


Installation and Setup ​

Q. How do I install the components? ​

A. The easiest way is using the automatic installer:

  1. Download SVGIconImageList_Setup.exe
  2. Run the installer - it automatically detects Delphi versions
  3. The installer adds sources, builds packages, and configures paths

Alternatively, see the Installation Guide for manual installation.

Q. Which rendering engine should I use? ​

A. Image32 (default) is recommended for most cases - it has no dependencies and excellent SVG support.

Quick Recommendations:

  • Image32: Best balance, no dependencies, cross-platform
  • Skia4Delphi: Best rendering quality, hardware acceleration
  • Direct2D: Windows-only, native OS integration
  • SVGMagic: Compatibility with legacy code

See Choice of Factories for detailed comparison.

Q. How do I change the rendering engine? ​

A. Call SetGlobalSVGFactory at application startup:

pascal
// Use Skia4Delphi
SetGlobalSVGFactory(GetSkiaSVGFactory);

// Use Direct2D
SetGlobalSVGFactory(GetD2DSVGFactory);

// Use SVGMagic
SetGlobalSVGFactory(GetSVGMagicFactory);

See Choice of Factories for more details.


Component Usage ​

Q. Which component approach should I use? ​

A. For Delphi 10.3+: Use TSVGIconImageCollection + TSVGIconVirtualImageList for memory efficiency and centralized management.

For Delphi XE6-10.2: Use TSVGIconImageList for a simpler, self-contained solution.

For individual images: Use TSVGIconImage to display standalone SVG graphics.

See Overview (VCL) or Overview (FMX) for component comparisons.

Q. Can I resize icons at run-time? ​

A. Yes, it's very simple:

VCL with TSVGIconImageList:

pascal
SVGIconImageList1.Size := 32; // Automatically redraws all icons

VCL with VirtualImageList:

pascal
VirtualImageList1.Size := 32; // Icons render at new size

FMX:

pascal
SVGIconImageList1.Size := 32;
SVGIconImageList1.RefreshAllIcons; // Force regeneration

The ImageList automatically redraws all icons with perfect scaling.

Q. How do I handle High-DPI / DPI scaling? ​

A. VCL: Set the Scaled property to True (default in Delphi 10.3+). The component automatically responds to DPI change messages.

Important: If the component is placed in a DataModule, you must manually resize icons:

pascal
procedure TDataModule.OnDPIChanged(Sender: TObject; OldDPI, NewDPI: Integer);
begin
  SVGIconImageList1.Size := MulDiv(32, NewDPI, 96);
end;

FMX: Multi-resolution bitmaps are automatically generated at multiple scales (1x, 1.5x, 2x, 3x).

See Usage (VCL) Pattern 5 for complete DPI-aware examples.

Q. Can I show an SVG image in a TImage? ​

A. Yes, use the TSVGIconImage component:

VCL:

pascal
SVGIconImage1.LoadFromFile('logo.svg');
SVGIconImage1.Proportional := True;
SVGIconImage1.Center := True;

FMX:

pascal
SVGIconImage1.LoadFromFile('logo.svg');
SVGIconImage1.Align := TAlignLayout.Client;

See TSVGIconImage Reference for complete API.


Customization ​

Q. Can I change the color of all icons? ​

A. Yes, use the FixedColor property at ImageList/Collection level or at individual icon level:

VCL:

pascal
// All icons
SVGIconImageList1.FixedColor := clWindowText;

// Single icon
SVGIconImageList1.SVGIconItems[0].FixedColor := clRed;

FMX:

pascal
// All icons
SVGIconImageList1.FixedColor := TAlphaColorRec.Black;

// Single icon
SVGIconImageList1.Source[0].FixedColor := TAlphaColorRec.Red;

This is perfect for implementing themes without needing multiple icon sets.

Q. Can I apply visual effects to icons? ​

A. Yes, several effects are available:

GrayScale Effect:

pascal
SVGIconImageList1.GrayScale := True; // All icons
SVGIconImageList1.SVGIconItems[0].GrayScale := True; // Single icon

Opacity:

pascal
// VCL (0-255)
SVGIconImageList1.Opacity := 128; // 50% transparent

// FMX (0.0-1.0)
SVGIconImageList1.Opacity := 0.5; // 50% transparent

Disabled State (automatic):

pascal
SVGIconVirtualImageList1.DisabledGrayScale := True;
SVGIconVirtualImageList1.DisabledOpacity := 125;
// Icons automatically appear grayed when controls are disabled

Q. How do I implement light/dark themes? ​

A. Use the FixedColor property to change icon colors:

pascal
procedure TMainForm.ApplyTheme(ATheme: TTheme);
begin
  case ATheme of
    tmLight:
      begin
        Color := clWhite;
        SVGIconImageCollection.FixedColor := clBlack;
        SVGIconImageCollection.AntiAliasColor := clWhite;
      end;
    tmDark:
      begin
        Color := $202020;
        SVGIconImageCollection.FixedColor := clWhite;
        SVGIconImageCollection.AntiAliasColor := $202020;
      end;
  end;
  Invalidate; // All virtual image lists automatically update
end;

See Usage (VCL) Pattern 4 for complete theme support examples.


Loading Icons ​

Q. How do I load SVG files from disk? ​

A. Use the LoadFromFiles method:

pascal
var
  FileNames: TStringList;
begin
  FileNames := TStringList.Create;
  try
    // Collect files
    TDirectory.GetFiles('C:\Icons', '*.svg', FileNames);

    // Load into collection/imagelist
    SVGIconImageCollection.LoadFromFiles(FileNames);
  finally
    FileNames.Free;
  end;
end;

Q. Can I load icons from resources? ​

A. Yes, embed SVG files in resources:

Add to .rc file:

HOME_ICON SVG "icons\home.svg"
SAVE_ICON SVG "icons\save.svg"

Load at runtime:

pascal
SVGIconImageCollection.LoadFromResource(HInstance, 'HOME_ICON', 'home');
SVGIconImageCollection.LoadFromResource(HInstance, 'SAVE_ICON', 'save');

See Usage (VCL) Pattern 10 for complete examples.

Q. Can I download icons directly from the web? ​

A. Yes, starting from version 4.3, the component editor includes "Add from WEB" feature:

  1. Open the Component Editor (double-click component)
  2. Click "Add from WEB"
  3. Search icons from iconify.design
  4. Download and add to your collection

See REST API Search for details.


Common Issues ​

Q. Why do my icons appear blurry? ​

A. Check these settings:

1. Verify size matches control:

pascal
VirtualImageList1.Size := 32; // Match your control's expected size

2. Enable DPI scaling:

pascal
SVGIconImageList1.Scaled := True;

3. Match AntiAliasColor to background:

pascal
VirtualImageList1.AntiAliasColor := Form1.Color;

Q. Why aren't my icon changes appearing? ​

A. Force a refresh:

VCL:

pascal
SVGIconImageList1.RecreateBitmaps;
// or
VirtualImageList1.Change;

FMX:

pascal
SVGIconImageList1.RefreshAllIcons;

Q. How do I reduce memory usage? ​

A. Use the modern architecture (Delphi 10.3+):

  • Use TSVGIconImageCollection + multiple TSVGIconVirtualImageList instances
  • Don't use multiple TSVGIconImageList instances with duplicated icons

The ImageCollection stores icons once; VirtualImageLists render them at different sizes without duplication.

See FAQ - Advanced for detailed memory optimization strategies.


Advanced Topics ​

For advanced questions, see:


Still Need Help? ​

Released under Apache License, Version 2.0.