Einzelnen Beitrag anzeigen

Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: FMX Style Editor

  Alt 22. Nov 2014, 07:19
Also: Was ist ein Style unter FMX?

Mit einem Style kann ich Aussehen und Struktur einer FMX-Komponente verändern, ohne deren Source zu ändern. Ein Style in diesem Zusammenhang ist weitaus mehr als ein Eimer voller Farbe, den man über einem Control auskippt, damit es rot, grün oder blau aussieht. So kann man damit zum Beispiel einem TListBoxItem sagen, das er nicht nur seine normale Caption hat, sondern etwa weitere Text-Objekte. Das geht, indem man diesem TListBoxItem einen eigenen Style zuweist, in dem diese weiteren Objekte definiert sind.

Es beginnt (in XE7) in jeder FMX-Komponente mit einem Rechtsklick auf dieselbige und dem Eintrag "Edit Custom Style...". Dann öffnet sich für diese Komponente der Style-Editor, der in der Tat ein seltsames Stück Software ist. Dort kann man sich aus der Komponenten-Palette weitere Elemente hinzuziehen, fast als würde man auf einem Form designen.

Die neuen Objekte lassen sich über Struktur-Ansicht und Objekt-Inspektor in der angemessenen Weise konfigurieren.

Klickt man auf "Apply & Close", so werden die Änderungen als neuer Style auf die zuvor ausgewählte Komponente übertragen.

screen-shot-2014-11-22-08.12.26.png

In meinem Beispiel habe ich jetzt ein TListBoxItem, der sieben (!) weitere Text-Elemente besitzt. Auswählen kann ich dieses Layout über die Eigenschaft "StyleLookup" des ListBoxItems. Mein neuer Style heisst "ListBoxItem2Style1", der jetzt auch für alle anderen (!) TListBoxItems zu Verfügung steht.

Möchte man zur Laufzeit diesen neuen zusätzlichen text-Objekten einen Wert zuweisen, geht das über die Methode "FindStyleResource" der ListBoxItems. Als Parameter gibt man den Namen des gewünschten Elements an.

Delphi-Quellcode:
LText := ListBoxItem3.FindStyleResource('text2style') as TText;
  if Assigned(LText) then
    LText.Text := 'Moep';
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat