2010-03-26 16 views
7

Tôi nhận thấy rằng chiều cao của một TToolButton tăng lên khi bạn đặt Kiểu của nút thành tbsDropdown. Tôi có thể hiểu được chiều rộng tăng lên, do đó, nút có không gian để vẽ mũi tên xuống, nhưng tôi không chắc chắn một sự gia tăng chiều cao là cần thiết.TToolButton Height Grows with Style = tbsDropdown

bước để tạo lại vấn đề này (Delphi 2010, Windows 7 x64):

  • Thêm TToolbar mẫu, ShowCaptions = True
  • Nhấp chuột phải để thêm một nút để Toolbar
  • nút Set Kiểu = tbsDropDown và nhận thấy nút phát triển ở độ cao

Cùng một độ cao tăng lên khi có hình ảnh được gán cho thanh công cụ , trong trường hợp này có eady nhiều không gian dọc hơn có sẵn trong nút để vẽ trình đơn thả xuống.

Dưới đây là một ví dụ trực quan: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png

Có một workaround cho điều này mà không cần hack VCL, hoặc là này hardcoded vào sự kiểm soát Windows?

Trả lời

3

Đó là một phần của điều khiển Windows cơ bản. Xem nhanh ComCtrls cho thấy rằng việc thay đổi số TToolButton.Style gọi là phương pháp SetStyle. Nếu, trong SetStyle, ShowCaptions là True thì TToolBar.ButtonWidthButtonHeight đều được đặt thành 0 và TToolButton.RecreateButtons được gọi.

RecreateButtons, đến lượt nó, gọi TToolBar.ResizeButtons, mà chỉ đơn giản gửi (bài viết) một thông điệp tới ToolBar sử dụng

Perform(TB_AUTOSIZE, 0, 0); 

TB_AUTOSIZE được thiết kế để được sử dụng, theo MSDN,

sau khi gây ra kích thước của thanh công cụ để thay đổi bằng cách đặt kích thước nút hoặc bitmap hoặc bằng cách thêm chuỗi cho lần đầu tiên.

Vì cả SetStyle đặt cả ButtonWidthButtonHeight thành 0, thông báo này dường như được gửi chính xác.

1

Có vẻ như đã xảy ra sự cố với hỗ trợ chủ đề trong kiểm soát cửa sổ cơ bản. Tắt các chủ đề thời gian chạy (Dự án/Tùy chọn/Ứng dụng, bỏ chọn hộp kiểm "Bật chủ đề thời gian chạy"), bỏ qua chiều cao nút tăng lên trong thời gian thiết kế (Delphi IDE sử dụng chủ đề) và chạy ứng dụng - bạn sẽ thấy chiều cao bình thường của các nút trên thanh công cụ.