Etape 3 - Ajouter des ressources de styles en tant que RCDATA (Delphi)
Remonter à Création d'un composant FireMonkey (Delphi)
Chaque fichier .style
nécessite un fichier correspondant .rc
(à ligne unique) spécifique à la plate-forme, avec les noms racine qui correspondent à l'unité composant.
Par exemple, voici un fichier Windows .rc, un fichier Mac .rc, un fichier iOS .rc et un fichier Android .rc :
- 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"
Ajouter des ressources de styles sous RCDATA
- Activez le projet DialogButtonsPackage.bpl en double-cliquant dessus dans le Gestionnaire de projets.
- Pour chaque fichier
.rc
qui doit être créé :- Sélectionnez Fichier > Nouveau > Autre > Autres fichiers > Fichier texte et dans le dialogue Nouveau fichier, sélectionnez Fichier de ressources .rc.
- Ajoutez la ligne décrite ci-dessus, et enregistrez avec le nom de fichier correct.
- Les fichiers
.rc
devraient être visibles dans l'arborescence du projet sous le noeud Contient. Pour faciliter l'édition, vous pouvez aussi ajouter les fichiers.style
au projet, mais ce n'est pas nécessaire pour la compilation ; les fichiers.style
sont automatiquement trouvés car ils résident dans le même répertoire que les fichiers .rc.
- Dans DialogButtons.pas, pour charger ces styles, déclarez une redéfinition de TStyledControl.GetStyleObject et implémentez-la :
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: TFmxObject;
const
Style = 'MyPanelButtonsStyle';
begin
if (StyleLookup = '') then
begin
Result := TControl(TStyleStreaming.LoadFromResource(HInstance, Style,
RT_RCDATA));
Exit;
end;
Result := inherited GetStyleObject;
end;
- Le
.res
approprié compilé du fichier.rc
est inclus avec des directives de plate-forme conditionnelles. Le nom de l'élément RCDATA, le même dans les deux fichiers, est une constante dans la fonction.
Remarque : Le StyleName du composant (TRectangle) racine dans le fichier
.style
est par coïncidence le même que le nom RCDATA. Le StyleName est requis si le style est incorporé dans un livre de styles, et le StyleName auto-documente le style. C'est ainsi une bonne habitude de l'inclure. Mais quand il est chargé directement, le StyleName de la racine n'est pas utilisé et est superflu.
La fonction charge le style seulement si le StyleLookup est vide. Elle utilise TStyleManager pour charger le style, avec le handle du module en cours — à la conception, c'est le package
.bpl
; à l'exécution, c'est le.exe
ou.dll
du programme — car toute tentative d'accès à un RCDATA inexistant déclenche une exception. Sinon, le comportement hérité est utilisé pour chercher un style nommé ou le style par défaut par nom de classe.
- Avec le code en place, cliquez avec le bouton droit sur le projet package dans le Gestionnaire de projets et sélectionnez Installer. Cela compile le projet de package et ajoute le composant dans la palette d'outils.