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. What is the current version?

A. The current official version is 4.5.3 for both VCL and FMX platforms.

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.