2012-03-28 17 views
12

Esiste un buon tutorial sugli stili VCL in cui viene illustrato come caricare dinamicamente (in fase di esecuzione)/modificare lo stile?Esercitazioni sugli stili Delphi VCL - come modificare lo stile in fase di esecuzione

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

+0

Ci sono un sacco di stili VCL link relativi a http://www.tindex.net/VCL/VCLStyles.html – LachlanG

+0

essere attentamente con finestra modale. ancora bug in DX10 - http://stackoverflow.com/questions/33606625/delphi-xe7-dx10-using-tstylemanager-trysetstyle-in-runtime-when-modal-window-d – Zam

risposta

24

Sto aggiungendo una risposta perché l'informazione locale è spesso preferito a solo link.

Ecco i fatti principali che dovete sapere prima di iniziare:

  1. Molti controlli VCL hanno proprietà di colore, ma queste proprietà sta per ottenere ignorato quando gli stili sono accesi, e il default "controlli comuni" come Button verrà disegnato da Delphi stesso, invece di usare lo stile XP o Windows 2000 che "viene fornito con Windows".

  2. In qualche modo, all'interno della vostra applicazione, gli stili VCL mettono in pratica i ganci per dipingere i 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 è possibile 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).

Ed 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 a Applicazione -> Aspetto

  3. Fare clic 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 modulo in modo che non sia vuoto. (Un pulsante, una lista, ecc.).

  6. Esegui la tua app.

enter image description here

Ora, roba avanzata: Cambia il tuo stile in fase di esecuzione:

Io uso questo tasto click e FormCreate per farlo:

Aggiungi fdefaultStyleName:String; alla sezione privata del la tua forma.

Assicurarsi 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; 
2

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; 
Problemi correlati