2015-09-01 50 views
5

TTreeView's ScrollBar nie akceptuje VCL tematy gdy mirroring TreeView przez ten kod:TreeView nie Zebrane VCL motywu gdy mirroring

procedure SetWinControlBiDi(Control: TWinControl); 
const 
WS_EX_NOINHERITLAYOUT = $00100000; 
WS_EX_LAYOUTRTL = $00400000; 
var 
ExStyle: Longint; 
begin 
ExStyle := GetWindowLong(Control.Handle, GWL_EXSTYLE); 
SetWindowLong(Control.Handle, GWL_EXSTYLE, ExStyle or WS_EX_RTLREADING or WS_EX_RIGHT 
    or WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT); 
end; 


procedure TForm2.FormCreate(Sender: TObject); 
begin 
    SetWinControlBiDi(TreeView1); 
end; 

Przykładowy obraz:

enter image description here

co mam zrobić?

pls help me ...

+1

Nie wiem co jest źle, ale dokładnie to działa, kiedy to @ RRUZ wspaniałe [Vcl.Styles.Hooks] (https://github.com/RRUZ/vcl-styles-utils/wiki/VclStylesHook) unit – whosrdaddy

+0

Uwaga dodatkowa, jeśli ustawisz "BiDiMode: = bdRightToLeft;" w formularzu, to pasek przewijania będzie renderowany poprawnie, ale tryb RTL widoku drzewa nie jest poprawnie renderowany ... – whosrdaddy

+0

Dzięki ... @whosrdaddy – smartiz

Odpowiedz

7

Jest to problem w haku TScrollingStyleHook stylu, należy zgłosić ten fakt do Embarcadero. Tymczasem możesz użyć projektu Vcl Styles Utils, aby to naprawić.

Tylko trzeba postępować zgodnie z instrukcjami instalacji, a następnie dodać jednostkę Vcl.Styles.Hooks do projektu.

enter image description here

+0

Dzięki człowieku. @RRuz – smartiz