Tutoriel sur les styles VCL Delphi - comment changer le style à l'exécution

est - ce qu'il y a un bon tutoriel Vcl Styles où nous voyons comment dynamiquement (en run time) charger/changer le style ?

cela devrait fonctionner avec Delphi XE2 et plus, puisque XE2 est la première version avec Vcl Styles.

12
demandé sur Warren P 2012-03-28 15:12:54

4 réponses

j'ajoute une réponse parce que l'information locale est souvent préférée aux liens.

Voici les principaux faits que vous devez savoir avant de commencer:

  1. beaucoup de contrôles VCL ont des propriétés de couleur, mais ces propriétés vont être ignorées quand les styles sont activés, et le bouton "common controls" par défaut va être dessiné par Delphi lui-même, au lieu d'utiliser le style XP ou Windows 2000 qui " vient avec Windows."

  2. D'une façon ou d'une autre, au plus profond de votre application, VCL styles met des crochets qui prennent le contrôle de la peinture de vos commandes. Tout ce qu'il peut supporter, sera dessiné à l'aide d'une "peau" sur les contrôles réguliers. Beaucoup de gens appellent cela "le dépeçage de la vcl", et avant les styles de Vcl, vous pourriez avoir trouvé un système de peau de tiers. Maintenant, il est construit en.

  3. Tout ce qui n'est pas accroché, obtiendrez toujours le style régulier. Donc la plupart des tiers les commandes, et quelques morceaux de la VCL ne seront pas themed. Ne vous attendez pas à des résultats instantanés parfaits. En outre, vous pouvez parfois voir des clignotements momentanés ou des problèmes à la suite de dépeçage, qui est à prévoir. Ajoutez le chargement de styles à l'exécution, et la qualité finale de votre résultat est une conjecture. Vous ne pouvez pas nécessairement garantir que le style qui est chargé à l'exécution, contiendra tout ce que vous pourriez vouloir qu'il contienne. Vous ne pouvez pas non plus garantir qu'avec une vous incluez statiquement dans votre application, mais au moins ceux que vous incluez de façon statique pourraient être vérifiés par votre équipe D'assurance qualité (qui pourrait être vous).

Et voici la plus simple d'étapes: etape n ° 2 à 4 sont essentiels.

  1. cliquez sur le fichier - > nouveau - > projet des formulaires VCL.

  2. cliquez avec le bouton droit de la souris sur les options du gestionnaire de projet et cliquez sur Propriétés. Naviguer vers L'Application - > apparence

  3. Cliquez sur un style personnalisé pour l'allumer. (Amakrits est le premier dans ma liste, donc je clique là).

  4. cliquez sur le style par défaut combobox et changez-le en quelque chose d'autre que par défaut.

  5. mettez quelque chose sur votre formulaire pour qu'il ne soit pas vide. (Un bouton, un listbox, etc.).

  6. lancez votre application.

enter image description here

Maintenant, les choses avancées: changez votre style à l'exécution:

j'utilise ce bouton cliquer et formcreate pour le faire:

Ajouter fdefaultStyleName:String; à la section privée de votre formulaire.

assurez-vous que Vcl.Themes est dans votre clause d'utilisation.

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Assigned(TStyleManager.ActiveStyle) and (TStyleManager.ActiveStyle.Name<>'Windows') then begin
   TStyleManager.TrySetStyle('Windows');
 end else begin
   TStyleManager.TrySetStyle(fdefaultStyleName); // whatever was in the project settings.
 end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if Assigned(TStyleManager.ActiveStyle) then
  fdefaultStyleName := TStyleManager.ActiveStyle.Name;

end;
27
répondu Warren P 2012-03-29 15:44:53

voir la page d'accueil de RRUZ pour beaucoup de choses sur les Styles de VCL.

Voici une démo primaire où vous pouvez charger un couple de styles dynamiquement : exploration-delphi xe2-vcl-styles-partie-i

19
répondu LU RD 2012-03-28 11:25:24

la meilleure source d'information sur les styles de VCL est Rodrigo Ruzhttp://theroadtodelphi.wordpress.com/category/vcl-styles/

18
répondu David Heffernan 2017-05-23 12:25:57

Un exemple (procédure publique). Rappelez-vous utilise Vcl.Thèmes;

procedure TData.AllowSKIN( bSKIN:boolean );
var
    sSKIN:string;
begin
    sSKIN := 'Aqua Light Slate';
    if not bSKIN then sSKIN := 'Windows';
    TStyleManager.TrySetStyle( sSKIN );
end;
2
répondu Walter Ramos 2016-08-08 07:02:08