Esercitazione sugli stili di Delphi VCL: come cambiare lo stile in fase di esecuzione

Esiste un buon tutorial sugli stili VCL in cui vediamo come caricare dynamicmente (in fase di esecuzione) / cambiare lo stile?

Questo dovrebbe funzionare con Delphi XE2 e versioni successive, poiché XE2 è la prima versione con VCL Styles.

Sto aggiungendo una risposta perché le informazioni locali sono spesso preferite solo ai link.

Ecco i fatti chiave che devi sapere prima di iniziare:

  1. Molti controlli VCL hanno proprietà di colore, ma quelle proprietà verranno ignorate quando gli stili sono attivi e i “controlli comuni” come Button verranno disegnati da Delphi stesso, invece di usare lo stile XP o Windows 2000 che “viene con windows “.

  2. In qualche modo, in profondità nella tua applicazione, gli stili VCL mettono in pratica gli hook che prendono in consegna i tuoi controlli. Tutto ciò che può gestire, verrà disegnato usando una “skin” sopra i controlli regolari. Molte persone chiamano questo “skinning the vcl” e, prima degli stili VCL, potresti aver trovato un sistema skin di terze parti. Ora è integrato.

  3. Tutto ciò che non è agganciato, otterrà comunque lo stile regolare. Quindi la maggior parte dei controlli di terze parti e alcuni bit del VCL non saranno a tema. Non aspettarti risultati istantanei perfetti. Inoltre, a volte ci si può aspettare qualche sfarfallio momentaneo a causa dello scuoiamento. Aggiungi il caricamento degli stili in fase di runtime e la qualità finale del risultato è indovinata da chiunque. Non è ansible garantire necessariamente che lo stile caricato in fase di esecuzione contenga tutto ciò che si desidera che contenga. Né puoi garantire che con uno che includi staticamente nella tua app, ma almeno quelli che includi in modo statico potrebbero essere verificati dal tuo team di QA (che potresti essere tu).

Ecco i passaggi più semplici per iniziare: in realtà solo i passaggi da # 2 a # 4 sono essenziali.

  1. Fare clic su File -> Nuovo -> Progetto Moduli VCL.

  2. Fare clic con il pulsante destro del mouse sulle opzioni del progetto nel riquadro Gestione progetti e fare clic su Proprietà. Passare ad Applicazione -> Aspetto

  3. Clicca su uno stile personalizzato per accenderlo. (Amakrits è il primo nella mia lista, quindi cliccherò su quello).

  4. Fare clic sulla casella combinata Stile predefinito e modificarla in modo diverso da quello predefinito.

  5. Metti qualcosa sul tuo modulo in modo che non sia vuoto. (Un pulsante, una lista, ecc.).

  6. Esegui la tua app.

inserisci la descrizione dell'immagine qui

Ora, roba avanzata: cambia il tuo stile in fase di runtime:

Io uso questo pulsante clic e formcreate per farlo:

Aggiungi fdefaultStyleName:String; alla sezione privata del tuo modulo.

Assicurati che Vcl.Themes sia nella clausola degli usi.

 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; 

Vedi la homepage di RRUZ per molte cose sugli stili VCL.

Ecco una demo principale in cui è ansible caricare un paio di stili in modo dinamico: explorer-delphi-xe2-vcl-styles-part-i

La migliore fonte di informazioni sugli stili VCL è il blog di Rodrigo Ruz : http://theroadtodelphi.wordpress.com/category/vcl-styles/

Un esempio (procedura pubblica). Ricorda usa Vcl.Themes;

 procedure TData.AllowSKIN( bSKIN:boolean ); var sSKIN:string; begin sSKIN := 'Aqua Light Slate'; if not bSKIN then sSKIN := 'Windows'; TStyleManager.TrySetStyle( sSKIN ); end;