Jak stylizujesz obszar inny niż klient w aplikacji Firemonkey FM2 w Delphi XE3

Wcześniej zadałem to pytanie w ramach czasowych Delphi XE2, a odpowiedź była ładnabrzydki hack.

Teraz Delphi XE3 obsługuje kompozycje nie będące klientami, zgodnie z oficjalnymi informacjami o wydaniu. Jak to zrobić w Delphi XE3 w Firemonkey FM2?

Myślę, że to musi mieć coś wspólnego z podręcznikiem stylu, ale nie mogę tego zrozumieć. Sam formularz ma właściwość „EnableBorderStyling”, którą ustawiłem na true, i myślę, że muszę załadować styl, który zawiera niektóre dane motywu niebędącego klientem, ale nie mogę znaleźć stylu, który go zawiera.

Pomoc nie ma nic na ten temat.

Aktualizacja2 Dobra, to nie jest złamane, po prostu nie mam stylu, który zawiera ten element stylu (jak mówi RRUZ).

procedure TForm1.FormShow(Sender: TObject);
begin
  StyleBook := StyleBook1;
  WindowBorder.UpdateStyle;
end;

Aktualizacja3: Pliki stylów wydają się być w dwóch różnych miejscach, co jest mylące:

  C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Redist\styles\Fmx        
  C:\Users\Public\Documents\RAD Studio\10.0\Styles

Zauważ, że nie mam stylu Luna.Style (styl Firemonkey) w żadnym miejscu, jednak 5 sekund za pomocą narzędzia Edytor stylów. (Otwórz, Zapisz jako i zmień typ na .Style, a ja miałem jeden!)

Aktualizacja4: Odpowiedź RRUZ działa, ale w moim systemie (Windows 8 RTM) style nie będące klientami nie wyglądają prawidłowo, mają białe rogi wokół obszarów, w których nie ma pełnej farby. Zmiana rozmiaru okna powoduje jego odejście, a ja jestem pewien, że powinienem być w stanie wymusić WM_NCREPAINT lub coś w tym stylu i sprawić, że zniknie.

questionAnswers(1)

yourAnswerToTheQuestion