2012-03-28 23 views
12

Có một VCL Styles tốt hướng dẫn, nơi chúng ta thấy làm thế nào để tự động (trong thời gian chạy) tải/thay đổi phong cách?Delphi VCL phong cách hướng dẫn - làm thế nào để thay đổi phong cách tại thời gian chạy

Điều này sẽ hoạt động với Delphi XE2 trở lên, vì XE2 là phiên bản đầu tiên với VCL Styles.

+0

Có rất nhiều phong cách VCL liên kết liên quan tại http://www.tindex.net/VCL/VCLStyles.html – LachlanG

+0

cẩn thận với cửa sổ phương thức. vẫn còn lỗi trong DX10 - http://stackoverflow.com/questions/33606625/delphi-xe7-dx10-using-tstylemanager-trysetstyle-in-runtime-when-modal-window-d – Zam

Trả lời

24

tôi thêm một câu trả lời vì thông tin địa phương thường được ưa thích để chỉ liên kết.

Đây là sự kiện quan trọng bạn cần phải biết trước khi bạn bắt đầu:

  1. Nhiều người điều khiển VCL có đặc tính màu sắc, nhưng những thuộc tính sẽ được bỏ qua khi phong cách đang ở trên, và mặc định "điều khiển thông thường" như Button sẽ được vẽ bởi Delphi, thay vì sử dụng kiểu XP hoặc Windows 2000 mà "đi kèm với cửa sổ".

  2. Bằng cách nào đó, sâu bên trong ứng dụng của bạn, phong cách VCL đặt móc trong đó tiếp quản sơn kiểm soát của bạn. Tất cả mọi thứ mà nó có thể xử lý, sẽ được rút ra bằng cách sử dụng một "làn da" trên đầu trang của các điều khiển thường xuyên. Nhiều người gọi đây là "skinning the vcl" và trước các phong cách VCL, bạn có thể đã tìm thấy hệ thống da của bên thứ ba. Bây giờ nó được xây dựng.

  3. Bất kỳ thứ gì không được nối, sẽ vẫn có kiểu thông thường. Vì vậy, hầu hết các điều khiển của bên thứ ba, và một số bit của VCL sẽ không được theo chủ đề. Đừng mong đợi kết quả tức thì hoàn hảo. Ngoài ra, đôi khi bạn có thể nhìn thấy một số nhấp nháy tạm thời hoặc ổn định như là kết quả của skinning, đó là để được mong đợi. Thêm tải phong cách trong thời gian chạy và chất lượng cuối cùng của kết quả là dự đoán của bất kỳ ai. Bạn không nhất thiết có thể đảm bảo rằng kiểu được tải trong thời gian chạy, sẽ chứa mọi thứ bạn có thể muốn chứa. Bạn cũng không thể đảm bảo rằng với một trong những bạn tĩnh bao gồm trong ứng dụng của bạn, nhưng ít nhất những người bạn tĩnh bao gồm có thể được xác minh bởi đội QA của bạn (mà có thể là bạn).

Và đây là các bước đơn giản nhất để bắt đầu: Thật chỉ bướC# 2 đến # 4 là rất cần thiết.

  1. Nhấp vào Tệp -> Mới -> Dự án biểu mẫu VCL.

  2. Nhấp chuột phải vào tùy chọn dự án trong ngăn Trình quản lý dự án và nhấp vào thuộc tính. Điều hướng đến Ứng dụng -> Giao diện

  3. Nhấp vào một kiểu tùy chỉnh để bật. (Amakrits là người đầu tiên trong danh sách của tôi, vì vậy tôi sẽ nhấp vào đó).

  4. Nhấp vào hộp tổ hợp Kiểu mặc định và thay đổi thành thứ khác với mặc định.

  5. Đặt nội dung nào đó vào biểu mẫu của bạn để nó không trống. (Nút, hộp danh sách, v.v.).

  6. Chạy ứng dụng của bạn.

enter image description here

Bây giờ, công cụ tiên tiến: Thay đổi phong cách của bạn trong thời gian chạy:

tôi sử dụng nút này nhấp chuột và formcreate để làm điều đó:

Thêm fdefaultStyleName:String; để khu vực tư nhân của biểu mẫu của bạn.

Đảm bảo Vcl.Themes nằm trong mệnh đề sử dụng của bạn.

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; 
19

Xem RRUZ trang chủ cho rất nhiều thứ về VCL Styles.

Đây là một bản demo chính nơi bạn có thể tải một vài phong cách năng động: exploring-delphi-xe2-vcl-styles-part-i

2

Ví dụ (quy trình công khai). Hãy nhớ sử dụng 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; 
Các vấn đề liên quan