Weil iCh noch nicht auf SVG Icon umgestellt habe führe ich bei "Create" von jeder Form
diese Funktion aus um die Icons zu invertieren. Das ist nur für IOS notwendig
FitColorsToDarkOrLightMode(self);
Delphi-Quellcode:
Function IsDarkmodeOn:Boolean;
Begin
result := false;
{$IFDEF Framework_FMX}
{$IFDEF MSWINDOWS}
Result := false;
{$ENDIF MSWINDOWS}
{$IFDEF ANDROID}
Result := false;
{$ENDIF ANDROID}
{$IFDEF IOS}
Result := GetUserInterfaceStyle = UIUserInterfaceStyleDark;
{$ENDIF IOS}
{$ENDIF Framework_FMX}
end;
{$IFDEF Framework_FMX}
Function FitColorsToDarkOrLightMode(acomp:TComponent):boolean;
var i:integer;
currentcomp:tcomponent;
Begin
Result := IsDarkModeOn;
If Result then
Begin
for i := 0 to acomp.ComponentCount-1 do
begin
currentcomp := acomp.Components[i];
if currentcomp is TImagelist then
ReplaceOpaqueColorForImagelist(currentcomp as TImagelist,TAlphaColors.White);
end;
end;
end;
procedure ReplaceOpaqueColorForImagelist(aImageList:TimageList; aColor:TAlphaColor);
var aCanvas:TCanvas;
i,j :Integer;
Begin
for i:= 0 to aImageList.Source.count-1 do
Begin
For j:= 0 to aImageList.Source.Items[i].MultiResBitmap.Count-1 do
Begin
aCanvas := aImageList.Source.Items[i].MultiResBitmap.Items[j].Bitmap.Canvas;
aCanvas.BeginScene;
aCanvas.Bitmap.ReplaceOpaqueColor(aColor);
aCanvas.EndScene;
End;
End;
end;
Procedure SetFontColorForStates(aTextsetting:TTextSettings; aColor:TAlphaColor);
Begin
aTextSetting.FontColorForState.Focused := aColor;
aTextSetting.FontColorForState.Hot := aColor;
aTextSetting.FontColorForState.Pressed := aColor;
aTextSetting.FontColorForState.Active := aColor;
aTextSetting.FontColorForState.Normal := aColor;
End;
{$ENDIF Framework_FMX}
SetFontColorForStates hatte ich früher auch mal mit in der Darkmode Anpassung aber das brauche ich jetzt nicht mehr.