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:
- Download SVGIconImageList_Setup.exe
- Run the installer - it automatically detects Delphi versions
- 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:
// 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:
SVGIconImageList1.Size := 32; // Automatically redraws all iconsVCL with VirtualImageList:
VirtualImageList1.Size := 32; // Icons render at new sizeFMX:
SVGIconImageList1.Size := 32;
SVGIconImageList1.RefreshAllIcons; // Force regenerationThe 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:
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:
SVGIconImage1.LoadFromFile('logo.svg');
SVGIconImage1.Proportional := True;
SVGIconImage1.Center := True;FMX:
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:
// All icons
SVGIconImageList1.FixedColor := clWindowText;
// Single icon
SVGIconImageList1.SVGIconItems[0].FixedColor := clRed;FMX:
// 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:
SVGIconImageList1.GrayScale := True; // All icons
SVGIconImageList1.SVGIconItems[0].GrayScale := True; // Single iconOpacity:
// VCL (0-255)
SVGIconImageList1.Opacity := 128; // 50% transparent
// FMX (0.0-1.0)
SVGIconImageList1.Opacity := 0.5; // 50% transparentDisabled State (automatic):
SVGIconVirtualImageList1.DisabledGrayScale := True;
SVGIconVirtualImageList1.DisabledOpacity := 125;
// Icons automatically appear grayed when controls are disabledQ. How do I implement light/dark themes?
A. Use the FixedColor property to change icon colors:
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:
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:
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:
- Open the Component Editor (double-click component)
- Click "Add from WEB"
- Search icons from iconify.design
- 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:
VirtualImageList1.Size := 32; // Match your control's expected size2. Enable DPI scaling:
SVGIconImageList1.Scaled := True;3. Match AntiAliasColor to background:
VirtualImageList1.AntiAliasColor := Form1.Color;Q. Why aren't my icon changes appearing?
A. Force a refresh:
VCL:
SVGIconImageList1.RecreateBitmaps;
// or
VirtualImageList1.Change;FMX:
SVGIconImageList1.RefreshAllIcons;Q. How do I reduce memory usage?
A. Use the modern architecture (Delphi 10.3+):
- Use
TSVGIconImageCollection+ multipleTSVGIconVirtualImageListinstances - Don't use multiple
TSVGIconImageListinstances 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:
- FAQ - Advanced - Architecture, performance, advanced customization
- Library Architecture - Technical implementation details
- Choice of Factories - Rendering engine comparison
- VCL Reference - Complete API documentation
- FMX Reference - Complete FMX API documentation
Still Need Help?
- Demos: See VCL Demos and FMX Demos
- GitHub Issues: Report bugs or request features
- Examples: Check the comprehensive Usage Guide