2011-12-07 34 views
7

Tôi đang chạy Delphi 2010 trên cả máy tính Windows 64 bit (Win 7) và một cửa sổ 32 bit (XP).TRibbon không hiển thị các tab

Tôi đang cố gắng tìm hiểu cách sử dụng điều khiển TRibbon.

Tôi đã làm theo ví dụ trong Cẩm nang năm 2009 của Marco Cantu và xem Bản trình diễn YouTube, nhưng quyền kiểm soát của tôi không hoạt động như được giải thích trong sách hoặc demo.

Tôi đã thêm hai tab, bằng cách nhấp chuột phải vào điều khiển. Tuy nhiên, TRibbon trông giống hệt như trong ảnh chụp màn hình của tôi, khi tôi thả nó vào biểu mẫu chính. Nó không phải là cao như những người trong sách hoặc trình diễn youtube.

Tôi đã cố gắng điều tương tự trên máy tính xách tay Win 32 của tôi chạy Windows Xp và Delphi năm 2010 và có được kết quả chính xác cùng

đây là những gì nó trông giống như trên máy tính của tôi

64 bit laptop screenshot

đây là những gì được cho là trông giống như trong bản demo

from youtube video demo

Khi lần nữa. Khi nó thả nó vào mẫu, nó không có hình dạng và chiều cao như tôi thấy trong các bản demo. Ngay cả khi tôi thêm tab. Tôi đã làm điều gì sai trong khi cài đặt Delphi 2010?

+2

Âm thanh lạ. Tôi đã làm chính xác những gì bạn mô tả và nó cư xử hoàn hảo. –

+0

Ya, tôi đã nghĩ rằng đó sẽ là trường hợp đối với hầu hết mọi người, vì tôi thấy nó trong tác phẩm trình diễn! Tuy nhiên, nó không làm việc cho tôi. Nó gần giống như tôi có một phiên bản thiếu sót của Delphi 2010. Tôi đã gỡ bỏ hoàn toàn và cài đặt lại Delphi 2010 và nó vẫn hoạt động theo cùng một cách – IElite

+0

Tôi chưa bao giờ thấy điều này xảy ra trước đây, nó không nên làm điều đó. –

Trả lời

8

Tôi quản lý cuối cùng để tái tạo sự cố trong Delphi XE (Cập nhật 1) trên Win7 64 với Aero được bật. Dường như kích thước được đặt sai trong tệp .DFM và do Ribbon không hỗ trợ thay đổi kích thước thủ công, bạn không thể chỉnh sửa trực quan trong IDE (mặc dù nó xuất hiện chính xác khi chạy) hoặc trong Object Inspector. Đôi khi nó xuất hiện chính xác trong thời gian chạy, nhưng có vẻ như đó là lẻ tẻ là tốt.

Đó là một lỗi khó chịu, bởi vì nó không thể thiết kế Ribbon. Bạn có thể thêm RibbonGroup mục và chỉ định ActionManager và thử và thiết kế hoàn toàn bằng cách sử dụng Structure Pane, nhưng tất nhiên đó không phải là giải pháp thiết thực.

May mắn thay, có một giải pháp khá dễ dàng, mặc dù thật khó chịu khi phải làm. :)

Tôi đã quản lý hai lần để giải quyết vấn đề sau, nhưng bắt đầu lại không hoạt động nhiều lần, vì vậy có thể xung quanh nó (không hứa hẹn - đã làm việc trong XE, liên tục thất bại trong XE2 Update 2) :

  • Nhấp chuột phải vào Ribbon và thêm ít nhất một tab.
  • Nhấp chuột phải vào biểu mẫu trong IDE và chọn View as Text từ menu ngữ cảnh (bật lên).
  • Tìm điều khiển Ribbon trong văn bản .dfm và thay đổi Height từ 26 mà IDE được gán cho 200. (Bước tiếp theo sẽ điều chỉnh nó, nhưng không sao - 200 khắc phục sự cố ngay lập tức.)
  • Nhấp chuột phải một lần nữa và chọn View as FormRibbon sẽ hiển thị chính xác.

(Tôi đã báo cáo nó trong QC chống XE2 Cập nhật 2, như vấn đề còn tồn tại ở đó - QC#101642)

tôi truy tìm nó để TCustomRibbon.GetCaptionHeight, cụ thể

FCaptionHeight := Max(GetSystemMetrics(SM_CYCAPTION), 26); 

Nó có vẻ như các GetSystemMetrics cuộc gọi đang trả về cái gì đó ít hơn 26 trên một số cấu hình Win7 nhất định (mặc dù tôi không thể tìm ra lý do tại sao). Có một vài dòng nhận xét trong phương pháp đó dường như thay đổi kết quả, nhưng như tôi đã nói họ đã được nhận xét.

Phần lạ là trong TCustomRibbon.Create, các Height được thiết lập bởi một cuộc gọi đến GetRibbonMetric(rmFullHeight), thiết lập Result := cRibbonHeight + GetCaptionHeight;, và cRibbonHeight là một hằng số định nghĩa là cRibbonHeight = 117;.

Cuối cùng nghĩ rằng tôi đã theo dõi điều này. Trong tuyên bố của TRibbon, có một tuyên bố published tài sản:

published 
    ... 
    property Height default TCustomRibbon.cRibbonHeight; 

Bởi vì đây là mặc định, dường như bất kỳ giá trị khác có nghĩa là các cuộc gọi đến GetRibbonMetric nêu trên không xảy ra (xem TCustomRibbon.Create đề cập ở trên) và kết quả lạ từ cuộc gọi đến GetSystemMetric làm cho giá trị sai số 26 được lưu thành 'giá trị khác`. Wierd; sẽ cập nhật QC trong AM.

Phụ lục: Báo cáo QC được cập nhật với các chi tiết bổ sung.

Phụ lục: Báo cáo QC opened vào tháng 5 năm 2012, nhưng dường như chưa được giải quyết là XE5 Update 1 (đã kiểm tra tháng 1 năm 2014).

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