Schritt 3 - Hinzufügen von Stilressourcen als RCDATA (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Erstellen einer FireMonkey-Komponente (Delphi)


Für jede .style-Datei ist eine zugehörige plattformspezifische .rc-Datei (bestehend aus einer Zeile) mit der Komponenten-Unit entsprechenden Stammnamen erforderlich.

Beispiel einer RC-Datei für Windows, einer RC-Datei für den Mac, einer RC-Datei für iOS und einer RC-Datei für Android:

  • DialogButtons.win.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_win.style"
  • DialogButtons.mac.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_mac.style"
  • DialogButtons.ios.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_ios.style"
  • DialogButtons.android.rc
DialogButtonPanelStyle RCDATA "DialogButtonPanel_android.style"

Hinzufügen der Stilressourcen als RCDATA

  1. Aktivieren Sie in der Projektverwaltung durch Doppelklicken das Projekt DialogButtonsPackage.bpl.
  2. Führen Sie für jede .rc-Datei, die erstellt werden muss, die folgenden Schritte aus:
    • Wählen Sie Datei > Neu > Weitere > Andere Dateien > Textdatei, und wählen Sie im Dialogfeld "Neue Datei" den Eintrag .rc Ressourcendatei aus.
    • Fügen Sie die oben beschriebene Zeile hinzu, und speichern Sie die Datei unter dem korrekten Dateinamen.
    Die .rc-Dateien sollten in der Projekthierarchie unter dem Knoten Enthält angezeigt werden. (Zur einfacheren Bearbeitung können Sie dem Projekt auch die .style-Dateien hinzufügen. Zum Compilieren ist dies allerdings nicht erforderlich, denn die .style-Dateien werden automatisch gefunden, da sie sich im selben Verzeichnis wie die RC-Dateien befinden.)
  3. Um diese Stile zu laden, überschreiben Sie in DialogButtons.pas die Deklaration für TStyledControl.GetStyleObject und implementieren diese:
protected
    function GetStyleObject: TControl; override;

implementation

uses
  System.Types, FMX.Controls, FMX.Styles;

{$IFDEF MACOS}
{$R *.mac.res}
{$ENDIF}
{$IFDEF MSWINDOWS}
{$R *.win.res}
{$ENDIF}

function TDialogButtonPanel.GetStyleObject: TControl;
const
  Style = 'MyPanelButtonsStyle';
begin
  if (FStyleLookup = '') then
  begin
    Result := TControl(TStyleManager.LoadFromResource(HInstance, Style,
      RT_RCDATA));
    Exit;
  end;
  Result := inherited GetStyleObject;
end;
Die entsprechende aus der .rc-Datei compilierte .res-Datei wird mit konditionalen Plattformdirektiven einbezogen. Der Name des RCDATA-Eintrags ist für beide Dateien eine Konstante in der Funktion.

Hinweis: Der StyleName der Stammkomponente (TRectangle) in der .style-Datei ist zufällig mit dem RCDATA-Namen identisch. Der StyleName ist erforderlich, falls der Stil in ein Stilbuch integriert und durch StyleName dokumentiert wird, daher sollten Sie den Stilnamen einbeziehen. Beim direkten Laden wird der Stamm-StyleName nicht verwendet und ist überflüssig.

Die Funktion lädt den Stil nur, wenn die Eigenschaft StyleLookup leer ist. Die Funktion verwendet TStyleManager zum Laden des Stils mit dem Handle des aktuellen Moduls – während des Entwurfs ist dies das Package .bpl und zur Laufzeit die .exe- oder .dll-Datei des Programms –, weil der Versuch, auf nicht vorhandene RCDATA zuzugreifen, eine Exception auslöst. Ansonsten wird das geerbte Verhalten zum Suchen eines benannten Stils oder des Standardstils anhand des Klassennamens verwendet.

  1. Klicken Sie bei geöffnetem Quellcode in der Projektverwaltung mit der rechten Maustaste auf das Package-Projekt, und wählen Sie Installieren. Dadurch wird das Package-Projekt compiliert und die Komponente der Tool-Palette hinzugefügt.

Zurück

Weiter

Siehe auch