2008-11-24 33 views
9

Tôi đang sử dụng một VCL TProgressBar Delphi 2009 dưới dạng một loại máy đo "trống/đầy đủ".Tắt hoạt ảnh thanh tiến trình trên Vista Aero

Trên Vista, với chủ đề Aero được bật, tính năng này có hoạt ảnh liên quan đến nó, điều này gây phiền toái và không phù hợp với đồng hồ đo.

Có cách nào để vô hiệu hóa tính năng này (KHÔNG bằng cách điều chỉnh cài đặt chủ đề của người dùng!) Để ngăn hoạt ảnh trên bộ điều khiển này?

Để làm rõ, tôi muốn một cái gì đó về cơ bản giống với 'không gian đĩa được sử dụng' mét trong Windows Explorer. Không có hoạt ảnh nhưng vẫn có hiệu ứng tô bóng và viền đẹp mắt.

Cập nhật:

Tôi hiểu rằng tôi cần một "mét", chứ không phải là thanh tiến trình thực sự. Làm cách nào một thước đo theo chủ đề có thể được thực hiện bằng cách sử dụng thanh điều khiển thanh tiến trình windows chuẩn?

Trả lời

11

Theo Vista UI guidelines for progress bars bạn không nên sử dụng một TProgressBar cho các mục đích như vậy ở tất cả, nó khẳng định:

thanh Sử dụng tiến bộ duy nhất cho sự tiến bộ. Sử dụng mét để chỉ ra tỷ lệ phần trăm không liên quan đến tiến trình.

Có rất nhiều thành phần của bên thứ ba (ví dụ Abakus VCL) nhắm vào các ứng dụng Quy trình tự động hóa và tương tự, có thể bạn có thể sử dụng một trong các điều khiển này thay thế?

+1

Đã hiểu - nhưng nó nói: "Mét: Mẫu này không phải là thanh tiến trình, nhưng nó được triển khai bằng cách sử dụng điều khiển thanh tiến trình." Làm thế nào tôi có thể thực hiện một "đồng hồ" như vậy bằng cách sử dụng kiểm soát thanh tiến trình? Đối với các thành phần Abakus, ứng dụng của tôi sẽ trông giống như nó được thiết kế trong mười năm qua. – Roddy

+0

Tôi không biết làm thế nào để thực hiện đồng hồ, và không có Vista ở đây để kiểm tra. Bạn có thể chạy Spy ++ và xem các cờ kiểu Windows được đặt cho các điều khiển đồng hồ đo không? Spy ++ đi kèm với MS Visual C++. Google cho "phần mềm gián điệp miễn phí" nếu bạn không có. – mghie

+0

Đối với Abakus - Tôi nghe bạn ;-) Nếu bạn cần đánh giá để nhìn tốt trong Vista nó tất nhiên sẽ là tốt nhất để tìm một phong cách cho sự kiểm soát chung. Tôi không tìm thấy gì trong SDK nền tảng ... Hãy xem http://msdn.microsoft.com/en-us/library/cc656530(VS.85).aspx để biết tài liệu có sẵn. – mghie

0

Hãy xem this forum thread. Đây là liên kết hứa hẹn duy nhất tôi tìm thấy và bài đăng đầu tiên đề cập đến các trạng thái thanh tiến trình khác nhau, vì vậy việc thay đổi thuộc tính Smooth, State và Style có thể sẽ không giúp ích gì.

Nếu mẹo trong bài đăng cuối thực sự là cách duy nhất để vẽ thanh tiến trình theo kiểu đồng hồ, thì tùy chọn tốt nhất của bạn là tạo lớp con của TProgressBar, ghi đè trình xử lý WM_PAINT, kiểm tra Vista và bật chủ đề và trong trường hợp đó, hãy sử dụng các hàm trong UxTheme để vẽ các phần khác nhau của điều khiển.

9

Bạn có thể thử tắt chủ đề cho điều khiển đó;

SetWindowTheme(ProgressBar.Handle, ' ', ' '); 
+0

+1 vì câu trả lời này có vẻ hữu ích - mặc dù tôi không biết liệu nó có hoạt động hay không. cố ý vô hiệu hóa chủ đề trên một điều khiển chung. –

+0

tôi đã thử nghiệm điều này và nó hoạt động, chức năng nằm trong thư viện UxTheme (http://msdn.microsoft.com/en-us/library/bb759827(VS.85).aspx) –

+0

Có và không. Nó tắt hoạt hình NHƯNG nó cũng tắt * tất cả * theming của kiểm soát, vì vậy bạn chỉ nhận được một hộp màu xanh vững chắc mà không có biên giới, bóng, hoặc bất kỳ giao diện người dùng làm đẹp khác. Mục tiêu của tôi là để có được một cái gì đó phù hợp với 'không gian đĩa được sử dụng' mét trong thám hiểm. – Roddy

Các vấn đề liên quan