TSVGIconSourceItem (FMX)
Unit: FMX.SVGIconImageList
Inherits from: TCustomSourceItem
Description
TSVGIconSourceItem represents a single SVG icon within a TSVGIconImageList's Source collection. Each source item stores the original SVG content and rendering attributes (color, opacity, grayscale), and manages the generation of multi-resolution bitmaps for different scales and sizes.
Source items are created automatically when you add icons to TSVGIconImageList using methods like AddIcon, InsertIcon, or LoadFromFiles.
Properties
Identification
IconName: String
property IconName: string read GetIconName write SetIconName;Unique name for the icon. Used to retrieve icons by name using GetIconByName.
Example:
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIcon(0);
Icon.IconName := 'home';
// Later retrieve by name
Icon := SVGIconImageList1.GetIconByName('home');
end;SVG Content
SVGText: String
property SVGText: string read GetSVGText write SetSVGText;The SVG XML content as a string.
Example:
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIcon(0);
Icon.SVGText := '<svg width="100" height="100">...</svg>';
end;SVG: TFmxImageSVG
property SVG: TFmxImageSVG read FSVG write SetSVG;Direct access to the underlying TFmxImageSVG object for advanced manipulation.
Example:
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIcon(0);
Icon.SVG.FixedColor := TAlphaColorRec.Blue;
Icon.SVG.Opacity := 0.8;
end;Rendering Attributes
FixedColor: TAlphaColor
property FixedColor: TAlphaColor read GetFixedColor write SetFixedColor default TAlphaColors.Null;Override all colors in this icon's SVG with a fixed color. Use TAlphaColors.Null to inherit from ImageList or preserve original colors.
Example:
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIconByName('warning');
Icon.FixedColor := TAlphaColorRec.Orange;
end;ApplyFixedColorToRootOnly: Boolean
property ApplyFixedColorToRootOnly: Boolean read FApplyFixedColorToRootOnly write SetApplyFixedColorToRootOnly default False;When True, applies FixedColor only to the root SVG element. Default: False.
Example:
Icon.FixedColor := TAlphaColorRec.Blue;
Icon.ApplyFixedColorToRootOnly := True; // Only root element becomes blueGrayScale: Boolean
property GrayScale: Boolean read GetGrayScale write SetGrayScale default False;Renders this icon in grayscale. Default: False.
Example:
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIconByName('disabled-feature');
Icon.GrayScale := True; // Show as disabled
end;Opacity: Single
property Opacity: Single read GetOpacity write SetOpacity;Opacity for this icon (0.0 = transparent, 1.0 = opaque). Default: -1 (inherit from ImageList).
Example:
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIcon(0);
Icon.Opacity := 0.5; // 50% transparent
end;Multi-Resolution Bitmap
MultiResBitmap: TSVGIconMultiResBitmap
property MultiResBitmap: TSVGIconMultiResBitmap;The multi-resolution bitmap collection for this icon. Contains rendered bitmaps at different scales (1x, 1.5x, 2x, 3x).
Example:
var
Icon: TSVGIconSourceItem;
BitmapItem: TSVGIconBitmapItem;
begin
Icon := SVGIconImageList1.GetIcon(0);
// Access specific scale bitmap
BitmapItem := Icon.MultiResBitmap.ItemByScale(2.0, False) as TSVGIconBitmapItem;
if Assigned(BitmapItem) then
ShowMessage(Format('2x bitmap: %dx%d', [BitmapItem.Width, BitmapItem.Height]));
end;Methods
Assign
procedure Assign(Source: TPersistent); override;Copies all properties from another TPersistent object.
Example:
var
SourceIcon, DestIcon: TSVGIconSourceItem;
begin
SourceIcon := SVGIconImageList1.GetIcon(0);
DestIcon := SVGIconImageList1.GetIcon(1);
DestIcon.Assign(SourceIcon); // Copy all properties
end;Usage Examples
Customize Individual Icon
procedure TForm1.CustomizeHomeIcon;
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIconByName('home');
if Assigned(Icon) then
begin
Icon.FixedColor := TAlphaColorRec.Blue;
Icon.Opacity := 0.9;
SVGIconImageList1.RefreshAllIcons; // Apply changes
end;
end;Mark Icons as Disabled
procedure TForm1.DisableIcon(const AName: string);
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIconByName(AName);
if Assigned(Icon) then
begin
Icon.GrayScale := True;
Icon.Opacity := 0.5;
SVGIconImageList1.RefreshAllIcons;
end;
end;Iterate Through All Icons
procedure TForm1.ListAllIcons;
var
I: Integer;
Icon: TSVGIconSourceItem;
begin
Memo1.Lines.Clear;
for I := 0 to SVGIconImageList1.Source.Count - 1 do
begin
Icon := SVGIconImageList1.Source[I] as TSVGIconSourceItem;
Memo1.Lines.Add(Format('%d: %s', [I, Icon.IconName]));
end;
end;Apply Color Theme
procedure TForm1.ApplyColorScheme(const ACategory: string; AColor: TAlphaColor);
var
I: Integer;
Icon: TSVGIconSourceItem;
begin
for I := 0 to SVGIconImageList1.Source.Count - 1 do
begin
Icon := SVGIconImageList1.Source[I] as TSVGIconSourceItem;
// Apply color to icons in specific category
if Icon.IconName.StartsWith(ACategory + '\') then
Icon.FixedColor := AColor;
end;
SVGIconImageList1.RefreshAllIcons;
end;Clone and Modify Icon
procedure TForm1.CreateVariation;
var
OrigIcon, NewIcon: TSVGIconSourceItem;
begin
// Get original
OrigIcon := SVGIconImageList1.GetIconByName('star');
// Clone
NewIcon := SVGIconImageList1.CloneIcon(
SVGIconImageList1.Source.IndexOf(OrigIcon)
);
// Customize clone
NewIcon.IconName := 'star-yellow';
NewIcon.FixedColor := TAlphaColorRec.Yellow;
SVGIconImageList1.RefreshAllIcons;
end;Replace Icon Content
procedure TForm1.UpdateIcon(const AName: string; const ANewSVG: string);
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIconByName(AName);
if Assigned(Icon) then
begin
Icon.SVGText := ANewSVG;
SVGIconImageList1.RefreshAllIcons;
end;
end;Conditional Formatting
procedure TForm1.ApplyStatusColor(const AIconName: string; AStatus: TStatusType);
var
Icon: TSVGIconSourceItem;
begin
Icon := SVGIconImageList1.GetIconByName(AIconName);
if not Assigned(Icon) then Exit;
case AStatus of
stNormal:
begin
Icon.FixedColor := TAlphaColors.Null; // Original colors
Icon.GrayScale := False;
Icon.Opacity := 1.0;
end;
stWarning:
begin
Icon.FixedColor := TAlphaColorRec.Orange;
Icon.GrayScale := False;
Icon.Opacity := 1.0;
end;
stError:
begin
Icon.FixedColor := TAlphaColorRec.Red;
Icon.GrayScale := False;
Icon.Opacity := 1.0;
end;
stDisabled:
begin
Icon.FixedColor := TAlphaColors.Null;
Icon.GrayScale := True;
Icon.Opacity := 0.5;
end;
end;
SVGIconImageList1.RefreshAllIcons;
end;Extract SVG for Standalone Use
procedure TForm1.ExtractAndUse;
var
Icon: TSVGIconSourceItem;
SVG: TFmxImageSVG;
Bitmap: TBitmap;
begin
Icon := SVGIconImageList1.GetIconByName('export');
SVG := Icon.SVG;
// Use SVG directly
Bitmap := TBitmap.Create(256, 256);
try
SVG.PaintToBitmap(Bitmap, 100);
Bitmap.SaveToFile('exported.png');
finally
Bitmap.Free;
end;
end;Property Inheritance
When a property is set to its default value, it inherits from the parent TSVGIconImageList:
| Property | Default Value | Inheritance Behavior |
|---|---|---|
| FixedColor | TAlphaColors.Null | Inherits from ImageList.FixedColor |
| GrayScale | False | No inheritance (explicit False) |
| Opacity | -1 | Inherits from ImageList.Opacity |
| ApplyFixedColorToRootOnly | False | No inheritance (explicit False) |
Example:
// ImageList settings
SVGIconImageList1.FixedColor := TAlphaColorRec.Blue;
SVGIconImageList1.Opacity := 0.8;
// Icon with defaults inherits ImageList settings
Icon1.FixedColor := TAlphaColors.Null; // Uses Blue from ImageList
Icon1.Opacity := -1; // Uses 0.8 from ImageList
// Icon with explicit values overrides ImageList
Icon2.FixedColor := TAlphaColorRec.Red; // Uses Red
Icon2.Opacity := 1.0; // Uses 1.0See Also
- TSVGIconImageList - Parent component
- TSVGIconMultiResBitmap - Multi-resolution bitmap manager
- TFmxImageSVG - Base SVG rendering class
- Overview (FMX) - FMX components overview