2010-03-26 10 views
7

Zauważyłem, że wysokość TToolButton zwiększa się po ustawieniu stylu przycisku na tbsDropdown. Rozumiem, że szerokość się zwiększa, więc przycisk ma spację do narysowania strzałki w dół, ale nie jestem pewien, czy konieczne jest zwiększenie wzrostu.Wysokość TToolButton rośnie z Style = tbsDropdown

Kroki prowadzące do odtworzenia problemu (Delphi 2010, Windows 7 x64):

  • Dodaj TToolbar do formy, showCaptions = True
  • Kliknij prawym przyciskiem myszy, aby dodać przycisk do paska narzędzi
  • przycisk SET style = tbsDropDown i zauważyć przycisk rośnie w wysokości

to samo dzieje się, gdy wzrost wysokości są zdjęcia przypisane do paska , w tym przypadku nie ma ALR masz dużo więcej dostępnego miejsca w pionie w przycisku, aby narysować menu rozwijane.

Oto wizualny przykład: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png

Czy istnieje obejście tego bez hacking VCL, czy jest to sztywno do sterowania systemu Windows?

Odpowiedz

3

Jest to część podstawowej kontroli systemu Windows. Szybkie spojrzenie na ComCtrls pokazuje, że zmiana TToolButton.Style nazywa się to metodą . Jeśli w parametrze SetStyle, ShowCaptions ma wartość True, wówczas TToolBar.ButtonWidth i ButtonHeight są ustawione na 0, a wywoływane jest TToolButton.RecreateButtons.

RecreateButtons z kolei wywołuje TToolBar.ResizeButtons, który po prostu wysyła (posty) wiadomość do ToolBar korzystając

Perform(TB_AUTOSIZE, 0, 0); 

TB_AUTOSIZE jest przeznaczony do stosowania, zgodnie z MSDN,

po spowodowaniu rozmiar paska narzędzi do zmiany poprzez ustawienie przycisku lub rozmiaru bitmapy lub przez dodanie ciągów po raz pierwszy.

Od SetStyle ustawia się jednocześnie do ButtonWidth i ButtonHeight 0, ta wiadomość wydaje się być poprawnie wysłana.

1

Wygląda na to, że coś jest nie tak z obsługą motywów w sterowaniu podstawowym oknem. Wyłącz motywy środowiska wykonawczego (Projekt/Opcje/Aplikacja, odznacz pole wyboru "Włącz skórki robocze"), zignoruj ​​zwiększone wysokości przycisków w czasie projektowania (Delphi IDE używa motywów) i uruchom aplikację - zobaczysz normalne wysokości przycisków paska narzędzi.

Powiązane problemy