![]() |
[Firemonkey] Styles dynamisch zur Laufzeit ändern
Hallo zusammen,
ich habe mir ein paar eigene Styles erstellt, die wunderbar funktionieren. Jetzt meine Frage, kann ich zum Beispiel in einem Style ein Bitmap (TImage) zur Laufzeit ändern ? Gibt es dazu irgendwelche Anleitungen ? Edit: Am besten wäre es, wenn ich die Bitmaps aus Resourcefiles laden könnte. |
AW: [Firemonkey] Styles dynamisch zur Laufzeit ändern
Ich habe mal auf´s Geradewohl ein bischen herum gespielt:
Delphi-Quellcode:
Naiver weise dachte ich, so ein Hintergrundbild für meine Checkbox zuzuweisen.
procedure TFormAbfall.Button1Click(Sender: TObject);
var O: TFmxObject; Ol: TFmxObject; Ob: TFmxObject; begin O := FMX.Types.FindStyleResource('checkboxstyle'); if not Assigned(O) then Exit; for Ol in O.Children do begin if Ol.ClassName = 'TLayout' then // if Ol.StyleName = 'layout' then ?? begin for Ob in Ol.Children do begin if Ob.StyleName = 'background' then begin if Ob is TSubImage then begin (Ob as TSubImage).Source.Bitmap.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'as.bmp'); Exit; end; end; end; end; end; end; Statt dessen wird das ganze Formular verändert (das Bild als Hintergrund für das Formular verwendet (incl. NoneClient) und alles übrige recht verfälscht). Vielleicht bringt Dich aber ja davon etwas auf die zündende Idee... EDIT: "ich habe mir ein paar eigene Styles erstellt, die wunderbar funktionieren" ... sehen wolln |
AW: [Firemonkey] Styles dynamisch zur Laufzeit ändern
Zitat:
Delphi-Quellcode:
Das funktioniert jetzt. Jetzt brauche ich nur noc, dass ich unter Windows die Bitmaps aus Resourcen laden kann.
procedure SetTabItemIcon(TabItemControl: TTabItem; Bitmap: string);
var T: TFmxObject; begin if TabItemControl = nil then Exit; T := TabItemControl.FindStyleResource('tabicnfile'); if (T <> nil) and (T is TImage) then begin TImage(T).Bitmap.LoadFromFile(Bitmap); end; TabItemControl.Repaint; end; Zitat:
|
AW: [Firemonkey] Styles dynamisch zur Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir brachte CheckBox1.FindStyleRessource... immer nil.
Daher der Umweg über die zentrale Ressourcenliste. Betrifft Deine Änderung dann nur ein einzelnes Tab? Ich habe mir auch mal einen Style gebastelt (bzw. von einem originalen abgeleitet und erweitert). Für eigene Komponenten muss man dann allerdings wieder nachbessern, wenn man einen anderen Style verwenden möchte. Die style.png habe ich mit Gimp verändert. Das war ziemliche Wurschtelei, auch wenn mir das Ergebnis erst mal gefällt. Wäre echt mal interessant, ob jemand das Style-Konzept irgendwann plausibel erklären kann (Delphi-Tage?). PS: Übrigens reicht
Delphi-Quellcode:
aus. Nil wäre dann false.
if (T is TImage) then
|
AW: [Firemonkey] Styles dynamisch zur Laufzeit ändern
Zitat:
Habe auch noch Probleme die Bitmaps unter Mac OSX zu laden, hat hier jemand noch einen Tipp fürr mich ? Die Bilder werden im Style nicht angezeigt, trotz m.M. richtiger Pfadangabe
Delphi-Quellcode:
SetTabItemIcon(TsbYitem1, 'Contents/MacOS/Folder.png');
|
AW: [Firemonkey] Styles dynamisch zur Laufzeit ändern
Zitat:
Zitat:
Edit: Das Laden der Bilder auf'm Mac habe ich gelöst.
Delphi-Quellcode:
.
SetTabItemIcon(TI_1, ExtractFilePath(ParamStr(0)) + 'opened_folder.png');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz