2015-08-25 13 views
10

Zobacz czynności poniżej w celu odtworzenia. Działa dobrze w XE2, ale nie XE8.Używanie stylów niestandardowych powoduje wyświetlenie nieprawidłowych znaków po kliknięciu prawym przyciskiem myszy pliku w TOpenDialog

  1. Utwórz nowy VCL Forms Application - Delphi
  2. umieszczają TButton i TOpenDialog na formularzu
  3. W wywołaniu zdarzenia przycisk OnClickOpenDialog1.Execute
  4. uruchomić program, otworzyć okno dialogowe pliku, a prawo -kliknąć plik tekstowy => pokazuje elementy menu ok
  5. Przejdź do projektu/opcji/aplikacji/wyglądu. Włącz i wybierz niestandardowy styl (taki jak "Ruby Graphite") i ponownie skompiluj
  6. Uruchom program, otwórz okno dialogowe pliku i kliknij prawym przyciskiem myszy plik tekstowy => nie wyświetla poprawnie pozycji menu (wyświetlane są nieprawidłowe znaki)

Testowane z XE8 subskrypcją aktualizacji 1 (i Windows zmodernizowanej od 8,1 do 10)

+0

Która lokalna wersja systemu Windows to jest? –

+0

@Rudy, Windows 10 Pro – Thomas

+0

Miałem na myśli, która wersja narodowa, tj. Duńska, niemiecka, amerykańska, rosyjska, chińska, holenderska, francuska, grecka itd. Itd. –

Odpowiedz

17

systemu Windows 10 wprowadza kilka wewnętrznych zmian w kodzie odpowiedzialnym zwrócić skorupy popup menu. Więc kod Style VCL musi zostać zmodyfikowany, aby być kompatybilne z Windows 10. Właśnie podano this to EMB

Jako obejście można użyć projektu VCL Styles Utils który rozwiązuje ten problem (tylko trzeba dodać jednostkę Vcl.Styles.Utils.Menus do projektu).

Sprawdź następny obraz, lewa wyskakujące menu używa standardowych stylów VCL, a prawe menu używa projektu VCL Styles Utils.

enter image description here

+1

Jest to jedna z zagrożeń i zagrożeń związanych ze stosowaniem stylów VCL. Embarcadero powinien znacznie lepiej zaradzić temu ryzyku. –

+0

Czy jest to związane z inżynierią wsteczną DirectUI? –

+0

@DavidHeffernan, Nie, menu są rysowane za pomocą '' tradycyjnego '' hook (SetWindowsHookEx) w klasie '# 32768'. – RRUZ

Powiązane problemy